|
|
1.1 root 1: /*
2: * Token table structure.
3: */
4:
5: struct toktab {
6: char *t_word; /* token */
7: int t_type; /* token type returned by yylex */
8: int t_flags; /* flags for semicolon insertion */
9: };
10:
11: extern struct toktab toktab[]; /* token table */
12: extern struct toktab *restab[]; /* reserved word index */
13:
14: #define T_IDENT &toktab[0]
15: #define T_INT &toktab[1]
16: #define T_REAL &toktab[2]
17: #define T_STRING &toktab[3]
18: #define T_CSET &toktab[4]
19: #define T_EOF &toktab[5]
20:
21: /*
22: * t_flags values for token table.
23: */
24:
25: #define BEGINNER 1 /* token can follow a semicolon */
26: #define ENDER 2 /* token can precede a semicolon */
27:
28: /*
29: * Operator table - a finite-state automaton for recognizing Icon operators.
30: */
31:
32: struct optab {
33: char o_input;
34: char o_action;
35: int o_val;
36: };
37:
38: extern struct optab state0[];
39: extern struct optab state1[];
40: extern struct optab state2[];
41: extern struct optab state3[];
42: extern struct optab state4[];
43: extern struct optab state5[];
44: extern struct optab state6[];
45: extern struct optab state7[];
46: extern struct optab state8[];
47: extern struct optab state9[];
48: extern struct optab state10[];
49: extern struct optab state11[];
50: extern struct optab state12[];
51: extern struct optab state13[];
52: extern struct optab state14[];
53: extern struct optab state15[];
54: extern struct optab state16[];
55: extern struct optab state17[];
56: extern struct optab state18[];
57: extern struct optab state19[];
58: extern struct optab state20[];
59: extern struct optab state21[];
60: extern struct optab state22[];
61: extern struct optab state23[];
62: extern struct optab state24[];
63: extern struct optab state25[];
64: extern struct optab state26[];
65: extern struct optab state27[];
66: extern struct optab state28[];
67: extern struct optab state29[];
68: extern struct optab state30[];
69: extern struct optab state31[];
70: extern struct optab state32[];
71: extern struct optab state33[];
72: extern struct optab state34[];
73: extern struct optab state35[];
74: extern struct optab state36[];
75: extern struct optab state37[];
76: extern struct optab state38[];
77: extern struct optab state39[];
78: extern struct optab state40[];
79: extern struct optab state41[];
80: extern struct optab state42[];
81: extern struct optab state43[];
82: extern struct optab state44[];
83: extern struct optab state45[];
84: extern struct optab state46[];
85: extern struct optab state47[];
86: extern struct optab state48[];
87: extern struct optab state49[];
88: extern struct optab state50[];
89: extern struct optab state51[];
90: extern struct optab state52[];
91: extern struct optab state53[];
92: extern struct optab state54[];
93: extern struct optab state55[];
94: extern struct optab state56[];
95: extern struct optab state57[];
96: extern struct optab state58[];
97: extern struct optab state59[];
98: extern struct optab state60[];
99: extern struct optab state61[];
100:
101: /*
102: * o_action values.
103: */
104:
105: #define A_GOTO 1 /* shift input and goto new state o_val */
106: #define A_ERROR 2 /* illegal operator */
107: #define A_RETURN 3 /* return o_val, save input char */
108: #define A_IMMRET 4 /* return o_val, discard input char */
109:
110: /*
111: * Miscellaneous.
112: */
113:
114: #define isoctal(c) ((c)>='0'&&(c)<='7') /* macro to test for octal digit */
115: #define NEXTCHAR nextchar() /* macro to get next character */
116: #define PUSHCHAR(c) peekc=(c) /* macro to push back a character */
117:
118: #define COMMENT '#' /* comment beginner */
119: #define ESCAPE '\\' /* string literal escape character */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.