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