proto.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/*
* 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 char Version[];
extern char VersionDef[];
#ifdef __cplusplus
extern void (*fpPrint[])(...);
#else
extern void (*fpPrint[])();
#endif
#ifdef __cplusplus
#else
#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
#else
extern void (*C_Trans[])();
#endif
#ifdef __cplusplus
#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 *CurActionLabels;
extern int numericActionLabel; /* MR10 << ... $1 ... >> or << ... $1 ... >>? */
extern char *FileStr[];
extern int NumFiles;
extern int EpToken;
extern int WildCardToken;
**Texpr,
**Rname,
**Fcache,
**Tcache,
**Elabel,
**Sname,
**Pname; /* MR11 */
extern int TokenNum;
extern int LastTokenCounted;
/* MR1 */
/* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */
/* MR1 via #lexmember <<....>> & #lexprefix <<...>> */
/* MR1 */
extern int Save_argc; /* MR10 */
extern char **Save_argv; /* MR10 */
extern char *HdrAction;
extern char *FirstAction; /* MR11 */
extern char *RemapFileName;
extern char *ErrFileName;
extern char *DlgFileName;
extern char *DefFileName;
extern char *ModeFileName;
extern char *StdMsgName;
extern int NumRules;
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 int CannotContinue;
extern int GenCR;
extern int GenLineInfo;
extern int GenLineInfoMS;
extern int action_file, action_line;
extern int TraceGen;
extern char *CurAmbigbtype;
extern int elevel;
extern int GenEClasseForRules;
extern int CurrentLexClass, NumLexClasses;
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 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 char CurrentClassName[];
extern int no_classes_found;
extern char Parser_h_Name[];
extern char Parser_c_Name[];
extern char MRinfoFile_Name[]; /* 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 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 ExceptionGroup *DefaultExGroup;
extern int NumSignals;
extern int ContextGuardTRAV;
/* */
/* 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
#else
#endif
/* MR26 */
#ifdef PCCTS_USE_STDARG
#else
#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 ComputeErrorSets( void );
extern void ComputeTokSets( void );
extern void SubstErrorClass( set * );
extern int DefErrSetForC( set *, int, char * );
extern int DefErrSetForCC( set *, int, char * );
extern void GenErrHdr( void );
extern Graph buildAction( char *, int, int, int );
extern Graph buildToken( char * );
extern Graph buildWildCard( char * );
extern Graph buildRuleRef( char * );
extern TokNode * newTokNode( void );
extern RuleRefNode * newRNode( void );
extern Junction * newJunction( void );
extern ActionNode * newActionNode( void );
extern char * makelocks( void );
extern int is_single_tuple( Tree * );
extern void freeBlkFsets( Junction * );
extern void genAction( ActionNode * );
extern void genRuleRef( RuleRefNode * );
extern void genLoopBegin( Junction * );
extern void genPlusBlk( Junction * );
extern void genJunction( Junction * );
extern void genEndRule( Junction * );
extern void genHdr( int );
extern void genHdr1( int );
extern void dumpAction( char *, FILE *, int, int, int, int );
extern Entry ** newHashTable( void );
extern char * mystrdup( char * );
extern void genLexDescr( void );
extern void dumpLexClasses( FILE * );
extern void genDefFile( void );
extern int DumpNextNameInDef( char **, FILE * );
extern void DumpOldStyleParms( 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 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 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 void list_apply( ListNode *, void (*)(void *) );
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 pRuleRef( RuleRefNode * );
extern void pAction( ActionNode * );
extern void GenCrossRef( Junction * );
extern void defErr( char *, long, long, long, long, long, long );
extern char * pcctsBaseName(char *); /* MR32 */
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 int addForcedTname( char *, int );
extern char *OutMetaName(char *);
extern UserAction *newUserAction(char *);
extern char *gate_symbol(char *name);
extern void DumpRemainingTokSets(void);
extern void chkGTFlag(void);
extern void leFixup(void); /* MR7 */
extern void egFixup(void); /* MR7 */
extern void altFixup(void); /* MR7 */
extern void MR_backTraceReport(void); /* MR10 */
extern void MR_alphaBetaTraceReport(void); /* MR14 */
extern void DumpFcache(void); /* MR10 */
extern void MR_traceAmbSourceKclient(void); /* MR20 */
extern int MR_secondPredicateUnreachable /* MR11 */
extern int ci_strequ(char *,char *); /* MR12 */
extern void MR_suppressSearchReport(void); /* MR12c */
extern void MR_backTraceDumpItemReset(void); /* MR13 */
extern char* getInitializer(char *); /* MR23 */
char **ppDataType, /* MR23 */
char **ppSymbol, /* MR23 */
char **ppEqualSign, /* MR23 */
char **ppValue, /* MR23 */
char **ppSeparator, /* MR23 */
int *pNext); /* MR23 */
char *pNext, /* MR23 */
char *pStop); /* MR23 */
extern int hasMultipleOperands(char *); /* 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 TokNode * newTokNode();
extern RuleRefNode * newRNode();
extern Junction * newJunction();
extern ActionNode * newActionNode();
extern char * makelocks();
extern void preorder();
extern void _Tfree();
extern int is_single_tuple();
extern void Tfree();
extern int tmember();
extern int tmember_constrained();
extern Tree * tleft_factor();
extern void tcvt();
extern Tree * VerifyAmbig();
extern void HandleAmbiguity();
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 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 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 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 int predicateLookaheadDepth(); /* MR10 */
extern void predicate_free(); /* MR10 */
extern void GenRulePrototypes();
extern Junction *first_item_is_guess_block();
extern Junction *analysis_point();
extern Tree *make_tree_from_sets();
extern Tree *tdup_chain();
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 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 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 int MR_tree_equ(); /* 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 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 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 void MR_pred_depth(); /* MR11 */
extern int MR_comparePredicates(); /* MR11 */
extern void MR_simplifyInverted(); /* MR11 */
extern int MR_secondPredicateUnreachable(); /* MR11 */
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 void MR_backTraceDumpItem(); /* MR13 */
extern void MR_backTraceDumpItemReset(); /* 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;