--- /dev/null
+/*\r
+ * proto.h -- function prototypes\r
+ *\r
+ * SOFTWARE RIGHTS\r
+ *\r
+ * We reserve no LEGAL rights to the Purdue Compiler Construction Tool\r
+ * Set (PCCTS) -- PCCTS is in the public domain. An individual or\r
+ * company may do whatever they wish with source code distributed with\r
+ * PCCTS or the code generated by PCCTS, including the incorporation of\r
+ * PCCTS, or its output, into commerical software.\r
+ *\r
+ * We encourage users to develop software with PCCTS. However, we do ask\r
+ * that credit is given to us for developing PCCTS. By "credit",\r
+ * we mean that if you incorporate our source code into one of your\r
+ * programs (commercial product, research project, or otherwise) that you\r
+ * acknowledge this fact somewhere in the documentation, research report,\r
+ * etc... If you like PCCTS and have developed a nice tool with the\r
+ * output, please mention that you developed it using PCCTS. In\r
+ * addition, we ask that this header remain intact in our source code.\r
+ * As long as these guidelines are kept, we expect to continue enhancing\r
+ * this system and expect to make other tools available as they are\r
+ * completed.\r
+ *\r
+ * ANTLR 1.33\r
+ * Terence Parr\r
+ * Parr Research Corporation\r
+ * with Purdue University and AHPCRC, University of Minnesota\r
+ * 1989-2001\r
+ */\r
+\r
+ /* V a r i a b l e s */\r
+\r
+extern int tp;\r
+extern Junction *SynDiag;\r
+extern char Version[];\r
+extern char VersionDef[];\r
+#ifdef __cplusplus\r
+extern void (*fpPrint[])(...);\r
+#else\r
+extern void (*fpPrint[])();\r
+#endif\r
+#ifdef __cplusplus\r
+extern struct _set (*fpReach[])(...);\r
+#else\r
+extern struct _set (*fpReach[])();\r
+#endif\r
+#ifdef __cplusplus\r
+extern struct _tree *(*fpTraverse[])(...);\r
+#else\r
+extern struct _tree *(*fpTraverse[])();\r
+#endif\r
+#ifdef __cplusplus\r
+extern void (**fpTrans)(...);\r
+#else\r
+extern void (**fpTrans)();\r
+#endif\r
+#ifdef __cplusplus\r
+extern void (**fpJTrans)(...);\r
+#else\r
+extern void (**fpJTrans)();\r
+#endif\r
+#ifdef __cplusplus\r
+extern void (*C_Trans[NumNodeTypes+1])(...);\r
+#else\r
+extern void (*C_Trans[])();\r
+#endif\r
+#ifdef __cplusplus\r
+extern void (*C_JTrans[NumJuncTypes+1])(...);\r
+#else\r
+extern void (*C_JTrans[])();\r
+#endif\r
+extern int BlkLevel;\r
+extern int CurFile;\r
+extern char *CurPredName;\r
+extern char *CurRule;\r
+extern int CurRuleDebug; /* MR13 */\r
+extern Junction *CurRuleBlk;\r
+extern RuleEntry *CurRuleNode;\r
+extern ListNode *CurElementLabels;\r
+extern ListNode *CurAstLabelsInActions; /* MR27 */\r
+extern ListNode *ContextGuardPredicateList; /* MR13 */\r
+extern ListNode *CurActionLabels;\r
+extern int numericActionLabel; /* MR10 << ... $1 ... >> or << ... $1 ... >>? */\r
+extern ListNode *NumericPredLabels; /* MR10 << ... $1 ... >>? ONLY */\r
+extern char *FileStr[];\r
+extern int NumFiles;\r
+extern int EpToken;\r
+extern int WildCardToken;\r
+extern Entry **Tname,\r
+ **Texpr,\r
+ **Rname,\r
+ **Fcache,\r
+ **Tcache,\r
+ **Elabel,\r
+ **Sname,\r
+ **Pname; /* MR11 */\r
+extern ListNode *ExprOrder;\r
+extern ListNode **Cycles;\r
+extern int TokenNum;\r
+extern int LastTokenCounted;\r
+extern ListNode *BeforeActions, *AfterActions, *LexActions;\r
+\r
+/* MR1 */\r
+/* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */\r
+/* MR1 via #lexmember <<....>> & #lexprefix <<...>> */\r
+/* MR1 */\r
+\r
+extern ListNode *LexMemberActions; /* MR1 */\r
+extern ListNode *LexPrefixActions; /* MR1 */\r
+\r
+extern set *fset; /* for constrained search */ /* MR11 */\r
+extern int maxk; /* for constrained search */ /* MR11 */\r
+extern int Save_argc; /* MR10 */\r
+extern char **Save_argv; /* MR10 */\r
+extern ListNode *eclasses, *tclasses;\r
+extern char *HdrAction;\r
+extern char *FirstAction; /* MR11 */\r
+extern FILE *ErrFile;\r
+extern char *RemapFileName;\r
+extern char *ErrFileName;\r
+extern char *DlgFileName;\r
+extern char *DefFileName;\r
+extern char *ModeFileName;\r
+extern char *StdMsgName;\r
+extern int NumRules;\r
+extern Junction **RulePtr;\r
+extern int LL_k;\r
+extern int CLL_k;\r
+extern char *decodeJType[];\r
+extern int PrintOut;\r
+extern int PrintAnnotate;\r
+extern int CodeGen;\r
+extern int LexGen;\r
+extern int esetnum;\r
+extern int setnum;\r
+extern int wordnum;\r
+extern int GenAST;\r
+extern int GenANSI;\r
+extern int **FoStack;\r
+extern int **FoTOS;\r
+extern int GenExprSetsOpt;\r
+extern FILE *DefFile;\r
+extern int CannotContinue;\r
+extern int GenCR;\r
+extern int GenLineInfo;\r
+extern int GenLineInfoMS;\r
+extern int action_file, action_line;\r
+extern int TraceGen;\r
+extern int CurAmbigAlt1, CurAmbigAlt2, CurAmbigline, CurAmbigfile;\r
+extern char *CurAmbigbtype;\r
+extern int elevel;\r
+extern int GenEClasseForRules;\r
+extern FILE *input, *output;\r
+extern char **TokenStr, **ExprStr;\r
+extern int CurrentLexClass, NumLexClasses;\r
+extern LClass lclass[];\r
+extern char LexStartSymbol[];\r
+extern char *CurRetDef;\r
+extern char *CurParmDef;\r
+extern int OutputLL_k;\r
+extern int TreeResourceLimit;\r
+extern int DemandLookahead;\r
+extern char *RulePrefix;\r
+extern int GenStdPccts;\r
+extern char *stdpccts;\r
+extern int ParseWithPredicates;\r
+extern int ConstrainSearch;\r
+extern int PURIFY; /* MR23 */\r
+\r
+extern set MR_CompromisedRules; /* MR14 */\r
+extern int MR_AmbSourceSearch; /* MR11 */\r
+extern int MR_SuppressSearch; /* MR13 */\r
+extern int MR_AmbSourceSearchGroup; /* MR11 */\r
+extern int MR_AmbSourceSearchChoice; /* MR11 */\r
+extern int MR_AmbSourceSearchLimit; /* MR11 */\r
+extern int MR_usingPredNames; /* MR11 */\r
+extern int MR_ErrorSetComputationActive; /* MR14 */\r
+extern char *MR_AmbAidRule; /* MR11 */\r
+extern int MR_AmbAidLine; /* MR11 */\r
+extern int MR_AmbAidMultiple; /* MR11 */\r
+extern int MR_AmbAidDepth; /* MR11 */\r
+extern int MR_skipped_e3_report; /* MR11 */\r
+extern int MR_matched_AmbAidRule; /* MR11 */\r
+extern int MR_Inhibit_Tokens_h_Gen; /* MR13 */\r
+extern int NewAST; /* MR13 */\r
+extern int tmakeInParser; /* MR23 */\r
+extern int AlphaBetaTrace; /* MR14 */\r
+extern int MR_BlkErr; /* MR21 */\r
+extern int MR_AlphaBetaWarning; /* MR14 */\r
+extern int MR_AlphaBetaMessageCount; /* MR14 */\r
+extern int MR_MaintainBackTrace; /* MR14 */\r
+extern int MR_BadExprSets; /* MR13 */\r
+extern int FoundGuessBlk;\r
+extern int FoundException;\r
+extern int FoundAtOperator; /* MR6 */\r
+extern int FoundExceptionGroup; /* MR6 */\r
+extern int WarningLevel;\r
+extern int UseStdout; /* MR6 */\r
+extern int TabWidth; /* MR6 */\r
+extern int pLevel;\r
+extern int pAlt1;\r
+extern int pAlt2;\r
+extern int AImode;\r
+extern int HoistPredicateContext;\r
+extern int MRhoisting; /* MR9 */\r
+extern int MRhoistingk; /* MR13 */\r
+extern int MR_debugGenRule; /* MR11 */\r
+extern int GenCC;\r
+extern char *ParserName;\r
+extern char *StandardSymbols[];\r
+extern char *ASTSymbols[];\r
+extern set reserved_positions;\r
+extern set all_tokens;\r
+extern set imag_tokens;\r
+extern set tokclasses;\r
+extern ListNode *ForcedTokens;\r
+extern int *TokenInd;\r
+extern FILE *Parser_h, *Parser_c;\r
+extern char CurrentClassName[];\r
+extern int no_classes_found;\r
+extern char Parser_h_Name[];\r
+extern char Parser_c_Name[];\r
+extern char MRinfoFile_Name[]; /* MR10 */\r
+extern FILE *MRinfoFile; /* MR10 */\r
+extern int MRinfo; /* MR10 */\r
+extern int MRinfoSeq; /* MR10 */\r
+extern int InfoP; /* MR10 */\r
+extern int InfoT; /* MR10 */\r
+extern int InfoF; /* MR10 */\r
+extern int InfoM; /* MR10 */\r
+extern int InfoO; /* MR12 */\r
+extern int PotentialSuppression; /* MR10 */\r
+extern int PotentialDummy; /* MR10 */\r
+extern int TnodesInUse; /* MR10 */\r
+extern int TnodesPeak; /* MR10 */\r
+extern int TnodesReportThreshold; /* MR11 */\r
+extern int TnodesAllocated; /* MR10 */\r
+extern char *ClassDeclStuff; /* MR10 */\r
+extern char *BaseClassName; /* MR22 */\r
+extern ListNode *class_before_actions, *class_after_actions;\r
+extern char *UserTokenDefsFile;\r
+extern int UserDefdTokens;\r
+extern ListNode *MetaTokenNodes;\r
+extern char *OutputDirectory;\r
+extern int DontCopyTokens;\r
+extern int LTinTokenAction; /* MR23 */\r
+extern set AST_nodes_refd_in_actions;\r
+extern ListNode *CurExGroups;\r
+extern int CurBlockID;\r
+extern int CurAltNum;\r
+extern Junction *CurAltStart;\r
+extern Junction *OuterAltStart; /* chain exception groups MR7 */\r
+extern ExceptionGroup *DefaultExGroup;\r
+extern int NumSignals;\r
+extern int ContextGuardTRAV;\r
+extern Junction *MR_RuleBlkWithHalt; /* MR10 */\r
+extern PointerStack MR_BackTraceStack; /* MR10 */\r
+extern PointerStack MR_PredRuleRefStack; /* MR10 */\r
+extern PointerStack MR_RuleBlkWithHaltStack; /* MR10 */\r
+\r
+/* */\r
+/* MR1 10-Apr-97 MR1 Previously unable to put right shift operator */\r
+/* MR1 in DLG action */\r
+/* */\r
+extern int tokenActionActive; /* MR1 */\r
+\r
+extern char *PRED_OR_LIST; /* MR10 */\r
+extern char *PRED_AND_LIST; /* MR10 */\r
+\r
+#ifdef __VMS\r
+#define STRICMP strcasecmp /* MR21 */\r
+#else\r
+#define STRICMP stricmp /* MR21 */\r
+#endif\r
+\r
+/* MR26 */\r
+#ifdef PCCTS_USE_STDARG\r
+extern Tree *tmake(Tree *root, ...);\r
+#else\r
+extern Tree *tmake();\r
+#endif\r
+\r
+#ifdef __USE_PROTOS\r
+extern int STRICMP(const char*, const char*);\r
+extern void istackreset(void);\r
+extern int istacksize(void);\r
+extern void pushint(int);\r
+extern int popint( void );\r
+extern int istackempty( void );\r
+extern int topint( void );\r
+extern void NewSetWd( void );\r
+extern void DumpSetWd( void );\r
+extern void DumpSetWdForC( void );\r
+extern void DumpSetWdForCC( void );\r
+extern void NewSet( void );\r
+extern void FillSet( set );\r
+extern void ComputeErrorSets( void );\r
+extern void ComputeTokSets( void );\r
+extern void SubstErrorClass( set * );\r
+extern int DefErrSet( set *, int, char * );\r
+extern int DefErrSetForC( set *, int, char * );\r
+extern int DefErrSetForCC( set *, int, char * );\r
+extern int DefErrSet1(int, set *, int, char *); /* MR21 */\r
+extern int DefErrSetForC1(int, set *, int, char *, const char* ); /* MR21 */\r
+extern int DefErrSetForCC1(int, set *, int, char *, const char* ); /* MR21 */\r
+extern int DefErrSetWithSuffix(int, set *, int, char *, const char *); /* MR21 */\r
+extern void GenErrHdr( void );\r
+extern void dumpExpr( FILE *, char * );\r
+extern void addParm( Node *, char * );\r
+extern Graph buildAction( char *, int, int, int );\r
+extern Graph buildToken( char * );\r
+extern Graph buildWildCard( char * );\r
+extern Graph buildRuleRef( char * );\r
+extern Graph Or( Graph, Graph );\r
+extern Graph Cat( Graph, Graph );\r
+extern Graph makeOpt( Graph, int, char *);\r
+extern Graph makeBlk( Graph, int, char *);\r
+extern Graph makeLoop( Graph, int, char *);\r
+extern Graph makePlus( Graph, int, char *);\r
+extern Graph emptyAlt( void );\r
+extern Graph emptyAlt3( void );\r
+extern TokNode * newTokNode( void );\r
+extern RuleRefNode * newRNode( void );\r
+extern Junction * newJunction( void );\r
+extern ActionNode * newActionNode( void );\r
+extern char * makelocks( void );\r
+extern void preorder( Tree * );\r
+extern Tree * tnode( int );\r
+extern void _Tfree( Tree * );\r
+extern Tree * tdup( Tree * );\r
+extern int is_single_tuple( Tree * );\r
+extern Tree * tappend( Tree *, Tree * );\r
+extern void Tfree( Tree * );\r
+extern Tree * tlink( Tree *, Tree *, int );\r
+extern Tree * tshrink( Tree * );\r
+extern Tree * tflatten( Tree * );\r
+extern Tree * tJunc( Junction *, int, set * );\r
+extern Tree * tRuleRef( RuleRefNode *, int, set * );\r
+extern Tree * tToken( TokNode *, int, set * );\r
+extern Tree * tAction( ActionNode *, int, set * );\r
+extern int tmember( Tree *, Tree * );\r
+extern int tmember_constrained( Tree *, Tree * );\r
+extern Tree * tleft_factor( Tree * );\r
+extern Tree * trm_perm( Tree *, Tree * );\r
+extern void tcvt( set *, Tree * );\r
+extern Tree * permute( int, int );\r
+extern Tree * VerifyAmbig( Junction *, Junction *, unsigned **, set *, Tree **, Tree **, int * );\r
+extern set rJunc( Junction *, int, set * );\r
+extern set rRuleRef( RuleRefNode *, int, set * );\r
+extern set rToken( TokNode *, int, set * );\r
+extern set rAction( ActionNode *, int, set * );\r
+extern void HandleAmbiguity( Junction *, Junction *, Junction *, int );\r
+extern set First( Junction *, int, int, int * );\r
+extern void freeBlkFsets( Junction * );\r
+extern void genAction( ActionNode * );\r
+extern void genRuleRef( RuleRefNode * );\r
+extern void genToken( TokNode * );\r
+extern void genOptBlk( Junction * );\r
+extern void genLoopBlk( Junction *, Junction *, Junction *, int );\r
+extern void genLoopBegin( Junction * );\r
+extern void genPlusBlk( Junction * );\r
+extern void genSubBlk( Junction * );\r
+extern void genRule( Junction * );\r
+extern void genJunction( Junction * );\r
+extern void genEndBlk( Junction * );\r
+extern void genEndRule( Junction * );\r
+extern void genHdr( int );\r
+extern void genHdr1( int );\r
+extern void dumpAction( char *, FILE *, int, int, int, int );\r
+extern void dumpActionPlus(ActionNode*, char *, FILE *, int, int, int, int ); /* MR21 */\r
+extern Entry ** newHashTable( void );\r
+extern Entry * hash_add( Entry **, char *, Entry * );\r
+extern Entry * hash_get( Entry **, char * );\r
+extern void hashStat( Entry ** );\r
+extern char * mystrdup( char * );\r
+extern void genLexDescr( void );\r
+extern void dumpLexClasses( FILE * );\r
+extern void genDefFile( void );\r
+extern void DumpListOfParmNames( char *, FILE *, int ); /* MR5 janm 26-May-97 */\r
+extern int DumpNextNameInDef( char **, FILE * );\r
+extern void DumpOldStyleParms( char *, FILE * );\r
+extern void DumpType( char *, FILE * );\r
+extern int strmember( char *, char * );\r
+/* extern int HasComma( char * ); MR23 Replaced by hasMultipleOperands() */\r
+extern void DumpRetValStruct( FILE *, char *, int );\r
+extern char * StripQuotes( char * );\r
+extern int main( int, char *[] );\r
+extern void readDescr( void );\r
+extern FILE * NextFile( void );\r
+extern char * outnameX( char *, char *);\r
+extern char * outname( char * );\r
+extern void fatalFL( char *, char *, int );\r
+extern void fatal_intern( char *, char *, int );\r
+extern void cleanUp( void );\r
+extern char * eMsg3( char *, char *, char *, char * );\r
+extern char * eMsgd( char *, int );\r
+extern char * eMsgd2( char *, int, int );\r
+extern void s_fprT( FILE *, set );\r
+extern char * TerminalString( int );\r
+extern void lexclass( char * );\r
+extern void lexmode( int );\r
+extern int LexClassIndex( char * );\r
+extern int hasAction( char * );\r
+extern void setHasAction( char *, char * );\r
+extern int addTname( char * );\r
+extern int addTexpr( char * );\r
+extern int Tnum( char * );\r
+extern void Tklink( char *, char * );\r
+extern Entry * newEntry( char *, int );\r
+extern void list_add( ListNode **, void * );\r
+extern void list_free( ListNode **, int freeData ); /* MR10 */\r
+extern void list_apply( ListNode *, void (*)(void *) );\r
+extern int list_search_cstring (ListNode *, char *); /* MR27 */\r
+extern char * Fkey( char *, int, int );\r
+extern void FoPush( char *, int );\r
+extern void FoPop( int );\r
+extern void RegisterCycle( char *, int );\r
+extern void ResolveFoCycles( int );\r
+extern void pJunc( Junction * );\r
+extern void pRuleRef( RuleRefNode * );\r
+extern void pToken( TokNode * );\r
+extern void pAction( ActionNode * );\r
+extern void FoLink( Node * );\r
+extern void addFoLink( Node *, char *, Junction * );\r
+extern void GenCrossRef( Junction * );\r
+extern void defErr( char *, long, long, long, long, long, long );\r
+extern void genStdPCCTSIncludeFile(FILE *,char *); /* MR10 */\r
+extern char * pcctsBaseName(char *); /* MR32 */\r
+extern Predicate *find_predicates(Node *); /* MR10 */\r
+extern Predicate *MR_find_predicates_and_supp(Node *); /* MR13 */\r
+extern int predicateLookaheadDepth(ActionNode *); /* MR10 */\r
+extern void predicate_free(Predicate *); /* MR10 */\r
+extern Predicate * predicate_dup(Predicate *); /* MR10 */\r
+extern Predicate * predicate_dup_without_context(Predicate *); /* MR11 */\r
+extern void GenRulePrototypes(FILE *, Junction *);\r
+extern Junction *first_item_is_guess_block(Junction *);\r
+extern Junction *first_item_is_guess_block_extra(Junction * q); /* MR30 */\r
+extern Junction *analysis_point(Junction *);\r
+extern Tree *make_tree_from_sets(set *, set *);\r
+extern Tree *tdup_chain(Tree *);\r
+extern Tree *tdif(Tree *, Predicate *, set *, set *);\r
+extern set covered_set(Predicate *);\r
+extern void AmbiguityDialog(Junction *, int, Junction *, Junction *, int *, int *);\r
+extern void dumpAmbigMsg(set *, FILE *, int);\r
+extern void GenRuleFuncRedefs(FILE *, Junction *);\r
+extern void GenPredefinedSymbolRedefs(FILE *);\r
+extern void GenASTSymbolRedefs(FILE *);\r
+extern void GenRemapFile(void);\r
+extern void GenSetRedefs(FILE *);\r
+extern ForcedToken *newForcedToken(char *, int);\r
+extern void RemapForcedTokens(void);\r
+extern char *TokenOrExpr(int);\r
+extern void setUpperRange(TokNode *, char *);\r
+extern void GenParser_c_Hdr(void);\r
+extern void GenParser_h_Hdr(void);\r
+extern void GenRuleMemberDeclarationsForCC(FILE *, Junction *);\r
+extern int addForcedTname( char *, int );\r
+extern char *OutMetaName(char *);\r
+extern void OutFirstSetSymbol(Junction *q, char *); /* MR21 */\r
+extern void warnNoFL(char *err);\r
+extern void warnFL(char *err,char *f,int l);\r
+extern void warn(char *err);\r
+extern void warnNoCR( char *err );\r
+extern void errNoFL(char *err);\r
+extern void errFL(char *err,char *f,int l);\r
+extern void err(char *err);\r
+extern void errNoCR( char *err );\r
+extern void genPredTree( Predicate *p, Node *j, int ,int);\r
+extern UserAction *newUserAction(char *);\r
+extern char *gate_symbol(char *name);\r
+extern char *makeAltID(int blockid, int altnum);\r
+extern void DumpRemainingTokSets(void);\r
+extern void DumpANSIFunctionArgDef(FILE *f, Junction *q, int bInit); /* MR23 */\r
+extern void DumpFormals(FILE *, char *, int bInit); /* MR23 */\r
+extern char* hideDefaultArgs(const char* pdecl); /* MR22 VHS */\r
+extern Predicate *computePredFromContextGuard(Graph,int *msgDone); /* MR21 */\r
+extern void recomputeContextGuard(Predicate *); /* MR13 */\r
+extern Predicate *new_pred(void);\r
+extern void chkGTFlag(void);\r
+extern void leAdd(LabelEntry *); /* MR7 */\r
+extern void leFixup(void); /* MR7 */\r
+extern void egAdd(ExceptionGroup *); /* MR7 */\r
+extern void egFixup(void); /* MR7 */\r
+extern void altAdd(Junction *); /* MR7 */\r
+extern void altFixup(void); /* MR7 */\r
+extern Predicate * MR_find_in_aSubBlk(Junction *alt); /* MR10 */\r
+extern Predicate * MR_predFlatten(Predicate *p); /* MR10 */\r
+extern Predicate * MR_predSimplifyALL(Predicate *p); /* MR10 */\r
+extern Predicate * MR_predSimplifyALLX(Predicate *p,int skipPass3); /* MR10 */\r
+extern int MR_allPredLeaves(Predicate *p); /* MR10 */\r
+extern void MR_cleanup_pred_trees(Predicate *p); /* MR10 */\r
+extern int MR_predicate_context_completed(Predicate *p); /* MR10 */\r
+extern void MR_check_pred_too_long(Predicate *p,set completion); /* MR10 */\r
+extern Tree * MR_remove_epsilon_from_tree(Tree *t); /* MR10 */\r
+extern Tree * MR_computeTreeAND(Tree *l,Tree *r); /* MR10 */\r
+extern int MR_tree_equ(Tree *big, Tree *small); /* MR10 */\r
+extern set MR_First(int ck,Junction *j,set *incomplete); /* MR10 */\r
+extern set MR_compute_pred_set(Predicate *p); /* MR10 */\r
+extern Tree * MR_compute_pred_tree_context(Predicate *p); /* MR10 */\r
+extern int MR_pointerStackPush(PointerStack *,void *); /* MR10 */\r
+extern void * MR_pointerStackPop(PointerStack *); /* MR10 */\r
+extern void * MR_pointerStackTop(PointerStack *); /* MR10 */\r
+extern void MR_pointerStackReset(PointerStack *); /* MR10 */\r
+extern void MR_backTraceReport(void); /* MR10 */\r
+extern void MR_alphaBetaTraceReport(void); /* MR14 */\r
+extern void MR_dumpRuleSet(set); /* MR14 */\r
+extern void MR_predContextPresent(Predicate *p,int *,int *); /* MR10 */\r
+extern void MR_dumpPred(Predicate *p,int withContext); /* MR10 */\r
+extern void MR_dumpPred1(int,Predicate *p,int withContext); /* MR10 */\r
+extern void MR_xxxIndent(FILE *f,int depth); /* MR11 */\r
+extern void MR_outputIndent(int depth); /* MR11 */\r
+extern void MR_stderrIndent(int depth); /* MR11 */\r
+extern Junction * MR_ruleReferenced(RuleRefNode *rrn); /* MR10 */\r
+extern Junction * MR_nameToRuleBlk(char *); /* MR10 */\r
+extern void MR_releaseResourcesUsedInRule(Node *); /* MR10 */\r
+extern void MR_dumpTreeX(int depth,Tree *t,int across); /* MR10 */\r
+extern void MR_dumpTreeF(FILE *f,int depth,Tree *t,int across); /* MR10 */\r
+extern void DumpFcache(void); /* MR10 */\r
+extern void MR_dumpTokenSet(FILE *f,int depth,set s); /* MR10 */\r
+extern void MR_traceAmbSource(set *,Junction *,Junction *); /* MR11 */\r
+extern void MR_traceAmbSourceK(Tree *,Junction *a1,Junction *a2); /* MR11 */\r
+extern void MR_traceAmbSourceKclient(void); /* MR20 */\r
+extern Node *MR_advance(Node *); /* MR11 */\r
+extern int MR_offsetFromRule(Node *); /* MR11 */\r
+extern char *MR_ruleNamePlusOffset(Node *); /* MR11 */\r
+extern int MR_max_height_of_tree(Tree *); /* MR11 */\r
+extern int MR_all_leaves_same_height(Tree *,int); /* MR11 */\r
+extern void MR_projectTreeOntoSet(Tree *t,int k,set *); /* MR11 */\r
+extern Tree *MR_make_tree_from_set(set); /* MR11 */\r
+extern Predicate *MR_removeRedundantPredPass3(Predicate *); /* MR11 */\r
+extern void MR_pred_depth(Predicate *,int *); /* MR11 */\r
+extern int MR_comparePredicates(Predicate *,Predicate *); /* MR11 */\r
+extern Predicate * MR_unfold(Predicate *); /* MR11 */\r
+extern void MR_simplifyInverted(Predicate *,int); /* MR11 */\r
+extern int MR_secondPredicateUnreachable /* MR11 */\r
+ (Predicate *first,Predicate *second); /* MR11 */\r
+extern void MR_clearPredEntry(Predicate *); /* MR11 */\r
+extern void MR_orphanRules(FILE *); /* MR12 */\r
+extern void MR_merge_contexts(Tree *); /* MR12 */\r
+extern int ci_strequ(char *,char *); /* MR12 */\r
+extern void MR_guardPred_plainSet(ActionNode *anode,Predicate *); /* MR12c */\r
+extern void MR_suppressSearchReport(void); /* MR12c */\r
+extern Predicate * MR_suppressK(Node *,Predicate *); /* MR13 */\r
+extern void MR_backTraceDumpItem(FILE *,int skip,Node *n); /* MR13 */\r
+extern void MR_backTraceDumpItemReset(void); /* MR13 */\r
+extern Junction * MR_junctionWithoutP2(Junction *); /* MR13 */\r
+extern void MR_setConstrainPointer(set *); /* MR18 */\r
+extern void BlockPreambleOption(Junction *q, char * pSymbol); /* MR23 */\r
+extern char* getInitializer(char *); /* MR23 */\r
+extern char *endFormal(char *pStart, /* MR23 */\r
+ char **ppDataType, /* MR23 */\r
+ char **ppSymbol, /* MR23 */\r
+ char **ppEqualSign, /* MR23 */\r
+ char **ppValue, /* MR23 */\r
+ char **ppSeparator, /* MR23 */\r
+ int *pNext); /* MR23 */\r
+extern char *strBetween(char *pStart, /* MR23 */\r
+ char *pNext, /* MR23 */\r
+ char *pStop); /* MR23 */\r
+extern int hasMultipleOperands(char *); /* MR23 */\r
+extern void DumpInitializers(FILE*, RuleEntry*, char*); /* MR23 */\r
+extern int isTermEntryTokClass(TermEntry *); /* MR23 */\r
+extern int isEmptyAlt(Node *, Node *); /* MR23 */\r
+#else\r
+extern int STRICMP();\r
+extern void istackreset();\r
+extern int istacksize();\r
+extern void pushint();\r
+extern int popint();\r
+extern int istackempty();\r
+extern int topint();\r
+extern void NewSetWd();\r
+extern void DumpSetWd();\r
+extern void DumpSetWdForC();\r
+extern void DumpSetWdForCC();\r
+extern void NewSet();\r
+extern void FillSet();\r
+extern void ComputeErrorSets();\r
+extern void ComputeTokSets();\r
+extern void SubstErrorClass();\r
+extern int DefErrSet();\r
+extern int DefErrSetForC();\r
+extern int DefErrSetForCC();\r
+extern int DefErrSet1();\r
+extern int DefErrSetForC1();\r
+extern int DefErrSetForCC1();\r
+extern int DefErrSetWithSuffix(); /* MR21 */\r
+extern void GenErrHdr();\r
+extern void dumpExpr();\r
+extern void addParm();\r
+extern Graph buildAction();\r
+extern Graph buildToken();\r
+extern Graph buildWildCard();\r
+extern Graph buildRuleRef();\r
+extern Graph Or();\r
+extern Graph Cat();\r
+extern Graph makeOpt();\r
+extern Graph makeBlk();\r
+extern Graph makeLoop();\r
+extern Graph makePlus();\r
+extern Graph emptyAlt();\r
+extern Graph emptyAlt3();\r
+extern TokNode * newTokNode();\r
+extern RuleRefNode * newRNode();\r
+extern Junction * newJunction();\r
+extern ActionNode * newActionNode();\r
+extern char * makelocks();\r
+extern void preorder();\r
+extern Tree * tnode();\r
+extern void _Tfree();\r
+extern Tree * tdup();\r
+extern int is_single_tuple();\r
+extern Tree * tappend();\r
+extern void Tfree();\r
+extern Tree * tlink();\r
+extern Tree * tshrink();\r
+extern Tree * tflatten();\r
+extern Tree * tJunc();\r
+extern Tree * tRuleRef();\r
+extern Tree * tToken();\r
+extern Tree * tAction();\r
+extern int tmember();\r
+extern int tmember_constrained();\r
+extern Tree * tleft_factor();\r
+extern Tree * trm_perm();\r
+extern void tcvt();\r
+extern Tree * permute();\r
+extern Tree * VerifyAmbig();\r
+extern set rJunc();\r
+extern set rRuleRef();\r
+extern set rToken();\r
+extern set rAction();\r
+extern void HandleAmbiguity();\r
+extern set First();\r
+extern void freeBlkFsets();\r
+extern void genAction();\r
+extern void genRuleRef();\r
+extern void genToken();\r
+extern void genOptBlk();\r
+extern void genLoopBlk();\r
+extern void genLoopBegin();\r
+extern void genPlusBlk();\r
+extern void genSubBlk();\r
+extern void genRule();\r
+extern void genJunction();\r
+extern void genEndBlk();\r
+extern void genEndRule();\r
+extern void genHdr();\r
+extern void genHdr1();\r
+extern void dumpAction();\r
+extern void dumpActionPlus(); /* MR21 */\r
+extern Entry ** newHashTable();\r
+extern Entry * hash_add();\r
+extern Entry * hash_get();\r
+extern void hashStat();\r
+extern char * mystrdup();\r
+extern void genLexDescr();\r
+extern void dumpLexClasses();\r
+extern void genDefFile();\r
+extern void DumpListOfParmNames(); /* MR5 janm 26-May-97 */\r
+extern int DumpNextNameInDef();\r
+extern void DumpOldStyleParms();\r
+extern void DumpType();\r
+extern int strmember();\r
+/* extern int HasComma(); MR23 Replaced by hasMultipleOperands() */\r
+extern void DumpRetValStruct();\r
+extern char * StripQuotes();\r
+extern int main();\r
+extern void readDescr();\r
+extern FILE * NextFile();\r
+extern char * outnameX();\r
+extern char * outname();\r
+extern void fatalFL();\r
+extern void fatal_intern();\r
+extern void cleanUp();\r
+extern char * eMsg3();\r
+extern char * eMsgd();\r
+extern char * eMsgd2();\r
+extern void s_fprT();\r
+extern char * TerminalString();\r
+extern void lexclass();\r
+extern void lexmode();\r
+extern int LexClassIndex();\r
+extern int hasAction();\r
+extern void setHasAction();\r
+extern int addTname();\r
+extern int addTexpr();\r
+extern int Tnum();\r
+extern void Tklink();\r
+extern Entry * newEntry();\r
+extern void list_add();\r
+extern void list_free(); /* MR10 */\r
+extern void list_apply();\r
+extern int list_search_cstring (); /* MR27 */\r
+extern char * Fkey();\r
+extern void FoPush();\r
+extern void FoPop();\r
+extern void RegisterCycle();\r
+extern void ResolveFoCycles();\r
+extern void pJunc();\r
+extern void pRuleRef();\r
+extern void pToken();\r
+extern void pAction();\r
+extern void FoLink();\r
+extern void addFoLink();\r
+extern void GenCrossRef();\r
+extern void defErr();\r
+extern void genStdPCCTSIncludeFile();\r
+extern char * pcctsBaseName(); /* MR32 */\r
+extern Predicate *find_predicates();\r
+extern Predicate *MR_find_predicates_and_supp(); /* MR13 */\r
+extern int predicateLookaheadDepth(); /* MR10 */\r
+extern void predicate_free(); /* MR10 */\r
+extern Predicate * predicate_dup(); /* MR10 */\r
+extern Predicate * predicate_dup_without_context(); /* MR11 */\r
+extern void GenRulePrototypes();\r
+extern Junction *first_item_is_guess_block();\r
+extern Junction *first_item_is_guess_block_extra(); /* MR30 */\r
+extern Junction *analysis_point();\r
+extern Tree *make_tree_from_sets();\r
+extern Tree *tdup_chain();\r
+extern Tree *tdif();\r
+extern set covered_set();\r
+extern void AmbiguityDialog();\r
+extern void dumpAmbigMsg();\r
+extern void GenRuleFuncRedefs();\r
+extern void GenPredefinedSymbolRedefs();\r
+extern void GenASTSymbolRedefs();\r
+extern void GenRemapFile();\r
+extern void GenSetRedefs();\r
+extern ForcedToken *newForcedToken();\r
+extern void RemapForcedTokens();\r
+extern char *TokenOrExpr();\r
+extern void setUpperRange();\r
+extern void GenParser_c_Hdr();\r
+extern void GenParser_h_Hdr();\r
+extern void GenRuleMemberDeclarationsForCC();\r
+extern int addForcedTname();\r
+extern char *OutMetaName();\r
+extern void OutFirstSetSymbol(); /* MR21 */\r
+extern void warnNoFL();\r
+extern void warnFL();\r
+extern void warn();\r
+extern void warnNoCR();\r
+extern void errNoFL();\r
+extern void errFL();\r
+extern void err();\r
+extern void errNoCR();\r
+extern void genPredTree();\r
+extern UserAction *newUserAction();\r
+extern char *gate_symbol();\r
+extern char *makeAltID();\r
+extern void DumpRemainingTokSets();\r
+extern void DumpANSIFunctionArgDef();\r
+extern void DumpFormals(); /* MR23 */\r
+extern char* hideDefaultArgs(); /* MR22 VHS */\r
+extern Predicate *computePredFromContextGuard();\r
+extern void recomputeContextGuard(); /* MR13 */\r
+extern Predicate *new_pred();\r
+extern void chkGTFlag();\r
+extern void leAdd(); /* MR7 */\r
+extern void leFixup(); /* MR7 */\r
+extern void egAdd(); /* MR7 */\r
+extern void egFixup(); /* MR7 */\r
+extern void altAdd(); /* MR7 */\r
+extern void altFixup(); /* MR7 */\r
+extern Predicate * MR_find_in_aSubBlk(); /* MR10 */\r
+extern Predicate * MR_predFlatten(); /* MR10 */\r
+extern Predicate * MR_predSimplifyALL(); /* MR10 */\r
+extern Predicate * MR_predSimplifyALLX(); /* MR10 */\r
+extern void MR_cleanup_pred_trees(); /* MR10 */\r
+extern int MR_allPredLeaves(); /* MR10 */\r
+extern int MR_predicate_context_completed(); /* MR10 */\r
+extern void MR_check_pred_too_long(); /* MR10 */\r
+extern Tree * MR_remove_epsilon_from_tree(); /* MR10 */\r
+extern Tree * MR_computeTreeAND(); /* MR10 */\r
+extern int MR_tree_equ(); /* MR10 */\r
+extern set MR_First(); /* MR10 */\r
+extern set MR_compute_pred_set(); /* MR10 */\r
+extern Tree * MR_compute_pred_tree_context(); /* MR10 */\r
+extern int MR_pointerStackPush(); /* MR10 */\r
+extern void * MR_pointerStackPop(); /* MR10 */\r
+extern void * MR_pointerStackTop(); /* MR10 */\r
+extern void MR_pointerStackReset(); /* MR10 */\r
+extern void MR_backTraceReport(); /* MR10 */\r
+extern void MR_alphaBetaTraceReport(); /* MR14 */\r
+extern void MR_dumpRuleSet(); /* MR14 */\r
+extern void MR_predContextPresent(); /* MR10 */\r
+extern void MR_dumpPred(); /* MR10 */\r
+extern void MR_dumpPred1(); /* MR10 */\r
+extern void MR_xxxIndent(); /* MR11 */\r
+extern void MR_stderrIndent(); /* MR11 */\r
+extern void MR_outputIndent(); /* MR11 */\r
+extern Junction * MR_ruleReferenced(); /* MR10 */\r
+extern void MR_releaseResourcesUsedInRule(); /* MR10 */\r
+extern void MR_dumpTreeX(); /* MR10 */\r
+extern void MR_dumpTreeF(); /* MR10 */\r
+extern void DumpFcache(); /* MR10 */\r
+extern void MR_dumpTokenSet(); /* MR10 */\r
+extern void MR_traceAmbSource(); /* MR11 */\r
+extern Node *MR_advance(); /* MR11 */\r
+extern int MR_offsetFromRule(); /* MR11 */\r
+extern char *MR_ruleNamePlusOffset(); /* MR11 */\r
+extern void MR_traceAmbSourceK(); /* MR11 */\r
+extern void MR_traceAmbSourceKclient(); /* [i_a] added */\r
+extern int MR_max_height_of_tree(); /* MR11 */\r
+extern int MR_all_leaves_same_height(); /* MR11 */\r
+extern void MR_projectTreeOntoSet(); /* MR11 */\r
+extern Tree *MR_make_tree_from_set(); /* MR11 */\r
+extern Predicate *MR_removeRedundantPredPass3(); /* MR11 */\r
+extern void MR_pred_depth(); /* MR11 */\r
+extern int MR_comparePredicates(); /* MR11 */\r
+extern Predicate * MR_unfold(); /* MR11 */\r
+extern void MR_simplifyInverted(); /* MR11 */\r
+extern int MR_secondPredicateUnreachable(); /* MR11 */\r
+extern Junction * MR_nameToRuleBlk(); /* MR10 */\r
+extern void MR_clearPredEntry(); /* MR11 */\r
+extern void MR_orphanRules(); /* MR12 */\r
+extern void MR_merge_contexts(); /* MR12 */\r
+extern int ci_strequ(); /* MR12 */\r
+extern void MR_guardPred_plainSet(); /* MR12c */\r
+extern void MR_suppressSearchReport(); /* MR12c */\r
+extern Predicate * MR_suppressK(); /* MR13 */\r
+extern void MR_backTraceDumpItem(); /* MR13 */\r
+extern void MR_backTraceDumpItemReset(); /* MR13 */\r
+extern Junction * MR_junctionWithoutP2(); /* MR13 */\r
+extern void MR_setConstrainPointer(); /* MR18 */\r
+extern void BlockPreambleOption(); /* MR23 */\r
+extern char* getInitializer(); /* MR23 */\r
+extern int hasMultipleOperands(); /* MR23 */\r
+extern char *endFormal(); /* MR23 */\r
+extern char *strBetween(); /* MR23 */\r
+extern void DumpInitializers(); /* MR23 */\r
+extern int isTermEntryTokClass(); /* MR23 */\r
+extern int isEmptyAlt();\r
+\r
+#endif\r
+\r
+#ifdef __USE_PROTOS\r
+#include <stdlib.h>\r
+#endif\r
+\r
+/* MR20 G. Hobbelt Create proper externs for dlg variables */\r
+\r
+extern set attribsRefdFromAction;\r
+extern int inAlt;\r
+extern int UsedOldStyleAttrib;\r
+extern int UsedNewStyleLabel;\r
+\r
+#define MAX_BLK_LEVEL 100 /* MR23 */\r
+extern int CurBlockID_array[MAX_BLK_LEVEL]; /* MR23 */\r
+extern int CurAltNum_array[MAX_BLK_LEVEL]; /* MR23 */\r