Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | %% |
2 | ||
3 | %name Pascal | |
4 | %term | |
5 | YAND | YARRAY | YBEGIN | YCASE | | |
6 | YCONST | YDIV | YDO | YDOTDOT | | |
7 | YTO | YELSE | YEND | YFILE | | |
8 | YFOR | YFORWARD | YPROCEDURE | YGOTO | | |
9 | YID | YIF | YIN | YINT | | |
10 | YLABEL | YMOD | YNOT | YNUMB | | |
11 | YOF | YOR | YPACKED | YNIL | | |
12 | YFUNCTION | YPROG | YRECORD | YREPEAT | | |
13 | YSET | YSTRING | YTHEN | YDOWNTO | | |
14 | YTYPE | YUNTIL | YVAR | YWHILE | | |
15 | YWITH | YBINT | YOCT | YHEX | | |
16 | YCASELAB | YILLCH | YEXTERN | | |
17 | YDOT | YLPAR | YRPAR | YSEMI | YCOMMA | YCOLON | YCARET | YLBRA | | |
18 | YRBRA | YTILDE | | |
19 | YLESS | YEQUAL | YGREATER | |
20 | | YPLUS | YMINUS | YBAR | |
21 | | UNARYSIGN | |
22 | | YSTAR | YSLASH | YAMP | |
23 | | EOF | |
24 | ||
25 | %eop EOF | |
26 | %pos int | |
27 | %pure | |
28 | %noshift EOF | |
29 | ||
30 | %nonassoc YLESS YEQUAL YGREATER YIN | |
31 | %left YPLUS YMINUS YOR YBAR | |
32 | %left UNARYSIGN | |
33 | %left YSTAR YSLASH YDIV YMOD YAND YAMP | |
34 | %left YNOT | |
35 | ||
36 | %nonterm goal | prog_hedr | block | decls | decl | labels | label_decl | | |
37 | const_decl | type_decl | var_decl | proc_decl | pheadres | phead | | |
38 | porf | params | param | ftype | param_list | const | number | const_list | | |
39 | type' | simple_type | struct_type | simple_type_list | field_list | | |
40 | fixed_part | field | variant_part | variant_list | variant | stat_list | | |
41 | stat_lsth | cstat_list | cstat | stat | assign | expr | element_list | | |
42 | element | variable | qual_var | wexpr | octhex | expr_list | wexpr_list | | |
43 | relop | addop | divop | negop | var_list | id_list | const_id | type_id | | |
44 | var_id | array_id | ptr_id | record_id | field_id | func_id | |
45 | | begin | |
46 | ||
47 | %keyword | |
48 | YAND YARRAY YBEGIN YCASE | |
49 | YCONST YDIV YDO | |
50 | YTO YELSE YEND YFILE | |
51 | YFOR YFORWARD YPROCEDURE YGOTO | |
52 | YIF YIN | |
53 | YLABEL YMOD YNOT | |
54 | YOF YOR YPACKED YNIL | |
55 | YFUNCTION YPROG YRECORD YREPEAT | |
56 | YSET YSTRING YTHEN YDOWNTO | |
57 | YTYPE YUNTIL YVAR YWHILE | |
58 | YWITH YOCT YHEX | |
59 | YEXTERN YAMP | |
60 | ||
61 | %prefer YID YSEMI YCOMMA YLBRA | |
62 | ||
63 | %subst YCOMMA for YSEMI | YSEMI for YCOMMA | |
64 | ||
65 | %% | |
66 | begin: goal () | |
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 () |