]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/CodeTools/Source/Pccts/antlr/proto.h
More renames for Tool Packages
[mirror_edk2.git] / Tools / CodeTools / Source / Pccts / antlr / proto.h
CommitLineData
878ddf1f 1/*\r
2 * proto.h -- function prototypes\r
3 *\r
4 * SOFTWARE RIGHTS\r
5 *\r
6 * We reserve no LEGAL rights to the Purdue Compiler Construction Tool\r
7 * Set (PCCTS) -- PCCTS is in the public domain. An individual or\r
8 * company may do whatever they wish with source code distributed with\r
9 * PCCTS or the code generated by PCCTS, including the incorporation of\r
10 * PCCTS, or its output, into commerical software.\r
11 *\r
12 * We encourage users to develop software with PCCTS. However, we do ask\r
13 * that credit is given to us for developing PCCTS. By "credit",\r
14 * we mean that if you incorporate our source code into one of your\r
15 * programs (commercial product, research project, or otherwise) that you\r
16 * acknowledge this fact somewhere in the documentation, research report,\r
17 * etc... If you like PCCTS and have developed a nice tool with the\r
18 * output, please mention that you developed it using PCCTS. In\r
19 * addition, we ask that this header remain intact in our source code.\r
20 * As long as these guidelines are kept, we expect to continue enhancing\r
21 * this system and expect to make other tools available as they are\r
22 * completed.\r
23 *\r
24 * ANTLR 1.33\r
25 * Terence Parr\r
26 * Parr Research Corporation\r
27 * with Purdue University and AHPCRC, University of Minnesota\r
28 * 1989-2001\r
29 */\r
30\r
31 /* V a r i a b l e s */\r
32\r
33extern int tp;\r
34extern Junction *SynDiag;\r
35extern char Version[];\r
36extern char VersionDef[];\r
37#ifdef __cplusplus\r
38extern void (*fpPrint[])(...);\r
39#else\r
40extern void (*fpPrint[])();\r
41#endif\r
42#ifdef __cplusplus\r
43extern struct _set (*fpReach[])(...);\r
44#else\r
45extern struct _set (*fpReach[])();\r
46#endif\r
47#ifdef __cplusplus\r
48extern struct _tree *(*fpTraverse[])(...);\r
49#else\r
50extern struct _tree *(*fpTraverse[])();\r
51#endif\r
52#ifdef __cplusplus\r
53extern void (**fpTrans)(...);\r
54#else\r
55extern void (**fpTrans)();\r
56#endif\r
57#ifdef __cplusplus\r
58extern void (**fpJTrans)(...);\r
59#else\r
60extern void (**fpJTrans)();\r
61#endif\r
62#ifdef __cplusplus\r
63extern void (*C_Trans[NumNodeTypes+1])(...);\r
64#else\r
65extern void (*C_Trans[])();\r
66#endif\r
67#ifdef __cplusplus\r
68extern void (*C_JTrans[NumJuncTypes+1])(...);\r
69#else\r
70extern void (*C_JTrans[])();\r
71#endif\r
72extern int BlkLevel;\r
73extern int CurFile;\r
74extern char *CurPredName;\r
75extern char *CurRule;\r
76extern int CurRuleDebug; /* MR13 */\r
77extern Junction *CurRuleBlk;\r
78extern RuleEntry *CurRuleNode;\r
79extern ListNode *CurElementLabels;\r
80extern ListNode *CurAstLabelsInActions; /* MR27 */\r
81extern ListNode *ContextGuardPredicateList; /* MR13 */\r
82extern ListNode *CurActionLabels;\r
83extern int numericActionLabel; /* MR10 << ... $1 ... >> or << ... $1 ... >>? */\r
84extern ListNode *NumericPredLabels; /* MR10 << ... $1 ... >>? ONLY */\r
85extern char *FileStr[];\r
86extern int NumFiles;\r
87extern int EpToken;\r
88extern int WildCardToken;\r
89extern Entry **Tname,\r
90 **Texpr,\r
91 **Rname,\r
92 **Fcache,\r
93 **Tcache,\r
94 **Elabel,\r
95 **Sname,\r
96 **Pname; /* MR11 */\r
97extern ListNode *ExprOrder;\r
98extern ListNode **Cycles;\r
99extern int TokenNum;\r
100extern int LastTokenCounted;\r
101extern ListNode *BeforeActions, *AfterActions, *LexActions;\r
102\r
103/* MR1 */\r
104/* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */\r
105/* MR1 via #lexmember <<....>> & #lexprefix <<...>> */\r
106/* MR1 */\r
107\r
108extern ListNode *LexMemberActions; /* MR1 */\r
109extern ListNode *LexPrefixActions; /* MR1 */\r
110\r
111extern set *fset; /* for constrained search */ /* MR11 */\r
112extern int maxk; /* for constrained search */ /* MR11 */\r
113extern int Save_argc; /* MR10 */\r
114extern char **Save_argv; /* MR10 */\r
115extern ListNode *eclasses, *tclasses;\r
116extern char *HdrAction;\r
117extern char *FirstAction; /* MR11 */\r
118extern FILE *ErrFile;\r
119extern char *RemapFileName;\r
120extern char *ErrFileName;\r
121extern char *DlgFileName;\r
122extern char *DefFileName;\r
123extern char *ModeFileName;\r
124extern char *StdMsgName;\r
125extern int NumRules;\r
126extern Junction **RulePtr;\r
127extern int LL_k;\r
128extern int CLL_k;\r
129extern char *decodeJType[];\r
130extern int PrintOut;\r
131extern int PrintAnnotate;\r
132extern int CodeGen;\r
133extern int LexGen;\r
134extern int esetnum;\r
135extern int setnum;\r
136extern int wordnum;\r
137extern int GenAST;\r
138extern int GenANSI;\r
139extern int **FoStack;\r
140extern int **FoTOS;\r
141extern int GenExprSetsOpt;\r
142extern FILE *DefFile;\r
143extern int CannotContinue;\r
144extern int GenCR;\r
145extern int GenLineInfo;\r
146extern int GenLineInfoMS;\r
147extern int action_file, action_line;\r
148extern int TraceGen;\r
149extern int CurAmbigAlt1, CurAmbigAlt2, CurAmbigline, CurAmbigfile;\r
150extern char *CurAmbigbtype;\r
151extern int elevel;\r
152extern int GenEClasseForRules;\r
153extern FILE *input, *output;\r
154extern char **TokenStr, **ExprStr;\r
155extern int CurrentLexClass, NumLexClasses;\r
156extern LClass lclass[];\r
157extern char LexStartSymbol[];\r
158extern char *CurRetDef;\r
159extern char *CurParmDef;\r
160extern int OutputLL_k;\r
161extern int TreeResourceLimit;\r
162extern int DemandLookahead;\r
163extern char *RulePrefix;\r
164extern int GenStdPccts;\r
165extern char *stdpccts;\r
166extern int ParseWithPredicates;\r
167extern int ConstrainSearch;\r
168extern int PURIFY; /* MR23 */\r
169\r
170extern set MR_CompromisedRules; /* MR14 */\r
171extern int MR_AmbSourceSearch; /* MR11 */\r
172extern int MR_SuppressSearch; /* MR13 */\r
173extern int MR_AmbSourceSearchGroup; /* MR11 */\r
174extern int MR_AmbSourceSearchChoice; /* MR11 */\r
175extern int MR_AmbSourceSearchLimit; /* MR11 */\r
176extern int MR_usingPredNames; /* MR11 */\r
177extern int MR_ErrorSetComputationActive; /* MR14 */\r
178extern char *MR_AmbAidRule; /* MR11 */\r
179extern int MR_AmbAidLine; /* MR11 */\r
180extern int MR_AmbAidMultiple; /* MR11 */\r
181extern int MR_AmbAidDepth; /* MR11 */\r
182extern int MR_skipped_e3_report; /* MR11 */\r
183extern int MR_matched_AmbAidRule; /* MR11 */\r
184extern int MR_Inhibit_Tokens_h_Gen; /* MR13 */\r
185extern int NewAST; /* MR13 */\r
186extern int tmakeInParser; /* MR23 */\r
187extern int AlphaBetaTrace; /* MR14 */\r
188extern int MR_BlkErr; /* MR21 */\r
189extern int MR_AlphaBetaWarning; /* MR14 */\r
190extern int MR_AlphaBetaMessageCount; /* MR14 */\r
191extern int MR_MaintainBackTrace; /* MR14 */\r
192extern int MR_BadExprSets; /* MR13 */\r
193extern int FoundGuessBlk;\r
194extern int FoundException;\r
195extern int FoundAtOperator; /* MR6 */\r
196extern int FoundExceptionGroup; /* MR6 */\r
197extern int WarningLevel;\r
198extern int UseStdout; /* MR6 */\r
199extern int TabWidth; /* MR6 */\r
200extern int pLevel;\r
201extern int pAlt1;\r
202extern int pAlt2;\r
203extern int AImode;\r
204extern int HoistPredicateContext;\r
205extern int MRhoisting; /* MR9 */\r
206extern int MRhoistingk; /* MR13 */\r
207extern int MR_debugGenRule; /* MR11 */\r
208extern int GenCC;\r
209extern char *ParserName;\r
210extern char *StandardSymbols[];\r
211extern char *ASTSymbols[];\r
212extern set reserved_positions;\r
213extern set all_tokens;\r
214extern set imag_tokens;\r
215extern set tokclasses;\r
216extern ListNode *ForcedTokens;\r
217extern int *TokenInd;\r
218extern FILE *Parser_h, *Parser_c;\r
219extern char CurrentClassName[];\r
220extern int no_classes_found;\r
221extern char Parser_h_Name[];\r
222extern char Parser_c_Name[];\r
223extern char MRinfoFile_Name[]; /* MR10 */\r
224extern FILE *MRinfoFile; /* MR10 */\r
225extern int MRinfo; /* MR10 */\r
226extern int MRinfoSeq; /* MR10 */\r
227extern int InfoP; /* MR10 */\r
228extern int InfoT; /* MR10 */\r
229extern int InfoF; /* MR10 */\r
230extern int InfoM; /* MR10 */\r
231extern int InfoO; /* MR12 */\r
232extern int PotentialSuppression; /* MR10 */\r
233extern int PotentialDummy; /* MR10 */\r
234extern int TnodesInUse; /* MR10 */\r
235extern int TnodesPeak; /* MR10 */\r
236extern int TnodesReportThreshold; /* MR11 */\r
237extern int TnodesAllocated; /* MR10 */\r
238extern char *ClassDeclStuff; /* MR10 */\r
239extern char *BaseClassName; /* MR22 */\r
240extern ListNode *class_before_actions, *class_after_actions;\r
241extern char *UserTokenDefsFile;\r
242extern int UserDefdTokens;\r
243extern ListNode *MetaTokenNodes;\r
244extern char *OutputDirectory;\r
245extern int DontCopyTokens;\r
246extern int LTinTokenAction; /* MR23 */\r
247extern set AST_nodes_refd_in_actions;\r
248extern ListNode *CurExGroups;\r
249extern int CurBlockID;\r
250extern int CurAltNum;\r
251extern Junction *CurAltStart;\r
252extern Junction *OuterAltStart; /* chain exception groups MR7 */\r
253extern ExceptionGroup *DefaultExGroup;\r
254extern int NumSignals;\r
255extern int ContextGuardTRAV;\r
256extern Junction *MR_RuleBlkWithHalt; /* MR10 */\r
257extern PointerStack MR_BackTraceStack; /* MR10 */\r
258extern PointerStack MR_PredRuleRefStack; /* MR10 */\r
259extern PointerStack MR_RuleBlkWithHaltStack; /* MR10 */\r
260\r
261/* */\r
262/* MR1 10-Apr-97 MR1 Previously unable to put right shift operator */\r
263/* MR1 in DLG action */\r
264/* */\r
265extern int tokenActionActive; /* MR1 */\r
266\r
267extern char *PRED_OR_LIST; /* MR10 */\r
268extern char *PRED_AND_LIST; /* MR10 */\r
269\r
270#ifdef __VMS\r
271#define STRICMP strcasecmp /* MR21 */\r
272#else\r
273#define STRICMP stricmp /* MR21 */\r
274#endif\r
275\r
276/* MR26 */\r
277#ifdef PCCTS_USE_STDARG\r
278extern Tree *tmake(Tree *root, ...);\r
279#else\r
280extern Tree *tmake();\r
281#endif\r
282\r
283#ifdef __USE_PROTOS\r
284extern int STRICMP(const char*, const char*);\r
285extern void istackreset(void);\r
286extern int istacksize(void);\r
287extern void pushint(int);\r
288extern int popint( void );\r
289extern int istackempty( void );\r
290extern int topint( void );\r
291extern void NewSetWd( void );\r
292extern void DumpSetWd( void );\r
293extern void DumpSetWdForC( void );\r
294extern void DumpSetWdForCC( void );\r
295extern void NewSet( void );\r
296extern void FillSet( set );\r
297extern void ComputeErrorSets( void );\r
298extern void ComputeTokSets( void );\r
299extern void SubstErrorClass( set * );\r
300extern int DefErrSet( set *, int, char * );\r
301extern int DefErrSetForC( set *, int, char * );\r
302extern int DefErrSetForCC( set *, int, char * );\r
303extern int DefErrSet1(int, set *, int, char *); /* MR21 */\r
304extern int DefErrSetForC1(int, set *, int, char *, const char* ); /* MR21 */\r
305extern int DefErrSetForCC1(int, set *, int, char *, const char* ); /* MR21 */\r
306extern int DefErrSetWithSuffix(int, set *, int, char *, const char *); /* MR21 */\r
307extern void GenErrHdr( void );\r
308extern void dumpExpr( FILE *, char * );\r
309extern void addParm( Node *, char * );\r
310extern Graph buildAction( char *, int, int, int );\r
311extern Graph buildToken( char * );\r
312extern Graph buildWildCard( char * );\r
313extern Graph buildRuleRef( char * );\r
314extern Graph Or( Graph, Graph );\r
315extern Graph Cat( Graph, Graph );\r
316extern Graph makeOpt( Graph, int, char *);\r
317extern Graph makeBlk( Graph, int, char *);\r
318extern Graph makeLoop( Graph, int, char *);\r
319extern Graph makePlus( Graph, int, char *);\r
320extern Graph emptyAlt( void );\r
321extern Graph emptyAlt3( void );\r
322extern TokNode * newTokNode( void );\r
323extern RuleRefNode * newRNode( void );\r
324extern Junction * newJunction( void );\r
325extern ActionNode * newActionNode( void );\r
326extern char * makelocks( void );\r
327extern void preorder( Tree * );\r
328extern Tree * tnode( int );\r
329extern void _Tfree( Tree * );\r
330extern Tree * tdup( Tree * );\r
331extern int is_single_tuple( Tree * );\r
332extern Tree * tappend( Tree *, Tree * );\r
333extern void Tfree( Tree * );\r
334extern Tree * tlink( Tree *, Tree *, int );\r
335extern Tree * tshrink( Tree * );\r
336extern Tree * tflatten( Tree * );\r
337extern Tree * tJunc( Junction *, int, set * );\r
338extern Tree * tRuleRef( RuleRefNode *, int, set * );\r
339extern Tree * tToken( TokNode *, int, set * );\r
340extern Tree * tAction( ActionNode *, int, set * );\r
341extern int tmember( Tree *, Tree * );\r
342extern int tmember_constrained( Tree *, Tree * );\r
343extern Tree * tleft_factor( Tree * );\r
344extern Tree * trm_perm( Tree *, Tree * );\r
345extern void tcvt( set *, Tree * );\r
346extern Tree * permute( int, int );\r
347extern Tree * VerifyAmbig( Junction *, Junction *, unsigned **, set *, Tree **, Tree **, int * );\r
348extern set rJunc( Junction *, int, set * );\r
349extern set rRuleRef( RuleRefNode *, int, set * );\r
350extern set rToken( TokNode *, int, set * );\r
351extern set rAction( ActionNode *, int, set * );\r
352extern void HandleAmbiguity( Junction *, Junction *, Junction *, int );\r
353extern set First( Junction *, int, int, int * );\r
354extern void freeBlkFsets( Junction * );\r
355extern void genAction( ActionNode * );\r
356extern void genRuleRef( RuleRefNode * );\r
357extern void genToken( TokNode * );\r
358extern void genOptBlk( Junction * );\r
359extern void genLoopBlk( Junction *, Junction *, Junction *, int );\r
360extern void genLoopBegin( Junction * );\r
361extern void genPlusBlk( Junction * );\r
362extern void genSubBlk( Junction * );\r
363extern void genRule( Junction * );\r
364extern void genJunction( Junction * );\r
365extern void genEndBlk( Junction * );\r
366extern void genEndRule( Junction * );\r
367extern void genHdr( int );\r
368extern void genHdr1( int );\r
369extern void dumpAction( char *, FILE *, int, int, int, int );\r
370extern void dumpActionPlus(ActionNode*, char *, FILE *, int, int, int, int ); /* MR21 */\r
371extern Entry ** newHashTable( void );\r
372extern Entry * hash_add( Entry **, char *, Entry * );\r
373extern Entry * hash_get( Entry **, char * );\r
374extern void hashStat( Entry ** );\r
375extern char * mystrdup( char * );\r
376extern void genLexDescr( void );\r
377extern void dumpLexClasses( FILE * );\r
378extern void genDefFile( void );\r
379extern void DumpListOfParmNames( char *, FILE *, int ); /* MR5 janm 26-May-97 */\r
380extern int DumpNextNameInDef( char **, FILE * );\r
381extern void DumpOldStyleParms( char *, FILE * );\r
382extern void DumpType( char *, FILE * );\r
383extern int strmember( char *, char * );\r
384/* extern int HasComma( char * ); MR23 Replaced by hasMultipleOperands() */\r
385extern void DumpRetValStruct( FILE *, char *, int );\r
386extern char * StripQuotes( char * );\r
387extern int main( int, char *[] );\r
388extern void readDescr( void );\r
389extern FILE * NextFile( void );\r
390extern char * outnameX( char *, char *);\r
391extern char * outname( char * );\r
392extern void fatalFL( char *, char *, int );\r
393extern void fatal_intern( char *, char *, int );\r
394extern void cleanUp( void );\r
395extern char * eMsg3( char *, char *, char *, char * );\r
396extern char * eMsgd( char *, int );\r
397extern char * eMsgd2( char *, int, int );\r
398extern void s_fprT( FILE *, set );\r
399extern char * TerminalString( int );\r
400extern void lexclass( char * );\r
401extern void lexmode( int );\r
402extern int LexClassIndex( char * );\r
403extern int hasAction( char * );\r
404extern void setHasAction( char *, char * );\r
405extern int addTname( char * );\r
406extern int addTexpr( char * );\r
407extern int Tnum( char * );\r
408extern void Tklink( char *, char * );\r
409extern Entry * newEntry( char *, int );\r
410extern void list_add( ListNode **, void * );\r
411extern void list_free( ListNode **, int freeData ); /* MR10 */\r
412extern void list_apply( ListNode *, void (*)(void *) );\r
413extern int list_search_cstring (ListNode *, char *); /* MR27 */\r
414extern char * Fkey( char *, int, int );\r
415extern void FoPush( char *, int );\r
416extern void FoPop( int );\r
417extern void RegisterCycle( char *, int );\r
418extern void ResolveFoCycles( int );\r
419extern void pJunc( Junction * );\r
420extern void pRuleRef( RuleRefNode * );\r
421extern void pToken( TokNode * );\r
422extern void pAction( ActionNode * );\r
423extern void FoLink( Node * );\r
424extern void addFoLink( Node *, char *, Junction * );\r
425extern void GenCrossRef( Junction * );\r
426extern void defErr( char *, long, long, long, long, long, long );\r
427extern void genStdPCCTSIncludeFile(FILE *,char *); /* MR10 */\r
428extern char * pcctsBaseName(char *); /* MR32 */\r
429extern Predicate *find_predicates(Node *); /* MR10 */\r
430extern Predicate *MR_find_predicates_and_supp(Node *); /* MR13 */\r
431extern int predicateLookaheadDepth(ActionNode *); /* MR10 */\r
432extern void predicate_free(Predicate *); /* MR10 */\r
433extern Predicate * predicate_dup(Predicate *); /* MR10 */\r
434extern Predicate * predicate_dup_without_context(Predicate *); /* MR11 */\r
435extern void GenRulePrototypes(FILE *, Junction *);\r
436extern Junction *first_item_is_guess_block(Junction *);\r
437extern Junction *first_item_is_guess_block_extra(Junction * q); /* MR30 */\r
438extern Junction *analysis_point(Junction *);\r
439extern Tree *make_tree_from_sets(set *, set *);\r
440extern Tree *tdup_chain(Tree *);\r
441extern Tree *tdif(Tree *, Predicate *, set *, set *);\r
442extern set covered_set(Predicate *);\r
443extern void AmbiguityDialog(Junction *, int, Junction *, Junction *, int *, int *);\r
444extern void dumpAmbigMsg(set *, FILE *, int);\r
445extern void GenRuleFuncRedefs(FILE *, Junction *);\r
446extern void GenPredefinedSymbolRedefs(FILE *);\r
447extern void GenASTSymbolRedefs(FILE *);\r
448extern void GenRemapFile(void);\r
449extern void GenSetRedefs(FILE *);\r
450extern ForcedToken *newForcedToken(char *, int);\r
451extern void RemapForcedTokens(void);\r
452extern char *TokenOrExpr(int);\r
453extern void setUpperRange(TokNode *, char *);\r
454extern void GenParser_c_Hdr(void);\r
455extern void GenParser_h_Hdr(void);\r
456extern void GenRuleMemberDeclarationsForCC(FILE *, Junction *);\r
457extern int addForcedTname( char *, int );\r
458extern char *OutMetaName(char *);\r
459extern void OutFirstSetSymbol(Junction *q, char *); /* MR21 */\r
460extern void warnNoFL(char *err);\r
461extern void warnFL(char *err,char *f,int l);\r
462extern void warn(char *err);\r
463extern void warnNoCR( char *err );\r
464extern void errNoFL(char *err);\r
465extern void errFL(char *err,char *f,int l);\r
466extern void err(char *err);\r
467extern void errNoCR( char *err );\r
468extern void genPredTree( Predicate *p, Node *j, int ,int);\r
469extern UserAction *newUserAction(char *);\r
470extern char *gate_symbol(char *name);\r
471extern char *makeAltID(int blockid, int altnum);\r
472extern void DumpRemainingTokSets(void);\r
473extern void DumpANSIFunctionArgDef(FILE *f, Junction *q, int bInit); /* MR23 */\r
474extern void DumpFormals(FILE *, char *, int bInit); /* MR23 */\r
475extern char* hideDefaultArgs(const char* pdecl); /* MR22 VHS */\r
476extern Predicate *computePredFromContextGuard(Graph,int *msgDone); /* MR21 */\r
477extern void recomputeContextGuard(Predicate *); /* MR13 */\r
478extern Predicate *new_pred(void);\r
479extern void chkGTFlag(void);\r
480extern void leAdd(LabelEntry *); /* MR7 */\r
481extern void leFixup(void); /* MR7 */\r
482extern void egAdd(ExceptionGroup *); /* MR7 */\r
483extern void egFixup(void); /* MR7 */\r
484extern void altAdd(Junction *); /* MR7 */\r
485extern void altFixup(void); /* MR7 */\r
486extern Predicate * MR_find_in_aSubBlk(Junction *alt); /* MR10 */\r
487extern Predicate * MR_predFlatten(Predicate *p); /* MR10 */\r
488extern Predicate * MR_predSimplifyALL(Predicate *p); /* MR10 */\r
489extern Predicate * MR_predSimplifyALLX(Predicate *p,int skipPass3); /* MR10 */\r
490extern int MR_allPredLeaves(Predicate *p); /* MR10 */\r
491extern void MR_cleanup_pred_trees(Predicate *p); /* MR10 */\r
492extern int MR_predicate_context_completed(Predicate *p); /* MR10 */\r
493extern void MR_check_pred_too_long(Predicate *p,set completion); /* MR10 */\r
494extern Tree * MR_remove_epsilon_from_tree(Tree *t); /* MR10 */\r
495extern Tree * MR_computeTreeAND(Tree *l,Tree *r); /* MR10 */\r
496extern int MR_tree_equ(Tree *big, Tree *small); /* MR10 */\r
497extern set MR_First(int ck,Junction *j,set *incomplete); /* MR10 */\r
498extern set MR_compute_pred_set(Predicate *p); /* MR10 */\r
499extern Tree * MR_compute_pred_tree_context(Predicate *p); /* MR10 */\r
500extern int MR_pointerStackPush(PointerStack *,void *); /* MR10 */\r
501extern void * MR_pointerStackPop(PointerStack *); /* MR10 */\r
502extern void * MR_pointerStackTop(PointerStack *); /* MR10 */\r
503extern void MR_pointerStackReset(PointerStack *); /* MR10 */\r
504extern void MR_backTraceReport(void); /* MR10 */\r
505extern void MR_alphaBetaTraceReport(void); /* MR14 */\r
506extern void MR_dumpRuleSet(set); /* MR14 */\r
507extern void MR_predContextPresent(Predicate *p,int *,int *); /* MR10 */\r
508extern void MR_dumpPred(Predicate *p,int withContext); /* MR10 */\r
509extern void MR_dumpPred1(int,Predicate *p,int withContext); /* MR10 */\r
510extern void MR_xxxIndent(FILE *f,int depth); /* MR11 */\r
511extern void MR_outputIndent(int depth); /* MR11 */\r
512extern void MR_stderrIndent(int depth); /* MR11 */\r
513extern Junction * MR_ruleReferenced(RuleRefNode *rrn); /* MR10 */\r
514extern Junction * MR_nameToRuleBlk(char *); /* MR10 */\r
515extern void MR_releaseResourcesUsedInRule(Node *); /* MR10 */\r
516extern void MR_dumpTreeX(int depth,Tree *t,int across); /* MR10 */\r
517extern void MR_dumpTreeF(FILE *f,int depth,Tree *t,int across); /* MR10 */\r
518extern void DumpFcache(void); /* MR10 */\r
519extern void MR_dumpTokenSet(FILE *f,int depth,set s); /* MR10 */\r
520extern void MR_traceAmbSource(set *,Junction *,Junction *); /* MR11 */\r
521extern void MR_traceAmbSourceK(Tree *,Junction *a1,Junction *a2); /* MR11 */\r
522extern void MR_traceAmbSourceKclient(void); /* MR20 */\r
523extern Node *MR_advance(Node *); /* MR11 */\r
524extern int MR_offsetFromRule(Node *); /* MR11 */\r
525extern char *MR_ruleNamePlusOffset(Node *); /* MR11 */\r
526extern int MR_max_height_of_tree(Tree *); /* MR11 */\r
527extern int MR_all_leaves_same_height(Tree *,int); /* MR11 */\r
528extern void MR_projectTreeOntoSet(Tree *t,int k,set *); /* MR11 */\r
529extern Tree *MR_make_tree_from_set(set); /* MR11 */\r
530extern Predicate *MR_removeRedundantPredPass3(Predicate *); /* MR11 */\r
531extern void MR_pred_depth(Predicate *,int *); /* MR11 */\r
532extern int MR_comparePredicates(Predicate *,Predicate *); /* MR11 */\r
533extern Predicate * MR_unfold(Predicate *); /* MR11 */\r
534extern void MR_simplifyInverted(Predicate *,int); /* MR11 */\r
535extern int MR_secondPredicateUnreachable /* MR11 */\r
536 (Predicate *first,Predicate *second); /* MR11 */\r
537extern void MR_clearPredEntry(Predicate *); /* MR11 */\r
538extern void MR_orphanRules(FILE *); /* MR12 */\r
539extern void MR_merge_contexts(Tree *); /* MR12 */\r
540extern int ci_strequ(char *,char *); /* MR12 */\r
541extern void MR_guardPred_plainSet(ActionNode *anode,Predicate *); /* MR12c */\r
542extern void MR_suppressSearchReport(void); /* MR12c */\r
543extern Predicate * MR_suppressK(Node *,Predicate *); /* MR13 */\r
544extern void MR_backTraceDumpItem(FILE *,int skip,Node *n); /* MR13 */\r
545extern void MR_backTraceDumpItemReset(void); /* MR13 */\r
546extern Junction * MR_junctionWithoutP2(Junction *); /* MR13 */\r
547extern void MR_setConstrainPointer(set *); /* MR18 */\r
548extern void BlockPreambleOption(Junction *q, char * pSymbol); /* MR23 */\r
549extern char* getInitializer(char *); /* MR23 */\r
550extern char *endFormal(char *pStart, /* MR23 */\r
551 char **ppDataType, /* MR23 */\r
552 char **ppSymbol, /* MR23 */\r
553 char **ppEqualSign, /* MR23 */\r
554 char **ppValue, /* MR23 */\r
555 char **ppSeparator, /* MR23 */\r
556 int *pNext); /* MR23 */\r
557extern char *strBetween(char *pStart, /* MR23 */\r
558 char *pNext, /* MR23 */\r
559 char *pStop); /* MR23 */\r
560extern int hasMultipleOperands(char *); /* MR23 */\r
561extern void DumpInitializers(FILE*, RuleEntry*, char*); /* MR23 */\r
562extern int isTermEntryTokClass(TermEntry *); /* MR23 */\r
563extern int isEmptyAlt(Node *, Node *); /* MR23 */\r
564#else\r
565extern int STRICMP();\r
566extern void istackreset();\r
567extern int istacksize();\r
568extern void pushint();\r
569extern int popint();\r
570extern int istackempty();\r
571extern int topint();\r
572extern void NewSetWd();\r
573extern void DumpSetWd();\r
574extern void DumpSetWdForC();\r
575extern void DumpSetWdForCC();\r
576extern void NewSet();\r
577extern void FillSet();\r
578extern void ComputeErrorSets();\r
579extern void ComputeTokSets();\r
580extern void SubstErrorClass();\r
581extern int DefErrSet();\r
582extern int DefErrSetForC();\r
583extern int DefErrSetForCC();\r
584extern int DefErrSet1();\r
585extern int DefErrSetForC1();\r
586extern int DefErrSetForCC1();\r
587extern int DefErrSetWithSuffix(); /* MR21 */\r
588extern void GenErrHdr();\r
589extern void dumpExpr();\r
590extern void addParm();\r
591extern Graph buildAction();\r
592extern Graph buildToken();\r
593extern Graph buildWildCard();\r
594extern Graph buildRuleRef();\r
595extern Graph Or();\r
596extern Graph Cat();\r
597extern Graph makeOpt();\r
598extern Graph makeBlk();\r
599extern Graph makeLoop();\r
600extern Graph makePlus();\r
601extern Graph emptyAlt();\r
602extern Graph emptyAlt3();\r
603extern TokNode * newTokNode();\r
604extern RuleRefNode * newRNode();\r
605extern Junction * newJunction();\r
606extern ActionNode * newActionNode();\r
607extern char * makelocks();\r
608extern void preorder();\r
609extern Tree * tnode();\r
610extern void _Tfree();\r
611extern Tree * tdup();\r
612extern int is_single_tuple();\r
613extern Tree * tappend();\r
614extern void Tfree();\r
615extern Tree * tlink();\r
616extern Tree * tshrink();\r
617extern Tree * tflatten();\r
618extern Tree * tJunc();\r
619extern Tree * tRuleRef();\r
620extern Tree * tToken();\r
621extern Tree * tAction();\r
622extern int tmember();\r
623extern int tmember_constrained();\r
624extern Tree * tleft_factor();\r
625extern Tree * trm_perm();\r
626extern void tcvt();\r
627extern Tree * permute();\r
628extern Tree * VerifyAmbig();\r
629extern set rJunc();\r
630extern set rRuleRef();\r
631extern set rToken();\r
632extern set rAction();\r
633extern void HandleAmbiguity();\r
634extern set First();\r
635extern void freeBlkFsets();\r
636extern void genAction();\r
637extern void genRuleRef();\r
638extern void genToken();\r
639extern void genOptBlk();\r
640extern void genLoopBlk();\r
641extern void genLoopBegin();\r
642extern void genPlusBlk();\r
643extern void genSubBlk();\r
644extern void genRule();\r
645extern void genJunction();\r
646extern void genEndBlk();\r
647extern void genEndRule();\r
648extern void genHdr();\r
649extern void genHdr1();\r
650extern void dumpAction();\r
651extern void dumpActionPlus(); /* MR21 */\r
652extern Entry ** newHashTable();\r
653extern Entry * hash_add();\r
654extern Entry * hash_get();\r
655extern void hashStat();\r
656extern char * mystrdup();\r
657extern void genLexDescr();\r
658extern void dumpLexClasses();\r
659extern void genDefFile();\r
660extern void DumpListOfParmNames(); /* MR5 janm 26-May-97 */\r
661extern int DumpNextNameInDef();\r
662extern void DumpOldStyleParms();\r
663extern void DumpType();\r
664extern int strmember();\r
665/* extern int HasComma(); MR23 Replaced by hasMultipleOperands() */\r
666extern void DumpRetValStruct();\r
667extern char * StripQuotes();\r
668extern int main();\r
669extern void readDescr();\r
670extern FILE * NextFile();\r
671extern char * outnameX();\r
672extern char * outname();\r
673extern void fatalFL();\r
674extern void fatal_intern();\r
675extern void cleanUp();\r
676extern char * eMsg3();\r
677extern char * eMsgd();\r
678extern char * eMsgd2();\r
679extern void s_fprT();\r
680extern char * TerminalString();\r
681extern void lexclass();\r
682extern void lexmode();\r
683extern int LexClassIndex();\r
684extern int hasAction();\r
685extern void setHasAction();\r
686extern int addTname();\r
687extern int addTexpr();\r
688extern int Tnum();\r
689extern void Tklink();\r
690extern Entry * newEntry();\r
691extern void list_add();\r
692extern void list_free(); /* MR10 */\r
693extern void list_apply();\r
694extern int list_search_cstring (); /* MR27 */\r
695extern char * Fkey();\r
696extern void FoPush();\r
697extern void FoPop();\r
698extern void RegisterCycle();\r
699extern void ResolveFoCycles();\r
700extern void pJunc();\r
701extern void pRuleRef();\r
702extern void pToken();\r
703extern void pAction();\r
704extern void FoLink();\r
705extern void addFoLink();\r
706extern void GenCrossRef();\r
707extern void defErr();\r
708extern void genStdPCCTSIncludeFile();\r
709extern char * pcctsBaseName(); /* MR32 */\r
710extern Predicate *find_predicates();\r
711extern Predicate *MR_find_predicates_and_supp(); /* MR13 */\r
712extern int predicateLookaheadDepth(); /* MR10 */\r
713extern void predicate_free(); /* MR10 */\r
714extern Predicate * predicate_dup(); /* MR10 */\r
715extern Predicate * predicate_dup_without_context(); /* MR11 */\r
716extern void GenRulePrototypes();\r
717extern Junction *first_item_is_guess_block();\r
718extern Junction *first_item_is_guess_block_extra(); /* MR30 */\r
719extern Junction *analysis_point();\r
720extern Tree *make_tree_from_sets();\r
721extern Tree *tdup_chain();\r
722extern Tree *tdif();\r
723extern set covered_set();\r
724extern void AmbiguityDialog();\r
725extern void dumpAmbigMsg();\r
726extern void GenRuleFuncRedefs();\r
727extern void GenPredefinedSymbolRedefs();\r
728extern void GenASTSymbolRedefs();\r
729extern void GenRemapFile();\r
730extern void GenSetRedefs();\r
731extern ForcedToken *newForcedToken();\r
732extern void RemapForcedTokens();\r
733extern char *TokenOrExpr();\r
734extern void setUpperRange();\r
735extern void GenParser_c_Hdr();\r
736extern void GenParser_h_Hdr();\r
737extern void GenRuleMemberDeclarationsForCC();\r
738extern int addForcedTname();\r
739extern char *OutMetaName();\r
740extern void OutFirstSetSymbol(); /* MR21 */\r
741extern void warnNoFL();\r
742extern void warnFL();\r
743extern void warn();\r
744extern void warnNoCR();\r
745extern void errNoFL();\r
746extern void errFL();\r
747extern void err();\r
748extern void errNoCR();\r
749extern void genPredTree();\r
750extern UserAction *newUserAction();\r
751extern char *gate_symbol();\r
752extern char *makeAltID();\r
753extern void DumpRemainingTokSets();\r
754extern void DumpANSIFunctionArgDef();\r
755extern void DumpFormals(); /* MR23 */\r
756extern char* hideDefaultArgs(); /* MR22 VHS */\r
757extern Predicate *computePredFromContextGuard();\r
758extern void recomputeContextGuard(); /* MR13 */\r
759extern Predicate *new_pred();\r
760extern void chkGTFlag();\r
761extern void leAdd(); /* MR7 */\r
762extern void leFixup(); /* MR7 */\r
763extern void egAdd(); /* MR7 */\r
764extern void egFixup(); /* MR7 */\r
765extern void altAdd(); /* MR7 */\r
766extern void altFixup(); /* MR7 */\r
767extern Predicate * MR_find_in_aSubBlk(); /* MR10 */\r
768extern Predicate * MR_predFlatten(); /* MR10 */\r
769extern Predicate * MR_predSimplifyALL(); /* MR10 */\r
770extern Predicate * MR_predSimplifyALLX(); /* MR10 */\r
771extern void MR_cleanup_pred_trees(); /* MR10 */\r
772extern int MR_allPredLeaves(); /* MR10 */\r
773extern int MR_predicate_context_completed(); /* MR10 */\r
774extern void MR_check_pred_too_long(); /* MR10 */\r
775extern Tree * MR_remove_epsilon_from_tree(); /* MR10 */\r
776extern Tree * MR_computeTreeAND(); /* MR10 */\r
777extern int MR_tree_equ(); /* MR10 */\r
778extern set MR_First(); /* MR10 */\r
779extern set MR_compute_pred_set(); /* MR10 */\r
780extern Tree * MR_compute_pred_tree_context(); /* MR10 */\r
781extern int MR_pointerStackPush(); /* MR10 */\r
782extern void * MR_pointerStackPop(); /* MR10 */\r
783extern void * MR_pointerStackTop(); /* MR10 */\r
784extern void MR_pointerStackReset(); /* MR10 */\r
785extern void MR_backTraceReport(); /* MR10 */\r
786extern void MR_alphaBetaTraceReport(); /* MR14 */\r
787extern void MR_dumpRuleSet(); /* MR14 */\r
788extern void MR_predContextPresent(); /* MR10 */\r
789extern void MR_dumpPred(); /* MR10 */\r
790extern void MR_dumpPred1(); /* MR10 */\r
791extern void MR_xxxIndent(); /* MR11 */\r
792extern void MR_stderrIndent(); /* MR11 */\r
793extern void MR_outputIndent(); /* MR11 */\r
794extern Junction * MR_ruleReferenced(); /* MR10 */\r
795extern void MR_releaseResourcesUsedInRule(); /* MR10 */\r
796extern void MR_dumpTreeX(); /* MR10 */\r
797extern void MR_dumpTreeF(); /* MR10 */\r
798extern void DumpFcache(); /* MR10 */\r
799extern void MR_dumpTokenSet(); /* MR10 */\r
800extern void MR_traceAmbSource(); /* MR11 */\r
801extern Node *MR_advance(); /* MR11 */\r
802extern int MR_offsetFromRule(); /* MR11 */\r
803extern char *MR_ruleNamePlusOffset(); /* MR11 */\r
804extern void MR_traceAmbSourceK(); /* MR11 */\r
805extern void MR_traceAmbSourceKclient(); /* [i_a] added */\r
806extern int MR_max_height_of_tree(); /* MR11 */\r
807extern int MR_all_leaves_same_height(); /* MR11 */\r
808extern void MR_projectTreeOntoSet(); /* MR11 */\r
809extern Tree *MR_make_tree_from_set(); /* MR11 */\r
810extern Predicate *MR_removeRedundantPredPass3(); /* MR11 */\r
811extern void MR_pred_depth(); /* MR11 */\r
812extern int MR_comparePredicates(); /* MR11 */\r
813extern Predicate * MR_unfold(); /* MR11 */\r
814extern void MR_simplifyInverted(); /* MR11 */\r
815extern int MR_secondPredicateUnreachable(); /* MR11 */\r
816extern Junction * MR_nameToRuleBlk(); /* MR10 */\r
817extern void MR_clearPredEntry(); /* MR11 */\r
818extern void MR_orphanRules(); /* MR12 */\r
819extern void MR_merge_contexts(); /* MR12 */\r
820extern int ci_strequ(); /* MR12 */\r
821extern void MR_guardPred_plainSet(); /* MR12c */\r
822extern void MR_suppressSearchReport(); /* MR12c */\r
823extern Predicate * MR_suppressK(); /* MR13 */\r
824extern void MR_backTraceDumpItem(); /* MR13 */\r
825extern void MR_backTraceDumpItemReset(); /* MR13 */\r
826extern Junction * MR_junctionWithoutP2(); /* MR13 */\r
827extern void MR_setConstrainPointer(); /* MR18 */\r
828extern void BlockPreambleOption(); /* MR23 */\r
829extern char* getInitializer(); /* MR23 */\r
830extern int hasMultipleOperands(); /* MR23 */\r
831extern char *endFormal(); /* MR23 */\r
832extern char *strBetween(); /* MR23 */\r
833extern void DumpInitializers(); /* MR23 */\r
834extern int isTermEntryTokClass(); /* MR23 */\r
835extern int isEmptyAlt();\r
836\r
837#endif\r
838\r
839#ifdef __USE_PROTOS\r
840#include <stdlib.h>\r
841#endif\r
842\r
843/* MR20 G. Hobbelt Create proper externs for dlg variables */\r
844\r
845extern set attribsRefdFromAction;\r
846extern int inAlt;\r
847extern int UsedOldStyleAttrib;\r
848extern int UsedNewStyleLabel;\r
849\r
850#define MAX_BLK_LEVEL 100 /* MR23 */\r
851extern int CurBlockID_array[MAX_BLK_LEVEL]; /* MR23 */\r
852extern int CurAltNum_array[MAX_BLK_LEVEL]; /* MR23 */\r