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