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