Makefile: clean the clean recipes
[nit.git] / c_src / parser.sep.6.c
1 #include "parser.sep.0.h"
2 /* method parser#ReduceAction362#action for (self: ReduceAction362, Parser) */
3 void parser__ReduceAction362__action(val* self, val* p0) {
4 val* var_p /* var p: Parser */;
5 val* var /* : null */;
6 val* var_node_list /* var node_list: nullable Object */;
7 val* var1 /* : nullable Object */;
8 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
9 val* var2 /* : nullable Object */;
10 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
11 val* var3 /* : nullable Object */;
12 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
13 val* var4 /* : Array[Object] */;
14 val* var_listnode3 /* var listnode3: Array[Object] */;
15 val* var_tquadnode2 /* var tquadnode2: nullable Object */;
16 short int var5 /* : Bool */;
17 int cltype;
18 int idtype;
19 val* var_tidnode4 /* var tidnode4: nullable Object */;
20 short int var6 /* : Bool */;
21 int cltype7;
22 int idtype8;
23 val* var9 /* : AModuleName */;
24 val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
25 long var10 /* : Int */;
26 long var11 /* : Int */;
27 var_p = p0;
28 var = NULL;
29 var_node_list = var;
30 {
31 var1 = parser_work__Parser__pop(var_p);
32 }
33 var_nodearraylist3 = var1;
34 {
35 var2 = parser_work__Parser__pop(var_p);
36 }
37 var_nodearraylist2 = var2;
38 {
39 var3 = parser_work__Parser__pop(var_p);
40 }
41 var_nodearraylist1 = var3;
42 var4 = NEW_array__Array(&type_array__Arraykernel__Object);
43 {
44 array__Array__init(var4); /* Direct call array#Array#init on <var4:Array[Object]>*/
45 }
46 var_listnode3 = var4;
47 var_tquadnode2 = var_nodearraylist1;
48 /* <var_tquadnode2:nullable Object> isa nullable TQuad */
49 cltype = type_nullable_parser_nodes__TQuad.color;
50 idtype = type_nullable_parser_nodes__TQuad.id;
51 if(var_tquadnode2 == NULL) {
52 var5 = 1;
53 } else {
54 if(cltype >= var_tquadnode2->type->table_size) {
55 var5 = 0;
56 } else {
57 var5 = var_tquadnode2->type->type_table[cltype] == idtype;
58 }
59 }
60 if (unlikely(!var5)) {
61 PRINT_ERROR("Runtime error: %s", "Assert failed");
62 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9230);
63 show_backtrace(1);
64 }
65 var_tidnode4 = var_nodearraylist3;
66 /* <var_tidnode4:nullable Object> isa nullable TId */
67 cltype7 = type_nullable_parser_nodes__TId.color;
68 idtype8 = type_nullable_parser_nodes__TId.id;
69 if(var_tidnode4 == NULL) {
70 var6 = 1;
71 } else {
72 if(cltype7 >= var_tidnode4->type->table_size) {
73 var6 = 0;
74 } else {
75 var6 = var_tidnode4->type->type_table[cltype7] == idtype8;
76 }
77 }
78 if (unlikely(!var6)) {
79 PRINT_ERROR("Runtime error: %s", "Assert failed");
80 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9232);
81 show_backtrace(1);
82 }
83 var9 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
84 {
85 parser_prod__AModuleName__init_amodulename(var9, var_tquadnode2, var_listnode3, var_tidnode4); /* Direct call parser_prod#AModuleName#init_amodulename on <var9:AModuleName>*/
86 }
87 var_pmodulenamenode1 = var9;
88 var_node_list = var_pmodulenamenode1;
89 var10 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction362> */
90 {
91 var11 = parser_work__Parser__go_to(var_p, var10);
92 }
93 {
94 parser_work__Parser__push(var_p, var11, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
95 }
96 RET_LABEL:;
97 }
98 /* method parser#ReduceAction362#action for (self: Object, Parser) */
99 void VIRTUAL_parser__ReduceAction362__action(val* self, val* p0) {
100 parser__ReduceAction362__action(self, p0); /* Direct call parser#ReduceAction362#action on <self:Object(ReduceAction362)>*/
101 RET_LABEL:;
102 }
103 /* method parser#ReduceAction363#action for (self: ReduceAction363, Parser) */
104 void parser__ReduceAction363__action(val* self, val* p0) {
105 val* var_p /* var p: Parser */;
106 val* var /* : null */;
107 val* var_node_list /* var node_list: nullable Object */;
108 val* var1 /* : nullable Object */;
109 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
110 val* var2 /* : nullable Object */;
111 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
112 val* var3 /* : nullable Object */;
113 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
114 val* var4 /* : nullable Object */;
115 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
116 val* var5 /* : Array[Object] */;
117 val* var_listnode4 /* var listnode4: Array[Object] */;
118 val* var_tquadnode2 /* var tquadnode2: nullable Object */;
119 short int var6 /* : Bool */;
120 int cltype;
121 int idtype;
122 val* var_listnode3 /* var listnode3: nullable Object */;
123 short int var7 /* : Bool */;
124 int cltype8;
125 int idtype9;
126 val* var10 /* : Array[Object] */;
127 val* var_tidnode5 /* var tidnode5: nullable Object */;
128 short int var11 /* : Bool */;
129 int cltype12;
130 int idtype13;
131 val* var14 /* : AModuleName */;
132 val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
133 long var15 /* : Int */;
134 long var16 /* : Int */;
135 var_p = p0;
136 var = NULL;
137 var_node_list = var;
138 {
139 var1 = parser_work__Parser__pop(var_p);
140 }
141 var_nodearraylist4 = var1;
142 {
143 var2 = parser_work__Parser__pop(var_p);
144 }
145 var_nodearraylist3 = var2;
146 {
147 var3 = parser_work__Parser__pop(var_p);
148 }
149 var_nodearraylist2 = var3;
150 {
151 var4 = parser_work__Parser__pop(var_p);
152 }
153 var_nodearraylist1 = var4;
154 var5 = NEW_array__Array(&type_array__Arraykernel__Object);
155 {
156 array__Array__init(var5); /* Direct call array#Array#init on <var5:Array[Object]>*/
157 }
158 var_listnode4 = var5;
159 var_tquadnode2 = var_nodearraylist1;
160 /* <var_tquadnode2:nullable Object> isa nullable TQuad */
161 cltype = type_nullable_parser_nodes__TQuad.color;
162 idtype = type_nullable_parser_nodes__TQuad.id;
163 if(var_tquadnode2 == NULL) {
164 var6 = 1;
165 } else {
166 if(cltype >= var_tquadnode2->type->table_size) {
167 var6 = 0;
168 } else {
169 var6 = var_tquadnode2->type->type_table[cltype] == idtype;
170 }
171 }
172 if (unlikely(!var6)) {
173 PRINT_ERROR("Runtime error: %s", "Assert failed");
174 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9253);
175 show_backtrace(1);
176 }
177 var_listnode3 = var_nodearraylist3;
178 /* <var_listnode3:nullable Object> isa Array[Object] */
179 cltype8 = type_array__Arraykernel__Object.color;
180 idtype9 = type_array__Arraykernel__Object.id;
181 if(var_listnode3 == NULL) {
182 var7 = 0;
183 } else {
184 if(cltype8 >= var_listnode3->type->table_size) {
185 var7 = 0;
186 } else {
187 var7 = var_listnode3->type->type_table[cltype8] == idtype9;
188 }
189 }
190 if (unlikely(!var7)) {
191 PRINT_ERROR("Runtime error: %s", "Assert failed");
192 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9255);
193 show_backtrace(1);
194 }
195 {
196 var10 = parser_work__ReduceAction__concat(self, var_listnode4, var_listnode3);
197 }
198 var_listnode4 = var10;
199 var_tidnode5 = var_nodearraylist4;
200 /* <var_tidnode5:nullable Object> isa nullable TId */
201 cltype12 = type_nullable_parser_nodes__TId.color;
202 idtype13 = type_nullable_parser_nodes__TId.id;
203 if(var_tidnode5 == NULL) {
204 var11 = 1;
205 } else {
206 if(cltype12 >= var_tidnode5->type->table_size) {
207 var11 = 0;
208 } else {
209 var11 = var_tidnode5->type->type_table[cltype12] == idtype13;
210 }
211 }
212 if (unlikely(!var11)) {
213 PRINT_ERROR("Runtime error: %s", "Assert failed");
214 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9258);
215 show_backtrace(1);
216 }
217 var14 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
218 {
219 parser_prod__AModuleName__init_amodulename(var14, var_tquadnode2, var_listnode4, var_tidnode5); /* Direct call parser_prod#AModuleName#init_amodulename on <var14:AModuleName>*/
220 }
221 var_pmodulenamenode1 = var14;
222 var_node_list = var_pmodulenamenode1;
223 var15 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction363> */
224 {
225 var16 = parser_work__Parser__go_to(var_p, var15);
226 }
227 {
228 parser_work__Parser__push(var_p, var16, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
229 }
230 RET_LABEL:;
231 }
232 /* method parser#ReduceAction363#action for (self: Object, Parser) */
233 void VIRTUAL_parser__ReduceAction363__action(val* self, val* p0) {
234 parser__ReduceAction363__action(self, p0); /* Direct call parser#ReduceAction363#action on <self:Object(ReduceAction363)>*/
235 RET_LABEL:;
236 }
237 /* method parser#ReduceAction364#action for (self: ReduceAction364, Parser) */
238 void parser__ReduceAction364__action(val* self, val* p0) {
239 val* var_p /* var p: Parser */;
240 val* var /* : null */;
241 val* var_node_list /* var node_list: nullable Object */;
242 val* var1 /* : nullable Object */;
243 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
244 val* var2 /* : Array[Object] */;
245 val* var_listnode2 /* var listnode2: Array[Object] */;
246 val* var_tclassidnode3 /* var tclassidnode3: nullable Object */;
247 short int var3 /* : Bool */;
248 int cltype;
249 int idtype;
250 val* var4 /* : AQualified */;
251 val* var_pqualifiednode1 /* var pqualifiednode1: nullable AQualified */;
252 long var5 /* : Int */;
253 long var6 /* : Int */;
254 var_p = p0;
255 var = NULL;
256 var_node_list = var;
257 {
258 var1 = parser_work__Parser__pop(var_p);
259 }
260 var_nodearraylist1 = var1;
261 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
262 {
263 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
264 }
265 var_listnode2 = var2;
266 var_tclassidnode3 = var_nodearraylist1;
267 /* <var_tclassidnode3:nullable Object> isa nullable TClassid */
268 cltype = type_nullable_parser_nodes__TClassid.color;
269 idtype = type_nullable_parser_nodes__TClassid.id;
270 if(var_tclassidnode3 == NULL) {
271 var3 = 1;
272 } else {
273 if(cltype >= var_tclassidnode3->type->table_size) {
274 var3 = 0;
275 } else {
276 var3 = var_tclassidnode3->type->type_table[cltype] == idtype;
277 }
278 }
279 if (unlikely(!var3)) {
280 PRINT_ERROR("Runtime error: %s", "Assert failed");
281 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9276);
282 show_backtrace(1);
283 }
284 var4 = NEW_parser_nodes__AQualified(&type_parser_nodes__AQualified);
285 {
286 parser_prod__AQualified__init_aqualified(var4, var_listnode2, var_tclassidnode3); /* Direct call parser_prod#AQualified#init_aqualified on <var4:AQualified>*/
287 }
288 var_pqualifiednode1 = var4;
289 var_node_list = var_pqualifiednode1;
290 var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction364> */
291 {
292 var6 = parser_work__Parser__go_to(var_p, var5);
293 }
294 {
295 parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
296 }
297 RET_LABEL:;
298 }
299 /* method parser#ReduceAction364#action for (self: Object, Parser) */
300 void VIRTUAL_parser__ReduceAction364__action(val* self, val* p0) {
301 parser__ReduceAction364__action(self, p0); /* Direct call parser#ReduceAction364#action on <self:Object(ReduceAction364)>*/
302 RET_LABEL:;
303 }
304 /* method parser#ReduceAction365#action for (self: ReduceAction365, Parser) */
305 void parser__ReduceAction365__action(val* self, val* p0) {
306 val* var_p /* var p: Parser */;
307 val* var /* : null */;
308 val* var_node_list /* var node_list: nullable Object */;
309 val* var1 /* : nullable Object */;
310 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
311 val* var2 /* : nullable Object */;
312 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
313 val* var3 /* : Array[Object] */;
314 val* var_listnode3 /* var listnode3: Array[Object] */;
315 val* var_listnode2 /* var listnode2: nullable Object */;
316 short int var4 /* : Bool */;
317 int cltype;
318 int idtype;
319 val* var5 /* : Array[Object] */;
320 val* var_tclassidnode4 /* var tclassidnode4: nullable Object */;
321 short int var6 /* : Bool */;
322 int cltype7;
323 int idtype8;
324 val* var9 /* : AQualified */;
325 val* var_pqualifiednode1 /* var pqualifiednode1: nullable AQualified */;
326 long var10 /* : Int */;
327 long var11 /* : Int */;
328 var_p = p0;
329 var = NULL;
330 var_node_list = var;
331 {
332 var1 = parser_work__Parser__pop(var_p);
333 }
334 var_nodearraylist2 = var1;
335 {
336 var2 = parser_work__Parser__pop(var_p);
337 }
338 var_nodearraylist1 = var2;
339 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
340 {
341 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
342 }
343 var_listnode3 = var3;
344 var_listnode2 = var_nodearraylist1;
345 /* <var_listnode2:nullable Object> isa Array[Object] */
346 cltype = type_array__Arraykernel__Object.color;
347 idtype = type_array__Arraykernel__Object.id;
348 if(var_listnode2 == NULL) {
349 var4 = 0;
350 } else {
351 if(cltype >= var_listnode2->type->table_size) {
352 var4 = 0;
353 } else {
354 var4 = var_listnode2->type->type_table[cltype] == idtype;
355 }
356 }
357 if (unlikely(!var4)) {
358 PRINT_ERROR("Runtime error: %s", "Assert failed");
359 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9294);
360 show_backtrace(1);
361 }
362 {
363 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
364 }
365 var_listnode3 = var5;
366 var_tclassidnode4 = var_nodearraylist2;
367 /* <var_tclassidnode4:nullable Object> isa nullable TClassid */
368 cltype7 = type_nullable_parser_nodes__TClassid.color;
369 idtype8 = type_nullable_parser_nodes__TClassid.id;
370 if(var_tclassidnode4 == NULL) {
371 var6 = 1;
372 } else {
373 if(cltype7 >= var_tclassidnode4->type->table_size) {
374 var6 = 0;
375 } else {
376 var6 = var_tclassidnode4->type->type_table[cltype7] == idtype8;
377 }
378 }
379 if (unlikely(!var6)) {
380 PRINT_ERROR("Runtime error: %s", "Assert failed");
381 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9297);
382 show_backtrace(1);
383 }
384 var9 = NEW_parser_nodes__AQualified(&type_parser_nodes__AQualified);
385 {
386 parser_prod__AQualified__init_aqualified(var9, var_listnode3, var_tclassidnode4); /* Direct call parser_prod#AQualified#init_aqualified on <var9:AQualified>*/
387 }
388 var_pqualifiednode1 = var9;
389 var_node_list = var_pqualifiednode1;
390 var10 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction365> */
391 {
392 var11 = parser_work__Parser__go_to(var_p, var10);
393 }
394 {
395 parser_work__Parser__push(var_p, var11, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
396 }
397 RET_LABEL:;
398 }
399 /* method parser#ReduceAction365#action for (self: Object, Parser) */
400 void VIRTUAL_parser__ReduceAction365__action(val* self, val* p0) {
401 parser__ReduceAction365__action(self, p0); /* Direct call parser#ReduceAction365#action on <self:Object(ReduceAction365)>*/
402 RET_LABEL:;
403 }
404 /* method parser#ReduceAction366#action for (self: ReduceAction366, Parser) */
405 void parser__ReduceAction366__action(val* self, val* p0) {
406 val* var_p /* var p: Parser */;
407 val* var /* : null */;
408 val* var_node_list /* var node_list: nullable Object */;
409 val* var1 /* : nullable Object */;
410 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
411 val* var2 /* : Array[Object] */;
412 val* var_listnode3 /* var listnode3: Array[Object] */;
413 val* var_listnode2 /* var listnode2: nullable Object */;
414 short int var3 /* : Bool */;
415 int cltype;
416 int idtype;
417 val* var4 /* : Array[Object] */;
418 val* var5 /* : AQualified */;
419 val* var6 /* : null */;
420 val* var_pqualifiednode1 /* var pqualifiednode1: nullable AQualified */;
421 long var7 /* : Int */;
422 long var8 /* : Int */;
423 var_p = p0;
424 var = NULL;
425 var_node_list = var;
426 {
427 var1 = parser_work__Parser__pop(var_p);
428 }
429 var_nodearraylist1 = var1;
430 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
431 {
432 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
433 }
434 var_listnode3 = var2;
435 var_listnode2 = var_nodearraylist1;
436 /* <var_listnode2:nullable Object> isa Array[Object] */
437 cltype = type_array__Arraykernel__Object.color;
438 idtype = type_array__Arraykernel__Object.id;
439 if(var_listnode2 == NULL) {
440 var3 = 0;
441 } else {
442 if(cltype >= var_listnode2->type->table_size) {
443 var3 = 0;
444 } else {
445 var3 = var_listnode2->type->type_table[cltype] == idtype;
446 }
447 }
448 if (unlikely(!var3)) {
449 PRINT_ERROR("Runtime error: %s", "Assert failed");
450 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9314);
451 show_backtrace(1);
452 }
453 {
454 var4 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
455 }
456 var_listnode3 = var4;
457 var5 = NEW_parser_nodes__AQualified(&type_parser_nodes__AQualified);
458 var6 = NULL;
459 {
460 parser_prod__AQualified__init_aqualified(var5, var_listnode3, var6); /* Direct call parser_prod#AQualified#init_aqualified on <var5:AQualified>*/
461 }
462 var_pqualifiednode1 = var5;
463 var_node_list = var_pqualifiednode1;
464 var7 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction366> */
465 {
466 var8 = parser_work__Parser__go_to(var_p, var7);
467 }
468 {
469 parser_work__Parser__push(var_p, var8, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
470 }
471 RET_LABEL:;
472 }
473 /* method parser#ReduceAction366#action for (self: Object, Parser) */
474 void VIRTUAL_parser__ReduceAction366__action(val* self, val* p0) {
475 parser__ReduceAction366__action(self, p0); /* Direct call parser#ReduceAction366#action on <self:Object(ReduceAction366)>*/
476 RET_LABEL:;
477 }
478 /* method parser#ReduceAction368#action for (self: ReduceAction368, Parser) */
479 void parser__ReduceAction368__action(val* self, val* p0) {
480 val* var_p /* var p: Parser */;
481 val* var /* : null */;
482 val* var_node_list /* var node_list: nullable Object */;
483 val* var1 /* : nullable Object */;
484 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
485 val* var_tidnode1 /* var tidnode1: nullable Object */;
486 long var2 /* : Int */;
487 long var3 /* : Int */;
488 var_p = p0;
489 var = NULL;
490 var_node_list = var;
491 {
492 var1 = parser_work__Parser__pop(var_p);
493 }
494 var_nodearraylist1 = var1;
495 var_tidnode1 = var_nodearraylist1;
496 var_node_list = var_tidnode1;
497 var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction368> */
498 {
499 var3 = parser_work__Parser__go_to(var_p, var2);
500 }
501 {
502 parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
503 }
504 RET_LABEL:;
505 }
506 /* method parser#ReduceAction368#action for (self: Object, Parser) */
507 void VIRTUAL_parser__ReduceAction368__action(val* self, val* p0) {
508 parser__ReduceAction368__action(self, p0); /* Direct call parser#ReduceAction368#action on <self:Object(ReduceAction368)>*/
509 RET_LABEL:;
510 }
511 /* method parser#ReduceAction369#action for (self: ReduceAction369, Parser) */
512 void parser__ReduceAction369__action(val* self, val* p0) {
513 val* var_p /* var p: Parser */;
514 val* var /* : null */;
515 val* var_node_list /* var node_list: nullable Object */;
516 val* var1 /* : nullable Object */;
517 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
518 val* var2 /* : nullable Object */;
519 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
520 val* var_tidnode1 /* var tidnode1: nullable Object */;
521 long var3 /* : Int */;
522 long var4 /* : Int */;
523 var_p = p0;
524 var = NULL;
525 var_node_list = var;
526 {
527 var1 = parser_work__Parser__pop(var_p);
528 }
529 var_nodearraylist2 = var1;
530 {
531 var2 = parser_work__Parser__pop(var_p);
532 }
533 var_nodearraylist1 = var2;
534 var_tidnode1 = var_nodearraylist2;
535 var_node_list = var_tidnode1;
536 var3 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction369> */
537 {
538 var4 = parser_work__Parser__go_to(var_p, var3);
539 }
540 {
541 parser_work__Parser__push(var_p, var4, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
542 }
543 RET_LABEL:;
544 }
545 /* method parser#ReduceAction369#action for (self: Object, Parser) */
546 void VIRTUAL_parser__ReduceAction369__action(val* self, val* p0) {
547 parser__ReduceAction369__action(self, p0); /* Direct call parser#ReduceAction369#action on <self:Object(ReduceAction369)>*/
548 RET_LABEL:;
549 }
550 /* method parser#ReduceAction370#action for (self: ReduceAction370, Parser) */
551 void parser__ReduceAction370__action(val* self, val* p0) {
552 val* var_p /* var p: Parser */;
553 val* var /* : null */;
554 val* var_node_list /* var node_list: nullable Object */;
555 val* var1 /* : nullable Object */;
556 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
557 val* var2 /* : nullable Object */;
558 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
559 val* var3 /* : nullable Object */;
560 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
561 val* var_tidnode1 /* var tidnode1: nullable Object */;
562 long var4 /* : Int */;
563 long var5 /* : Int */;
564 var_p = p0;
565 var = NULL;
566 var_node_list = var;
567 {
568 var1 = parser_work__Parser__pop(var_p);
569 }
570 var_nodearraylist3 = var1;
571 {
572 var2 = parser_work__Parser__pop(var_p);
573 }
574 var_nodearraylist2 = var2;
575 {
576 var3 = parser_work__Parser__pop(var_p);
577 }
578 var_nodearraylist1 = var3;
579 var_tidnode1 = var_nodearraylist3;
580 var_node_list = var_tidnode1;
581 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction370> */
582 {
583 var5 = parser_work__Parser__go_to(var_p, var4);
584 }
585 {
586 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
587 }
588 RET_LABEL:;
589 }
590 /* method parser#ReduceAction370#action for (self: Object, Parser) */
591 void VIRTUAL_parser__ReduceAction370__action(val* self, val* p0) {
592 parser__ReduceAction370__action(self, p0); /* Direct call parser#ReduceAction370#action on <self:Object(ReduceAction370)>*/
593 RET_LABEL:;
594 }
595 /* method parser#ReduceAction372#action for (self: ReduceAction372, Parser) */
596 void parser__ReduceAction372__action(val* self, val* p0) {
597 val* var_p /* var p: Parser */;
598 val* var /* : null */;
599 val* var_node_list /* var node_list: nullable Object */;
600 val* var1 /* : nullable Object */;
601 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
602 val* var_tclassidnode1 /* var tclassidnode1: nullable Object */;
603 long var2 /* : Int */;
604 long var3 /* : Int */;
605 var_p = p0;
606 var = NULL;
607 var_node_list = var;
608 {
609 var1 = parser_work__Parser__pop(var_p);
610 }
611 var_nodearraylist1 = var1;
612 var_tclassidnode1 = var_nodearraylist1;
613 var_node_list = var_tclassidnode1;
614 var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction372> */
615 {
616 var3 = parser_work__Parser__go_to(var_p, var2);
617 }
618 {
619 parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
620 }
621 RET_LABEL:;
622 }
623 /* method parser#ReduceAction372#action for (self: Object, Parser) */
624 void VIRTUAL_parser__ReduceAction372__action(val* self, val* p0) {
625 parser__ReduceAction372__action(self, p0); /* Direct call parser#ReduceAction372#action on <self:Object(ReduceAction372)>*/
626 RET_LABEL:;
627 }
628 /* method parser#ReduceAction373#action for (self: ReduceAction373, Parser) */
629 void parser__ReduceAction373__action(val* self, val* p0) {
630 val* var_p /* var p: Parser */;
631 val* var /* : null */;
632 val* var_node_list /* var node_list: nullable Object */;
633 val* var1 /* : nullable Object */;
634 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
635 val* var2 /* : nullable Object */;
636 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
637 val* var_tclassidnode1 /* var tclassidnode1: nullable Object */;
638 long var3 /* : Int */;
639 long var4 /* : Int */;
640 var_p = p0;
641 var = NULL;
642 var_node_list = var;
643 {
644 var1 = parser_work__Parser__pop(var_p);
645 }
646 var_nodearraylist2 = var1;
647 {
648 var2 = parser_work__Parser__pop(var_p);
649 }
650 var_nodearraylist1 = var2;
651 var_tclassidnode1 = var_nodearraylist2;
652 var_node_list = var_tclassidnode1;
653 var3 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction373> */
654 {
655 var4 = parser_work__Parser__go_to(var_p, var3);
656 }
657 {
658 parser_work__Parser__push(var_p, var4, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
659 }
660 RET_LABEL:;
661 }
662 /* method parser#ReduceAction373#action for (self: Object, Parser) */
663 void VIRTUAL_parser__ReduceAction373__action(val* self, val* p0) {
664 parser__ReduceAction373__action(self, p0); /* Direct call parser#ReduceAction373#action on <self:Object(ReduceAction373)>*/
665 RET_LABEL:;
666 }
667 /* method parser#ReduceAction374#action for (self: ReduceAction374, Parser) */
668 void parser__ReduceAction374__action(val* self, val* p0) {
669 val* var_p /* var p: Parser */;
670 val* var /* : null */;
671 val* var_node_list /* var node_list: nullable Object */;
672 val* var1 /* : nullable Object */;
673 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
674 val* var2 /* : nullable Object */;
675 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
676 val* var3 /* : nullable Object */;
677 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
678 val* var_tclassidnode1 /* var tclassidnode1: nullable Object */;
679 long var4 /* : Int */;
680 long var5 /* : Int */;
681 var_p = p0;
682 var = NULL;
683 var_node_list = var;
684 {
685 var1 = parser_work__Parser__pop(var_p);
686 }
687 var_nodearraylist3 = var1;
688 {
689 var2 = parser_work__Parser__pop(var_p);
690 }
691 var_nodearraylist2 = var2;
692 {
693 var3 = parser_work__Parser__pop(var_p);
694 }
695 var_nodearraylist1 = var3;
696 var_tclassidnode1 = var_nodearraylist3;
697 var_node_list = var_tclassidnode1;
698 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction374> */
699 {
700 var5 = parser_work__Parser__go_to(var_p, var4);
701 }
702 {
703 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
704 }
705 RET_LABEL:;
706 }
707 /* method parser#ReduceAction374#action for (self: Object, Parser) */
708 void VIRTUAL_parser__ReduceAction374__action(val* self, val* p0) {
709 parser__ReduceAction374__action(self, p0); /* Direct call parser#ReduceAction374#action on <self:Object(ReduceAction374)>*/
710 RET_LABEL:;
711 }
712 /* method parser#ReduceAction376#action for (self: ReduceAction376, Parser) */
713 void parser__ReduceAction376__action(val* self, val* p0) {
714 val* var_p /* var p: Parser */;
715 val* var /* : null */;
716 val* var_node_list /* var node_list: nullable Object */;
717 val* var1 /* : nullable Object */;
718 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
719 val* var2 /* : nullable Object */;
720 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
721 val* var3 /* : nullable Object */;
722 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
723 val* var_tidnode1 /* var tidnode1: nullable Object */;
724 long var4 /* : Int */;
725 long var5 /* : Int */;
726 var_p = p0;
727 var = NULL;
728 var_node_list = var;
729 {
730 var1 = parser_work__Parser__pop(var_p);
731 }
732 var_nodearraylist3 = var1;
733 {
734 var2 = parser_work__Parser__pop(var_p);
735 }
736 var_nodearraylist2 = var2;
737 {
738 var3 = parser_work__Parser__pop(var_p);
739 }
740 var_nodearraylist1 = var3;
741 var_tidnode1 = var_nodearraylist1;
742 var_node_list = var_tidnode1;
743 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction376> */
744 {
745 var5 = parser_work__Parser__go_to(var_p, var4);
746 }
747 {
748 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
749 }
750 RET_LABEL:;
751 }
752 /* method parser#ReduceAction376#action for (self: Object, Parser) */
753 void VIRTUAL_parser__ReduceAction376__action(val* self, val* p0) {
754 parser__ReduceAction376__action(self, p0); /* Direct call parser#ReduceAction376#action on <self:Object(ReduceAction376)>*/
755 RET_LABEL:;
756 }
757 /* method parser#ReduceAction377#action for (self: ReduceAction377, Parser) */
758 void parser__ReduceAction377__action(val* self, val* p0) {
759 val* var_p /* var p: Parser */;
760 val* var /* : null */;
761 val* var_node_list /* var node_list: nullable Object */;
762 val* var1 /* : nullable Object */;
763 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
764 val* var2 /* : nullable Object */;
765 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
766 val* var3 /* : nullable Object */;
767 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
768 val* var_tclassidnode1 /* var tclassidnode1: nullable Object */;
769 long var4 /* : Int */;
770 long var5 /* : Int */;
771 var_p = p0;
772 var = NULL;
773 var_node_list = var;
774 {
775 var1 = parser_work__Parser__pop(var_p);
776 }
777 var_nodearraylist3 = var1;
778 {
779 var2 = parser_work__Parser__pop(var_p);
780 }
781 var_nodearraylist2 = var2;
782 {
783 var3 = parser_work__Parser__pop(var_p);
784 }
785 var_nodearraylist1 = var3;
786 var_tclassidnode1 = var_nodearraylist1;
787 var_node_list = var_tclassidnode1;
788 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction377> */
789 {
790 var5 = parser_work__Parser__go_to(var_p, var4);
791 }
792 {
793 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
794 }
795 RET_LABEL:;
796 }
797 /* method parser#ReduceAction377#action for (self: Object, Parser) */
798 void VIRTUAL_parser__ReduceAction377__action(val* self, val* p0) {
799 parser__ReduceAction377__action(self, p0); /* Direct call parser#ReduceAction377#action on <self:Object(ReduceAction377)>*/
800 RET_LABEL:;
801 }
802 /* method parser#ReduceAction379#action for (self: ReduceAction379, Parser) */
803 void parser__ReduceAction379__action(val* self, val* p0) {
804 val* var_p /* var p: Parser */;
805 val* var /* : null */;
806 val* var_node_list /* var node_list: nullable Object */;
807 val* var1 /* : nullable Object */;
808 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
809 val* var_tkwendnode1 /* var tkwendnode1: nullable Object */;
810 long var2 /* : Int */;
811 long var3 /* : Int */;
812 var_p = p0;
813 var = NULL;
814 var_node_list = var;
815 {
816 var1 = parser_work__Parser__pop(var_p);
817 }
818 var_nodearraylist1 = var1;
819 var_tkwendnode1 = var_nodearraylist1;
820 var_node_list = var_tkwendnode1;
821 var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction379> */
822 {
823 var3 = parser_work__Parser__go_to(var_p, var2);
824 }
825 {
826 parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
827 }
828 RET_LABEL:;
829 }
830 /* method parser#ReduceAction379#action for (self: Object, Parser) */
831 void VIRTUAL_parser__ReduceAction379__action(val* self, val* p0) {
832 parser__ReduceAction379__action(self, p0); /* Direct call parser#ReduceAction379#action on <self:Object(ReduceAction379)>*/
833 RET_LABEL:;
834 }
835 /* method parser#ReduceAction380#action for (self: ReduceAction380, Parser) */
836 void parser__ReduceAction380__action(val* self, val* p0) {
837 val* var_p /* var p: Parser */;
838 val* var /* : null */;
839 val* var_node_list /* var node_list: nullable Object */;
840 val* var1 /* : nullable Object */;
841 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
842 long var2 /* : Int */;
843 long var3 /* : Int */;
844 var_p = p0;
845 var = NULL;
846 var_node_list = var;
847 {
848 var1 = parser_work__Parser__pop(var_p);
849 }
850 var_nodearraylist1 = var1;
851 var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction380> */
852 {
853 var3 = parser_work__Parser__go_to(var_p, var2);
854 }
855 {
856 parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
857 }
858 RET_LABEL:;
859 }
860 /* method parser#ReduceAction380#action for (self: Object, Parser) */
861 void VIRTUAL_parser__ReduceAction380__action(val* self, val* p0) {
862 parser__ReduceAction380__action(self, p0); /* Direct call parser#ReduceAction380#action on <self:Object(ReduceAction380)>*/
863 RET_LABEL:;
864 }
865 /* method parser#ReduceAction382#action for (self: ReduceAction382, Parser) */
866 void parser__ReduceAction382__action(val* self, val* p0) {
867 val* var_p /* var p: Parser */;
868 val* var /* : null */;
869 val* var_node_list /* var node_list: nullable Object */;
870 val* var1 /* : nullable Object */;
871 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
872 val* var2 /* : Array[Object] */;
873 val* var_listnode3 /* var listnode3: Array[Object] */;
874 val* var_listnode2 /* var listnode2: nullable Object */;
875 short int var3 /* : Bool */;
876 int cltype;
877 int idtype;
878 val* var4 /* : Array[Object] */;
879 val* var5 /* : ADoc */;
880 val* var_pdocnode1 /* var pdocnode1: nullable ADoc */;
881 long var6 /* : Int */;
882 long var7 /* : Int */;
883 var_p = p0;
884 var = NULL;
885 var_node_list = var;
886 {
887 var1 = parser_work__Parser__pop(var_p);
888 }
889 var_nodearraylist1 = var1;
890 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
891 {
892 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
893 }
894 var_listnode3 = var2;
895 var_listnode2 = var_nodearraylist1;
896 /* <var_listnode2:nullable Object> isa Array[Object] */
897 cltype = type_array__Arraykernel__Object.color;
898 idtype = type_array__Arraykernel__Object.id;
899 if(var_listnode2 == NULL) {
900 var3 = 0;
901 } else {
902 if(cltype >= var_listnode2->type->table_size) {
903 var3 = 0;
904 } else {
905 var3 = var_listnode2->type->type_table[cltype] == idtype;
906 }
907 }
908 if (unlikely(!var3)) {
909 PRINT_ERROR("Runtime error: %s", "Assert failed");
910 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9450);
911 show_backtrace(1);
912 }
913 {
914 var4 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
915 }
916 var_listnode3 = var4;
917 var5 = NEW_parser_nodes__ADoc(&type_parser_nodes__ADoc);
918 {
919 parser_prod__ADoc__init_adoc(var5, var_listnode3); /* Direct call parser_prod#ADoc#init_adoc on <var5:ADoc>*/
920 }
921 var_pdocnode1 = var5;
922 var_node_list = var_pdocnode1;
923 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction382> */
924 {
925 var7 = parser_work__Parser__go_to(var_p, var6);
926 }
927 {
928 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
929 }
930 RET_LABEL:;
931 }
932 /* method parser#ReduceAction382#action for (self: Object, Parser) */
933 void VIRTUAL_parser__ReduceAction382__action(val* self, val* p0) {
934 parser__ReduceAction382__action(self, p0); /* Direct call parser#ReduceAction382#action on <self:Object(ReduceAction382)>*/
935 RET_LABEL:;
936 }
937 /* method parser#ReduceAction383#action for (self: ReduceAction383, Parser) */
938 void parser__ReduceAction383__action(val* self, val* p0) {
939 val* var_p /* var p: Parser */;
940 val* var /* : null */;
941 val* var_node_list /* var node_list: nullable Object */;
942 val* var1 /* : nullable Object */;
943 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
944 val* var2 /* : nullable Object */;
945 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
946 val* var3 /* : Array[Object] */;
947 val* var_listnode3 /* var listnode3: Array[Object] */;
948 val* var_listnode2 /* var listnode2: nullable Object */;
949 short int var4 /* : Bool */;
950 int cltype;
951 int idtype;
952 val* var5 /* : Array[Object] */;
953 val* var6 /* : ADoc */;
954 val* var_pdocnode1 /* var pdocnode1: nullable ADoc */;
955 long var7 /* : Int */;
956 long var8 /* : Int */;
957 var_p = p0;
958 var = NULL;
959 var_node_list = var;
960 {
961 var1 = parser_work__Parser__pop(var_p);
962 }
963 var_nodearraylist2 = var1;
964 {
965 var2 = parser_work__Parser__pop(var_p);
966 }
967 var_nodearraylist1 = var2;
968 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
969 {
970 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
971 }
972 var_listnode3 = var3;
973 var_listnode2 = var_nodearraylist2;
974 /* <var_listnode2:nullable Object> isa Array[Object] */
975 cltype = type_array__Arraykernel__Object.color;
976 idtype = type_array__Arraykernel__Object.id;
977 if(var_listnode2 == NULL) {
978 var4 = 0;
979 } else {
980 if(cltype >= var_listnode2->type->table_size) {
981 var4 = 0;
982 } else {
983 var4 = var_listnode2->type->type_table[cltype] == idtype;
984 }
985 }
986 if (unlikely(!var4)) {
987 PRINT_ERROR("Runtime error: %s", "Assert failed");
988 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9468);
989 show_backtrace(1);
990 }
991 {
992 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
993 }
994 var_listnode3 = var5;
995 var6 = NEW_parser_nodes__ADoc(&type_parser_nodes__ADoc);
996 {
997 parser_prod__ADoc__init_adoc(var6, var_listnode3); /* Direct call parser_prod#ADoc#init_adoc on <var6:ADoc>*/
998 }
999 var_pdocnode1 = var6;
1000 var_node_list = var_pdocnode1;
1001 var7 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction383> */
1002 {
1003 var8 = parser_work__Parser__go_to(var_p, var7);
1004 }
1005 {
1006 parser_work__Parser__push(var_p, var8, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1007 }
1008 RET_LABEL:;
1009 }
1010 /* method parser#ReduceAction383#action for (self: Object, Parser) */
1011 void VIRTUAL_parser__ReduceAction383__action(val* self, val* p0) {
1012 parser__ReduceAction383__action(self, p0); /* Direct call parser#ReduceAction383#action on <self:Object(ReduceAction383)>*/
1013 RET_LABEL:;
1014 }
1015 /* method parser#ReduceAction386#action for (self: ReduceAction386, Parser) */
1016 void parser__ReduceAction386__action(val* self, val* p0) {
1017 val* var_p /* var p: Parser */;
1018 val* var /* : null */;
1019 val* var_node_list /* var node_list: nullable Object */;
1020 val* var1 /* : nullable Object */;
1021 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1022 val* var_pdocnode1 /* var pdocnode1: nullable Object */;
1023 long var2 /* : Int */;
1024 long var3 /* : Int */;
1025 var_p = p0;
1026 var = NULL;
1027 var_node_list = var;
1028 {
1029 var1 = parser_work__Parser__pop(var_p);
1030 }
1031 var_nodearraylist1 = var1;
1032 var_pdocnode1 = var_nodearraylist1;
1033 var_node_list = var_pdocnode1;
1034 var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction386> */
1035 {
1036 var3 = parser_work__Parser__go_to(var_p, var2);
1037 }
1038 {
1039 parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1040 }
1041 RET_LABEL:;
1042 }
1043 /* method parser#ReduceAction386#action for (self: Object, Parser) */
1044 void VIRTUAL_parser__ReduceAction386__action(val* self, val* p0) {
1045 parser__ReduceAction386__action(self, p0); /* Direct call parser#ReduceAction386#action on <self:Object(ReduceAction386)>*/
1046 RET_LABEL:;
1047 }
1048 /* method parser#ReduceAction387#action for (self: ReduceAction387, Parser) */
1049 void parser__ReduceAction387__action(val* self, val* p0) {
1050 val* var_p /* var p: Parser */;
1051 val* var /* : null */;
1052 val* var_node_list /* var node_list: nullable Object */;
1053 val* var1 /* : nullable Object */;
1054 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1055 val* var2 /* : nullable Object */;
1056 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1057 long var3 /* : Int */;
1058 long var4 /* : Int */;
1059 var_p = p0;
1060 var = NULL;
1061 var_node_list = var;
1062 {
1063 var1 = parser_work__Parser__pop(var_p);
1064 }
1065 var_nodearraylist2 = var1;
1066 {
1067 var2 = parser_work__Parser__pop(var_p);
1068 }
1069 var_nodearraylist1 = var2;
1070 var3 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction387> */
1071 {
1072 var4 = parser_work__Parser__go_to(var_p, var3);
1073 }
1074 {
1075 parser_work__Parser__push(var_p, var4, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1076 }
1077 RET_LABEL:;
1078 }
1079 /* method parser#ReduceAction387#action for (self: Object, Parser) */
1080 void VIRTUAL_parser__ReduceAction387__action(val* self, val* p0) {
1081 parser__ReduceAction387__action(self, p0); /* Direct call parser#ReduceAction387#action on <self:Object(ReduceAction387)>*/
1082 RET_LABEL:;
1083 }
1084 /* method parser#ReduceAction388#action for (self: ReduceAction388, Parser) */
1085 void parser__ReduceAction388__action(val* self, val* p0) {
1086 val* var_p /* var p: Parser */;
1087 val* var /* : null */;
1088 val* var_node_list /* var node_list: nullable Object */;
1089 val* var1 /* : nullable Object */;
1090 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1091 val* var2 /* : nullable Object */;
1092 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1093 val* var3 /* : nullable Object */;
1094 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1095 long var4 /* : Int */;
1096 long var5 /* : Int */;
1097 var_p = p0;
1098 var = NULL;
1099 var_node_list = var;
1100 {
1101 var1 = parser_work__Parser__pop(var_p);
1102 }
1103 var_nodearraylist3 = var1;
1104 {
1105 var2 = parser_work__Parser__pop(var_p);
1106 }
1107 var_nodearraylist2 = var2;
1108 {
1109 var3 = parser_work__Parser__pop(var_p);
1110 }
1111 var_nodearraylist1 = var3;
1112 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction388> */
1113 {
1114 var5 = parser_work__Parser__go_to(var_p, var4);
1115 }
1116 {
1117 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1118 }
1119 RET_LABEL:;
1120 }
1121 /* method parser#ReduceAction388#action for (self: Object, Parser) */
1122 void VIRTUAL_parser__ReduceAction388__action(val* self, val* p0) {
1123 parser__ReduceAction388__action(self, p0); /* Direct call parser#ReduceAction388#action on <self:Object(ReduceAction388)>*/
1124 RET_LABEL:;
1125 }
1126 /* method parser#ReduceAction604#action for (self: ReduceAction604, Parser) */
1127 void parser__ReduceAction604__action(val* self, val* p0) {
1128 val* var_p /* var p: Parser */;
1129 val* var /* : null */;
1130 val* var_node_list /* var node_list: nullable Object */;
1131 val* var1 /* : nullable Object */;
1132 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
1133 val* var2 /* : nullable Object */;
1134 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1135 val* var3 /* : nullable Object */;
1136 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1137 val* var4 /* : nullable Object */;
1138 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1139 val* var_tkwissetnode2 /* var tkwissetnode2: nullable Object */;
1140 short int var5 /* : Bool */;
1141 int cltype;
1142 int idtype;
1143 val* var_pexprnode3 /* var pexprnode3: nullable Object */;
1144 short int var6 /* : Bool */;
1145 int cltype7;
1146 int idtype8;
1147 val* var_tattridnode4 /* var tattridnode4: nullable Object */;
1148 short int var9 /* : Bool */;
1149 int cltype10;
1150 int idtype11;
1151 val* var12 /* : AIssetAttrExpr */;
1152 val* var_pexprnode1 /* var pexprnode1: nullable AIssetAttrExpr */;
1153 long var13 /* : Int */;
1154 long var14 /* : Int */;
1155 var_p = p0;
1156 var = NULL;
1157 var_node_list = var;
1158 {
1159 var1 = parser_work__Parser__pop(var_p);
1160 }
1161 var_nodearraylist4 = var1;
1162 {
1163 var2 = parser_work__Parser__pop(var_p);
1164 }
1165 var_nodearraylist3 = var2;
1166 {
1167 var3 = parser_work__Parser__pop(var_p);
1168 }
1169 var_nodearraylist2 = var3;
1170 {
1171 var4 = parser_work__Parser__pop(var_p);
1172 }
1173 var_nodearraylist1 = var4;
1174 var_tkwissetnode2 = var_nodearraylist1;
1175 /* <var_tkwissetnode2:nullable Object> isa nullable TKwisset */
1176 cltype = type_nullable_parser_nodes__TKwisset.color;
1177 idtype = type_nullable_parser_nodes__TKwisset.id;
1178 if(var_tkwissetnode2 == NULL) {
1179 var5 = 1;
1180 } else {
1181 if(cltype >= var_tkwissetnode2->type->table_size) {
1182 var5 = 0;
1183 } else {
1184 var5 = var_tkwissetnode2->type->type_table[cltype] == idtype;
1185 }
1186 }
1187 if (unlikely(!var5)) {
1188 PRINT_ERROR("Runtime error: %s", "Assert failed");
1189 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9519);
1190 show_backtrace(1);
1191 }
1192 var_pexprnode3 = var_nodearraylist2;
1193 /* <var_pexprnode3:nullable Object> isa nullable AExpr */
1194 cltype7 = type_nullable_parser_nodes__AExpr.color;
1195 idtype8 = type_nullable_parser_nodes__AExpr.id;
1196 if(var_pexprnode3 == NULL) {
1197 var6 = 1;
1198 } else {
1199 if(cltype7 >= var_pexprnode3->type->table_size) {
1200 var6 = 0;
1201 } else {
1202 var6 = var_pexprnode3->type->type_table[cltype7] == idtype8;
1203 }
1204 }
1205 if (unlikely(!var6)) {
1206 PRINT_ERROR("Runtime error: %s", "Assert failed");
1207 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9521);
1208 show_backtrace(1);
1209 }
1210 var_tattridnode4 = var_nodearraylist4;
1211 /* <var_tattridnode4:nullable Object> isa nullable TAttrid */
1212 cltype10 = type_nullable_parser_nodes__TAttrid.color;
1213 idtype11 = type_nullable_parser_nodes__TAttrid.id;
1214 if(var_tattridnode4 == NULL) {
1215 var9 = 1;
1216 } else {
1217 if(cltype10 >= var_tattridnode4->type->table_size) {
1218 var9 = 0;
1219 } else {
1220 var9 = var_tattridnode4->type->type_table[cltype10] == idtype11;
1221 }
1222 }
1223 if (unlikely(!var9)) {
1224 PRINT_ERROR("Runtime error: %s", "Assert failed");
1225 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9523);
1226 show_backtrace(1);
1227 }
1228 var12 = NEW_parser_nodes__AIssetAttrExpr(&type_parser_nodes__AIssetAttrExpr);
1229 {
1230 parser_prod__AIssetAttrExpr__init_aissetattrexpr(var12, var_tkwissetnode2, var_pexprnode3, var_tattridnode4); /* Direct call parser_prod#AIssetAttrExpr#init_aissetattrexpr on <var12:AIssetAttrExpr>*/
1231 }
1232 var_pexprnode1 = var12;
1233 var_node_list = var_pexprnode1;
1234 var13 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction604> */
1235 {
1236 var14 = parser_work__Parser__go_to(var_p, var13);
1237 }
1238 {
1239 parser_work__Parser__push(var_p, var14, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1240 }
1241 RET_LABEL:;
1242 }
1243 /* method parser#ReduceAction604#action for (self: Object, Parser) */
1244 void VIRTUAL_parser__ReduceAction604__action(val* self, val* p0) {
1245 parser__ReduceAction604__action(self, p0); /* Direct call parser#ReduceAction604#action on <self:Object(ReduceAction604)>*/
1246 RET_LABEL:;
1247 }
1248 /* method parser#ReduceAction605#action for (self: ReduceAction605, Parser) */
1249 void parser__ReduceAction605__action(val* self, val* p0) {
1250 val* var_p /* var p: Parser */;
1251 val* var /* : null */;
1252 val* var_node_list /* var node_list: nullable Object */;
1253 val* var1 /* : nullable Object */;
1254 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1255 val* var2 /* : nullable Object */;
1256 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1257 val* var3 /* : nullable Object */;
1258 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1259 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
1260 short int var4 /* : Bool */;
1261 int cltype;
1262 int idtype;
1263 val* var_tattridnode3 /* var tattridnode3: nullable Object */;
1264 short int var5 /* : Bool */;
1265 int cltype6;
1266 int idtype7;
1267 val* var8 /* : AAttrExpr */;
1268 val* var_pexprnode1 /* var pexprnode1: nullable AAttrExpr */;
1269 long var9 /* : Int */;
1270 long var10 /* : Int */;
1271 var_p = p0;
1272 var = NULL;
1273 var_node_list = var;
1274 {
1275 var1 = parser_work__Parser__pop(var_p);
1276 }
1277 var_nodearraylist3 = var1;
1278 {
1279 var2 = parser_work__Parser__pop(var_p);
1280 }
1281 var_nodearraylist2 = var2;
1282 {
1283 var3 = parser_work__Parser__pop(var_p);
1284 }
1285 var_nodearraylist1 = var3;
1286 var_pexprnode2 = var_nodearraylist1;
1287 /* <var_pexprnode2:nullable Object> isa nullable AExpr */
1288 cltype = type_nullable_parser_nodes__AExpr.color;
1289 idtype = type_nullable_parser_nodes__AExpr.id;
1290 if(var_pexprnode2 == NULL) {
1291 var4 = 1;
1292 } else {
1293 if(cltype >= var_pexprnode2->type->table_size) {
1294 var4 = 0;
1295 } else {
1296 var4 = var_pexprnode2->type->type_table[cltype] == idtype;
1297 }
1298 }
1299 if (unlikely(!var4)) {
1300 PRINT_ERROR("Runtime error: %s", "Assert failed");
1301 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9542);
1302 show_backtrace(1);
1303 }
1304 var_tattridnode3 = var_nodearraylist3;
1305 /* <var_tattridnode3:nullable Object> isa nullable TAttrid */
1306 cltype6 = type_nullable_parser_nodes__TAttrid.color;
1307 idtype7 = type_nullable_parser_nodes__TAttrid.id;
1308 if(var_tattridnode3 == NULL) {
1309 var5 = 1;
1310 } else {
1311 if(cltype6 >= var_tattridnode3->type->table_size) {
1312 var5 = 0;
1313 } else {
1314 var5 = var_tattridnode3->type->type_table[cltype6] == idtype7;
1315 }
1316 }
1317 if (unlikely(!var5)) {
1318 PRINT_ERROR("Runtime error: %s", "Assert failed");
1319 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9544);
1320 show_backtrace(1);
1321 }
1322 var8 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
1323 {
1324 parser_prod__AAttrExpr__init_aattrexpr(var8, var_pexprnode2, var_tattridnode3); /* Direct call parser_prod#AAttrExpr#init_aattrexpr on <var8:AAttrExpr>*/
1325 }
1326 var_pexprnode1 = var8;
1327 var_node_list = var_pexprnode1;
1328 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction605> */
1329 {
1330 var10 = parser_work__Parser__go_to(var_p, var9);
1331 }
1332 {
1333 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1334 }
1335 RET_LABEL:;
1336 }
1337 /* method parser#ReduceAction605#action for (self: Object, Parser) */
1338 void VIRTUAL_parser__ReduceAction605__action(val* self, val* p0) {
1339 parser__ReduceAction605__action(self, p0); /* Direct call parser#ReduceAction605#action on <self:Object(ReduceAction605)>*/
1340 RET_LABEL:;
1341 }
1342 /* method parser#ReduceAction606#action for (self: ReduceAction606, Parser) */
1343 void parser__ReduceAction606__action(val* self, val* p0) {
1344 val* var_p /* var p: Parser */;
1345 val* var /* : null */;
1346 val* var_node_list /* var node_list: nullable Object */;
1347 val* var1 /* : nullable Object */;
1348 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1349 val* var2 /* : nullable Object */;
1350 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1351 val* var3 /* : nullable Object */;
1352 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1353 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
1354 short int var4 /* : Bool */;
1355 int cltype;
1356 int idtype;
1357 val* var_tidnode3 /* var tidnode3: nullable Object */;
1358 short int var5 /* : Bool */;
1359 int cltype6;
1360 int idtype7;
1361 val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
1362 short int var8 /* : Bool */;
1363 int cltype9;
1364 int idtype10;
1365 val* var11 /* : ACallExpr */;
1366 val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
1367 long var12 /* : Int */;
1368 long var13 /* : Int */;
1369 var_p = p0;
1370 var = NULL;
1371 var_node_list = var;
1372 {
1373 var1 = parser_work__Parser__pop(var_p);
1374 }
1375 var_nodearraylist3 = var1;
1376 {
1377 var2 = parser_work__Parser__pop(var_p);
1378 }
1379 var_nodearraylist2 = var2;
1380 {
1381 var3 = parser_work__Parser__pop(var_p);
1382 }
1383 var_nodearraylist1 = var3;
1384 var_pexprnode2 = var_nodearraylist1;
1385 /* <var_pexprnode2:nullable Object> isa nullable AExpr */
1386 cltype = type_nullable_parser_nodes__AExpr.color;
1387 idtype = type_nullable_parser_nodes__AExpr.id;
1388 if(var_pexprnode2 == NULL) {
1389 var4 = 1;
1390 } else {
1391 if(cltype >= var_pexprnode2->type->table_size) {
1392 var4 = 0;
1393 } else {
1394 var4 = var_pexprnode2->type->type_table[cltype] == idtype;
1395 }
1396 }
1397 if (unlikely(!var4)) {
1398 PRINT_ERROR("Runtime error: %s", "Assert failed");
1399 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9562);
1400 show_backtrace(1);
1401 }
1402 var_tidnode3 = var_nodearraylist2;
1403 /* <var_tidnode3:nullable Object> isa nullable TId */
1404 cltype6 = type_nullable_parser_nodes__TId.color;
1405 idtype7 = type_nullable_parser_nodes__TId.id;
1406 if(var_tidnode3 == NULL) {
1407 var5 = 1;
1408 } else {
1409 if(cltype6 >= var_tidnode3->type->table_size) {
1410 var5 = 0;
1411 } else {
1412 var5 = var_tidnode3->type->type_table[cltype6] == idtype7;
1413 }
1414 }
1415 if (unlikely(!var5)) {
1416 PRINT_ERROR("Runtime error: %s", "Assert failed");
1417 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9564);
1418 show_backtrace(1);
1419 }
1420 var_pexprsnode4 = var_nodearraylist3;
1421 /* <var_pexprsnode4:nullable Object> isa nullable AExprs */
1422 cltype9 = type_nullable_parser_nodes__AExprs.color;
1423 idtype10 = type_nullable_parser_nodes__AExprs.id;
1424 if(var_pexprsnode4 == NULL) {
1425 var8 = 1;
1426 } else {
1427 if(cltype9 >= var_pexprsnode4->type->table_size) {
1428 var8 = 0;
1429 } else {
1430 var8 = var_pexprsnode4->type->type_table[cltype9] == idtype10;
1431 }
1432 }
1433 if (unlikely(!var8)) {
1434 PRINT_ERROR("Runtime error: %s", "Assert failed");
1435 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9566);
1436 show_backtrace(1);
1437 }
1438 var11 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
1439 {
1440 parser_prod__ACallExpr__init_acallexpr(var11, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var11:ACallExpr>*/
1441 }
1442 var_pexprnode1 = var11;
1443 var_node_list = var_pexprnode1;
1444 var12 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction606> */
1445 {
1446 var13 = parser_work__Parser__go_to(var_p, var12);
1447 }
1448 {
1449 parser_work__Parser__push(var_p, var13, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1450 }
1451 RET_LABEL:;
1452 }
1453 /* method parser#ReduceAction606#action for (self: Object, Parser) */
1454 void VIRTUAL_parser__ReduceAction606__action(val* self, val* p0) {
1455 parser__ReduceAction606__action(self, p0); /* Direct call parser#ReduceAction606#action on <self:Object(ReduceAction606)>*/
1456 RET_LABEL:;
1457 }
1458 /* method parser#ReduceAction608#action for (self: ReduceAction608, Parser) */
1459 void parser__ReduceAction608__action(val* self, val* p0) {
1460 val* var_p /* var p: Parser */;
1461 val* var /* : null */;
1462 val* var_node_list /* var node_list: nullable Object */;
1463 val* var1 /* : nullable Object */;
1464 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1465 val* var2 /* : nullable Object */;
1466 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1467 val* var3 /* : nullable Object */;
1468 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1469 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
1470 short int var4 /* : Bool */;
1471 int cltype;
1472 int idtype;
1473 val* var_tkwinitnode3 /* var tkwinitnode3: nullable Object */;
1474 short int var5 /* : Bool */;
1475 int cltype6;
1476 int idtype7;
1477 val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
1478 short int var8 /* : Bool */;
1479 int cltype9;
1480 int idtype10;
1481 val* var11 /* : AInitExpr */;
1482 val* var_pexprnode1 /* var pexprnode1: nullable AInitExpr */;
1483 long var12 /* : Int */;
1484 long var13 /* : Int */;
1485 var_p = p0;
1486 var = NULL;
1487 var_node_list = var;
1488 {
1489 var1 = parser_work__Parser__pop(var_p);
1490 }
1491 var_nodearraylist3 = var1;
1492 {
1493 var2 = parser_work__Parser__pop(var_p);
1494 }
1495 var_nodearraylist2 = var2;
1496 {
1497 var3 = parser_work__Parser__pop(var_p);
1498 }
1499 var_nodearraylist1 = var3;
1500 var_pexprnode2 = var_nodearraylist1;
1501 /* <var_pexprnode2:nullable Object> isa nullable AExpr */
1502 cltype = type_nullable_parser_nodes__AExpr.color;
1503 idtype = type_nullable_parser_nodes__AExpr.id;
1504 if(var_pexprnode2 == NULL) {
1505 var4 = 1;
1506 } else {
1507 if(cltype >= var_pexprnode2->type->table_size) {
1508 var4 = 0;
1509 } else {
1510 var4 = var_pexprnode2->type->type_table[cltype] == idtype;
1511 }
1512 }
1513 if (unlikely(!var4)) {
1514 PRINT_ERROR("Runtime error: %s", "Assert failed");
1515 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9585);
1516 show_backtrace(1);
1517 }
1518 var_tkwinitnode3 = var_nodearraylist2;
1519 /* <var_tkwinitnode3:nullable Object> isa nullable TKwinit */
1520 cltype6 = type_nullable_parser_nodes__TKwinit.color;
1521 idtype7 = type_nullable_parser_nodes__TKwinit.id;
1522 if(var_tkwinitnode3 == NULL) {
1523 var5 = 1;
1524 } else {
1525 if(cltype6 >= var_tkwinitnode3->type->table_size) {
1526 var5 = 0;
1527 } else {
1528 var5 = var_tkwinitnode3->type->type_table[cltype6] == idtype7;
1529 }
1530 }
1531 if (unlikely(!var5)) {
1532 PRINT_ERROR("Runtime error: %s", "Assert failed");
1533 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9587);
1534 show_backtrace(1);
1535 }
1536 var_pexprsnode4 = var_nodearraylist3;
1537 /* <var_pexprsnode4:nullable Object> isa nullable AExprs */
1538 cltype9 = type_nullable_parser_nodes__AExprs.color;
1539 idtype10 = type_nullable_parser_nodes__AExprs.id;
1540 if(var_pexprsnode4 == NULL) {
1541 var8 = 1;
1542 } else {
1543 if(cltype9 >= var_pexprsnode4->type->table_size) {
1544 var8 = 0;
1545 } else {
1546 var8 = var_pexprsnode4->type->type_table[cltype9] == idtype10;
1547 }
1548 }
1549 if (unlikely(!var8)) {
1550 PRINT_ERROR("Runtime error: %s", "Assert failed");
1551 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9589);
1552 show_backtrace(1);
1553 }
1554 var11 = NEW_parser_nodes__AInitExpr(&type_parser_nodes__AInitExpr);
1555 {
1556 parser_prod__AInitExpr__init_ainitexpr(var11, var_pexprnode2, var_tkwinitnode3, var_pexprsnode4); /* Direct call parser_prod#AInitExpr#init_ainitexpr on <var11:AInitExpr>*/
1557 }
1558 var_pexprnode1 = var11;
1559 var_node_list = var_pexprnode1;
1560 var12 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction608> */
1561 {
1562 var13 = parser_work__Parser__go_to(var_p, var12);
1563 }
1564 {
1565 parser_work__Parser__push(var_p, var13, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1566 }
1567 RET_LABEL:;
1568 }
1569 /* method parser#ReduceAction608#action for (self: Object, Parser) */
1570 void VIRTUAL_parser__ReduceAction608__action(val* self, val* p0) {
1571 parser__ReduceAction608__action(self, p0); /* Direct call parser#ReduceAction608#action on <self:Object(ReduceAction608)>*/
1572 RET_LABEL:;
1573 }
1574 /* method parser#ReduceAction624#action for (self: ReduceAction624, Parser) */
1575 void parser__ReduceAction624__action(val* self, val* p0) {
1576 val* var_p /* var p: Parser */;
1577 val* var /* : null */;
1578 val* var_node_list /* var node_list: nullable Object */;
1579 val* var1 /* : nullable Object */;
1580 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
1581 val* var2 /* : nullable Object */;
1582 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1583 val* var3 /* : nullable Object */;
1584 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1585 val* var_pexprnode1 /* var pexprnode1: nullable Object */;
1586 long var4 /* : Int */;
1587 long var5 /* : Int */;
1588 var_p = p0;
1589 var = NULL;
1590 var_node_list = var;
1591 {
1592 var1 = parser_work__Parser__pop(var_p);
1593 }
1594 var_nodearraylist3 = var1;
1595 {
1596 var2 = parser_work__Parser__pop(var_p);
1597 }
1598 var_nodearraylist2 = var2;
1599 {
1600 var3 = parser_work__Parser__pop(var_p);
1601 }
1602 var_nodearraylist1 = var3;
1603 var_pexprnode1 = var_nodearraylist1;
1604 var_node_list = var_pexprnode1;
1605 var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction624> */
1606 {
1607 var5 = parser_work__Parser__go_to(var_p, var4);
1608 }
1609 {
1610 parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1611 }
1612 RET_LABEL:;
1613 }
1614 /* method parser#ReduceAction624#action for (self: Object, Parser) */
1615 void VIRTUAL_parser__ReduceAction624__action(val* self, val* p0) {
1616 parser__ReduceAction624__action(self, p0); /* Direct call parser#ReduceAction624#action on <self:Object(ReduceAction624)>*/
1617 RET_LABEL:;
1618 }
1619 /* method parser#ReduceAction625#action for (self: ReduceAction625, Parser) */
1620 void parser__ReduceAction625__action(val* self, val* p0) {
1621 val* var_p /* var p: Parser */;
1622 val* var /* : null */;
1623 val* var_node_list /* var node_list: nullable Object */;
1624 val* var1 /* : AImplicitSelfExpr */;
1625 val* var_pexprnode1 /* var pexprnode1: nullable AImplicitSelfExpr */;
1626 long var3 /* : Int */;
1627 long var4 /* : Int */;
1628 var_p = p0;
1629 var = NULL;
1630 var_node_list = var;
1631 var1 = NEW_parser_nodes__AImplicitSelfExpr(&type_parser_nodes__AImplicitSelfExpr);
1632 {
1633 { /* Inline parser_prod#AImplicitSelfExpr#init_aimplicitselfexpr (var1) on <var1:AImplicitSelfExpr> */
1634 RET_LABEL2:(void)0;
1635 }
1636 }
1637 var_pexprnode1 = var1;
1638 var_node_list = var_pexprnode1;
1639 var3 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction625> */
1640 {
1641 var4 = parser_work__Parser__go_to(var_p, var3);
1642 }
1643 {
1644 parser_work__Parser__push(var_p, var4, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1645 }
1646 RET_LABEL:;
1647 }
1648 /* method parser#ReduceAction625#action for (self: Object, Parser) */
1649 void VIRTUAL_parser__ReduceAction625__action(val* self, val* p0) {
1650 parser__ReduceAction625__action(self, p0); /* Direct call parser#ReduceAction625#action on <self:Object(ReduceAction625)>*/
1651 RET_LABEL:;
1652 }
1653 /* method parser#ReduceAction792#action for (self: ReduceAction792, Parser) */
1654 void parser__ReduceAction792__action(val* self, val* p0) {
1655 val* var_p /* var p: Parser */;
1656 val* var /* : null */;
1657 val* var_node_list /* var node_list: nullable Object */;
1658 val* var1 /* : nullable Object */;
1659 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1660 val* var2 /* : Array[Object] */;
1661 val* var_listnode2 /* var listnode2: Array[Object] */;
1662 val* var_pimportnode1 /* var pimportnode1: nullable Object */;
1663 val* var3 /* : null */;
1664 short int var4 /* : Bool */;
1665 short int var5 /* : Bool */;
1666 long var6 /* : Int */;
1667 long var7 /* : Int */;
1668 var_p = p0;
1669 var = NULL;
1670 var_node_list = var;
1671 {
1672 var1 = parser_work__Parser__pop(var_p);
1673 }
1674 var_nodearraylist1 = var1;
1675 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
1676 {
1677 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
1678 }
1679 var_listnode2 = var2;
1680 var_pimportnode1 = var_nodearraylist1;
1681 var3 = NULL;
1682 if (var_pimportnode1 == NULL) {
1683 var4 = 0; /* is null */
1684 } else {
1685 var4 = 1; /* arg is null and recv is not */
1686 }
1687 if (0) {
1688 var5 = ((short int (*)(val*, val*))(var_pimportnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pimportnode1, var3) /* != on <var_pimportnode1:nullable Object>*/;
1689 var4 = var5;
1690 }
1691 if (var4){
1692 {
1693 array__Array__add(var_listnode2, var_pimportnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
1694 }
1695 } else {
1696 }
1697 var_node_list = var_listnode2;
1698 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction792> */
1699 {
1700 var7 = parser_work__Parser__go_to(var_p, var6);
1701 }
1702 {
1703 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1704 }
1705 RET_LABEL:;
1706 }
1707 /* method parser#ReduceAction792#action for (self: Object, Parser) */
1708 void VIRTUAL_parser__ReduceAction792__action(val* self, val* p0) {
1709 parser__ReduceAction792__action(self, p0); /* Direct call parser#ReduceAction792#action on <self:Object(ReduceAction792)>*/
1710 RET_LABEL:;
1711 }
1712 /* method parser#ReduceAction793#action for (self: ReduceAction793, Parser) */
1713 void parser__ReduceAction793__action(val* self, val* p0) {
1714 val* var_p /* var p: Parser */;
1715 val* var /* : null */;
1716 val* var_node_list /* var node_list: nullable Object */;
1717 val* var1 /* : nullable Object */;
1718 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1719 val* var2 /* : nullable Object */;
1720 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1721 val* var3 /* : Array[Object] */;
1722 val* var_listnode3 /* var listnode3: Array[Object] */;
1723 val* var_listnode1 /* var listnode1: nullable Object */;
1724 short int var4 /* : Bool */;
1725 int cltype;
1726 int idtype;
1727 val* var_pimportnode2 /* var pimportnode2: nullable Object */;
1728 val* var5 /* : Array[Object] */;
1729 val* var6 /* : null */;
1730 short int var7 /* : Bool */;
1731 short int var8 /* : Bool */;
1732 long var9 /* : Int */;
1733 long var10 /* : Int */;
1734 var_p = p0;
1735 var = NULL;
1736 var_node_list = var;
1737 {
1738 var1 = parser_work__Parser__pop(var_p);
1739 }
1740 var_nodearraylist2 = var1;
1741 {
1742 var2 = parser_work__Parser__pop(var_p);
1743 }
1744 var_nodearraylist1 = var2;
1745 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
1746 {
1747 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
1748 }
1749 var_listnode3 = var3;
1750 var_listnode1 = var_nodearraylist1;
1751 /* <var_listnode1:nullable Object> isa Array[Object] */
1752 cltype = type_array__Arraykernel__Object.color;
1753 idtype = type_array__Arraykernel__Object.id;
1754 if(var_listnode1 == NULL) {
1755 var4 = 0;
1756 } else {
1757 if(cltype >= var_listnode1->type->table_size) {
1758 var4 = 0;
1759 } else {
1760 var4 = var_listnode1->type->type_table[cltype] == idtype;
1761 }
1762 }
1763 if (unlikely(!var4)) {
1764 PRINT_ERROR("Runtime error: %s", "Assert failed");
1765 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9646);
1766 show_backtrace(1);
1767 }
1768 var_pimportnode2 = var_nodearraylist2;
1769 {
1770 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
1771 }
1772 var_listnode3 = var5;
1773 var6 = NULL;
1774 if (var_pimportnode2 == NULL) {
1775 var7 = 0; /* is null */
1776 } else {
1777 var7 = 1; /* arg is null and recv is not */
1778 }
1779 if (0) {
1780 var8 = ((short int (*)(val*, val*))(var_pimportnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pimportnode2, var6) /* != on <var_pimportnode2:nullable Object>*/;
1781 var7 = var8;
1782 }
1783 if (var7){
1784 {
1785 array__Array__add(var_listnode3, var_pimportnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
1786 }
1787 } else {
1788 }
1789 var_node_list = var_listnode3;
1790 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction793> */
1791 {
1792 var10 = parser_work__Parser__go_to(var_p, var9);
1793 }
1794 {
1795 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1796 }
1797 RET_LABEL:;
1798 }
1799 /* method parser#ReduceAction793#action for (self: Object, Parser) */
1800 void VIRTUAL_parser__ReduceAction793__action(val* self, val* p0) {
1801 parser__ReduceAction793__action(self, p0); /* Direct call parser#ReduceAction793#action on <self:Object(ReduceAction793)>*/
1802 RET_LABEL:;
1803 }
1804 /* method parser#ReduceAction794#action for (self: ReduceAction794, Parser) */
1805 void parser__ReduceAction794__action(val* self, val* p0) {
1806 val* var_p /* var p: Parser */;
1807 val* var /* : null */;
1808 val* var_node_list /* var node_list: nullable Object */;
1809 val* var1 /* : nullable Object */;
1810 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1811 val* var2 /* : Array[Object] */;
1812 val* var_listnode2 /* var listnode2: Array[Object] */;
1813 val* var_pexterncodeblocknode1 /* var pexterncodeblocknode1: nullable Object */;
1814 val* var3 /* : null */;
1815 short int var4 /* : Bool */;
1816 short int var5 /* : Bool */;
1817 long var6 /* : Int */;
1818 long var7 /* : Int */;
1819 var_p = p0;
1820 var = NULL;
1821 var_node_list = var;
1822 {
1823 var1 = parser_work__Parser__pop(var_p);
1824 }
1825 var_nodearraylist1 = var1;
1826 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
1827 {
1828 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
1829 }
1830 var_listnode2 = var2;
1831 var_pexterncodeblocknode1 = var_nodearraylist1;
1832 var3 = NULL;
1833 if (var_pexterncodeblocknode1 == NULL) {
1834 var4 = 0; /* is null */
1835 } else {
1836 var4 = 1; /* arg is null and recv is not */
1837 }
1838 if (0) {
1839 var5 = ((short int (*)(val*, val*))(var_pexterncodeblocknode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexterncodeblocknode1, var3) /* != on <var_pexterncodeblocknode1:nullable Object>*/;
1840 var4 = var5;
1841 }
1842 if (var4){
1843 {
1844 array__Array__add(var_listnode2, var_pexterncodeblocknode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
1845 }
1846 } else {
1847 }
1848 var_node_list = var_listnode2;
1849 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction794> */
1850 {
1851 var7 = parser_work__Parser__go_to(var_p, var6);
1852 }
1853 {
1854 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1855 }
1856 RET_LABEL:;
1857 }
1858 /* method parser#ReduceAction794#action for (self: Object, Parser) */
1859 void VIRTUAL_parser__ReduceAction794__action(val* self, val* p0) {
1860 parser__ReduceAction794__action(self, p0); /* Direct call parser#ReduceAction794#action on <self:Object(ReduceAction794)>*/
1861 RET_LABEL:;
1862 }
1863 /* method parser#ReduceAction795#action for (self: ReduceAction795, Parser) */
1864 void parser__ReduceAction795__action(val* self, val* p0) {
1865 val* var_p /* var p: Parser */;
1866 val* var /* : null */;
1867 val* var_node_list /* var node_list: nullable Object */;
1868 val* var1 /* : nullable Object */;
1869 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
1870 val* var2 /* : nullable Object */;
1871 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1872 val* var3 /* : Array[Object] */;
1873 val* var_listnode3 /* var listnode3: Array[Object] */;
1874 val* var_listnode1 /* var listnode1: nullable Object */;
1875 short int var4 /* : Bool */;
1876 int cltype;
1877 int idtype;
1878 val* var_pexterncodeblocknode2 /* var pexterncodeblocknode2: nullable Object */;
1879 val* var5 /* : Array[Object] */;
1880 val* var6 /* : null */;
1881 short int var7 /* : Bool */;
1882 short int var8 /* : Bool */;
1883 long var9 /* : Int */;
1884 long var10 /* : Int */;
1885 var_p = p0;
1886 var = NULL;
1887 var_node_list = var;
1888 {
1889 var1 = parser_work__Parser__pop(var_p);
1890 }
1891 var_nodearraylist2 = var1;
1892 {
1893 var2 = parser_work__Parser__pop(var_p);
1894 }
1895 var_nodearraylist1 = var2;
1896 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
1897 {
1898 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
1899 }
1900 var_listnode3 = var3;
1901 var_listnode1 = var_nodearraylist1;
1902 /* <var_listnode1:nullable Object> isa Array[Object] */
1903 cltype = type_array__Arraykernel__Object.color;
1904 idtype = type_array__Arraykernel__Object.id;
1905 if(var_listnode1 == NULL) {
1906 var4 = 0;
1907 } else {
1908 if(cltype >= var_listnode1->type->table_size) {
1909 var4 = 0;
1910 } else {
1911 var4 = var_listnode1->type->type_table[cltype] == idtype;
1912 }
1913 }
1914 if (unlikely(!var4)) {
1915 PRINT_ERROR("Runtime error: %s", "Assert failed");
1916 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9680);
1917 show_backtrace(1);
1918 }
1919 var_pexterncodeblocknode2 = var_nodearraylist2;
1920 {
1921 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
1922 }
1923 var_listnode3 = var5;
1924 var6 = NULL;
1925 if (var_pexterncodeblocknode2 == NULL) {
1926 var7 = 0; /* is null */
1927 } else {
1928 var7 = 1; /* arg is null and recv is not */
1929 }
1930 if (0) {
1931 var8 = ((short int (*)(val*, val*))(var_pexterncodeblocknode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexterncodeblocknode2, var6) /* != on <var_pexterncodeblocknode2:nullable Object>*/;
1932 var7 = var8;
1933 }
1934 if (var7){
1935 {
1936 array__Array__add(var_listnode3, var_pexterncodeblocknode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
1937 }
1938 } else {
1939 }
1940 var_node_list = var_listnode3;
1941 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction795> */
1942 {
1943 var10 = parser_work__Parser__go_to(var_p, var9);
1944 }
1945 {
1946 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
1947 }
1948 RET_LABEL:;
1949 }
1950 /* method parser#ReduceAction795#action for (self: Object, Parser) */
1951 void VIRTUAL_parser__ReduceAction795__action(val* self, val* p0) {
1952 parser__ReduceAction795__action(self, p0); /* Direct call parser#ReduceAction795#action on <self:Object(ReduceAction795)>*/
1953 RET_LABEL:;
1954 }
1955 /* method parser#ReduceAction796#action for (self: ReduceAction796, Parser) */
1956 void parser__ReduceAction796__action(val* self, val* p0) {
1957 val* var_p /* var p: Parser */;
1958 val* var /* : null */;
1959 val* var_node_list /* var node_list: nullable Object */;
1960 val* var1 /* : nullable Object */;
1961 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
1962 val* var2 /* : Array[Object] */;
1963 val* var_listnode2 /* var listnode2: Array[Object] */;
1964 val* var_pclassdefnode1 /* var pclassdefnode1: nullable Object */;
1965 val* var3 /* : null */;
1966 short int var4 /* : Bool */;
1967 short int var5 /* : Bool */;
1968 long var6 /* : Int */;
1969 long var7 /* : Int */;
1970 var_p = p0;
1971 var = NULL;
1972 var_node_list = var;
1973 {
1974 var1 = parser_work__Parser__pop(var_p);
1975 }
1976 var_nodearraylist1 = var1;
1977 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
1978 {
1979 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
1980 }
1981 var_listnode2 = var2;
1982 var_pclassdefnode1 = var_nodearraylist1;
1983 var3 = NULL;
1984 if (var_pclassdefnode1 == NULL) {
1985 var4 = 0; /* is null */
1986 } else {
1987 var4 = 1; /* arg is null and recv is not */
1988 }
1989 if (0) {
1990 var5 = ((short int (*)(val*, val*))(var_pclassdefnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pclassdefnode1, var3) /* != on <var_pclassdefnode1:nullable Object>*/;
1991 var4 = var5;
1992 }
1993 if (var4){
1994 {
1995 array__Array__add(var_listnode2, var_pclassdefnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
1996 }
1997 } else {
1998 }
1999 var_node_list = var_listnode2;
2000 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction796> */
2001 {
2002 var7 = parser_work__Parser__go_to(var_p, var6);
2003 }
2004 {
2005 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2006 }
2007 RET_LABEL:;
2008 }
2009 /* method parser#ReduceAction796#action for (self: Object, Parser) */
2010 void VIRTUAL_parser__ReduceAction796__action(val* self, val* p0) {
2011 parser__ReduceAction796__action(self, p0); /* Direct call parser#ReduceAction796#action on <self:Object(ReduceAction796)>*/
2012 RET_LABEL:;
2013 }
2014 /* method parser#ReduceAction797#action for (self: ReduceAction797, Parser) */
2015 void parser__ReduceAction797__action(val* self, val* p0) {
2016 val* var_p /* var p: Parser */;
2017 val* var /* : null */;
2018 val* var_node_list /* var node_list: nullable Object */;
2019 val* var1 /* : nullable Object */;
2020 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2021 val* var2 /* : nullable Object */;
2022 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2023 val* var3 /* : Array[Object] */;
2024 val* var_listnode3 /* var listnode3: Array[Object] */;
2025 val* var_listnode1 /* var listnode1: nullable Object */;
2026 short int var4 /* : Bool */;
2027 int cltype;
2028 int idtype;
2029 val* var_pclassdefnode2 /* var pclassdefnode2: nullable Object */;
2030 val* var5 /* : Array[Object] */;
2031 val* var6 /* : null */;
2032 short int var7 /* : Bool */;
2033 short int var8 /* : Bool */;
2034 long var9 /* : Int */;
2035 long var10 /* : Int */;
2036 var_p = p0;
2037 var = NULL;
2038 var_node_list = var;
2039 {
2040 var1 = parser_work__Parser__pop(var_p);
2041 }
2042 var_nodearraylist2 = var1;
2043 {
2044 var2 = parser_work__Parser__pop(var_p);
2045 }
2046 var_nodearraylist1 = var2;
2047 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2048 {
2049 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2050 }
2051 var_listnode3 = var3;
2052 var_listnode1 = var_nodearraylist1;
2053 /* <var_listnode1:nullable Object> isa Array[Object] */
2054 cltype = type_array__Arraykernel__Object.color;
2055 idtype = type_array__Arraykernel__Object.id;
2056 if(var_listnode1 == NULL) {
2057 var4 = 0;
2058 } else {
2059 if(cltype >= var_listnode1->type->table_size) {
2060 var4 = 0;
2061 } else {
2062 var4 = var_listnode1->type->type_table[cltype] == idtype;
2063 }
2064 }
2065 if (unlikely(!var4)) {
2066 PRINT_ERROR("Runtime error: %s", "Assert failed");
2067 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9714);
2068 show_backtrace(1);
2069 }
2070 var_pclassdefnode2 = var_nodearraylist2;
2071 {
2072 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2073 }
2074 var_listnode3 = var5;
2075 var6 = NULL;
2076 if (var_pclassdefnode2 == NULL) {
2077 var7 = 0; /* is null */
2078 } else {
2079 var7 = 1; /* arg is null and recv is not */
2080 }
2081 if (0) {
2082 var8 = ((short int (*)(val*, val*))(var_pclassdefnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pclassdefnode2, var6) /* != on <var_pclassdefnode2:nullable Object>*/;
2083 var7 = var8;
2084 }
2085 if (var7){
2086 {
2087 array__Array__add(var_listnode3, var_pclassdefnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2088 }
2089 } else {
2090 }
2091 var_node_list = var_listnode3;
2092 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction797> */
2093 {
2094 var10 = parser_work__Parser__go_to(var_p, var9);
2095 }
2096 {
2097 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2098 }
2099 RET_LABEL:;
2100 }
2101 /* method parser#ReduceAction797#action for (self: Object, Parser) */
2102 void VIRTUAL_parser__ReduceAction797__action(val* self, val* p0) {
2103 parser__ReduceAction797__action(self, p0); /* Direct call parser#ReduceAction797#action on <self:Object(ReduceAction797)>*/
2104 RET_LABEL:;
2105 }
2106 /* method parser#ReduceAction798#action for (self: ReduceAction798, Parser) */
2107 void parser__ReduceAction798__action(val* self, val* p0) {
2108 val* var_p /* var p: Parser */;
2109 val* var /* : null */;
2110 val* var_node_list /* var node_list: nullable Object */;
2111 val* var1 /* : nullable Object */;
2112 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2113 val* var2 /* : Array[Object] */;
2114 val* var_listnode2 /* var listnode2: Array[Object] */;
2115 val* var_psuperclassnode1 /* var psuperclassnode1: nullable Object */;
2116 val* var3 /* : null */;
2117 short int var4 /* : Bool */;
2118 short int var5 /* : Bool */;
2119 long var6 /* : Int */;
2120 long var7 /* : Int */;
2121 var_p = p0;
2122 var = NULL;
2123 var_node_list = var;
2124 {
2125 var1 = parser_work__Parser__pop(var_p);
2126 }
2127 var_nodearraylist1 = var1;
2128 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2129 {
2130 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2131 }
2132 var_listnode2 = var2;
2133 var_psuperclassnode1 = var_nodearraylist1;
2134 var3 = NULL;
2135 if (var_psuperclassnode1 == NULL) {
2136 var4 = 0; /* is null */
2137 } else {
2138 var4 = 1; /* arg is null and recv is not */
2139 }
2140 if (0) {
2141 var5 = ((short int (*)(val*, val*))(var_psuperclassnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_psuperclassnode1, var3) /* != on <var_psuperclassnode1:nullable Object>*/;
2142 var4 = var5;
2143 }
2144 if (var4){
2145 {
2146 array__Array__add(var_listnode2, var_psuperclassnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2147 }
2148 } else {
2149 }
2150 var_node_list = var_listnode2;
2151 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction798> */
2152 {
2153 var7 = parser_work__Parser__go_to(var_p, var6);
2154 }
2155 {
2156 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2157 }
2158 RET_LABEL:;
2159 }
2160 /* method parser#ReduceAction798#action for (self: Object, Parser) */
2161 void VIRTUAL_parser__ReduceAction798__action(val* self, val* p0) {
2162 parser__ReduceAction798__action(self, p0); /* Direct call parser#ReduceAction798#action on <self:Object(ReduceAction798)>*/
2163 RET_LABEL:;
2164 }
2165 /* method parser#ReduceAction799#action for (self: ReduceAction799, Parser) */
2166 void parser__ReduceAction799__action(val* self, val* p0) {
2167 val* var_p /* var p: Parser */;
2168 val* var /* : null */;
2169 val* var_node_list /* var node_list: nullable Object */;
2170 val* var1 /* : nullable Object */;
2171 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2172 val* var2 /* : nullable Object */;
2173 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2174 val* var3 /* : Array[Object] */;
2175 val* var_listnode3 /* var listnode3: Array[Object] */;
2176 val* var_listnode1 /* var listnode1: nullable Object */;
2177 short int var4 /* : Bool */;
2178 int cltype;
2179 int idtype;
2180 val* var_psuperclassnode2 /* var psuperclassnode2: nullable Object */;
2181 val* var5 /* : Array[Object] */;
2182 val* var6 /* : null */;
2183 short int var7 /* : Bool */;
2184 short int var8 /* : Bool */;
2185 long var9 /* : Int */;
2186 long var10 /* : Int */;
2187 var_p = p0;
2188 var = NULL;
2189 var_node_list = var;
2190 {
2191 var1 = parser_work__Parser__pop(var_p);
2192 }
2193 var_nodearraylist2 = var1;
2194 {
2195 var2 = parser_work__Parser__pop(var_p);
2196 }
2197 var_nodearraylist1 = var2;
2198 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2199 {
2200 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2201 }
2202 var_listnode3 = var3;
2203 var_listnode1 = var_nodearraylist1;
2204 /* <var_listnode1:nullable Object> isa Array[Object] */
2205 cltype = type_array__Arraykernel__Object.color;
2206 idtype = type_array__Arraykernel__Object.id;
2207 if(var_listnode1 == NULL) {
2208 var4 = 0;
2209 } else {
2210 if(cltype >= var_listnode1->type->table_size) {
2211 var4 = 0;
2212 } else {
2213 var4 = var_listnode1->type->type_table[cltype] == idtype;
2214 }
2215 }
2216 if (unlikely(!var4)) {
2217 PRINT_ERROR("Runtime error: %s", "Assert failed");
2218 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9748);
2219 show_backtrace(1);
2220 }
2221 var_psuperclassnode2 = var_nodearraylist2;
2222 {
2223 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2224 }
2225 var_listnode3 = var5;
2226 var6 = NULL;
2227 if (var_psuperclassnode2 == NULL) {
2228 var7 = 0; /* is null */
2229 } else {
2230 var7 = 1; /* arg is null and recv is not */
2231 }
2232 if (0) {
2233 var8 = ((short int (*)(val*, val*))(var_psuperclassnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_psuperclassnode2, var6) /* != on <var_psuperclassnode2:nullable Object>*/;
2234 var7 = var8;
2235 }
2236 if (var7){
2237 {
2238 array__Array__add(var_listnode3, var_psuperclassnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2239 }
2240 } else {
2241 }
2242 var_node_list = var_listnode3;
2243 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction799> */
2244 {
2245 var10 = parser_work__Parser__go_to(var_p, var9);
2246 }
2247 {
2248 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2249 }
2250 RET_LABEL:;
2251 }
2252 /* method parser#ReduceAction799#action for (self: Object, Parser) */
2253 void VIRTUAL_parser__ReduceAction799__action(val* self, val* p0) {
2254 parser__ReduceAction799__action(self, p0); /* Direct call parser#ReduceAction799#action on <self:Object(ReduceAction799)>*/
2255 RET_LABEL:;
2256 }
2257 /* method parser#ReduceAction800#action for (self: ReduceAction800, Parser) */
2258 void parser__ReduceAction800__action(val* self, val* p0) {
2259 val* var_p /* var p: Parser */;
2260 val* var /* : null */;
2261 val* var_node_list /* var node_list: nullable Object */;
2262 val* var1 /* : nullable Object */;
2263 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2264 val* var2 /* : Array[Object] */;
2265 val* var_listnode2 /* var listnode2: Array[Object] */;
2266 val* var_ppropdefnode1 /* var ppropdefnode1: nullable Object */;
2267 val* var3 /* : null */;
2268 short int var4 /* : Bool */;
2269 short int var5 /* : Bool */;
2270 long var6 /* : Int */;
2271 long var7 /* : Int */;
2272 var_p = p0;
2273 var = NULL;
2274 var_node_list = var;
2275 {
2276 var1 = parser_work__Parser__pop(var_p);
2277 }
2278 var_nodearraylist1 = var1;
2279 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2280 {
2281 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2282 }
2283 var_listnode2 = var2;
2284 var_ppropdefnode1 = var_nodearraylist1;
2285 var3 = NULL;
2286 if (var_ppropdefnode1 == NULL) {
2287 var4 = 0; /* is null */
2288 } else {
2289 var4 = 1; /* arg is null and recv is not */
2290 }
2291 if (0) {
2292 var5 = ((short int (*)(val*, val*))(var_ppropdefnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_ppropdefnode1, var3) /* != on <var_ppropdefnode1:nullable Object>*/;
2293 var4 = var5;
2294 }
2295 if (var4){
2296 {
2297 array__Array__add(var_listnode2, var_ppropdefnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2298 }
2299 } else {
2300 }
2301 var_node_list = var_listnode2;
2302 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction800> */
2303 {
2304 var7 = parser_work__Parser__go_to(var_p, var6);
2305 }
2306 {
2307 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2308 }
2309 RET_LABEL:;
2310 }
2311 /* method parser#ReduceAction800#action for (self: Object, Parser) */
2312 void VIRTUAL_parser__ReduceAction800__action(val* self, val* p0) {
2313 parser__ReduceAction800__action(self, p0); /* Direct call parser#ReduceAction800#action on <self:Object(ReduceAction800)>*/
2314 RET_LABEL:;
2315 }
2316 /* method parser#ReduceAction801#action for (self: ReduceAction801, Parser) */
2317 void parser__ReduceAction801__action(val* self, val* p0) {
2318 val* var_p /* var p: Parser */;
2319 val* var /* : null */;
2320 val* var_node_list /* var node_list: nullable Object */;
2321 val* var1 /* : nullable Object */;
2322 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2323 val* var2 /* : nullable Object */;
2324 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2325 val* var3 /* : Array[Object] */;
2326 val* var_listnode3 /* var listnode3: Array[Object] */;
2327 val* var_listnode1 /* var listnode1: nullable Object */;
2328 short int var4 /* : Bool */;
2329 int cltype;
2330 int idtype;
2331 val* var_ppropdefnode2 /* var ppropdefnode2: nullable Object */;
2332 val* var5 /* : Array[Object] */;
2333 val* var6 /* : null */;
2334 short int var7 /* : Bool */;
2335 short int var8 /* : Bool */;
2336 long var9 /* : Int */;
2337 long var10 /* : Int */;
2338 var_p = p0;
2339 var = NULL;
2340 var_node_list = var;
2341 {
2342 var1 = parser_work__Parser__pop(var_p);
2343 }
2344 var_nodearraylist2 = var1;
2345 {
2346 var2 = parser_work__Parser__pop(var_p);
2347 }
2348 var_nodearraylist1 = var2;
2349 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2350 {
2351 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2352 }
2353 var_listnode3 = var3;
2354 var_listnode1 = var_nodearraylist1;
2355 /* <var_listnode1:nullable Object> isa Array[Object] */
2356 cltype = type_array__Arraykernel__Object.color;
2357 idtype = type_array__Arraykernel__Object.id;
2358 if(var_listnode1 == NULL) {
2359 var4 = 0;
2360 } else {
2361 if(cltype >= var_listnode1->type->table_size) {
2362 var4 = 0;
2363 } else {
2364 var4 = var_listnode1->type->type_table[cltype] == idtype;
2365 }
2366 }
2367 if (unlikely(!var4)) {
2368 PRINT_ERROR("Runtime error: %s", "Assert failed");
2369 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9782);
2370 show_backtrace(1);
2371 }
2372 var_ppropdefnode2 = var_nodearraylist2;
2373 {
2374 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2375 }
2376 var_listnode3 = var5;
2377 var6 = NULL;
2378 if (var_ppropdefnode2 == NULL) {
2379 var7 = 0; /* is null */
2380 } else {
2381 var7 = 1; /* arg is null and recv is not */
2382 }
2383 if (0) {
2384 var8 = ((short int (*)(val*, val*))(var_ppropdefnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_ppropdefnode2, var6) /* != on <var_ppropdefnode2:nullable Object>*/;
2385 var7 = var8;
2386 }
2387 if (var7){
2388 {
2389 array__Array__add(var_listnode3, var_ppropdefnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2390 }
2391 } else {
2392 }
2393 var_node_list = var_listnode3;
2394 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction801> */
2395 {
2396 var10 = parser_work__Parser__go_to(var_p, var9);
2397 }
2398 {
2399 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2400 }
2401 RET_LABEL:;
2402 }
2403 /* method parser#ReduceAction801#action for (self: Object, Parser) */
2404 void VIRTUAL_parser__ReduceAction801__action(val* self, val* p0) {
2405 parser__ReduceAction801__action(self, p0); /* Direct call parser#ReduceAction801#action on <self:Object(ReduceAction801)>*/
2406 RET_LABEL:;
2407 }
2408 /* method parser#ReduceAction802#action for (self: ReduceAction802, Parser) */
2409 void parser__ReduceAction802__action(val* self, val* p0) {
2410 val* var_p /* var p: Parser */;
2411 val* var /* : null */;
2412 val* var_node_list /* var node_list: nullable Object */;
2413 val* var1 /* : nullable Object */;
2414 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2415 val* var2 /* : Array[Object] */;
2416 val* var_listnode2 /* var listnode2: Array[Object] */;
2417 val* var_pformaldefnode1 /* var pformaldefnode1: nullable Object */;
2418 val* var3 /* : null */;
2419 short int var4 /* : Bool */;
2420 short int var5 /* : Bool */;
2421 long var6 /* : Int */;
2422 long var7 /* : Int */;
2423 var_p = p0;
2424 var = NULL;
2425 var_node_list = var;
2426 {
2427 var1 = parser_work__Parser__pop(var_p);
2428 }
2429 var_nodearraylist1 = var1;
2430 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2431 {
2432 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2433 }
2434 var_listnode2 = var2;
2435 var_pformaldefnode1 = var_nodearraylist1;
2436 var3 = NULL;
2437 if (var_pformaldefnode1 == NULL) {
2438 var4 = 0; /* is null */
2439 } else {
2440 var4 = 1; /* arg is null and recv is not */
2441 }
2442 if (0) {
2443 var5 = ((short int (*)(val*, val*))(var_pformaldefnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pformaldefnode1, var3) /* != on <var_pformaldefnode1:nullable Object>*/;
2444 var4 = var5;
2445 }
2446 if (var4){
2447 {
2448 array__Array__add(var_listnode2, var_pformaldefnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2449 }
2450 } else {
2451 }
2452 var_node_list = var_listnode2;
2453 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction802> */
2454 {
2455 var7 = parser_work__Parser__go_to(var_p, var6);
2456 }
2457 {
2458 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2459 }
2460 RET_LABEL:;
2461 }
2462 /* method parser#ReduceAction802#action for (self: Object, Parser) */
2463 void VIRTUAL_parser__ReduceAction802__action(val* self, val* p0) {
2464 parser__ReduceAction802__action(self, p0); /* Direct call parser#ReduceAction802#action on <self:Object(ReduceAction802)>*/
2465 RET_LABEL:;
2466 }
2467 /* method parser#ReduceAction803#action for (self: ReduceAction803, Parser) */
2468 void parser__ReduceAction803__action(val* self, val* p0) {
2469 val* var_p /* var p: Parser */;
2470 val* var /* : null */;
2471 val* var_node_list /* var node_list: nullable Object */;
2472 val* var1 /* : nullable Object */;
2473 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2474 val* var2 /* : nullable Object */;
2475 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2476 val* var3 /* : Array[Object] */;
2477 val* var_listnode3 /* var listnode3: Array[Object] */;
2478 val* var_listnode1 /* var listnode1: nullable Object */;
2479 short int var4 /* : Bool */;
2480 int cltype;
2481 int idtype;
2482 val* var_pformaldefnode2 /* var pformaldefnode2: nullable Object */;
2483 val* var5 /* : Array[Object] */;
2484 val* var6 /* : null */;
2485 short int var7 /* : Bool */;
2486 short int var8 /* : Bool */;
2487 long var9 /* : Int */;
2488 long var10 /* : Int */;
2489 var_p = p0;
2490 var = NULL;
2491 var_node_list = var;
2492 {
2493 var1 = parser_work__Parser__pop(var_p);
2494 }
2495 var_nodearraylist2 = var1;
2496 {
2497 var2 = parser_work__Parser__pop(var_p);
2498 }
2499 var_nodearraylist1 = var2;
2500 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2501 {
2502 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2503 }
2504 var_listnode3 = var3;
2505 var_listnode1 = var_nodearraylist1;
2506 /* <var_listnode1:nullable Object> isa Array[Object] */
2507 cltype = type_array__Arraykernel__Object.color;
2508 idtype = type_array__Arraykernel__Object.id;
2509 if(var_listnode1 == NULL) {
2510 var4 = 0;
2511 } else {
2512 if(cltype >= var_listnode1->type->table_size) {
2513 var4 = 0;
2514 } else {
2515 var4 = var_listnode1->type->type_table[cltype] == idtype;
2516 }
2517 }
2518 if (unlikely(!var4)) {
2519 PRINT_ERROR("Runtime error: %s", "Assert failed");
2520 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9816);
2521 show_backtrace(1);
2522 }
2523 var_pformaldefnode2 = var_nodearraylist2;
2524 {
2525 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2526 }
2527 var_listnode3 = var5;
2528 var6 = NULL;
2529 if (var_pformaldefnode2 == NULL) {
2530 var7 = 0; /* is null */
2531 } else {
2532 var7 = 1; /* arg is null and recv is not */
2533 }
2534 if (0) {
2535 var8 = ((short int (*)(val*, val*))(var_pformaldefnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pformaldefnode2, var6) /* != on <var_pformaldefnode2:nullable Object>*/;
2536 var7 = var8;
2537 }
2538 if (var7){
2539 {
2540 array__Array__add(var_listnode3, var_pformaldefnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2541 }
2542 } else {
2543 }
2544 var_node_list = var_listnode3;
2545 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction803> */
2546 {
2547 var10 = parser_work__Parser__go_to(var_p, var9);
2548 }
2549 {
2550 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2551 }
2552 RET_LABEL:;
2553 }
2554 /* method parser#ReduceAction803#action for (self: Object, Parser) */
2555 void VIRTUAL_parser__ReduceAction803__action(val* self, val* p0) {
2556 parser__ReduceAction803__action(self, p0); /* Direct call parser#ReduceAction803#action on <self:Object(ReduceAction803)>*/
2557 RET_LABEL:;
2558 }
2559 /* method parser#ReduceAction804#action for (self: ReduceAction804, Parser) */
2560 void parser__ReduceAction804__action(val* self, val* p0) {
2561 val* var_p /* var p: Parser */;
2562 val* var /* : null */;
2563 val* var_node_list /* var node_list: nullable Object */;
2564 val* var1 /* : nullable Object */;
2565 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2566 val* var2 /* : Array[Object] */;
2567 val* var_listnode2 /* var listnode2: Array[Object] */;
2568 val* var_pparamnode1 /* var pparamnode1: nullable Object */;
2569 val* var3 /* : null */;
2570 short int var4 /* : Bool */;
2571 short int var5 /* : Bool */;
2572 long var6 /* : Int */;
2573 long var7 /* : Int */;
2574 var_p = p0;
2575 var = NULL;
2576 var_node_list = var;
2577 {
2578 var1 = parser_work__Parser__pop(var_p);
2579 }
2580 var_nodearraylist1 = var1;
2581 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2582 {
2583 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2584 }
2585 var_listnode2 = var2;
2586 var_pparamnode1 = var_nodearraylist1;
2587 var3 = NULL;
2588 if (var_pparamnode1 == NULL) {
2589 var4 = 0; /* is null */
2590 } else {
2591 var4 = 1; /* arg is null and recv is not */
2592 }
2593 if (0) {
2594 var5 = ((short int (*)(val*, val*))(var_pparamnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pparamnode1, var3) /* != on <var_pparamnode1:nullable Object>*/;
2595 var4 = var5;
2596 }
2597 if (var4){
2598 {
2599 array__Array__add(var_listnode2, var_pparamnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2600 }
2601 } else {
2602 }
2603 var_node_list = var_listnode2;
2604 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction804> */
2605 {
2606 var7 = parser_work__Parser__go_to(var_p, var6);
2607 }
2608 {
2609 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2610 }
2611 RET_LABEL:;
2612 }
2613 /* method parser#ReduceAction804#action for (self: Object, Parser) */
2614 void VIRTUAL_parser__ReduceAction804__action(val* self, val* p0) {
2615 parser__ReduceAction804__action(self, p0); /* Direct call parser#ReduceAction804#action on <self:Object(ReduceAction804)>*/
2616 RET_LABEL:;
2617 }
2618 /* method parser#ReduceAction805#action for (self: ReduceAction805, Parser) */
2619 void parser__ReduceAction805__action(val* self, val* p0) {
2620 val* var_p /* var p: Parser */;
2621 val* var /* : null */;
2622 val* var_node_list /* var node_list: nullable Object */;
2623 val* var1 /* : nullable Object */;
2624 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2625 val* var2 /* : nullable Object */;
2626 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2627 val* var3 /* : Array[Object] */;
2628 val* var_listnode3 /* var listnode3: Array[Object] */;
2629 val* var_listnode1 /* var listnode1: nullable Object */;
2630 short int var4 /* : Bool */;
2631 int cltype;
2632 int idtype;
2633 val* var_pparamnode2 /* var pparamnode2: nullable Object */;
2634 val* var5 /* : Array[Object] */;
2635 val* var6 /* : null */;
2636 short int var7 /* : Bool */;
2637 short int var8 /* : Bool */;
2638 long var9 /* : Int */;
2639 long var10 /* : Int */;
2640 var_p = p0;
2641 var = NULL;
2642 var_node_list = var;
2643 {
2644 var1 = parser_work__Parser__pop(var_p);
2645 }
2646 var_nodearraylist2 = var1;
2647 {
2648 var2 = parser_work__Parser__pop(var_p);
2649 }
2650 var_nodearraylist1 = var2;
2651 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2652 {
2653 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2654 }
2655 var_listnode3 = var3;
2656 var_listnode1 = var_nodearraylist1;
2657 /* <var_listnode1:nullable Object> isa Array[Object] */
2658 cltype = type_array__Arraykernel__Object.color;
2659 idtype = type_array__Arraykernel__Object.id;
2660 if(var_listnode1 == NULL) {
2661 var4 = 0;
2662 } else {
2663 if(cltype >= var_listnode1->type->table_size) {
2664 var4 = 0;
2665 } else {
2666 var4 = var_listnode1->type->type_table[cltype] == idtype;
2667 }
2668 }
2669 if (unlikely(!var4)) {
2670 PRINT_ERROR("Runtime error: %s", "Assert failed");
2671 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9850);
2672 show_backtrace(1);
2673 }
2674 var_pparamnode2 = var_nodearraylist2;
2675 {
2676 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2677 }
2678 var_listnode3 = var5;
2679 var6 = NULL;
2680 if (var_pparamnode2 == NULL) {
2681 var7 = 0; /* is null */
2682 } else {
2683 var7 = 1; /* arg is null and recv is not */
2684 }
2685 if (0) {
2686 var8 = ((short int (*)(val*, val*))(var_pparamnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pparamnode2, var6) /* != on <var_pparamnode2:nullable Object>*/;
2687 var7 = var8;
2688 }
2689 if (var7){
2690 {
2691 array__Array__add(var_listnode3, var_pparamnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2692 }
2693 } else {
2694 }
2695 var_node_list = var_listnode3;
2696 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction805> */
2697 {
2698 var10 = parser_work__Parser__go_to(var_p, var9);
2699 }
2700 {
2701 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2702 }
2703 RET_LABEL:;
2704 }
2705 /* method parser#ReduceAction805#action for (self: Object, Parser) */
2706 void VIRTUAL_parser__ReduceAction805__action(val* self, val* p0) {
2707 parser__ReduceAction805__action(self, p0); /* Direct call parser#ReduceAction805#action on <self:Object(ReduceAction805)>*/
2708 RET_LABEL:;
2709 }
2710 /* method parser#ReduceAction806#action for (self: ReduceAction806, Parser) */
2711 void parser__ReduceAction806__action(val* self, val* p0) {
2712 val* var_p /* var p: Parser */;
2713 val* var /* : null */;
2714 val* var_node_list /* var node_list: nullable Object */;
2715 val* var1 /* : nullable Object */;
2716 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2717 val* var2 /* : Array[Object] */;
2718 val* var_listnode2 /* var listnode2: Array[Object] */;
2719 val* var_pexterncallnode1 /* var pexterncallnode1: nullable Object */;
2720 val* var3 /* : null */;
2721 short int var4 /* : Bool */;
2722 short int var5 /* : Bool */;
2723 long var6 /* : Int */;
2724 long var7 /* : Int */;
2725 var_p = p0;
2726 var = NULL;
2727 var_node_list = var;
2728 {
2729 var1 = parser_work__Parser__pop(var_p);
2730 }
2731 var_nodearraylist1 = var1;
2732 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2733 {
2734 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2735 }
2736 var_listnode2 = var2;
2737 var_pexterncallnode1 = var_nodearraylist1;
2738 var3 = NULL;
2739 if (var_pexterncallnode1 == NULL) {
2740 var4 = 0; /* is null */
2741 } else {
2742 var4 = 1; /* arg is null and recv is not */
2743 }
2744 if (0) {
2745 var5 = ((short int (*)(val*, val*))(var_pexterncallnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexterncallnode1, var3) /* != on <var_pexterncallnode1:nullable Object>*/;
2746 var4 = var5;
2747 }
2748 if (var4){
2749 {
2750 array__Array__add(var_listnode2, var_pexterncallnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2751 }
2752 } else {
2753 }
2754 var_node_list = var_listnode2;
2755 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction806> */
2756 {
2757 var7 = parser_work__Parser__go_to(var_p, var6);
2758 }
2759 {
2760 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2761 }
2762 RET_LABEL:;
2763 }
2764 /* method parser#ReduceAction806#action for (self: Object, Parser) */
2765 void VIRTUAL_parser__ReduceAction806__action(val* self, val* p0) {
2766 parser__ReduceAction806__action(self, p0); /* Direct call parser#ReduceAction806#action on <self:Object(ReduceAction806)>*/
2767 RET_LABEL:;
2768 }
2769 /* method parser#ReduceAction807#action for (self: ReduceAction807, Parser) */
2770 void parser__ReduceAction807__action(val* self, val* p0) {
2771 val* var_p /* var p: Parser */;
2772 val* var /* : null */;
2773 val* var_node_list /* var node_list: nullable Object */;
2774 val* var1 /* : nullable Object */;
2775 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2776 val* var2 /* : nullable Object */;
2777 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2778 val* var3 /* : Array[Object] */;
2779 val* var_listnode3 /* var listnode3: Array[Object] */;
2780 val* var_listnode1 /* var listnode1: nullable Object */;
2781 short int var4 /* : Bool */;
2782 int cltype;
2783 int idtype;
2784 val* var_pexterncallnode2 /* var pexterncallnode2: nullable Object */;
2785 val* var5 /* : Array[Object] */;
2786 val* var6 /* : null */;
2787 short int var7 /* : Bool */;
2788 short int var8 /* : Bool */;
2789 long var9 /* : Int */;
2790 long var10 /* : Int */;
2791 var_p = p0;
2792 var = NULL;
2793 var_node_list = var;
2794 {
2795 var1 = parser_work__Parser__pop(var_p);
2796 }
2797 var_nodearraylist2 = var1;
2798 {
2799 var2 = parser_work__Parser__pop(var_p);
2800 }
2801 var_nodearraylist1 = var2;
2802 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2803 {
2804 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2805 }
2806 var_listnode3 = var3;
2807 var_listnode1 = var_nodearraylist1;
2808 /* <var_listnode1:nullable Object> isa Array[Object] */
2809 cltype = type_array__Arraykernel__Object.color;
2810 idtype = type_array__Arraykernel__Object.id;
2811 if(var_listnode1 == NULL) {
2812 var4 = 0;
2813 } else {
2814 if(cltype >= var_listnode1->type->table_size) {
2815 var4 = 0;
2816 } else {
2817 var4 = var_listnode1->type->type_table[cltype] == idtype;
2818 }
2819 }
2820 if (unlikely(!var4)) {
2821 PRINT_ERROR("Runtime error: %s", "Assert failed");
2822 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9884);
2823 show_backtrace(1);
2824 }
2825 var_pexterncallnode2 = var_nodearraylist2;
2826 {
2827 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2828 }
2829 var_listnode3 = var5;
2830 var6 = NULL;
2831 if (var_pexterncallnode2 == NULL) {
2832 var7 = 0; /* is null */
2833 } else {
2834 var7 = 1; /* arg is null and recv is not */
2835 }
2836 if (0) {
2837 var8 = ((short int (*)(val*, val*))(var_pexterncallnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexterncallnode2, var6) /* != on <var_pexterncallnode2:nullable Object>*/;
2838 var7 = var8;
2839 }
2840 if (var7){
2841 {
2842 array__Array__add(var_listnode3, var_pexterncallnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2843 }
2844 } else {
2845 }
2846 var_node_list = var_listnode3;
2847 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction807> */
2848 {
2849 var10 = parser_work__Parser__go_to(var_p, var9);
2850 }
2851 {
2852 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2853 }
2854 RET_LABEL:;
2855 }
2856 /* method parser#ReduceAction807#action for (self: Object, Parser) */
2857 void VIRTUAL_parser__ReduceAction807__action(val* self, val* p0) {
2858 parser__ReduceAction807__action(self, p0); /* Direct call parser#ReduceAction807#action on <self:Object(ReduceAction807)>*/
2859 RET_LABEL:;
2860 }
2861 /* method parser#ReduceAction809#action for (self: ReduceAction809, Parser) */
2862 void parser__ReduceAction809__action(val* self, val* p0) {
2863 val* var_p /* var p: Parser */;
2864 val* var /* : null */;
2865 val* var_node_list /* var node_list: nullable Object */;
2866 val* var1 /* : nullable Object */;
2867 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
2868 val* var2 /* : nullable Object */;
2869 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2870 val* var3 /* : Array[Object] */;
2871 val* var_listnode3 /* var listnode3: Array[Object] */;
2872 val* var_listnode1 /* var listnode1: nullable Object */;
2873 short int var4 /* : Bool */;
2874 int cltype;
2875 int idtype;
2876 val* var_ptypenode2 /* var ptypenode2: nullable Object */;
2877 val* var5 /* : Array[Object] */;
2878 val* var6 /* : null */;
2879 short int var7 /* : Bool */;
2880 short int var8 /* : Bool */;
2881 long var9 /* : Int */;
2882 long var10 /* : Int */;
2883 var_p = p0;
2884 var = NULL;
2885 var_node_list = var;
2886 {
2887 var1 = parser_work__Parser__pop(var_p);
2888 }
2889 var_nodearraylist2 = var1;
2890 {
2891 var2 = parser_work__Parser__pop(var_p);
2892 }
2893 var_nodearraylist1 = var2;
2894 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
2895 {
2896 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
2897 }
2898 var_listnode3 = var3;
2899 var_listnode1 = var_nodearraylist1;
2900 /* <var_listnode1:nullable Object> isa Array[Object] */
2901 cltype = type_array__Arraykernel__Object.color;
2902 idtype = type_array__Arraykernel__Object.id;
2903 if(var_listnode1 == NULL) {
2904 var4 = 0;
2905 } else {
2906 if(cltype >= var_listnode1->type->table_size) {
2907 var4 = 0;
2908 } else {
2909 var4 = var_listnode1->type->type_table[cltype] == idtype;
2910 }
2911 }
2912 if (unlikely(!var4)) {
2913 PRINT_ERROR("Runtime error: %s", "Assert failed");
2914 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9903);
2915 show_backtrace(1);
2916 }
2917 var_ptypenode2 = var_nodearraylist2;
2918 {
2919 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
2920 }
2921 var_listnode3 = var5;
2922 var6 = NULL;
2923 if (var_ptypenode2 == NULL) {
2924 var7 = 0; /* is null */
2925 } else {
2926 var7 = 1; /* arg is null and recv is not */
2927 }
2928 if (0) {
2929 var8 = ((short int (*)(val*, val*))(var_ptypenode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_ptypenode2, var6) /* != on <var_ptypenode2:nullable Object>*/;
2930 var7 = var8;
2931 }
2932 if (var7){
2933 {
2934 array__Array__add(var_listnode3, var_ptypenode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
2935 }
2936 } else {
2937 }
2938 var_node_list = var_listnode3;
2939 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction809> */
2940 {
2941 var10 = parser_work__Parser__go_to(var_p, var9);
2942 }
2943 {
2944 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
2945 }
2946 RET_LABEL:;
2947 }
2948 /* method parser#ReduceAction809#action for (self: Object, Parser) */
2949 void VIRTUAL_parser__ReduceAction809__action(val* self, val* p0) {
2950 parser__ReduceAction809__action(self, p0); /* Direct call parser#ReduceAction809#action on <self:Object(ReduceAction809)>*/
2951 RET_LABEL:;
2952 }
2953 /* method parser#ReduceAction810#action for (self: ReduceAction810, Parser) */
2954 void parser__ReduceAction810__action(val* self, val* p0) {
2955 val* var_p /* var p: Parser */;
2956 val* var /* : null */;
2957 val* var_node_list /* var node_list: nullable Object */;
2958 val* var1 /* : nullable Object */;
2959 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
2960 val* var2 /* : Array[Object] */;
2961 val* var_listnode2 /* var listnode2: Array[Object] */;
2962 val* var_pexprnode1 /* var pexprnode1: nullable Object */;
2963 val* var3 /* : null */;
2964 short int var4 /* : Bool */;
2965 short int var5 /* : Bool */;
2966 long var6 /* : Int */;
2967 long var7 /* : Int */;
2968 var_p = p0;
2969 var = NULL;
2970 var_node_list = var;
2971 {
2972 var1 = parser_work__Parser__pop(var_p);
2973 }
2974 var_nodearraylist1 = var1;
2975 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
2976 {
2977 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
2978 }
2979 var_listnode2 = var2;
2980 var_pexprnode1 = var_nodearraylist1;
2981 var3 = NULL;
2982 if (var_pexprnode1 == NULL) {
2983 var4 = 0; /* is null */
2984 } else {
2985 var4 = 1; /* arg is null and recv is not */
2986 }
2987 if (0) {
2988 var5 = ((short int (*)(val*, val*))(var_pexprnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexprnode1, var3) /* != on <var_pexprnode1:nullable Object>*/;
2989 var4 = var5;
2990 }
2991 if (var4){
2992 {
2993 array__Array__add(var_listnode2, var_pexprnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
2994 }
2995 } else {
2996 }
2997 var_node_list = var_listnode2;
2998 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction810> */
2999 {
3000 var7 = parser_work__Parser__go_to(var_p, var6);
3001 }
3002 {
3003 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3004 }
3005 RET_LABEL:;
3006 }
3007 /* method parser#ReduceAction810#action for (self: Object, Parser) */
3008 void VIRTUAL_parser__ReduceAction810__action(val* self, val* p0) {
3009 parser__ReduceAction810__action(self, p0); /* Direct call parser#ReduceAction810#action on <self:Object(ReduceAction810)>*/
3010 RET_LABEL:;
3011 }
3012 /* method parser#ReduceAction811#action for (self: ReduceAction811, Parser) */
3013 void parser__ReduceAction811__action(val* self, val* p0) {
3014 val* var_p /* var p: Parser */;
3015 val* var /* : null */;
3016 val* var_node_list /* var node_list: nullable Object */;
3017 val* var1 /* : nullable Object */;
3018 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3019 val* var2 /* : nullable Object */;
3020 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3021 val* var3 /* : Array[Object] */;
3022 val* var_listnode3 /* var listnode3: Array[Object] */;
3023 val* var_listnode1 /* var listnode1: nullable Object */;
3024 short int var4 /* : Bool */;
3025 int cltype;
3026 int idtype;
3027 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
3028 val* var5 /* : Array[Object] */;
3029 val* var6 /* : null */;
3030 short int var7 /* : Bool */;
3031 short int var8 /* : Bool */;
3032 long var9 /* : Int */;
3033 long var10 /* : Int */;
3034 var_p = p0;
3035 var = NULL;
3036 var_node_list = var;
3037 {
3038 var1 = parser_work__Parser__pop(var_p);
3039 }
3040 var_nodearraylist2 = var1;
3041 {
3042 var2 = parser_work__Parser__pop(var_p);
3043 }
3044 var_nodearraylist1 = var2;
3045 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3046 {
3047 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3048 }
3049 var_listnode3 = var3;
3050 var_listnode1 = var_nodearraylist1;
3051 /* <var_listnode1:nullable Object> isa Array[Object] */
3052 cltype = type_array__Arraykernel__Object.color;
3053 idtype = type_array__Arraykernel__Object.id;
3054 if(var_listnode1 == NULL) {
3055 var4 = 0;
3056 } else {
3057 if(cltype >= var_listnode1->type->table_size) {
3058 var4 = 0;
3059 } else {
3060 var4 = var_listnode1->type->type_table[cltype] == idtype;
3061 }
3062 }
3063 if (unlikely(!var4)) {
3064 PRINT_ERROR("Runtime error: %s", "Assert failed");
3065 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9937);
3066 show_backtrace(1);
3067 }
3068 var_pexprnode2 = var_nodearraylist2;
3069 {
3070 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3071 }
3072 var_listnode3 = var5;
3073 var6 = NULL;
3074 if (var_pexprnode2 == NULL) {
3075 var7 = 0; /* is null */
3076 } else {
3077 var7 = 1; /* arg is null and recv is not */
3078 }
3079 if (0) {
3080 var8 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pexprnode2, var6) /* != on <var_pexprnode2:nullable Object>*/;
3081 var7 = var8;
3082 }
3083 if (var7){
3084 {
3085 array__Array__add(var_listnode3, var_pexprnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3086 }
3087 } else {
3088 }
3089 var_node_list = var_listnode3;
3090 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction811> */
3091 {
3092 var10 = parser_work__Parser__go_to(var_p, var9);
3093 }
3094 {
3095 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3096 }
3097 RET_LABEL:;
3098 }
3099 /* method parser#ReduceAction811#action for (self: Object, Parser) */
3100 void VIRTUAL_parser__ReduceAction811__action(val* self, val* p0) {
3101 parser__ReduceAction811__action(self, p0); /* Direct call parser#ReduceAction811#action on <self:Object(ReduceAction811)>*/
3102 RET_LABEL:;
3103 }
3104 /* method parser#ReduceAction812#action for (self: ReduceAction812, Parser) */
3105 void parser__ReduceAction812__action(val* self, val* p0) {
3106 val* var_p /* var p: Parser */;
3107 val* var /* : null */;
3108 val* var_node_list /* var node_list: nullable Object */;
3109 val* var1 /* : nullable Object */;
3110 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3111 val* var2 /* : Array[Object] */;
3112 val* var_listnode2 /* var listnode2: Array[Object] */;
3113 val* var_listnode1 /* var listnode1: nullable Object */;
3114 short int var3 /* : Bool */;
3115 int cltype;
3116 int idtype;
3117 val* var4 /* : Array[Object] */;
3118 long var5 /* : Int */;
3119 long var6 /* : Int */;
3120 var_p = p0;
3121 var = NULL;
3122 var_node_list = var;
3123 {
3124 var1 = parser_work__Parser__pop(var_p);
3125 }
3126 var_nodearraylist1 = var1;
3127 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
3128 {
3129 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
3130 }
3131 var_listnode2 = var2;
3132 var_listnode1 = var_nodearraylist1;
3133 /* <var_listnode1:nullable Object> isa Array[Object] */
3134 cltype = type_array__Arraykernel__Object.color;
3135 idtype = type_array__Arraykernel__Object.id;
3136 if(var_listnode1 == NULL) {
3137 var3 = 0;
3138 } else {
3139 if(cltype >= var_listnode1->type->table_size) {
3140 var3 = 0;
3141 } else {
3142 var3 = var_listnode1->type->type_table[cltype] == idtype;
3143 }
3144 }
3145 if (unlikely(!var3)) {
3146 PRINT_ERROR("Runtime error: %s", "Assert failed");
3147 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9955);
3148 show_backtrace(1);
3149 }
3150 {
3151 var4 = parser_work__ReduceAction__concat(self, var_listnode2, var_listnode1);
3152 }
3153 var_listnode2 = var4;
3154 var_node_list = var_listnode2;
3155 var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction812> */
3156 {
3157 var6 = parser_work__Parser__go_to(var_p, var5);
3158 }
3159 {
3160 parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3161 }
3162 RET_LABEL:;
3163 }
3164 /* method parser#ReduceAction812#action for (self: Object, Parser) */
3165 void VIRTUAL_parser__ReduceAction812__action(val* self, val* p0) {
3166 parser__ReduceAction812__action(self, p0); /* Direct call parser#ReduceAction812#action on <self:Object(ReduceAction812)>*/
3167 RET_LABEL:;
3168 }
3169 /* method parser#ReduceAction813#action for (self: ReduceAction813, Parser) */
3170 void parser__ReduceAction813__action(val* self, val* p0) {
3171 val* var_p /* var p: Parser */;
3172 val* var /* : null */;
3173 val* var_node_list /* var node_list: nullable Object */;
3174 val* var1 /* : nullable Object */;
3175 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3176 val* var2 /* : nullable Object */;
3177 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3178 val* var3 /* : Array[Object] */;
3179 val* var_listnode3 /* var listnode3: Array[Object] */;
3180 val* var_listnode1 /* var listnode1: nullable Object */;
3181 short int var4 /* : Bool */;
3182 int cltype;
3183 int idtype;
3184 val* var_listnode2 /* var listnode2: nullable Object */;
3185 short int var5 /* : Bool */;
3186 int cltype6;
3187 int idtype7;
3188 val* var8 /* : Array[Object] */;
3189 val* var9 /* : Array[Object] */;
3190 long var10 /* : Int */;
3191 long var11 /* : Int */;
3192 var_p = p0;
3193 var = NULL;
3194 var_node_list = var;
3195 {
3196 var1 = parser_work__Parser__pop(var_p);
3197 }
3198 var_nodearraylist2 = var1;
3199 {
3200 var2 = parser_work__Parser__pop(var_p);
3201 }
3202 var_nodearraylist1 = var2;
3203 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3204 {
3205 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3206 }
3207 var_listnode3 = var3;
3208 var_listnode1 = var_nodearraylist1;
3209 /* <var_listnode1:nullable Object> isa Array[Object] */
3210 cltype = type_array__Arraykernel__Object.color;
3211 idtype = type_array__Arraykernel__Object.id;
3212 if(var_listnode1 == NULL) {
3213 var4 = 0;
3214 } else {
3215 if(cltype >= var_listnode1->type->table_size) {
3216 var4 = 0;
3217 } else {
3218 var4 = var_listnode1->type->type_table[cltype] == idtype;
3219 }
3220 }
3221 if (unlikely(!var4)) {
3222 PRINT_ERROR("Runtime error: %s", "Assert failed");
3223 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9970);
3224 show_backtrace(1);
3225 }
3226 var_listnode2 = var_nodearraylist2;
3227 /* <var_listnode2:nullable Object> isa Array[Object] */
3228 cltype6 = type_array__Arraykernel__Object.color;
3229 idtype7 = type_array__Arraykernel__Object.id;
3230 if(var_listnode2 == NULL) {
3231 var5 = 0;
3232 } else {
3233 if(cltype6 >= var_listnode2->type->table_size) {
3234 var5 = 0;
3235 } else {
3236 var5 = var_listnode2->type->type_table[cltype6] == idtype7;
3237 }
3238 }
3239 if (unlikely(!var5)) {
3240 PRINT_ERROR("Runtime error: %s", "Assert failed");
3241 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9972);
3242 show_backtrace(1);
3243 }
3244 {
3245 var8 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3246 }
3247 var_listnode3 = var8;
3248 {
3249 var9 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
3250 }
3251 var_listnode3 = var9;
3252 var_node_list = var_listnode3;
3253 var10 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction813> */
3254 {
3255 var11 = parser_work__Parser__go_to(var_p, var10);
3256 }
3257 {
3258 parser_work__Parser__push(var_p, var11, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3259 }
3260 RET_LABEL:;
3261 }
3262 /* method parser#ReduceAction813#action for (self: Object, Parser) */
3263 void VIRTUAL_parser__ReduceAction813__action(val* self, val* p0) {
3264 parser__ReduceAction813__action(self, p0); /* Direct call parser#ReduceAction813#action on <self:Object(ReduceAction813)>*/
3265 RET_LABEL:;
3266 }
3267 /* method parser#ReduceAction815#action for (self: ReduceAction815, Parser) */
3268 void parser__ReduceAction815__action(val* self, val* p0) {
3269 val* var_p /* var p: Parser */;
3270 val* var /* : null */;
3271 val* var_node_list /* var node_list: nullable Object */;
3272 val* var1 /* : nullable Object */;
3273 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3274 val* var2 /* : nullable Object */;
3275 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3276 val* var3 /* : Array[Object] */;
3277 val* var_listnode3 /* var listnode3: Array[Object] */;
3278 val* var_listnode1 /* var listnode1: nullable Object */;
3279 short int var4 /* : Bool */;
3280 int cltype;
3281 int idtype;
3282 val* var_pannotationnode2 /* var pannotationnode2: nullable Object */;
3283 val* var5 /* : Array[Object] */;
3284 val* var6 /* : null */;
3285 short int var7 /* : Bool */;
3286 short int var8 /* : Bool */;
3287 long var9 /* : Int */;
3288 long var10 /* : Int */;
3289 var_p = p0;
3290 var = NULL;
3291 var_node_list = var;
3292 {
3293 var1 = parser_work__Parser__pop(var_p);
3294 }
3295 var_nodearraylist2 = var1;
3296 {
3297 var2 = parser_work__Parser__pop(var_p);
3298 }
3299 var_nodearraylist1 = var2;
3300 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3301 {
3302 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3303 }
3304 var_listnode3 = var3;
3305 var_listnode1 = var_nodearraylist1;
3306 /* <var_listnode1:nullable Object> isa Array[Object] */
3307 cltype = type_array__Arraykernel__Object.color;
3308 idtype = type_array__Arraykernel__Object.id;
3309 if(var_listnode1 == NULL) {
3310 var4 = 0;
3311 } else {
3312 if(cltype >= var_listnode1->type->table_size) {
3313 var4 = 0;
3314 } else {
3315 var4 = var_listnode1->type->type_table[cltype] == idtype;
3316 }
3317 }
3318 if (unlikely(!var4)) {
3319 PRINT_ERROR("Runtime error: %s", "Assert failed");
3320 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 9988);
3321 show_backtrace(1);
3322 }
3323 var_pannotationnode2 = var_nodearraylist2;
3324 {
3325 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3326 }
3327 var_listnode3 = var5;
3328 var6 = NULL;
3329 if (var_pannotationnode2 == NULL) {
3330 var7 = 0; /* is null */
3331 } else {
3332 var7 = 1; /* arg is null and recv is not */
3333 }
3334 if (0) {
3335 var8 = ((short int (*)(val*, val*))(var_pannotationnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_pannotationnode2, var6) /* != on <var_pannotationnode2:nullable Object>*/;
3336 var7 = var8;
3337 }
3338 if (var7){
3339 {
3340 array__Array__add(var_listnode3, var_pannotationnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3341 }
3342 } else {
3343 }
3344 var_node_list = var_listnode3;
3345 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction815> */
3346 {
3347 var10 = parser_work__Parser__go_to(var_p, var9);
3348 }
3349 {
3350 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3351 }
3352 RET_LABEL:;
3353 }
3354 /* method parser#ReduceAction815#action for (self: Object, Parser) */
3355 void VIRTUAL_parser__ReduceAction815__action(val* self, val* p0) {
3356 parser__ReduceAction815__action(self, p0); /* Direct call parser#ReduceAction815#action on <self:Object(ReduceAction815)>*/
3357 RET_LABEL:;
3358 }
3359 /* method parser#ReduceAction821#action for (self: ReduceAction821, Parser) */
3360 void parser__ReduceAction821__action(val* self, val* p0) {
3361 val* var_p /* var p: Parser */;
3362 val* var /* : null */;
3363 val* var_node_list /* var node_list: nullable Object */;
3364 val* var1 /* : nullable Object */;
3365 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3366 val* var2 /* : nullable Object */;
3367 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3368 val* var3 /* : Array[Object] */;
3369 val* var_listnode3 /* var listnode3: Array[Object] */;
3370 val* var_listnode1 /* var listnode1: nullable Object */;
3371 short int var4 /* : Bool */;
3372 int cltype;
3373 int idtype;
3374 val* var_patargnode2 /* var patargnode2: nullable Object */;
3375 val* var5 /* : Array[Object] */;
3376 val* var6 /* : null */;
3377 short int var7 /* : Bool */;
3378 short int var8 /* : Bool */;
3379 long var9 /* : Int */;
3380 long var10 /* : Int */;
3381 var_p = p0;
3382 var = NULL;
3383 var_node_list = var;
3384 {
3385 var1 = parser_work__Parser__pop(var_p);
3386 }
3387 var_nodearraylist2 = var1;
3388 {
3389 var2 = parser_work__Parser__pop(var_p);
3390 }
3391 var_nodearraylist1 = var2;
3392 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3393 {
3394 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3395 }
3396 var_listnode3 = var3;
3397 var_listnode1 = var_nodearraylist1;
3398 /* <var_listnode1:nullable Object> isa Array[Object] */
3399 cltype = type_array__Arraykernel__Object.color;
3400 idtype = type_array__Arraykernel__Object.id;
3401 if(var_listnode1 == NULL) {
3402 var4 = 0;
3403 } else {
3404 if(cltype >= var_listnode1->type->table_size) {
3405 var4 = 0;
3406 } else {
3407 var4 = var_listnode1->type->type_table[cltype] == idtype;
3408 }
3409 }
3410 if (unlikely(!var4)) {
3411 PRINT_ERROR("Runtime error: %s", "Assert failed");
3412 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 10007);
3413 show_backtrace(1);
3414 }
3415 var_patargnode2 = var_nodearraylist2;
3416 {
3417 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3418 }
3419 var_listnode3 = var5;
3420 var6 = NULL;
3421 if (var_patargnode2 == NULL) {
3422 var7 = 0; /* is null */
3423 } else {
3424 var7 = 1; /* arg is null and recv is not */
3425 }
3426 if (0) {
3427 var8 = ((short int (*)(val*, val*))(var_patargnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_patargnode2, var6) /* != on <var_patargnode2:nullable Object>*/;
3428 var7 = var8;
3429 }
3430 if (var7){
3431 {
3432 array__Array__add(var_listnode3, var_patargnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3433 }
3434 } else {
3435 }
3436 var_node_list = var_listnode3;
3437 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction821> */
3438 {
3439 var10 = parser_work__Parser__go_to(var_p, var9);
3440 }
3441 {
3442 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3443 }
3444 RET_LABEL:;
3445 }
3446 /* method parser#ReduceAction821#action for (self: Object, Parser) */
3447 void VIRTUAL_parser__ReduceAction821__action(val* self, val* p0) {
3448 parser__ReduceAction821__action(self, p0); /* Direct call parser#ReduceAction821#action on <self:Object(ReduceAction821)>*/
3449 RET_LABEL:;
3450 }
3451 /* method parser#ReduceAction825#action for (self: ReduceAction825, Parser) */
3452 void parser__ReduceAction825__action(val* self, val* p0) {
3453 val* var_p /* var p: Parser */;
3454 val* var /* : null */;
3455 val* var_node_list /* var node_list: nullable Object */;
3456 val* var1 /* : nullable Object */;
3457 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3458 val* var2 /* : nullable Object */;
3459 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3460 val* var3 /* : Array[Object] */;
3461 val* var_listnode3 /* var listnode3: Array[Object] */;
3462 val* var_listnode1 /* var listnode1: nullable Object */;
3463 short int var4 /* : Bool */;
3464 int cltype;
3465 int idtype;
3466 val* var_tidnode2 /* var tidnode2: nullable Object */;
3467 val* var5 /* : Array[Object] */;
3468 val* var6 /* : null */;
3469 short int var7 /* : Bool */;
3470 short int var8 /* : Bool */;
3471 long var9 /* : Int */;
3472 long var10 /* : Int */;
3473 var_p = p0;
3474 var = NULL;
3475 var_node_list = var;
3476 {
3477 var1 = parser_work__Parser__pop(var_p);
3478 }
3479 var_nodearraylist2 = var1;
3480 {
3481 var2 = parser_work__Parser__pop(var_p);
3482 }
3483 var_nodearraylist1 = var2;
3484 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3485 {
3486 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3487 }
3488 var_listnode3 = var3;
3489 var_listnode1 = var_nodearraylist1;
3490 /* <var_listnode1:nullable Object> isa Array[Object] */
3491 cltype = type_array__Arraykernel__Object.color;
3492 idtype = type_array__Arraykernel__Object.id;
3493 if(var_listnode1 == NULL) {
3494 var4 = 0;
3495 } else {
3496 if(cltype >= var_listnode1->type->table_size) {
3497 var4 = 0;
3498 } else {
3499 var4 = var_listnode1->type->type_table[cltype] == idtype;
3500 }
3501 }
3502 if (unlikely(!var4)) {
3503 PRINT_ERROR("Runtime error: %s", "Assert failed");
3504 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 10026);
3505 show_backtrace(1);
3506 }
3507 var_tidnode2 = var_nodearraylist2;
3508 {
3509 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3510 }
3511 var_listnode3 = var5;
3512 var6 = NULL;
3513 if (var_tidnode2 == NULL) {
3514 var7 = 0; /* is null */
3515 } else {
3516 var7 = 1; /* arg is null and recv is not */
3517 }
3518 if (0) {
3519 var8 = ((short int (*)(val*, val*))(var_tidnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_tidnode2, var6) /* != on <var_tidnode2:nullable Object>*/;
3520 var7 = var8;
3521 }
3522 if (var7){
3523 {
3524 array__Array__add(var_listnode3, var_tidnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3525 }
3526 } else {
3527 }
3528 var_node_list = var_listnode3;
3529 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction825> */
3530 {
3531 var10 = parser_work__Parser__go_to(var_p, var9);
3532 }
3533 {
3534 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3535 }
3536 RET_LABEL:;
3537 }
3538 /* method parser#ReduceAction825#action for (self: Object, Parser) */
3539 void VIRTUAL_parser__ReduceAction825__action(val* self, val* p0) {
3540 parser__ReduceAction825__action(self, p0); /* Direct call parser#ReduceAction825#action on <self:Object(ReduceAction825)>*/
3541 RET_LABEL:;
3542 }
3543 /* method parser#ReduceAction826#action for (self: ReduceAction826, Parser) */
3544 void parser__ReduceAction826__action(val* self, val* p0) {
3545 val* var_p /* var p: Parser */;
3546 val* var /* : null */;
3547 val* var_node_list /* var node_list: nullable Object */;
3548 val* var1 /* : nullable Object */;
3549 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3550 val* var2 /* : Array[Object] */;
3551 val* var_listnode2 /* var listnode2: Array[Object] */;
3552 val* var_tcommentnode1 /* var tcommentnode1: nullable Object */;
3553 val* var3 /* : null */;
3554 short int var4 /* : Bool */;
3555 short int var5 /* : Bool */;
3556 long var6 /* : Int */;
3557 long var7 /* : Int */;
3558 var_p = p0;
3559 var = NULL;
3560 var_node_list = var;
3561 {
3562 var1 = parser_work__Parser__pop(var_p);
3563 }
3564 var_nodearraylist1 = var1;
3565 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
3566 {
3567 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
3568 }
3569 var_listnode2 = var2;
3570 var_tcommentnode1 = var_nodearraylist1;
3571 var3 = NULL;
3572 if (var_tcommentnode1 == NULL) {
3573 var4 = 0; /* is null */
3574 } else {
3575 var4 = 1; /* arg is null and recv is not */
3576 }
3577 if (0) {
3578 var5 = ((short int (*)(val*, val*))(var_tcommentnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_tcommentnode1, var3) /* != on <var_tcommentnode1:nullable Object>*/;
3579 var4 = var5;
3580 }
3581 if (var4){
3582 {
3583 array__Array__add(var_listnode2, var_tcommentnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
3584 }
3585 } else {
3586 }
3587 var_node_list = var_listnode2;
3588 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction826> */
3589 {
3590 var7 = parser_work__Parser__go_to(var_p, var6);
3591 }
3592 {
3593 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3594 }
3595 RET_LABEL:;
3596 }
3597 /* method parser#ReduceAction826#action for (self: Object, Parser) */
3598 void VIRTUAL_parser__ReduceAction826__action(val* self, val* p0) {
3599 parser__ReduceAction826__action(self, p0); /* Direct call parser#ReduceAction826#action on <self:Object(ReduceAction826)>*/
3600 RET_LABEL:;
3601 }
3602 /* method parser#ReduceAction827#action for (self: ReduceAction827, Parser) */
3603 void parser__ReduceAction827__action(val* self, val* p0) {
3604 val* var_p /* var p: Parser */;
3605 val* var /* : null */;
3606 val* var_node_list /* var node_list: nullable Object */;
3607 val* var1 /* : nullable Object */;
3608 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3609 val* var2 /* : nullable Object */;
3610 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3611 val* var3 /* : Array[Object] */;
3612 val* var_listnode3 /* var listnode3: Array[Object] */;
3613 val* var_listnode1 /* var listnode1: nullable Object */;
3614 short int var4 /* : Bool */;
3615 int cltype;
3616 int idtype;
3617 val* var_tcommentnode2 /* var tcommentnode2: nullable Object */;
3618 val* var5 /* : Array[Object] */;
3619 val* var6 /* : null */;
3620 short int var7 /* : Bool */;
3621 short int var8 /* : Bool */;
3622 long var9 /* : Int */;
3623 long var10 /* : Int */;
3624 var_p = p0;
3625 var = NULL;
3626 var_node_list = var;
3627 {
3628 var1 = parser_work__Parser__pop(var_p);
3629 }
3630 var_nodearraylist2 = var1;
3631 {
3632 var2 = parser_work__Parser__pop(var_p);
3633 }
3634 var_nodearraylist1 = var2;
3635 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3636 {
3637 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3638 }
3639 var_listnode3 = var3;
3640 var_listnode1 = var_nodearraylist1;
3641 /* <var_listnode1:nullable Object> isa Array[Object] */
3642 cltype = type_array__Arraykernel__Object.color;
3643 idtype = type_array__Arraykernel__Object.id;
3644 if(var_listnode1 == NULL) {
3645 var4 = 0;
3646 } else {
3647 if(cltype >= var_listnode1->type->table_size) {
3648 var4 = 0;
3649 } else {
3650 var4 = var_listnode1->type->type_table[cltype] == idtype;
3651 }
3652 }
3653 if (unlikely(!var4)) {
3654 PRINT_ERROR("Runtime error: %s", "Assert failed");
3655 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 10060);
3656 show_backtrace(1);
3657 }
3658 var_tcommentnode2 = var_nodearraylist2;
3659 {
3660 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3661 }
3662 var_listnode3 = var5;
3663 var6 = NULL;
3664 if (var_tcommentnode2 == NULL) {
3665 var7 = 0; /* is null */
3666 } else {
3667 var7 = 1; /* arg is null and recv is not */
3668 }
3669 if (0) {
3670 var8 = ((short int (*)(val*, val*))(var_tcommentnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_tcommentnode2, var6) /* != on <var_tcommentnode2:nullable Object>*/;
3671 var7 = var8;
3672 }
3673 if (var7){
3674 {
3675 array__Array__add(var_listnode3, var_tcommentnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3676 }
3677 } else {
3678 }
3679 var_node_list = var_listnode3;
3680 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction827> */
3681 {
3682 var10 = parser_work__Parser__go_to(var_p, var9);
3683 }
3684 {
3685 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3686 }
3687 RET_LABEL:;
3688 }
3689 /* method parser#ReduceAction827#action for (self: Object, Parser) */
3690 void VIRTUAL_parser__ReduceAction827__action(val* self, val* p0) {
3691 parser__ReduceAction827__action(self, p0); /* Direct call parser#ReduceAction827#action on <self:Object(ReduceAction827)>*/
3692 RET_LABEL:;
3693 }
3694 /* method parser#ReduceAction828#action for (self: ReduceAction828, Parser) */
3695 void parser__ReduceAction828__action(val* self, val* p0) {
3696 val* var_p /* var p: Parser */;
3697 val* var /* : null */;
3698 val* var_node_list /* var node_list: nullable Object */;
3699 val* var1 /* : nullable Object */;
3700 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3701 val* var2 /* : Array[Object] */;
3702 val* var_listnode2 /* var listnode2: Array[Object] */;
3703 val* var_teolnode1 /* var teolnode1: nullable Object */;
3704 val* var3 /* : null */;
3705 short int var4 /* : Bool */;
3706 short int var5 /* : Bool */;
3707 long var6 /* : Int */;
3708 long var7 /* : Int */;
3709 var_p = p0;
3710 var = NULL;
3711 var_node_list = var;
3712 {
3713 var1 = parser_work__Parser__pop(var_p);
3714 }
3715 var_nodearraylist1 = var1;
3716 var2 = NEW_array__Array(&type_array__Arraykernel__Object);
3717 {
3718 array__Array__init(var2); /* Direct call array#Array#init on <var2:Array[Object]>*/
3719 }
3720 var_listnode2 = var2;
3721 var_teolnode1 = var_nodearraylist1;
3722 var3 = NULL;
3723 if (var_teolnode1 == NULL) {
3724 var4 = 0; /* is null */
3725 } else {
3726 var4 = 1; /* arg is null and recv is not */
3727 }
3728 if (0) {
3729 var5 = ((short int (*)(val*, val*))(var_teolnode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_teolnode1, var3) /* != on <var_teolnode1:nullable Object>*/;
3730 var4 = var5;
3731 }
3732 if (var4){
3733 {
3734 array__Array__add(var_listnode2, var_teolnode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
3735 }
3736 } else {
3737 }
3738 var_node_list = var_listnode2;
3739 var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction828> */
3740 {
3741 var7 = parser_work__Parser__go_to(var_p, var6);
3742 }
3743 {
3744 parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3745 }
3746 RET_LABEL:;
3747 }
3748 /* method parser#ReduceAction828#action for (self: Object, Parser) */
3749 void VIRTUAL_parser__ReduceAction828__action(val* self, val* p0) {
3750 parser__ReduceAction828__action(self, p0); /* Direct call parser#ReduceAction828#action on <self:Object(ReduceAction828)>*/
3751 RET_LABEL:;
3752 }
3753 /* method parser#ReduceAction829#action for (self: ReduceAction829, Parser) */
3754 void parser__ReduceAction829__action(val* self, val* p0) {
3755 val* var_p /* var p: Parser */;
3756 val* var /* : null */;
3757 val* var_node_list /* var node_list: nullable Object */;
3758 val* var1 /* : nullable Object */;
3759 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
3760 val* var2 /* : nullable Object */;
3761 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
3762 val* var3 /* : Array[Object] */;
3763 val* var_listnode3 /* var listnode3: Array[Object] */;
3764 val* var_listnode1 /* var listnode1: nullable Object */;
3765 short int var4 /* : Bool */;
3766 int cltype;
3767 int idtype;
3768 val* var_teolnode2 /* var teolnode2: nullable Object */;
3769 val* var5 /* : Array[Object] */;
3770 val* var6 /* : null */;
3771 short int var7 /* : Bool */;
3772 short int var8 /* : Bool */;
3773 long var9 /* : Int */;
3774 long var10 /* : Int */;
3775 var_p = p0;
3776 var = NULL;
3777 var_node_list = var;
3778 {
3779 var1 = parser_work__Parser__pop(var_p);
3780 }
3781 var_nodearraylist2 = var1;
3782 {
3783 var2 = parser_work__Parser__pop(var_p);
3784 }
3785 var_nodearraylist1 = var2;
3786 var3 = NEW_array__Array(&type_array__Arraykernel__Object);
3787 {
3788 array__Array__init(var3); /* Direct call array#Array#init on <var3:Array[Object]>*/
3789 }
3790 var_listnode3 = var3;
3791 var_listnode1 = var_nodearraylist1;
3792 /* <var_listnode1:nullable Object> isa Array[Object] */
3793 cltype = type_array__Arraykernel__Object.color;
3794 idtype = type_array__Arraykernel__Object.id;
3795 if(var_listnode1 == NULL) {
3796 var4 = 0;
3797 } else {
3798 if(cltype >= var_listnode1->type->table_size) {
3799 var4 = 0;
3800 } else {
3801 var4 = var_listnode1->type->type_table[cltype] == idtype;
3802 }
3803 }
3804 if (unlikely(!var4)) {
3805 PRINT_ERROR("Runtime error: %s", "Assert failed");
3806 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser.nit", 10094);
3807 show_backtrace(1);
3808 }
3809 var_teolnode2 = var_nodearraylist2;
3810 {
3811 var5 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode1);
3812 }
3813 var_listnode3 = var5;
3814 var6 = NULL;
3815 if (var_teolnode2 == NULL) {
3816 var7 = 0; /* is null */
3817 } else {
3818 var7 = 1; /* arg is null and recv is not */
3819 }
3820 if (0) {
3821 var8 = ((short int (*)(val*, val*))(var_teolnode2->class->vft[COLOR_kernel__Object___33d_61d]))(var_teolnode2, var6) /* != on <var_teolnode2:nullable Object>*/;
3822 var7 = var8;
3823 }
3824 if (var7){
3825 {
3826 array__Array__add(var_listnode3, var_teolnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
3827 }
3828 } else {
3829 }
3830 var_node_list = var_listnode3;
3831 var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction829> */
3832 {
3833 var10 = parser_work__Parser__go_to(var_p, var9);
3834 }
3835 {
3836 parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
3837 }
3838 RET_LABEL:;
3839 }
3840 /* method parser#ReduceAction829#action for (self: Object, Parser) */
3841 void VIRTUAL_parser__ReduceAction829__action(val* self, val* p0) {
3842 parser__ReduceAction829__action(self, p0); /* Direct call parser#ReduceAction829#action on <self:Object(ReduceAction829)>*/
3843 RET_LABEL:;
3844 }