#include<stdio.h>
#include<conio.h>
void main() {
FILE * fp;
char words[50][25], str[25], ch;
char key[50][25], op[50][10], id[50][25];
int i, j, k = 0, w = 0, p = 0, d = 0;
int yes = 0;
fp = fopen("ttoken.c", "r");
clrscr();
printf("\n File: ttoken.c\n\n");
if (fp != NULL) {
do {
j = 0;
ch = 'd';
strcpy(str, "");
while (ch != ' ') {
ch = getc(fp);
printf("%c", ch);
if (ch == EOF) break;
str[j++] = ch;
switch (ch) {
case '+':
strcpy(op[p++], "+");
break;
case '-':
strcpy(op[p++], "-");
break;
case '*':
strcpy(op[p++], "*");
break;
case '/':
strcpy(op[p++], "/");
break;
case '%':
strcpy(op[p++], "%");
break;
case '=':
strcpy(op[p++], "=");
break;
}
if (ch == ' ' || ch == '\n' || ch == '=') {
j--;
break;
}
if (ch == ';' || ch == '(' || ch == ')' || ch == ',') {
j--;
break;
}
}
str[j] = '\0';
strcpy(words[w++], str);
if (ch == '(')
strcpy(words[w++], "(");
if (ch == ';')
strcpy(words[w++], ";");
if (ch == ')')
strcpy(words[w++], ")");
if (ch == '=')
strcpy(words[w++], "=");
if (ch == ',')
strcpy(words[w++], ",");
j = 0;
} while (ch != EOF);
}
for (i = 0; i < w; i++) { //1
if ((!strcmp(words[i], "for")) || (!strcmp(words[i], "if"))) {
strcpy(key[k++], words[i]);
}
if ((!strcmp(words[i], "void")) || (!strcmp(words[i], "else"))) {
strcpy(key[k++], words[i]);
}
if ((!strcmp(words[i], "char")) || (!strcmp(words[i], "int"))) {
strcpy(key[k++], words[i]);
yes = 1;
for (j = i + 1; strcmp(words[j], ";"); j++) {
if (!strcmp(words[j], "=")) {
yes = 0;
j++;
}
if (!strcmp(words[j], ",")) {
yes = 1;
j++;
}
if (yes)
strcpy(id[d++], words[j]);
}
}
if ((!strcmp(words[i], "float")) || (!strcmp(words[i], "double"))) {
strcpy(key[k++], words[i]);
for (j = i + 1; strcmp(words[j], ";"); j++) {
if (!strcmp(words[j], "=")) {
yes = 0;
j++;
}
if (!strcmp(words[j], ",")) {
yes = 1;
j++;
}
if (yes)
strcpy(id[d++], words[j]);
}
}
} //1
printf("\n\n* Identifiers:\n");
for (i = 0; i < d; i++) {
printf("%s ", id[i]);
}
printf("\n\n* Keywords:\n");
for (i = 0; i < k; i++) {
printf("%s ", key[i]);
}
printf("\n\n* Operators:\n");
for (i = 0; i < p; i++) {
printf("%s ", op[i]);
}
fclose(fp);
getch();
}