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