|
|
1.1 root 1: type Lineno = int
2: val lineno = ref 0
3: fun error e (l:Lineno) =
4: (output std_out ("line " ^ (makestring l) ^ ": " ^ e ^ "\n"))
5: %%
6:
7: %verbose
8:
9: %term
10: YAND | YARRAY | YBEGIN | YCASE |
11: YCONST | YDIV | YDO | YDOTDOT |
12: YTO | YELSE | YEND | YFILE |
13: YFOR | YFORWARD | YPROCEDURE | YGOTO |
14: YID | YIF | YIN | YINT |
15: YLABEL | YMOD | YNOT | YNUMB |
16: YOF | YOR | YPACKED | YNIL |
17: YFUNCTION | YPROG | YRECORD | YREPEAT |
18: YSET | YSTRING | YTHEN | YDOWNTO |
19: YTYPE | YUNTIL | YVAR | YWHILE |
20: YWITH | YBINT | YOCT | YHEX |
21: YCASELAB | YILLCH | YEXTERN |
22: YDOT | YLPAR | YRPAR | YSEMI | YCOMMA | YCOLON | YCARET | YLBRA |
23: YRBRA | YTILDE |
24: YLESS | YEQUAL | YGREATER
25: | YPLUS | YMINUS | YBAR
26: | UNARYSIGN
27: | YSTAR | YSLASH | YAMP
28: | EOF
29:
30: %eof EOF
31:
32: %nonassoc YLESS YEQUAL YGREATER YIN
33: %left YPLUS YMINUS YOR YBAR
34: %left UNARYSIGN
35: %left YSTAR YSLASH YDIV YMOD YAND YAMP
36: %left YNOT
37:
38: %nonterm goal | prog_hedr | block | decls | decl | labels | label_decl |
39: const_decl | type_decl | var_decl | proc_decl | pheadres | phead |
40: porf | params | param | ftype | param_list | const | number | const_list |
41: type' | simple_type | struct_type | simple_type_list | field_list |
42: fixed_part | field | variant_part | variant_list | variant | stat_list |
43: stat_lsth | cstat_list | cstat | stat | assign | expr | element_list |
44: element | variable | qual_var | wexpr | octhex | expr_list | wexpr_list |
45: relop | addop | divop | negop | var_list | id_list | const_id | type_id |
46: var_id | array_id | ptr_id | record_id | field_id | func_id
47:
48: %keyword
49: YAND YARRAY YBEGIN YCASE
50: YCONST YDIV YDO
51: YTO YELSE YEND YFILE
52: YFOR YFORWARD YPROCEDURE YGOTO
53: YIF YIN
54: YLABEL YMOD YNOT
55: YOF YOR YPACKED YNIL
56: YFUNCTION YPROG YRECORD YREPEAT
57: YSET YSTRING YTHEN YDOWNTO
58: YTYPE YUNTIL YVAR YWHILE
59: YWITH YOCT YHEX
60: YEXTERN YAMP
61:
62: %insert_prefer YID YSEMI YCOMMA YLBRA
63:
64: %prefer YCOMMA for YSEMI | YSEMI for YCOMMA
65:
66: %%
67: goal: prog_hedr decls block YDOT ()
68: | decls ()
69: prog_hedr: YPROG YID YLPAR id_list YRPAR YSEMI ()
70: | YPROG YID YSEMI ()
71: block: YBEGIN stat_list YEND ()
72: decls: decls decl ()
73: | ()
74: decl: labels ()
75: | const_decl ()
76: | type_decl ()
77: | var_decl ()
78: | proc_decl ()
79: labels: YLABEL label_decl YSEMI ()
80: label_decl: YINT ()
81: | label_decl YCOMMA YINT ()
82: const_decl: YCONST YID YEQUAL const YSEMI ()
83: | const_decl YID YEQUAL const YSEMI ()
84: | YCONST YID YEQUAL YID YSEMI ()
85: | const_decl YID YEQUAL YID YSEMI ()
86: type_decl: YTYPE YID YEQUAL type' YSEMI ()
87: | type_decl YID YEQUAL type' YSEMI ()
88: var_decl: YVAR id_list YCOLON type' YSEMI ()
89: | var_decl id_list YCOLON type' YSEMI ()
90: proc_decl: phead YFORWARD YSEMI ()
91: | phead YEXTERN YSEMI ()
92: | pheadres decls block YSEMI ()
93: pheadres: phead ()
94: phead: porf YID params ftype YSEMI ()
95: porf: YPROCEDURE ()
96: | YFUNCTION ()
97: params: YLPAR param_list YRPAR ()
98: | ()
99: param: id_list YCOLON type' ()
100: | YVAR id_list YCOLON type' ()
101: | YFUNCTION id_list params ftype ()
102: | YPROCEDURE id_list params ftype ()
103: ftype: YCOLON type' ()
104: | ()
105: param_list: param ()
106: | param_list YSEMI param ()
107: const: YSTRING ()
108: | number ()
109: | YPLUS number ()
110: | YMINUS number ()
111: | YPLUS YID ()
112: | YMINUS YID ()
113: number: YINT ()
114: | YBINT ()
115: | YNUMB ()
116: const_list: const ()
117: | const_list YCOMMA const ()
118: | YID ()
119: | const_list YCOMMA YID ()
120: type': simple_type ()
121: | YCARET YID ()
122: | struct_type ()
123: | YPACKED struct_type ()
124: simple_type: type_id ()
125: | YLPAR id_list YRPAR ()
126: | const YDOTDOT const ()
127: | YID YDOTDOT const ()
128: | const YDOTDOT YID ()
129: | YID YDOTDOT YID ()
130: struct_type: YARRAY YLBRA simple_type_list YRBRA YOF type' ()
131: | YFILE YOF type' ()
132: | YSET YOF simple_type ()
133: | YRECORD field_list YEND ()
134: simple_type_list: simple_type ()
135: | simple_type_list YCOMMA simple_type ()
136: field_list: fixed_part variant_part ()
137: fixed_part: field ()
138: | fixed_part YSEMI field ()
139: field: ()
140: | id_list YCOLON type' ()
141: variant_part: ()
142: | YCASE type_id YOF variant_list ()
143: | YCASE YID YCOLON type_id YOF variant_list ()
144: variant_list: variant ()
145: | variant_list YSEMI variant ()
146: variant: ()
147: | const_list YCOLON YLPAR field_list YRPAR ()
148: stat_list: stat ()
149: | stat_lsth stat ()
150: stat_lsth: stat_list YSEMI ()
151: cstat_list: cstat ()
152: | cstat_list YSEMI cstat ()
153: cstat: const_list YCOLON stat ()
154: | YCASELAB stat ()
155: | ()
156: stat: ()
157: | YINT YCOLON stat ()
158: | YID ()
159: | YID YLPAR wexpr_list YRPAR ()
160: | assign ()
161: | YBEGIN stat_list YEND ()
162: | YCASE expr YOF cstat_list YEND ()
163: | YWITH var_list YDO stat ()
164: | YWHILE expr YDO stat ()
165: | YREPEAT stat_list YUNTIL expr ()
166: | YFOR assign YTO expr YDO stat ()
167: | YFOR assign YDOWNTO expr YDO stat ()
168: | YGOTO YINT ()
169: | YIF expr YTHEN stat ()
170: | YIF expr YTHEN stat YELSE stat ()
171: assign: variable YCOLON YEQUAL expr ()
172: | YID YCOLON YEQUAL expr ()
173: expr: expr relop expr %prec YLESS ()
174: | YPLUS expr %prec UNARYSIGN ()
175: | YMINUS expr %prec UNARYSIGN ()
176: | expr addop expr %prec YPLUS ()
177: | expr divop expr %prec YSTAR ()
178: | YNIL ()
179: | YSTRING ()
180: | YINT ()
181: | YBINT ()
182: | YNUMB ()
183: | variable ()
184: | YID ()
185: | YID YLPAR wexpr_list YRPAR ()
186: | YLPAR expr YRPAR ()
187: | negop expr %prec YNOT ()
188: | YLBRA element_list YRBRA ()
189: | YLBRA YRBRA ()
190: element_list: element ()
191: | element_list YCOMMA element ()
192: element: expr ()
193: | expr YDOTDOT expr ()
194: variable: qual_var ()
195: qual_var: YID YLBRA expr_list YRBRA ()
196: | qual_var YLBRA expr_list YRBRA ()
197: | YID YDOT field_id ()
198: | qual_var YDOT field_id ()
199: | YID YCARET ()
200: | qual_var YCARET ()
201: wexpr: expr ()
202: | expr YCOLON expr ()
203: | expr YCOLON expr YCOLON expr ()
204: | expr octhex ()
205: | expr YCOLON expr octhex ()
206: octhex: YOCT ()
207: | YHEX ()
208: expr_list: expr ()
209: | expr_list YCOMMA expr ()
210: wexpr_list: wexpr ()
211: | wexpr_list YCOMMA wexpr ()
212: relop: YEQUAL ()
213: | YLESS ()
214: | YGREATER ()
215: | YLESS YGREATER ()
216: | YLESS YEQUAL ()
217: | YGREATER YEQUAL ()
218: | YIN ()
219: addop: YPLUS ()
220: | YMINUS ()
221: | YOR ()
222: | YBAR ()
223: divop: YSTAR ()
224: | YSLASH ()
225: | YDIV ()
226: | YMOD ()
227: | YAND ()
228: | YAMP ()
229: negop: YNOT ()
230: | YTILDE ()
231: var_list: variable ()
232: | var_list YCOMMA variable ()
233: | YID ()
234: | var_list YCOMMA YID ()
235: id_list: YID ()
236: | id_list YCOMMA YID ()
237: const_id: YID ()
238: type_id: YID ()
239: var_id: YID ()
240: array_id: YID ()
241: ptr_id: YID ()
242: record_id: YID ()
243: field_id: YID ()
244: func_id: YID ()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.