proto.h
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:33k
源码类别:

编译器/解释器

开发平台:

Others

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