зеркало из https://github.com/mozilla/pjs.git
127 строки
3.1 KiB
C
127 строки
3.1 KiB
C
|
/* $Id: fe.h,v 1.1 1998-12-17 06:36:47 fur%netscape.com Exp $ */
|
||
|
|
||
|
struct binding {
|
||
|
char *name;
|
||
|
int opnum;
|
||
|
};
|
||
|
typedef struct binding *Binding;
|
||
|
|
||
|
struct arity {
|
||
|
int arity;
|
||
|
List bindings;
|
||
|
};
|
||
|
typedef struct arity *Arity;
|
||
|
|
||
|
struct patternAST {
|
||
|
struct symbol *sym;
|
||
|
char *op;
|
||
|
List children;
|
||
|
};
|
||
|
typedef struct patternAST *PatternAST;
|
||
|
|
||
|
struct ruleAST {
|
||
|
char *lhs;
|
||
|
PatternAST pat;
|
||
|
int erulenum;
|
||
|
IntList cost;
|
||
|
struct rule *rule;
|
||
|
struct strTableElement *kids;
|
||
|
struct strTableElement *nts;
|
||
|
};
|
||
|
typedef struct ruleAST *RuleAST;
|
||
|
|
||
|
typedef enum {
|
||
|
UNKNOWN,
|
||
|
OPERATOR,
|
||
|
NONTERMINAL
|
||
|
} TagType;
|
||
|
|
||
|
struct symbol {
|
||
|
char *name;
|
||
|
TagType tag;
|
||
|
union {
|
||
|
NonTerminal nt;
|
||
|
Operator op;
|
||
|
} u;
|
||
|
};
|
||
|
typedef struct symbol *Symbol;
|
||
|
|
||
|
struct strTableElement {
|
||
|
char *str;
|
||
|
IntList erulenos;
|
||
|
char *ename;
|
||
|
};
|
||
|
typedef struct strTableElement *StrTableElement;
|
||
|
|
||
|
struct strTable {
|
||
|
List elems;
|
||
|
};
|
||
|
typedef struct strTable *StrTable;
|
||
|
|
||
|
extern StrTable newStrTable ARGS((void));
|
||
|
extern StrTableElement addString ARGS((StrTable, char *, int, int *));
|
||
|
|
||
|
extern void doSpec ARGS((List, List));
|
||
|
extern Arity newArity ARGS((int, List));
|
||
|
extern Binding newBinding ARGS((char *, int));
|
||
|
extern PatternAST newPatternAST ARGS((char *, List));
|
||
|
extern RuleAST newRuleAST ARGS((char *, PatternAST, int, IntList));
|
||
|
extern Symbol enter ARGS((char *, int *));
|
||
|
extern Symbol newSymbol ARGS((char *));
|
||
|
|
||
|
extern void makeDebug ARGS((void));
|
||
|
extern void makeSimple ARGS((void));
|
||
|
extern void makePlanks ARGS((void));
|
||
|
extern void makeOpLabel ARGS((void));
|
||
|
extern void makeChild ARGS((void));
|
||
|
extern void makeOperators ARGS((void));
|
||
|
extern void makeLabel ARGS((void));
|
||
|
extern void makeString ARGS((void));
|
||
|
extern void makeString ARGS((void));
|
||
|
extern void makeReduce ARGS((void));
|
||
|
extern void makeRuleTable ARGS((void));
|
||
|
extern void makeTables ARGS((void));
|
||
|
extern void makeTreecost ARGS((void));
|
||
|
extern void makePrint ARGS((void));
|
||
|
extern void makeRule ARGS((void));
|
||
|
extern void makeNts ARGS((void));
|
||
|
extern void makeKids ARGS((void));
|
||
|
extern void startBurm ARGS((void));
|
||
|
extern void startOptional ARGS((void));
|
||
|
extern void makePlankLabel ARGS((void));
|
||
|
extern void makeStateLabel ARGS((void));
|
||
|
extern void makeStringArray ARGS((void));
|
||
|
extern void makeNonterminalArray ARGS((void));
|
||
|
extern void makeCostArray ARGS((void));
|
||
|
extern void makeLHSmap ARGS((void));
|
||
|
extern void makeClosureArray ARGS((void));
|
||
|
extern void makeOperatorVector ARGS((void));
|
||
|
extern void endOptional ARGS((void));
|
||
|
extern void reportDiagnostics ARGS((void));
|
||
|
extern void makeNonterminals ARGS((void));
|
||
|
extern int opsOfArity ARGS((int));
|
||
|
|
||
|
extern void yypurge ARGS((void));
|
||
|
extern void yyfinished ARGS((void));
|
||
|
|
||
|
extern void printRepresentative ARGS((FILE *, Item_Set));
|
||
|
|
||
|
extern void dumpRules ARGS((List));
|
||
|
extern void dumpDecls ARGS((List));
|
||
|
extern void dumpRuleAST ARGS((RuleAST));
|
||
|
extern void dumpPatternAST ARGS((PatternAST));
|
||
|
extern void dumpArity ARGS((Arity));
|
||
|
extern void dumpBinding ARGS((Binding));
|
||
|
extern void dumpStrTable ARGS((StrTable));
|
||
|
|
||
|
extern int yylex ARGS((void));
|
||
|
extern int yyparse ARGS((void));
|
||
|
|
||
|
extern int max_ruleAST;
|
||
|
extern List ruleASTs;
|
||
|
|
||
|
extern FILE *outfile;
|
||
|
extern char *prefix;
|
||
|
extern int safely;
|
||
|
extern int trimflag;
|