proctab.c - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
proctab.c (5141B) | |
--- | |
1 #include <stdio.h> | |
2 #include <math.h> | |
3 #include "awk.h" | |
4 #include "y.tab.h" | |
5 | |
6 static char *printname[92] = { | |
7 (char *) "FIRSTTOKEN", /* 57346 */ | |
8 (char *) "PROGRAM", /* 57347 */ | |
9 (char *) "PASTAT", /* 57348 */ | |
10 (char *) "PASTAT2", /* 57349 */ | |
11 (char *) "XBEGIN", /* 57350 */ | |
12 (char *) "XEND", /* 57351 */ | |
13 (char *) "NL", /* 57352 */ | |
14 (char *) "ARRAY", /* 57353 */ | |
15 (char *) "MATCH", /* 57354 */ | |
16 (char *) "NOTMATCH", /* 57355 */ | |
17 (char *) "MATCHOP", /* 57356 */ | |
18 (char *) "FINAL", /* 57357 */ | |
19 (char *) "DOT", /* 57358 */ | |
20 (char *) "ALL", /* 57359 */ | |
21 (char *) "CCL", /* 57360 */ | |
22 (char *) "NCCL", /* 57361 */ | |
23 (char *) "CHAR", /* 57362 */ | |
24 (char *) "OR", /* 57363 */ | |
25 (char *) "STAR", /* 57364 */ | |
26 (char *) "QUEST", /* 57365 */ | |
27 (char *) "PLUS", /* 57366 */ | |
28 (char *) "AND", /* 57367 */ | |
29 (char *) "BOR", /* 57368 */ | |
30 (char *) "APPEND", /* 57369 */ | |
31 (char *) "EQ", /* 57370 */ | |
32 (char *) "GE", /* 57371 */ | |
33 (char *) "GT", /* 57372 */ | |
34 (char *) "LE", /* 57373 */ | |
35 (char *) "LT", /* 57374 */ | |
36 (char *) "NE", /* 57375 */ | |
37 (char *) "IN", /* 57376 */ | |
38 (char *) "ARG", /* 57377 */ | |
39 (char *) "BLTIN", /* 57378 */ | |
40 (char *) "BREAK", /* 57379 */ | |
41 (char *) "CLOSE", /* 57380 */ | |
42 (char *) "CONTINUE", /* 57381 */ | |
43 (char *) "DELETE", /* 57382 */ | |
44 (char *) "DO", /* 57383 */ | |
45 (char *) "EXIT", /* 57384 */ | |
46 (char *) "FOR", /* 57385 */ | |
47 (char *) "FUNC", /* 57386 */ | |
48 (char *) "SUB", /* 57387 */ | |
49 (char *) "GSUB", /* 57388 */ | |
50 (char *) "IF", /* 57389 */ | |
51 (char *) "INDEX", /* 57390 */ | |
52 (char *) "LSUBSTR", /* 57391 */ | |
53 (char *) "MATCHFCN", /* 57392 */ | |
54 (char *) "NEXT", /* 57393 */ | |
55 (char *) "NEXTFILE", /* 57394 */ | |
56 (char *) "ADD", /* 57395 */ | |
57 (char *) "MINUS", /* 57396 */ | |
58 (char *) "MULT", /* 57397 */ | |
59 (char *) "DIVIDE", /* 57398 */ | |
60 (char *) "MOD", /* 57399 */ | |
61 (char *) "ASSIGN", /* 57400 */ | |
62 (char *) "ASGNOP", /* 57401 */ | |
63 (char *) "ADDEQ", /* 57402 */ | |
64 (char *) "SUBEQ", /* 57403 */ | |
65 (char *) "MULTEQ", /* 57404 */ | |
66 (char *) "DIVEQ", /* 57405 */ | |
67 (char *) "MODEQ", /* 57406 */ | |
68 (char *) "POWEQ", /* 57407 */ | |
69 (char *) "PRINT", /* 57408 */ | |
70 (char *) "PRINTF", /* 57409 */ | |
71 (char *) "SPRINTF", /* 57410 */ | |
72 (char *) "ELSE", /* 57411 */ | |
73 (char *) "INTEST", /* 57412 */ | |
74 (char *) "CONDEXPR", /* 57413 */ | |
75 (char *) "POSTINCR", /* 57414 */ | |
76 (char *) "PREINCR", /* 57415 */ | |
77 (char *) "POSTDECR", /* 57416 */ | |
78 (char *) "PREDECR", /* 57417 */ | |
79 (char *) "VAR", /* 57418 */ | |
80 (char *) "IVAR", /* 57419 */ | |
81 (char *) "VARNF", /* 57420 */ | |
82 (char *) "CALL", /* 57421 */ | |
83 (char *) "NUMBER", /* 57422 */ | |
84 (char *) "STRING", /* 57423 */ | |
85 (char *) "REGEXPR", /* 57424 */ | |
86 (char *) "GETLINE", /* 57425 */ | |
87 (char *) "RETURN", /* 57426 */ | |
88 (char *) "SPLIT", /* 57427 */ | |
89 (char *) "SUBSTR", /* 57428 */ | |
90 (char *) "WHILE", /* 57429 */ | |
91 (char *) "CAT", /* 57430 */ | |
92 (char *) "NOT", /* 57431 */ | |
93 (char *) "UMINUS", /* 57432 */ | |
94 (char *) "POWER", /* 57433 */ | |
95 (char *) "DECR", /* 57434 */ | |
96 (char *) "INCR", /* 57435 */ | |
97 (char *) "INDIRECT", /* 57436 */ | |
98 (char *) "LASTTOKEN", /* 57437 */ | |
99 }; | |
100 | |
101 | |
102 Cell *(*proctab[92])(Node **, int) = { | |
103 nullproc, /* FIRSTTOKEN */ | |
104 program, /* PROGRAM */ | |
105 pastat, /* PASTAT */ | |
106 dopa2, /* PASTAT2 */ | |
107 nullproc, /* XBEGIN */ | |
108 nullproc, /* XEND */ | |
109 nullproc, /* NL */ | |
110 array, /* ARRAY */ | |
111 matchop, /* MATCH */ | |
112 matchop, /* NOTMATCH */ | |
113 nullproc, /* MATCHOP */ | |
114 nullproc, /* FINAL */ | |
115 nullproc, /* DOT */ | |
116 nullproc, /* ALL */ | |
117 nullproc, /* CCL */ | |
118 nullproc, /* NCCL */ | |
119 nullproc, /* CHAR */ | |
120 nullproc, /* OR */ | |
121 nullproc, /* STAR */ | |
122 nullproc, /* QUEST */ | |
123 nullproc, /* PLUS */ | |
124 boolop, /* AND */ | |
125 boolop, /* BOR */ | |
126 nullproc, /* APPEND */ | |
127 relop, /* EQ */ | |
128 relop, /* GE */ | |
129 relop, /* GT */ | |
130 relop, /* LE */ | |
131 relop, /* LT */ | |
132 relop, /* NE */ | |
133 instat, /* IN */ | |
134 arg, /* ARG */ | |
135 bltin, /* BLTIN */ | |
136 jump, /* BREAK */ | |
137 closefile, /* CLOSE */ | |
138 jump, /* CONTINUE */ | |
139 awkdelete, /* DELETE */ | |
140 dostat, /* DO */ | |
141 jump, /* EXIT */ | |
142 forstat, /* FOR */ | |
143 nullproc, /* FUNC */ | |
144 sub, /* SUB */ | |
145 gsub, /* GSUB */ | |
146 ifstat, /* IF */ | |
147 sindex, /* INDEX */ | |
148 nullproc, /* LSUBSTR */ | |
149 matchop, /* MATCHFCN */ | |
150 jump, /* NEXT */ | |
151 jump, /* NEXTFILE */ | |
152 arith, /* ADD */ | |
153 arith, /* MINUS */ | |
154 arith, /* MULT */ | |
155 arith, /* DIVIDE */ | |
156 arith, /* MOD */ | |
157 assign, /* ASSIGN */ | |
158 nullproc, /* ASGNOP */ | |
159 assign, /* ADDEQ */ | |
160 assign, /* SUBEQ */ | |
161 assign, /* MULTEQ */ | |
162 assign, /* DIVEQ */ | |
163 assign, /* MODEQ */ | |
164 assign, /* POWEQ */ | |
165 printstat, /* PRINT */ | |
166 awkprintf, /* PRINTF */ | |
167 awksprintf, /* SPRINTF */ | |
168 nullproc, /* ELSE */ | |
169 intest, /* INTEST */ | |
170 condexpr, /* CONDEXPR */ | |
171 incrdecr, /* POSTINCR */ | |
172 incrdecr, /* PREINCR */ | |
173 incrdecr, /* POSTDECR */ | |
174 incrdecr, /* PREDECR */ | |
175 nullproc, /* VAR */ | |
176 nullproc, /* IVAR */ | |
177 getnf, /* VARNF */ | |
178 call, /* CALL */ | |
179 nullproc, /* NUMBER */ | |
180 nullproc, /* STRING */ | |
181 nullproc, /* REGEXPR */ | |
182 getline, /* GETLINE */ | |
183 jump, /* RETURN */ | |
184 split, /* SPLIT */ | |
185 substr, /* SUBSTR */ | |
186 whilestat, /* WHILE */ | |
187 cat, /* CAT */ | |
188 boolop, /* NOT */ | |
189 arith, /* UMINUS */ | |
190 arith, /* POWER */ | |
191 nullproc, /* DECR */ | |
192 nullproc, /* INCR */ | |
193 indirect, /* INDIRECT */ | |
194 nullproc, /* LASTTOKEN */ | |
195 }; | |
196 | |
197 char *tokname(int n) | |
198 { | |
199 static char buf[100]; | |
200 | |
201 if (n < FIRSTTOKEN || n > LASTTOKEN) { | |
202 sprintf(buf, "token %d", n); | |
203 return buf; | |
204 } | |
205 return printname[n-FIRSTTOKEN]; | |
206 } |