|
|
1.1 root 1: #include <stdio.h>
2: #include <ctype.h>
3:
4: char *keyword[] = {
5: "auto", "break", "case", "*char", "const", "continue",
6: "default", "*double", "do", "else", "enum", "extern", "*float", "for",
7: "goto", "if", "*int", "*long", "register", "return", "*short",
8: "signed", "sizeof", "static", "struct", "switch", "typedef", "union",
9: "unsigned", "*void", "volatile", "while"
10: };
11:
12: main() {
13: char *k, *lastk = 0;
14: int i;
15:
16: for (i = 0; i < sizeof keyword/sizeof keyword[0]; i++) {
17: k = keyword[i];
18: if (*k == '*')
19: k++;
20: if (lastk && *lastk != *k)
21: printf("\tgoto id;\n");
22: if (lastk == 0 || *lastk != *k)
23: printf("case '%c':\n", *k);
24: lastk = k;
25: printf("\tif (rcp[0] == '%c'\n", *++k);
26: while (*++k && *k != '*')
27: printf("\t&& rcp[%d] == '%c'\n", k - lastk - 1, *k);
28: printf("\t&& !(map[rcp[%d]]&(DIGIT|LETTER))) {\n", k - lastk - 1);
29: printf("\t\tcp = rcp + %d;\n", k - lastk - 1);
30: if (*keyword[i] == '*')
31: printf("\t\ttsym = %stype->u.sym;\n", lastk);
32: printf("\t\treturn ");
33: for (k = lastk; *k; k++)
34: putchar(toupper(*k));
35: printf(";\n");
36: printf("\t}\n");
37: }
38: for (k = "hjkmnopqxyzABCDEFGHIJKMNOPQRSTUVWXYZ_"; *k; k++)
39: printf("case '%c':\n", *k);
40: return 0;
41: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.