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