]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Other/Maintained/Tools/Pccts/h/antlr.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Other / Maintained / Tools / Pccts / h / antlr.h
1 /* antlr.h
2 *
3 * SOFTWARE RIGHTS
4 *
5 * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
6 * Set (PCCTS) -- PCCTS is in the public domain. An individual or
7 * company may do whatever they wish with source code distributed with
8 * PCCTS or the code generated by PCCTS, including the incorporation of
9 * PCCTS, or its output, into commerical software.
10 *
11 * We encourage users to develop software with PCCTS. However, we do ask
12 * that credit is given to us for developing PCCTS. By "credit",
13 * we mean that if you incorporate our source code into one of your
14 * programs (commercial product, research project, or otherwise) that you
15 * acknowledge this fact somewhere in the documentation, research report,
16 * etc... If you like PCCTS and have developed a nice tool with the
17 * output, please mention that you developed it using PCCTS. In
18 * addition, we ask that this header remain intact in our source code.
19 * As long as these guidelines are kept, we expect to continue enhancing
20 * this system and expect to make other tools available as they are
21 * completed.
22 *
23 * ANTLR 1.33
24 * Terence Parr
25 * Parr Research Corporation
26 * with Purdue University and AHPCRC, University of Minnesota
27 * 1989-1998
28 */
29
30 #ifndef ANTLR_H
31 #define ANTLR_H
32
33 #include "pcctscfg.h"
34
35 #include "pccts_stdio.h"
36
37 /* turn off warnings for unreferenced labels */
38
39 #ifdef _MSC_VER
40 #pragma warning(disable:4102)
41 #endif
42
43 /*
44 * Define all of the stack setup and manipulation of $i, #i variables.
45 *
46 * Notes:
47 * The type 'Attrib' must be defined before entry into this .h file.
48 */
49
50
51 #ifdef __USE_PROTOS
52 #include "pccts_stdlib.h"
53 #else
54 #ifdef VAXC
55 #include <stdlib.h>
56 #else
57 #include <malloc.h>
58 #endif
59 #endif
60 #include "pccts_string.h"
61
62 #if 0
63 #include "set.h"
64 #endif
65
66
67 typedef int ANTLRTokenType;
68 typedef unsigned char SetWordType;
69
70 typedef char ANTLRChar;
71
72 /* G u e s s S t u f f */
73
74 #ifdef ZZCAN_GUESS
75 #ifndef ZZINF_LOOK
76 #define ZZINF_LOOK
77 #endif
78 #endif
79
80 #ifdef ZZCAN_GUESS
81 typedef struct _zzjmp_buf {
82 jmp_buf state;
83 } zzjmp_buf;
84 #endif
85
86
87 /* can make this a power of 2 for more efficient lookup */
88
89 #ifndef ZZLEXBUFSIZE
90 #define ZZLEXBUFSIZE 8000 /* MR22 raise from 2k to 8k */
91 #endif
92
93 #define zzOvfChk \
94 if ( zzasp <= 0 ) \
95 { \
96 fprintf(stderr, zzStackOvfMsg, __FILE__, __LINE__); \
97 exit(PCCTS_EXIT_FAILURE); \
98 }
99
100 #ifndef ZZA_STACKSIZE
101 #define ZZA_STACKSIZE 400
102 #endif
103 #ifndef ZZAST_STACKSIZE
104 #define ZZAST_STACKSIZE 400
105 #endif
106
107 #ifndef zzfailed_pred
108 #ifdef ZZCAN_GUESS
109 #define zzfailed_pred(_p) \
110 if (zzguessing) { \
111 zzGUESS_FAIL; \
112 } else { \
113 fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p); \
114 }
115 #else
116 #define zzfailed_pred(_p) \
117 fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p)
118 #endif
119 #endif
120
121 /* MR19 zzchar_t additions */
122
123 #ifdef LL_K
124 #define LOOKAHEAD \
125 int zztokenLA[LL_K]; \
126 zzchar_t zztextLA[LL_K][ZZLEXBUFSIZE]; \
127 int zzlap = 0, zzlabase=0; /* labase only used for DEMAND_LOOK */
128 #else
129 #define LOOKAHEAD \
130 int zztoken;
131 #endif
132
133 #ifndef zzcr_ast
134 #define zzcr_ast(ast,attr,tok,text)
135 #endif
136
137 #ifdef DEMAND_LOOK
138 #define DemandLookData int zzdirty=1;
139 #else
140 #define DemandLookData
141 #endif
142
143 #ifndef zzUSER_GUESS_HOOK
144 #define zzUSER_GUESS_HOOK(seqFrozen,zzrv)
145 #endif
146
147 #ifndef zzUSER_GUESS_DONE_HOOK
148 #define zzUSER_GUESS_DONE_HOOK(seqFrozen)
149 #endif
150
151 /* S t a t e S t u f f */
152
153 #ifdef ZZCAN_GUESS
154 #define zzGUESS_BLOCK zzantlr_state zzst; int zzrv; int zzGuessSeqFrozen;
155
156 /* MR10 change zzGUESS: do zzGUESS_DONE when zzrv==1 after longjmp as in C++ mode */
157
158 #define zzGUESS zzsave_antlr_state(&zzst); \
159 zzguessing = 1; \
160 zzGuessSeqFrozen=++zzGuessSeq; \
161 zzrv = setjmp(zzguess_start.state); \
162 zzUSER_GUESS_HOOK(zzGuessSeqFrozen,zzrv) \
163 if (zzrv) zzGUESS_DONE;
164 #ifdef zzTRACE_RULES
165 #define zzGUESS_FAIL { zzTraceGuessFail(); longjmp(zzguess_start.state, 1); }
166 #else
167 #define zzGUESS_FAIL longjmp(zzguess_start.state, 1)
168 #endif
169
170 /* MR10 change zzGUESS_DONE: zzrv=1 to simulate longjmp() return value as in C++ mode */
171
172 #define zzGUESS_DONE { zzrestore_antlr_state(&zzst); zzrv=1; zzUSER_GUESS_DONE_HOOK(zzGuessSeqFrozen) }
173 #define zzNON_GUESS_MODE if ( !zzguessing )
174 #define zzGuessData \
175 zzjmp_buf zzguess_start; \
176 int zzguessing;
177 #else
178 #define zzGUESS_BLOCK
179 #define zzGUESS
180 #define zzGUESS_FAIL
181 #define zzGUESS_DONE
182 #define zzNON_GUESS_MODE
183 #define zzGuessData
184 #endif
185
186 typedef struct _zzantlr_state {
187 #ifdef ZZCAN_GUESS
188 zzjmp_buf guess_start;
189 int guessing;
190 #endif
191 int asp;
192 int ast_sp;
193 #ifdef ZZINF_LOOK
194 int inf_lap; /* not sure we need to save this one */
195 int inf_labase;
196 int inf_last;
197
198 /* MR6 Gunnar Rxnning (gunnar@candleweb.no) */
199 /* MR6 Additional state needs to be saved/restored */
200 /* MR6 Matching changes in err.h */
201
202 int *inf_tokens; /* MR6 */
203 char **inf_text; /* MR6 */
204 char *inf_text_buffer; /* MR6 */
205 int *inf_line; /* MR6 */
206 #endif
207 #ifdef DEMAND_LOOK
208 int dirty;
209 #endif
210
211 #ifdef LL_K
212 int tokenLA[LL_K];
213 char textLA[LL_K][ZZLEXBUFSIZE];
214 int lap;
215 int labase;
216 #else
217 int token;
218 char text[ZZLEXBUFSIZE];
219 #endif
220 #ifdef zzTRACE_RULES
221 int traceOptionValue; /* MR10 */
222 int traceGuessOptionValue; /* MR10 */
223 char *traceCurrentRuleName; /* MR10 */
224 int traceDepth; /* MR10 */
225 #endif
226
227 } zzantlr_state;
228
229 #ifdef zzTRACE_RULES
230 extern int zzTraceOptionValueDefault;
231 extern int zzTraceOptionValue;
232 extern int zzTraceGuessOptionValue;
233 extern char *zzTraceCurrentRuleName;
234 extern int zzTraceDepth;
235 #endif
236
237 extern int zzGuessSeq; /* MR10 */
238 extern int zzSyntaxErrCount; /* MR11 */
239 extern int zzLexErrCount; /* MR11 */
240
241 /* I n f i n i t e L o o k a h e a d */
242
243
244 #ifdef ZZINF_LOOK
245 #define InfLookData \
246 int *zzinf_tokens; \
247 char **zzinf_text; \
248 char *zzinf_text_buffer; \
249 int *zzinf_line; \
250 int zzinf_labase; \
251 int zzinf_last;
252 #else
253 #define InfLookData
254 #endif
255
256 #ifdef ZZINF_LOOK
257
258 #ifndef ZZINF_DEF_TEXT_BUFFER_SIZE
259 #define ZZINF_DEF_TEXT_BUFFER_SIZE 20000
260 #endif
261 #ifndef ZZINF_DEF_TOKEN_BUFFER_SIZE
262 #define ZZINF_DEF_TOKEN_BUFFER_SIZE 2000
263 #endif
264 /* WARNING!!!!!!
265 * ZZINF_BUFFER_TEXT_CHUNK_SIZE must be > sizeof(text) largest possible token.
266 */
267 #ifndef ZZINF_BUFFER_TEXT_CHUNK_SIZE
268 #define ZZINF_BUFFER_TEXT_CHUNK_SIZE 5000
269 #endif
270 #ifndef ZZINF_BUFFER_TOKEN_CHUNK_SIZE
271 #define ZZINF_BUFFER_TOKEN_CHUNK_SIZE 1000
272 #endif
273
274 #if ZZLEXBUFSIZE > ZZINF_BUFFER_TEXT_CHUNK_SIZE
275 #define ZZINF_BUFFER_TEXT_CHUNK_SIZE ZZLEXBUFSIZE+5
276 #endif
277
278 /* make inf_look user-access macros */
279 #ifdef LL_K
280 #define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)-LL_K+1) <= zzinf_last)
281 #define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)-LL_K+1]
282 #define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)-LL_K+1]
283 /* MR6 In 1.33 vanilla the #define ZZINF_LINE(i) is was commented out */
284 #define ZZINF_LINE(i) zzinf_line[(zzinf_labase+i-1)-LL_K+1]
285 #else
286 #define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)) <= zzinf_last)
287 #define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)]
288 #define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)]
289 #endif
290
291 #define inf_zzgettok _inf_zzgettok()
292 extern void _inf_zzgettok();
293
294 #endif /* ZZINF_LOOK */
295
296
297 #ifdef LL_K
298
299 #ifdef __USE_PROTOS
300 #define ANTLR_INFO \
301 Attrib zzempty_attr(void) {static Attrib a; return a;} \
302 Attrib zzconstr_attr(int _tok, char *_text) \
303 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
304 int zzasp=ZZA_STACKSIZE; \
305 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
306 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
307 InfLookData \
308 zzGuessData
309 #else
310 #define ANTLR_INFO \
311 Attrib zzempty_attr() {static Attrib a; return a;} \
312 Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \
313 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
314 int zzasp=ZZA_STACKSIZE; \
315 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
316 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
317 InfLookData \
318 zzGuessData
319 #endif
320
321 #else
322
323 #ifdef __USE_PROTOS
324 #define ANTLR_INFO \
325 Attrib zzempty_attr(void) {static Attrib a; return a;} \
326 Attrib zzconstr_attr(int _tok, char *_text) \
327 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
328 int zzasp=ZZA_STACKSIZE; \
329 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
330 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
331 InfLookData \
332 zzGuessData
333 #else
334 #define ANTLR_INFO \
335 Attrib zzempty_attr() {static Attrib a; return a;} \
336 Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \
337 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
338 int zzasp=ZZA_STACKSIZE; \
339 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
340 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
341 InfLookData \
342 zzGuessData
343 #endif
344
345 #endif /* LL_k */
346
347
348 #ifdef ZZINF_LOOK
349
350 #ifdef LL_K
351 #ifdef DEMAND_LOOK
352 #define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}
353 #else
354 #define zzPrimeLookAhead {zzlap = zzlabase = 0; zzfill_inf_look();\
355 {int _i; for(_i=1;_i<=LL_K; _i++) \
356 {zzCONSUME;} zzlap = zzlabase = 0;}}
357 #endif
358
359 #else /* LL_K */
360
361 #ifdef DEMAND_LOOK
362 #define zzPrimeLookAhead zzfill_inf_look(); zzdirty=1
363 #else
364 #define zzPrimeLookAhead zzfill_inf_look(); inf_zzgettok
365
366 #endif
367 #endif /* LL_K */
368
369 #else /* ZZINF_LOOK */
370
371 #ifdef LL_K
372 #ifdef DEMAND_LOOK
373 #define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}
374 #else
375 #define zzPrimeLookAhead {int _i; zzlap = 0; for(_i=1;_i<=LL_K; _i++) \
376 {zzCONSUME;} zzlap = 0;}
377 #endif
378
379 #else
380
381 #ifdef DEMAND_LOOK
382 #define zzPrimeLookAhead zzdirty=1
383 #else
384 #define zzPrimeLookAhead zzgettok()
385 #endif
386 #endif /* LL_K */
387
388 #endif /* ZZINF_LOOK */
389
390
391 #ifdef LL_K
392 #define zzenterANTLRs(s) \
393 zzlextext = &(zztextLA[0][0]); zzrdstr( s ); zzPrimeLookAhead;
394 #define zzenterANTLRf(f) \
395 zzlextext = &(zztextLA[0][0]); zzrdfunc( f ); zzPrimeLookAhead;
396 #define zzenterANTLR(f) \
397 zzlextext = &(zztextLA[0][0]); zzrdstream( f ); zzPrimeLookAhead;
398 #ifdef ZZINF_LOOK
399 #define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
400 #define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
401 #define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
402 #else
403 #define zzleaveANTLR(f)
404 #define zzleaveANTLRf(f)
405 #define zzleaveANTLRs(f)
406 #endif
407
408 #else
409
410 #define zzenterANTLRs(s) \
411 {static char zztoktext[ZZLEXBUFSIZE]; \
412 zzlextext = zztoktext; zzrdstr( s ); zzPrimeLookAhead;}
413 #define zzenterANTLRf(f) \
414 {static char zztoktext[ZZLEXBUFSIZE]; \
415 zzlextext = zztoktext; zzrdfunc( f ); zzPrimeLookAhead;}
416 #define zzenterANTLR(f) \
417 {static char zztoktext[ZZLEXBUFSIZE]; \
418 zzlextext = zztoktext; zzrdstream( f ); zzPrimeLookAhead;}
419 #ifdef ZZINF_LOOK
420 #define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
421 #define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
422 #define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
423 #else
424 #define zzleaveANTLR(f)
425 #define zzleaveANTLRf(f)
426 #define zzleaveANTLRs(f)
427 #endif
428
429 #endif
430
431 /* MR19 Paul D. Smith (psmith@baynetworks.com)
432 Need to adjust AST stack pointer at exit.
433 Referenced in ANTLRx macros.
434 */
435
436 #ifdef GENAST
437 #define ZZAST_ADJUST ++zzast_sp;
438 #else
439 #define ZZAST_ADJUST
440 #endif
441
442 #define ANTLR(st, f) zzbufsize = ZZLEXBUFSIZE; \
443 zzenterANTLR(f); \
444 { \
445 zzBLOCK(zztasp1); \
446 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
447 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
448 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
449 zzEXIT_ANTLR(zztasp1 + 1); \
450 } \
451 zzleaveANTLR(f);
452
453 #define ANTLRm(st, f, _m) zzbufsize = ZZLEXBUFSIZE; \
454 zzmode(_m); \
455 zzenterANTLR(f); \
456 { \
457 zzBLOCK(zztasp1); \
458 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
459 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
460 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
461 zzEXIT_ANTLR(zztasp1 + 1); \
462 } \
463 zzleaveANTLR(f);
464
465 #define ANTLRf(st, f) zzbufsize = ZZLEXBUFSIZE; \
466 zzenterANTLRf(f); \
467 { \
468 zzBLOCK(zztasp1); \
469 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
470 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
471 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
472 zzEXIT_ANTLR(zztasp1 + 1); \
473 } \
474 zzleaveANTLRf(f);
475
476 #define ANTLRs(st, s) zzbufsize = ZZLEXBUFSIZE; \
477 zzenterANTLRs(s); \
478 { \
479 zzBLOCK(zztasp1); \
480 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
481 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
482 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
483 zzEXIT_ANTLR(zztasp1 + 1); \
484 } \
485 zzleaveANTLRs(s);
486
487 #ifdef LL_K
488 #define zztext (&(zztextLA[zzlap][0]))
489 #else
490 #define zztext zzlextext
491 #endif
492
493
494 /* A r g u m e n t A c c e s s */
495
496 #define zzaCur (zzaStack[zzasp])
497 #define zzaRet (*zzaRetPtr)
498 #define zzaArg(v,n) zzaStack[v-n]
499 #define zzMakeAttr { zzNON_GUESS_MODE {zzOvfChk; --zzasp; zzcr_attr(&(zzaStack[zzasp]),LA(1),LATEXT(1));}}
500 #ifdef zzdef0
501 #define zzMake0 { zzOvfChk; --zzasp; zzdef0(&(zzaStack[zzasp]));}
502 #else
503 #define zzMake0 { zzOvfChk; --zzasp;}
504 #endif
505 #define zzaPush(_v) { zzOvfChk; zzaStack[--zzasp] = _v;}
506 #ifndef zzd_attr
507 #define zzREL(t) zzasp=(t); /* Restore state of stack */
508 #else
509 #define zzREL(t) for (; zzasp<(t); zzasp++) \
510 { zzd_attr(&(zzaStack[zzasp])); }
511 #endif
512
513
514 #define zzsetmatch(_es) \
515 if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;
516
517 #ifdef ZZCAN_GUESS
518 #define zzsetmatch_wsig(_es, handler) \
519 if ( !_zzsetmatch_wsig(_es) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}
520 #else
521 #define zzsetmatch_wsig(_es, handler) \
522 if ( !_zzsetmatch_wsig(_es) ) {_signal=MismatchedToken; goto handler;}
523 #endif
524
525 #ifdef __USE_PROTOS
526 extern int _zzsetmatch(SetWordType *, char **, char **, int *, int *, SetWordType **);
527 extern int _zzsetmatch_wsig(SetWordType *);
528 #else
529 extern int _zzsetmatch();
530 extern int _zzsetmatch_wsig();
531 #endif
532
533 #define zzmatch(_t) \
534 if ( !_zzmatch(_t, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;
535
536 #ifdef ZZCAN_GUESS
537 #define zzmatch_wsig(_t,handler) \
538 if ( !_zzmatch_wsig(_t) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}
539 #else
540 #define zzmatch_wsig(_t,handler) \
541 if ( !_zzmatch_wsig(_t) ) {_signal=MismatchedToken; goto handler;}
542 #endif
543
544 #ifdef __USE_PROTOS
545 extern int _zzmatch(int, char **, char **, int *, int *, SetWordType **);
546 extern int _zzmatch_wsig(int);
547 #else
548 extern int _zzmatch();
549 extern int _zzmatch_wsig();
550 #endif
551
552 #define zzmatch_wdfltsig(_t,_f) \
553 if ( !_zzmatch_wdfltsig(_t,_f) ) _signal=MismatchedToken;
554 #define zzsetmatch_wdfltsig(tw,tt,wf) \
555 if ( !_zzsetmatch_wdfltsig(tw,tt,wf) ) _signal=MismatchedToken;
556
557 #ifdef __USE_PROTOS
558 extern int _zzmatch_wdfltsig(int, SetWordType *);
559 extern int _zzsetmatch_wdfltsig(SetWordType *tokensWanted,
560 int tokenTypeOfSet,
561 SetWordType *whatFollows);
562 #else
563 extern int _zzmatch_wdfltsig();
564 extern int _zzsetmatch_wdfltsig();
565 #endif
566
567 #ifdef GENAST
568 #define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \
569 SetWordType *zzMissSet=NULL; int zzMissTok=0; \
570 int zzBadTok=0; char *zzBadText=""; \
571 int zzErrk=1,zzpf=0; \
572 zzTRACEdata \
573 char *zzMissText=""; zzASTVars
574 #else
575 #define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \
576 int zzBadTok=0; char *zzBadText=""; \
577 int zzErrk=1,zzpf=0; \
578 zzTRACEdata \
579 SetWordType *zzMissSet=NULL; int zzMissTok=0; char *zzMissText=""
580 #endif
581
582 #ifdef GENAST
583 #define zzBLOCK(i) int i = zzasp - 1; int zztsp = zzast_sp
584 #define zzEXIT(i) zzREL(i); zzastREL; zzNON_GUESS_MODE { zzastPush(*_root); }
585 #define zzEXIT_ANTLR(i) zzREL(i); zzastREL /* [i_a] added as we want this for the ANTLRx() macros */
586 #define zzLOOP(i) zzREL(i); zzastREL
587 #else
588 #define zzBLOCK(i) int i = zzasp - 1
589 #define zzEXIT(i) zzREL(i)
590 #define zzEXIT_ANTLR(i) zzREL(i) /* [i_a] added as we want this for the ANTLRx() macros */
591 #define zzLOOP(i) zzREL(i)
592 #endif
593
594 #ifdef LL_K
595
596 #ifdef DEMAND_LOOK
597 #define LOOK(_k) {int i,stop=_k-(LL_K-zzdirty); for (i=1; i<=stop; i++) \
598 zzCONSUME;}
599 #define zzCONSUME {zzgettok(); zzdirty--; \
600 zzlap = (zzlap+1)&(LL_K-1); \
601 zzlextext = &(zztextLA[zzlap][0]);}
602 #else
603 #ifdef ZZINF_LOOK
604 #define zzCONSUME {inf_zzgettok; \
605 zzlap = (zzlap+1)&(LL_K-1); \
606 zzlextext = &(zztextLA[zzlap][0]); \
607 }
608 #else
609 #define zzCONSUME {zzgettok(); \
610 zzlap = (zzlap+1)&(LL_K-1); \
611 zzlextext = &(zztextLA[zzlap][0]);}
612 #endif /* ZZINF_LOOK */
613 #endif /* DEMAND_LOOK */
614
615 #else /* LL_K */
616
617 #ifdef DEMAND_LOOK
618 #define LOOK(_k) if ( zzdirty) zzCONSUME;
619 #ifdef ZZINF_LOOK
620 #define zzCONSUME inf_zzgettok; zzdirty=0;
621 #else
622 #define zzCONSUME zzgettok(); zzdirty=0;
623 #endif /* ZZINF_LOOK */
624
625 #else /* DEMAND_LOOK */
626
627 #ifdef ZZINF_LOOK
628 #define zzCONSUME inf_zzgettok
629 #else
630 #define zzCONSUME zzgettok();
631 #endif
632
633 #endif /* DEMAND_LOOK */
634
635 #endif /* LL_K */
636
637 #ifdef LL_K
638 #define NLA zztokenLA[zzlap&(LL_K-1)] /* --> next LA */
639 #define NLATEXT zztextLA[zzlap&(LL_K-1)] /* --> next text of LA */
640 #ifdef DEMAND_LOOK
641 #define LA(i) zztokenLA[(zzlabase+(i)-1)&(LL_K-1)]
642 #define LATEXT(i) (&(zztextLA[(zzlabase+(i)-1)&(LL_K-1)][0]))
643 #else
644 #define LA(i) zztokenLA[(zzlap+(i)-1)&(LL_K-1)]
645 #define LATEXT(i) (&(zztextLA[(zzlap+(i)-1)&(LL_K-1)][0]))
646 #endif
647 #else
648 #define NLA zztoken
649 #define NLATEXT zztext
650 #define LA(i) zztoken
651 #define LATEXT(i) zztext
652 #endif
653
654
655 /* S t a n d a r d S i g n a l s */
656
657 #define NoSignal 0
658 #define MismatchedToken 1
659 #define NoViableAlt 2
660 #define NoSemViableAlt 3
661
662 /* MR7 Allow more control over signalling */
663 /* by adding "Unwind" and "zzsetSignal" */
664
665 #define Unwind 4
666 #define zzsetSignal(newValue) *_retsignal=_signal=(newValue)
667 #define zzsuppressSignal *_retsignal=_signal=0
668 #define zzexportSignal *_retsignal=_signal
669
670 /* F u n c t i o n T r a c i n g */
671
672 #ifndef zzTRACE_RULES
673 #define zzTRACEdata
674 #else
675 #ifndef zzTRACEdata
676 #define zzTRACEdata ANTLRChar *zzTracePrevRuleName = NULL;
677 #endif
678 #endif
679
680 #ifndef zzTRACEIN
681 #define zzTRACEIN(r) zzTracePrevRuleName=zzTraceCurrentRuleName;zzTraceIn(r);
682 #endif
683 #ifndef zzTRACEOUT
684 #define zzTRACEOUT(r) zzTraceOut(r);zzTraceCurrentRuleName=zzTracePrevRuleName;
685 #endif
686
687 /* MR19 zzchar_t additions */
688
689 #ifndef zzchar_t
690 #ifdef ZZWCHAR_T
691 #define zzchar_t wchar_t
692 #else
693 #define zzchar_t char
694 #endif
695 #endif
696
697 /* E x t e r n D e f s */
698
699 #ifdef __USE_PROTOS
700 extern Attrib zzempty_attr(void);
701 extern Attrib zzconstr_attr(int, char *);
702 extern void zzsyn(char *, int, char *, SetWordType *, int, int, char *);
703 extern int zzset_el(unsigned, SetWordType *);
704 extern int zzset_deg(SetWordType *);
705 extern void zzedecode(SetWordType *);
706 extern void zzFAIL(int k, ...);
707 extern void zzresynch(SetWordType *, SetWordType);
708 extern void zzsave_antlr_state(zzantlr_state *);
709 extern void zzrestore_antlr_state(zzantlr_state *);
710 extern void zzfill_inf_look(void);
711 extern void zzconsumeUntil(SetWordType *st); /* MR7 */
712 extern void zzconsumeUntilToken(int t); /* MR7 */
713 extern void zzTraceIn(char * ruleName); /* MR10 */
714 extern void zzTraceOut(char * ruleName); /* MR10 */
715 extern int zzTraceOption(int delta); /* MR10 */
716 extern int zzTraceGuessOption(int delta); /* MR10 */
717 extern void zzTraceReset(void); /* MR10 */
718 extern void zzTraceGuessFail(void); /* MR10 */
719 #ifdef EXCEPTION_HANDLING
720 extern void zzdflthandlers(int, int *);
721 #endif
722 #else
723 extern Attrib zzempty_attr();
724 extern Attrib zzconstr_attr();
725 extern void zzsyn();
726 extern int zzset_el();
727 extern int zzset_deg();
728 extern void zzedecode();
729 extern void zzFAIL();
730 extern void zzresynch();
731 extern void zzsave_antlr_state();
732 extern void zzrestore_antlr_state();
733 extern void zzfill_inf_look();
734 extern void zzconsumeUntil(); /* MR7 */
735 extern void zzconsumeUntilToken(); /* MR7 */
736 extern void zzTraceIn(); /* MR10 */
737 extern void zzTraceOut(); /* MR10 */
738 extern int zzTraceOption(); /* MR10 */
739 extern int zzTraceGuessOption(); /* MR10 */
740 extern void zzTraceReset(); /* MR10 */
741 extern void zzTraceGuessFail(); /* MR10 */
742 #ifdef EXCEPTION_HANDLING
743 extern void zzdflthandlers();
744 #endif
745 #endif
746
747 /* G l o b a l V a r i a b l e s */
748
749 /* Define a parser; user should do a "#parser myname" in their grammar file */
750 /*extern struct pccts_parser zzparser;*/
751
752 extern char *zztokens[];
753 #ifdef LL_K
754 extern int zztokenLA[];
755 extern zzchar_t zztextLA[][ZZLEXBUFSIZE];
756 extern int zzlap;
757 extern int zzlabase;
758 #else
759 extern int zztoken;
760 #endif
761
762 extern char zzStackOvfMsg[];
763 extern int zzasp;
764 extern Attrib zzaStack[];
765 #ifdef ZZINF_LOOK
766 extern int *zzinf_tokens;
767 extern char **zzinf_text;
768 extern char *zzinf_text_buffer;
769 extern int *zzinf_line;
770 extern int zzinf_labase;
771 extern int zzinf_last;
772 #endif
773 #ifdef DEMAND_LOOK
774 extern int zzdirty;
775 #endif
776 #ifdef ZZCAN_GUESS
777 extern int zzguessing;
778 extern zzjmp_buf zzguess_start;
779 #endif
780
781 /* Define global veriables that refer to values exported by the scanner.
782 * These declarations duplicate those in dlgdef.h, but are needed
783 * if ANTLR is not to generate a .dlg file (-gx); PS, this is a hack.
784 */
785 extern zzchar_t *zzlextext; /* text of most recently matched token */
786 extern int zzbufsize; /* how long zzlextext is */
787
788 #endif