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.
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
25 * Parr Research Corporation
26 * with Purdue University and AHPCRC, University of Minnesota
35 #include "pccts_stdio.h"
37 /* turn off warnings for unreferenced labels */
40 #pragma warning(disable:4102)
44 * Define all of the stack setup and manipulation of $i, #i variables.
47 * The type 'Attrib' must be defined before entry into this .h file.
52 #include "pccts_stdlib.h"
60 #include "pccts_string.h"
67 typedef int ANTLRTokenType
;
68 typedef unsigned char SetWordType
;
70 typedef char ANTLRChar
;
72 /* G u e s s S t u f f */
81 typedef struct _zzjmp_buf
{
87 /* can make this a power of 2 for more efficient lookup */
90 #define ZZLEXBUFSIZE 8000 /* MR22 raise from 2k to 8k */
96 fprintf(stderr, zzStackOvfMsg, __FILE__, __LINE__); \
97 exit(PCCTS_EXIT_FAILURE); \
100 #ifndef ZZA_STACKSIZE
101 #define ZZA_STACKSIZE 400
103 #ifndef ZZAST_STACKSIZE
104 #define ZZAST_STACKSIZE 400
107 #ifndef zzfailed_pred
109 #define zzfailed_pred(_p,_hasuseraction,_useraction) \
113 zzfailed_pred_action(_p,_hasuseraction,_useraction); \
116 #define zzfailed_pred(_p,_hasuseraction,_useraction) \
117 zzfailed_pred_action(_p,_hasuseraction,_useraction);
121 /* MR23 Provide more control over failed predicate action
122 without any need for user to worry about guessing internals.
123 _hasuseraction == 0 => no user specified error action
124 _hasuseraction == 1 => user specified error action
127 #ifndef zzfailed_pred_action
128 #define zzfailed_pred_action(_p,_hasuseraction,_useraction) \
129 if (_hasuseraction) { _useraction } \
130 else { fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p); }
133 /* MR19 zzchar_t additions */
137 int zztokenLA[LL_K]; \
138 zzchar_t zztextLA[LL_K][ZZLEXBUFSIZE]; \
139 int zzlap = 0, zzlabase=0; /* labase only used for DEMAND_LOOK */
146 #define zzcr_ast(ast,attr,tok,text)
150 #define DemandLookData int zzdirty=1;
152 #define DemandLookData
155 #ifndef zzUSER_GUESS_HOOK
156 #define zzUSER_GUESS_HOOK(seqFrozen,zzrv)
159 #ifndef zzUSER_GUESS_DONE_HOOK
160 #define zzUSER_GUESS_DONE_HOOK(seqFrozen)
163 /* S t a t e S t u f f */
166 #define zzGUESS_BLOCK zzantlr_state zzst; int zzrv; int zzGuessSeqFrozen;
168 /* MR10 change zzGUESS: do zzGUESS_DONE when zzrv==1 after longjmp as in C++ mode */
170 #define zzGUESS zzsave_antlr_state(&zzst); \
172 zzGuessSeqFrozen=++zzGuessSeq; \
173 zzrv = setjmp(zzguess_start.state); \
174 zzUSER_GUESS_HOOK(zzGuessSeqFrozen,zzrv) \
175 if (zzrv) zzGUESS_DONE;
177 #define zzGUESS_FAIL { zzTraceGuessFail(); longjmp(zzguess_start.state, 1); }
179 #define zzGUESS_FAIL longjmp(zzguess_start.state, 1)
182 /* MR10 change zzGUESS_DONE: zzrv=1 to simulate longjmp() return value as in C++ mode */
184 #define zzGUESS_DONE { zzrestore_antlr_state(&zzst); zzrv=1; zzUSER_GUESS_DONE_HOOK(zzGuessSeqFrozen) }
185 #define zzNON_GUESS_MODE if ( !zzguessing )
186 #define zzGuessData \
187 zzjmp_buf zzguess_start; \
190 #define zzGUESS_BLOCK
194 #define zzNON_GUESS_MODE
198 typedef struct _zzantlr_state
{
200 zzjmp_buf guess_start
;
206 int inf_lap
; /* not sure we need to save this one */
210 /* MR6 Gunnar Rxnning (gunnar@candleweb.no) */
211 /* MR6 Additional state needs to be saved/restored */
212 /* MR6 Matching changes in err.h */
214 int *inf_tokens
; /* MR6 */
215 char **inf_text
; /* MR6 */
216 char *inf_text_buffer
; /* MR6 */
217 int *inf_line
; /* MR6 */
225 char textLA
[LL_K
][ZZLEXBUFSIZE
];
230 char text
[ZZLEXBUFSIZE
];
233 int traceOptionValue
; /* MR10 */
234 int traceGuessOptionValue
; /* MR10 */
235 char *traceCurrentRuleName
; /* MR10 */
236 int traceDepth
; /* MR10 */
242 extern int zzTraceOptionValueDefault
;
243 extern int zzTraceOptionValue
;
244 extern int zzTraceGuessOptionValue
;
245 extern char *zzTraceCurrentRuleName
;
246 extern int zzTraceDepth
;
249 extern int zzGuessSeq
; /* MR10 */
250 extern int zzSyntaxErrCount
; /* MR11 */
251 extern int zzLexErrCount
; /* MR11 */
253 /* I n f i n i t e L o o k a h e a d */
257 #define InfLookData \
260 char *zzinf_text_buffer; \
270 #ifndef ZZINF_DEF_TEXT_BUFFER_SIZE
271 #define ZZINF_DEF_TEXT_BUFFER_SIZE 20000
273 #ifndef ZZINF_DEF_TOKEN_BUFFER_SIZE
274 #define ZZINF_DEF_TOKEN_BUFFER_SIZE 2000
277 * ZZINF_BUFFER_TEXT_CHUNK_SIZE must be > sizeof(text) largest possible token.
279 #ifndef ZZINF_BUFFER_TEXT_CHUNK_SIZE
280 #define ZZINF_BUFFER_TEXT_CHUNK_SIZE 5000
282 #ifndef ZZINF_BUFFER_TOKEN_CHUNK_SIZE
283 #define ZZINF_BUFFER_TOKEN_CHUNK_SIZE 1000
286 #if ZZLEXBUFSIZE > ZZINF_BUFFER_TEXT_CHUNK_SIZE
287 #define ZZINF_BUFFER_TEXT_CHUNK_SIZE ZZLEXBUFSIZE+5
290 /* make inf_look user-access macros */
292 #define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)-LL_K+1) <= zzinf_last)
293 #define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)-LL_K+1]
294 #define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)-LL_K+1]
295 /* MR6 In 1.33 vanilla the #define ZZINF_LINE(i) is was commented out */
296 #define ZZINF_LINE(i) zzinf_line[(zzinf_labase+i-1)-LL_K+1]
298 #define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)) <= zzinf_last)
299 #define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)]
300 #define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)]
303 #define inf_zzgettok _inf_zzgettok()
304 extern void _inf_zzgettok();
306 #endif /* ZZINF_LOOK */
313 Attrib zzempty_attr(void) {static Attrib a; return a;} \
314 Attrib zzconstr_attr(int _tok, char *_text) \
315 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
316 int zzasp=ZZA_STACKSIZE; \
317 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
318 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
323 Attrib zzempty_attr() {static Attrib a; return a;} \
324 Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \
325 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
326 int zzasp=ZZA_STACKSIZE; \
327 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
328 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
337 Attrib zzempty_attr(void) {static Attrib a; return a;} \
338 Attrib zzconstr_attr(int _tok, char *_text) \
339 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
340 int zzasp=ZZA_STACKSIZE; \
341 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
342 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
347 Attrib zzempty_attr() {static Attrib a; return a;} \
348 Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \
349 {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \
350 int zzasp=ZZA_STACKSIZE; \
351 char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \
352 Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \
364 #define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}
366 #define zzPrimeLookAhead {zzlap = zzlabase = 0; zzfill_inf_look();\
367 {int _i; for(_i=1;_i<=LL_K; _i++) \
368 {zzCONSUME;} zzlap = zzlabase = 0;}}
374 #define zzPrimeLookAhead zzfill_inf_look(); zzdirty=1
376 #define zzPrimeLookAhead zzfill_inf_look(); inf_zzgettok
381 #else /* ZZINF_LOOK */
385 #define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}
387 #define zzPrimeLookAhead {int _i; zzlap = 0; for(_i=1;_i<=LL_K; _i++) \
388 {zzCONSUME;} zzlap = 0;}
394 #define zzPrimeLookAhead zzdirty=1
396 #define zzPrimeLookAhead zzgettok()
400 #endif /* ZZINF_LOOK */
404 #define zzenterANTLRs(s) \
405 zzlextext = &(zztextLA[0][0]); zzrdstr( s ); zzPrimeLookAhead;
406 #define zzenterANTLRf(f) \
407 zzlextext = &(zztextLA[0][0]); zzrdfunc( f ); zzPrimeLookAhead;
408 #define zzenterANTLR(f) \
409 zzlextext = &(zztextLA[0][0]); zzrdstream( f ); zzPrimeLookAhead;
411 #define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
412 #define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
413 #define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
415 #define zzleaveANTLR(f)
416 #define zzleaveANTLRf(f)
417 #define zzleaveANTLRs(f)
422 #define zzenterANTLRs(s) \
423 {static char zztoktext[ZZLEXBUFSIZE]; \
424 zzlextext = zztoktext; zzrdstr( s ); zzPrimeLookAhead;}
425 #define zzenterANTLRf(f) \
426 {static char zztoktext[ZZLEXBUFSIZE]; \
427 zzlextext = zztoktext; zzrdfunc( f ); zzPrimeLookAhead;}
428 #define zzenterANTLR(f) \
429 {static char zztoktext[ZZLEXBUFSIZE]; \
430 zzlextext = zztoktext; zzrdstream( f ); zzPrimeLookAhead;}
432 #define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
433 #define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
434 #define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);
436 #define zzleaveANTLR(f)
437 #define zzleaveANTLRf(f)
438 #define zzleaveANTLRs(f)
443 /* MR19 Paul D. Smith (psmith@baynetworks.com)
444 Need to adjust AST stack pointer at exit.
445 Referenced in ANTLRx macros.
449 #define ZZAST_ADJUST ++zzast_sp;
454 #define ANTLR(st, f) zzbufsize = ZZLEXBUFSIZE; \
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); \
465 #define ANTLRm(st, f, _m) zzbufsize = ZZLEXBUFSIZE; \
470 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
471 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
472 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
473 zzEXIT_ANTLR(zztasp1 + 1); \
477 #define ANTLRf(st, f) zzbufsize = ZZLEXBUFSIZE; \
481 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
482 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
483 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
484 zzEXIT_ANTLR(zztasp1 + 1); \
488 #define ANTLRs(st, s) zzbufsize = ZZLEXBUFSIZE; \
492 st; /* ++zzasp; Removed MR20 G. Hobbelt */ \
493 /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
494 /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \
495 zzEXIT_ANTLR(zztasp1 + 1); \
500 #define zztext (&(zztextLA[zzlap][0]))
502 #define zztext zzlextext
506 /* A r g u m e n t A c c e s s */
508 #define zzaCur (zzaStack[zzasp])
509 #define zzaRet (*zzaRetPtr)
510 #define zzaArg(v,n) zzaStack[v-n]
511 #define zzMakeAttr { zzNON_GUESS_MODE {zzOvfChk; --zzasp; zzcr_attr(&(zzaStack[zzasp]),LA(1),LATEXT(1));}}
513 #define zzMake0 { zzOvfChk; --zzasp; zzdef0(&(zzaStack[zzasp]));}
515 #define zzMake0 { zzOvfChk; --zzasp;}
517 #define zzaPush(_v) { zzOvfChk; zzaStack[--zzasp] = _v;}
519 #define zzREL(t) zzasp=(t); /* Restore state of stack */
521 #define zzREL(t) for (; zzasp<(t); zzasp++) \
522 { zzd_attr(&(zzaStack[zzasp])); }
526 #define zzsetmatch(_es,_tokclassErrset) \
527 if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet, _tokclassErrset) ) goto fail; /* MR23 */
530 #define zzsetmatch_wsig(_es, handler) \
531 if ( !_zzsetmatch_wsig(_es) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}
533 #define zzsetmatch_wsig(_es, handler) \
534 if ( !_zzsetmatch_wsig(_es) ) {_signal=MismatchedToken; goto handler;}
538 extern int _zzsetmatch(SetWordType
*, char **, char **, int *, int *, SetWordType
**, SetWordType
* /* MR23 */);
539 extern int _zzsetmatch_wsig(SetWordType
*);
541 extern int _zzsetmatch();
542 extern int _zzsetmatch_wsig();
545 #define zzmatch(_t) \
546 if ( !_zzmatch(_t, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;
549 #define zzmatch_wsig(_t,handler) \
550 if ( !_zzmatch_wsig(_t) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}
552 #define zzmatch_wsig(_t,handler) \
553 if ( !_zzmatch_wsig(_t) ) {_signal=MismatchedToken; goto handler;}
557 extern int _zzmatch(int, char **, char **, int *, int *, SetWordType
**);
558 extern int _zzmatch_wsig(int);
560 extern int _zzmatch();
561 extern int _zzmatch_wsig();
564 #define zzmatch_wdfltsig(_t,_f) \
565 if ( !_zzmatch_wdfltsig(_t,_f) ) _signal=MismatchedToken;
566 #define zzsetmatch_wdfltsig(tw,tt,wf) \
567 if ( !_zzsetmatch_wdfltsig(tw,tt,wf) ) _signal=MismatchedToken;
570 extern int _zzmatch_wdfltsig(int, SetWordType
*);
571 extern int _zzsetmatch_wdfltsig(SetWordType
*tokensWanted
,
573 SetWordType
*whatFollows
);
575 extern int _zzmatch_wdfltsig();
576 extern int _zzsetmatch_wdfltsig();
580 #define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \
581 SetWordType *zzMissSet=NULL; int zzMissTok=0; \
582 int zzBadTok=0; char *zzBadText=""; \
583 int zzErrk=1,zzpf=0; \
585 char *zzMissText=""; zzASTVars
587 #define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \
588 int zzBadTok=0; char *zzBadText=""; \
589 int zzErrk=1,zzpf=0; \
591 SetWordType *zzMissSet=NULL; int zzMissTok=0; char *zzMissText=""
595 #define zzBLOCK(i) int i = zzasp - 1; int zztsp = zzast_sp
596 #define zzEXIT(i) zzREL(i); zzastREL; zzNON_GUESS_MODE { zzastPush(*_root); }
597 #define zzEXIT_ANTLR(i) zzREL(i); zzastREL /* [i_a] added as we want this for the ANTLRx() macros */
598 #define zzLOOP(i) zzREL(i); zzastREL
600 #define zzBLOCK(i) int i = zzasp - 1
601 #define zzEXIT(i) zzREL(i)
602 #define zzEXIT_ANTLR(i) zzREL(i) /* [i_a] added as we want this for the ANTLRx() macros */
603 #define zzLOOP(i) zzREL(i)
609 #define LOOK(_k) {int i,stop=_k-(LL_K-zzdirty); for (i=1; i<=stop; i++) \
611 #define zzCONSUME {zzgettok(); zzdirty--; \
612 zzlap = (zzlap+1)&(LL_K-1); \
613 zzlextext = &(zztextLA[zzlap][0]);}
616 #define zzCONSUME {inf_zzgettok; \
617 zzlap = (zzlap+1)&(LL_K-1); \
618 zzlextext = &(zztextLA[zzlap][0]); \
621 #define zzCONSUME {zzgettok(); \
622 zzlap = (zzlap+1)&(LL_K-1); \
623 zzlextext = &(zztextLA[zzlap][0]);}
624 #endif /* ZZINF_LOOK */
625 #endif /* DEMAND_LOOK */
630 #define LOOK(_k) if ( zzdirty) zzCONSUME;
632 #define zzCONSUME inf_zzgettok; zzdirty=0;
634 #define zzCONSUME zzgettok(); zzdirty=0;
635 #endif /* ZZINF_LOOK */
637 #else /* DEMAND_LOOK */
640 #define zzCONSUME inf_zzgettok
642 #define zzCONSUME zzgettok();
645 #endif /* DEMAND_LOOK */
650 #define NLA zztokenLA[zzlap&(LL_K-1)] /* --> next LA */
651 #define NLATEXT zztextLA[zzlap&(LL_K-1)] /* --> next text of LA */
653 #define LA(i) zztokenLA[(zzlabase+(i)-1)&(LL_K-1)]
654 #define LATEXT(i) (&(zztextLA[(zzlabase+(i)-1)&(LL_K-1)][0]))
656 #define LA(i) zztokenLA[(zzlap+(i)-1)&(LL_K-1)]
657 #define LATEXT(i) (&(zztextLA[(zzlap+(i)-1)&(LL_K-1)][0]))
661 #define NLATEXT zztext
662 #define LA(i) zztoken
663 #define LATEXT(i) zztext
667 /* S t a n d a r d S i g n a l s */
670 #define MismatchedToken 1
671 #define NoViableAlt 2
672 #define NoSemViableAlt 3
674 /* MR7 Allow more control over signalling */
675 /* by adding "Unwind" and "zzsetSignal" */
678 #define zzsetSignal(newValue) *_retsignal=_signal=(newValue)
679 #define zzsuppressSignal *_retsignal=_signal=0
680 #define zzexportSignal *_retsignal=_signal
682 /* F u n c t i o n T r a c i n g */
684 #ifndef zzTRACE_RULES
688 #define zzTRACEdata ANTLRChar *zzTracePrevRuleName = NULL;
693 #define zzTRACEIN(r) zzTracePrevRuleName=zzTraceCurrentRuleName;zzTraceIn(r);
696 #define zzTRACEOUT(r) zzTraceOut(r);zzTraceCurrentRuleName=zzTracePrevRuleName;
699 /* MR19 zzchar_t additions */
703 #define zzchar_t wchar_t
705 #define zzchar_t char
712 #ifdef PCCTS_USE_STDARG
713 extern void zzFAIL(int k
, ...);
715 extern void zzFAIL();
717 /* E x t e r n D e f s */
720 extern Attrib
zzempty_attr(void);
721 extern Attrib
zzconstr_attr(int, char *);
722 extern void zzsyn(char *, int, char *, SetWordType
*, int, int, char *);
723 extern int zzset_el(unsigned, SetWordType
*);
724 extern int zzset_deg(SetWordType
*);
725 extern void zzedecode(SetWordType
*);
727 extern void zzresynch(SetWordType
*, SetWordType
);
728 extern void zzsave_antlr_state(zzantlr_state
*);
729 extern void zzrestore_antlr_state(zzantlr_state
*);
730 extern void zzfill_inf_look(void);
731 extern void zzconsumeUntil(SetWordType
*st
); /* MR7 */
732 extern void zzconsumeUntilToken(int t
); /* MR7 */
733 extern void zzTraceIn(char * ruleName
); /* MR10 */
734 extern void zzTraceOut(char * ruleName
); /* MR10 */
735 extern int zzTraceOption(int delta
); /* MR10 */
736 extern int zzTraceGuessOption(int delta
); /* MR10 */
737 extern void zzTraceReset(void); /* MR10 */
738 extern void zzTraceGuessFail(void); /* MR10 */
739 #ifdef EXCEPTION_HANDLING
740 extern void zzdflthandlers(int, int *);
743 extern Attrib
zzempty_attr();
744 extern Attrib
zzconstr_attr();
746 extern int zzset_el();
747 extern int zzset_deg();
748 extern void zzedecode();
749 extern void zzresynch();
750 extern void zzsave_antlr_state();
751 extern void zzrestore_antlr_state();
752 extern void zzfill_inf_look();
753 extern void zzconsumeUntil(); /* MR7 */
754 extern void zzconsumeUntilToken(); /* MR7 */
755 extern void zzTraceIn(); /* MR10 */
756 extern void zzTraceOut(); /* MR10 */
757 extern int zzTraceOption(); /* MR10 */
758 extern int zzTraceGuessOption(); /* MR10 */
759 extern void zzTraceReset(); /* MR10 */
760 extern void zzTraceGuessFail(); /* MR10 */
761 #ifdef EXCEPTION_HANDLING
762 extern void zzdflthandlers();
766 /* G l o b a l V a r i a b l e s */
768 /* Define a parser; user should do a "#parser myname" in their grammar file */
769 /*extern struct pccts_parser zzparser;*/
771 extern char *zztokens
[];
773 extern int zztokenLA
[];
774 extern zzchar_t zztextLA
[][ZZLEXBUFSIZE
];
781 extern char zzStackOvfMsg
[];
783 extern Attrib zzaStack
[];
785 extern int *zzinf_tokens
;
786 extern char **zzinf_text
;
787 extern char *zzinf_text_buffer
;
788 extern int *zzinf_line
;
789 extern int zzinf_labase
;
790 extern int zzinf_last
;
796 extern int zzguessing
;
797 extern zzjmp_buf zzguess_start
;
800 /* Define global veriables that refer to values exported by the scanner.
801 * These declarations duplicate those in dlgdef.h, but are needed
802 * if ANTLR is not to generate a .dlg file (-gx); PS, this is a hack.
804 extern zzchar_t
*zzlextext
; /* text of most recently matched token */
805 extern int zzbufsize
; /* how long zzlextext is */