1 #include "awk.def"
2 CELL *nullproc();
3 extern CELL *program();
4 extern CELL *boolop();
5 extern CELL *relop();
6 extern CELL *array();
7 extern CELL *indirect();
8 extern CELL *substr();
9 extern CELL *sindex();
10 extern CELL *a_sprintf();
11 extern CELL *arith();
12 extern CELL *incrdecr();
13 extern CELL *cat();
14 extern CELL *pastat();
15 extern CELL *dopa2();
16 extern CELL *matchop();
17 extern CELL *aprintf();
18 extern CELL *print();
19 extern CELL *split();
20 extern CELL *assign();
21 extern CELL *ifstat();
22 extern CELL *whilestat();
23 extern CELL *forstat();
24 extern CELL *instat();
25 extern CELL *jump();
26 extern CELL *fncn();
27 extern CELL *getaline();
28 CELL *(*proctab[83])() = {
29 /*FIRSTTOKEN*/	nullproc,
30 /*FINAL*/	nullproc,
31 /*FATAL*/	nullproc,
32 /*LT*/	relop,
33 /*LE*/	relop,
34 /*GT*/	relop,
35 /*GE*/	relop,
36 /*EQ*/	relop,
37 /*NE*/	relop,
38 /*MATCH*/	matchop,
39 /*NOTMATCH*/	matchop,
40 /*APPEND*/	nullproc,
41 /*ADD*/	arith,
42 /*MINUS*/	arith,
43 /*MULT*/	arith,
44 /*DIVIDE*/	arith,
45 /*MOD*/	arith,
46 /*UMINUS*/	arith,
47 /*ASSIGN*/	assign,
48 /*ADDEQ*/	assign,
49 /*SUBEQ*/	assign,
50 /*MULTEQ*/	assign,
51 /*DIVEQ*/	assign,
52 /*MODEQ*/	assign,
53 /*JUMP*/	nullproc,
54 /*XBEGIN*/	nullproc,
55 /*XEND*/	nullproc,
56 /*NL*/	nullproc,
57 /*PRINT*/	print,
58 /*PRINTF*/	aprintf,
59 /*SPRINTF*/	a_sprintf,
60 /*SPLIT*/	split,
61 /*IF*/	ifstat,
62 /*ELSE*/	nullproc,
63 /*WHILE*/	whilestat,
64 /*FOR*/	forstat,
65 /*IN*/	instat,
66 /*NEXT*/	jump,
67 /*EXIT*/	jump,
68 /*BREAK*/	jump,
69 /*CONTINUE*/	jump,
70 /*PROGRAM*/	program,
71 /*PASTAT*/	pastat,
72 /*PASTAT2*/	dopa2,
73 /*ASGNOP*/	nullproc,
74 /*BOR*/	boolop,
75 /*AND*/	boolop,
76 /*NOT*/	boolop,
77 /*NUMBER*/	nullproc,
78 /*VAR*/	nullproc,
79 /*ARRAY*/	array,
80 /*FNCN*/	fncn,
81 /*SUBSTR*/	substr,
82 /*LSUBSTR*/	nullproc,
83 /*INDEX*/	sindex,
84 /*GETLINE*/	getaline,
85 /*RELOP*/	nullproc,
86 /*MATCHOP*/	nullproc,
87 /*OR*/	nullproc,
88 /*STRING*/	nullproc,
89 /*DOT*/	nullproc,
90 /*CCL*/	nullproc,
91 /*NCCL*/	nullproc,
92 /*CHAR*/	nullproc,
93 /*CAT*/	cat,
94 /*STAR*/	nullproc,
95 /*PLUS*/	nullproc,
96 /*QUEST*/	nullproc,
97 /*POSTINCR*/	incrdecr,
98 /*PREINCR*/	incrdecr,
99 /*POSTDECR*/	incrdecr,
100 /*PREDECR*/	incrdecr,
101 /*INCR*/	nullproc,
102 /*DECR*/	nullproc,
103 /*FIELD*/	nullproc,
104 /*INDIRECT*/	indirect,
105 /*JUMPTRUE*/	nullproc,
106 /*JUMPFALSE*/	nullproc,
107 /*PUSH*/	nullproc,
108 /*GETREC*/	nullproc,
109 /*NEWSTAT*/	nullproc,
110 /*IN_INIT*/	nullproc,
111 /*IN_EXIT*/	nullproc,
112 };
113 char *printname[83] = {
114 /*FIRSTTOKEN*/	"",
115 /*FINAL*/	"",
116 /*FATAL*/	"",
117 /*LT*/	" < ",
118 /*LE*/	" <= ",
119 /*GT*/	" > ",
120 /*GE*/	" >= ",
121 /*EQ*/	" == ",
122 /*NE*/	" != ",
123 /*MATCH*/	" ~ ",
124 /*NOTMATCH*/	" !~ ",
125 /*APPEND*/	"",
126 /*ADD*/	" + ",
127 /*MINUS*/	" - ",
128 /*MULT*/	" * ",
129 /*DIVIDE*/	" / ",
130 /*MOD*/	" % ",
131 /*UMINUS*/	" -",
132 /*ASSIGN*/	" = ",
133 /*ADDEQ*/	" += ",
134 /*SUBEQ*/	" -= ",
135 /*MULTEQ*/	" *= ",
136 /*DIVEQ*/	" /= ",
137 /*MODEQ*/	" %= ",
138 /*JUMP*/	"",
139 /*XBEGIN*/	"",
140 /*XEND*/	"",
141 /*NL*/	"",
142 /*PRINT*/	"print",
143 /*PRINTF*/	"printf",
144 /*SPRINTF*/	"sprintf ",
145 /*SPLIT*/	"split",
146 /*IF*/	"if(",
147 /*ELSE*/	"",
148 /*WHILE*/	"while(",
149 /*FOR*/	"for(",
150 /*IN*/	"instat",
151 /*NEXT*/	"next",
152 /*EXIT*/	"exit",
153 /*BREAK*/	"break",
154 /*CONTINUE*/	"continue",
155 /*PROGRAM*/	"(null)",
156 /*PASTAT*/	"(null)",
157 /*PASTAT2*/	"(null)",
158 /*ASGNOP*/	"",
159 /*BOR*/	" || ",
160 /*AND*/	" && ",
161 /*NOT*/	" !",
162 /*NUMBER*/	"",
163 /*VAR*/	"",
164 /*ARRAY*/	"(null)",
165 /*FNCN*/	"fncn",
166 /*SUBSTR*/	"substr",
167 /*LSUBSTR*/	"",
168 /*INDEX*/	"sindex",
169 /*GETLINE*/	"getline",
170 /*RELOP*/	"",
171 /*MATCHOP*/	"",
172 /*OR*/	"",
173 /*STRING*/	"",
174 /*DOT*/	"",
175 /*CCL*/	"",
176 /*NCCL*/	"",
177 /*CHAR*/	"",
178 /*CAT*/	" ",
179 /*STAR*/	"",
180 /*PLUS*/	"",
181 /*QUEST*/	"",
182 /*POSTINCR*/	"++",
183 /*PREINCR*/	"++",
184 /*POSTDECR*/	"--",
185 /*PREDECR*/	"--",
186 /*INCR*/	"",
187 /*DECR*/	"",
188 /*FIELD*/	"",
189 /*INDIRECT*/	"$(",
190 /*JUMPTRUE*/	"",
191 /*JUMPFALSE*/	"",
192 /*PUSH*/	"",
193 /*GETREC*/	"",
194 /*NEWSTAT*/	"",
195 /*IN_INIT*/	"",
196 /*IN_EXIT*/	"",
197 };
198