|
|
1.1.1.3 ! root 1: /* llparse.h,v 1.2 1993/05/20 05:28:22 cgd Exp */
1.1 root 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 llparse();
131: extern llcopye();
132: extern llcopys();
133: extern llcorrector();
134: extern llepsilonok();
135: extern llexpand();
136: extern short llfindaction();
137: extern llgetprefix();
138: extern llgettoken();
139: extern llinsert();
140: extern llinsertsym();
141: extern llinserttokens();
142: extern llparsererror();
143: extern llpushprod();
144: extern llreadetab();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.