blob: 1c7b2fecbf3af81b537af1c7e1134cc75a1fb854 [file] [log] [blame]
Chris Lattnerf5bd1b72003-10-05 19:27:59 +00001/* $Id$ */
2
3struct binding {
4 char *name;
5 int opnum;
6};
7typedef struct binding *Binding;
8
9struct arity {
10 int arity;
11 List bindings;
12};
13typedef struct arity *Arity;
14
15struct patternAST {
16 struct symbol *sym;
17 char *op;
18 List children;
19};
20typedef struct patternAST *PatternAST;
21
22struct ruleAST {
23 char *lhs;
24 PatternAST pat;
25 int erulenum;
26 IntList cost;
27 struct rule *rule;
28 struct strTableElement *kids;
29 struct strTableElement *nts;
30};
31typedef struct ruleAST *RuleAST;
32
33typedef enum {
34 UNKNOWN,
35 OPERATOR,
36 NONTERMINAL
37} TagType;
38
39struct symbol {
40 char *name;
41 TagType tag;
42 union {
43 NonTerminal nt;
44 Operator op;
45 } u;
46};
47typedef struct symbol *Symbol;
48
49struct strTableElement {
50 char *str;
51 IntList erulenos;
52 char *ename;
53};
54typedef struct strTableElement *StrTableElement;
55
56struct strTable {
57 List elems;
58};
59typedef struct strTable *StrTable;
60
61extern void doGrammarNts ARGS((void));
62void makeRuleDescArray ARGS((void));
63void makeDeltaCostArray ARGS((void));
64void makeStateStringArray ARGS((void));
65
66extern StrTable newStrTable ARGS((void));
67extern StrTableElement addString ARGS((StrTable, char *, int, int *));
68
69extern void doSpec ARGS((List, List));
70extern Arity newArity ARGS((int, List));
71extern Binding newBinding ARGS((char *, int));
72extern PatternAST newPatternAST ARGS((char *, List));
73extern RuleAST newRuleAST ARGS((char *, PatternAST, int, IntList));
74extern Symbol enter ARGS((char *, int *));
75extern Symbol newSymbol ARGS((char *));
76
77extern void makeDebug ARGS((void));
78extern void makeSimple ARGS((void));
79extern void makePlanks ARGS((void));
80extern void makeOpLabel ARGS((void));
81extern void makeChild ARGS((void));
82extern void makeOperators ARGS((void));
83extern void makeLabel ARGS((void));
84extern void makeString ARGS((void));
85extern void makeString ARGS((void));
86extern void makeReduce ARGS((void));
87extern void makeRuleTable ARGS((void));
88extern void makeTables ARGS((void));
89extern void makeTreecost ARGS((void));
90extern void makePrint ARGS((void));
91extern void makeRule ARGS((void));
92extern void makeNts ARGS((void));
93extern void makeKids ARGS((void));
94extern void startBurm ARGS((void));
95extern void startOptional ARGS((void));
96extern void makePlankLabel ARGS((void));
97extern void makeStateLabel ARGS((void));
98extern void makeStringArray ARGS((void));
99extern void makeNonterminalArray ARGS((void));
100extern void makeCostArray ARGS((void));
101extern void makeLHSmap ARGS((void));
102extern void makeClosureArray ARGS((void));
103extern void makeOperatorVector ARGS((void));
104extern void endOptional ARGS((void));
105extern void reportDiagnostics ARGS((void));
106extern void makeNonterminals ARGS((void));
107extern int opsOfArity ARGS((int));
108
109extern void yypurge ARGS((void));
110extern void yyfinished ARGS((void));
111
112extern void printRepresentative ARGS((FILE *, Item_Set));
113
114extern void dumpRules ARGS((List));
115extern void dumpDecls ARGS((List));
116extern void dumpRuleAST ARGS((RuleAST));
117extern void dumpPatternAST ARGS((PatternAST));
118extern void dumpArity ARGS((Arity));
119extern void dumpBinding ARGS((Binding));
120extern void dumpStrTable ARGS((StrTable));
121
122extern int yylex ARGS((void));
123extern int yyparse ARGS((void));
124
125extern int max_ruleAST;
126extern List ruleASTs;
127
128extern FILE *outfile;
129extern const char *prefix;
130extern int trimflag;
131extern int speedflag;
132extern int grammarflag;