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 |
19 YLESS | YEQUAL | YGREATER
20 | YPLUS | YMINUS | YBAR
22 | YSTAR | YSLASH | YAMP
30 %nonassoc YLESS YEQUAL YGREATER YIN
31 %left YPLUS YMINUS YOR YBAR
33 %left YSTAR YSLASH YDIV YMOD YAND YAMP
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
48 YAND YARRAY YBEGIN YCASE
51 YFOR YFORWARD YPROCEDURE YGOTO
55 YFUNCTION YPROG YRECORD YREPEAT
56 YSET YSTRING YTHEN YDOWNTO
57 YTYPE YUNTIL YVAR YWHILE
61 %prefer YID YSEMI YCOMMA YLBRA
63 %subst YCOMMA for YSEMI | YSEMI for YCOMMA
67 goal: prog_hedr decls block YDOT ()
69 prog_hedr: YPROG YID YLPAR id_list YRPAR YSEMI ()
71 block: YBEGIN stat_list YEND ()
79 labels: YLABEL label_decl YSEMI ()
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 ()
94 phead: porf YID params ftype YSEMI ()
97 params: YLPAR param_list YRPAR ()
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' ()
106 | param_list YSEMI param ()
117 | const_list YCOMMA const ()
119 | const_list YCOMMA YID ()
120 type': simple_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 ()
130 struct_type: YARRAY YLBRA simple_type_list YRBRA 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 ()
138 | fixed_part YSEMI field ()
140 | id_list YCOLON type' ()
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 ()
147 | const_list YCOLON YLPAR field_list YRPAR ()
150 stat_lsth: stat_list YSEMI ()
152 | cstat_list YSEMI cstat ()
153 cstat: const_list YCOLON stat ()
157 | YINT YCOLON stat ()
159 | YID YLPAR wexpr_list YRPAR ()
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 ()
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 ()
185 | YID YLPAR wexpr_list YRPAR ()
186 | YLPAR expr YRPAR ()
187 | negop expr %prec YNOT ()
188 | YLBRA element_list YRBRA ()
190 element_list: element ()
191 | element_list YCOMMA element ()
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 ()
202 | expr YCOLON expr ()
203 | expr YCOLON expr YCOLON expr ()
205 | expr YCOLON expr octhex ()
209 | expr_list YCOMMA expr ()
211 | wexpr_list YCOMMA wexpr ()
231 var_list: variable ()
232 | var_list YCOMMA variable ()
234 | var_list YCOMMA YID ()
236 | id_list YCOMMA YID ()