1 /* $NetBSD: llparse.h,v 1.6 2005/02/26 22:39:49 perry Exp $ */
2
3 /************************************************************
4 attributes stack garbage
5 ************************************************************/
6
7 #define LLMAXATTR 512
8 #define LLMAXDESC 256
9 #define LLATTR /* build an attribute stack */
10
11 /*
12 ** attribute stack
13 **
14 ** AttrStack = stack of record
15 ** values : array of values;
16 ** ptr : index;
17 ** end;
18 **
19 */
20
21 typedef union llattrib LLattrib;
22
23 extern LLattrib llattributes[LLMAXATTR];
24 extern int llattrtop;
25
26 extern struct llattr {
27 LLattrib *llabase; /* ptr into the attr stack (llattributes) */
28 int llaindex;/* # attrs on the stack so far for this prod */
29 int llacnt;/* total # ever to go on for this prod */
30
31 int lloldtop;/* when popping this prod, restore stack to here ;
32 one attr will remain on the stack (for the lhs) */
33 } llattrdesc[LLMAXDESC];
34
35 extern int lldescindex;
36
37 /************************************************************
38 attributes stack garbage
39 ************************************************************/
40
41 extern struct lltoken {
42 short llterm; /* token number */
43 short llstate; /* inserted deleted normal */
44 LLattrib llattrib;
45 } lltoken;
46 typedef struct lltoken LLtoken;
47
48 /************************************************************
49 constants used in llparse.c
50 ************************************************************/
51
52 #define STACKSIZE 500
53 #define MAXCORR 16
54
55 #define NORMAL 0
56 #define DELETE 1
57 #define INSERT 2
58
59 /************************************************************
60 datatypes used to communicate with the parser
61 ************************************************************/
62
63 struct llinsert {
64 short llinscost;
65 short llinslength;
66 short llinsert[MAXCORR];
67 };
68 typedef struct llinsert LLinsert;
69
70 extern short llparsestack[];
71 extern short llstackptr;
72 extern short llinfinite;
73
74 /************************************************************
75 variables used to pass information
76 specific to each grammer
77 ************************************************************/
78
79 extern short llnterms;
80 extern short llnsyms;
81 extern short llnprods;
82
83 extern char *llefile;
84
85 extern struct llparsetable {
86 short llterm;
87 short llprod;
88 } llparsetable[];
89
90 extern short llparseindex[];
91
92 extern short llepsilon[];
93
94 extern short llproductions[];
95
96 extern struct llprodindex {
97 short llprodstart;
98 short llprodlength;
99 short llprodtlen;
100 } llprodindex[];
101
102 extern struct llcosts {
103 short llinsert;
104 short lldelete;
105 } llcosts[];
106
107 extern struct llstable {
108 short llsstart;
109 short llslength;
110 } llstable[];
111
112 extern short llsspace[];
113
114 extern struct lletable {
115 short llecost;
116 short llelength;
117 short llestart;
118 } lletable[];
119
120 extern long lleindex[];
121
122 extern short llespace[];
123
124 extern char *llstrings[];
125
126 /************************************************************
127 routines defined in llparse.c
128 ************************************************************/
129
130 extern int llparse();
131 extern void llcopye();
132 extern void llcopys();
133 extern void llcorrector();
134 extern int llepsilonok();
135 extern void llexpand();
136 extern short llfindaction();
137 extern void llgetprefix();
138 extern void llgettoken();
139 extern void llinsert();
140 extern void llinsertsym();
141 extern void llinserttokens();
142 extern void llparsererror();
143 extern void llpushprod();
144 extern void llreadetab();
145 extern void llaction();
146 extern void llpushattr();
147 extern void llsetattr();
148 extern void llfinprod();
149
150 /************************************************************
151 routines defined in llscan.c
152 ************************************************************/
153 extern void llscan();
154 extern void dump_buffer();
155 extern void llaccept();
Cache object: 44fd4972ff7885d1080f161761d67d76
|