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