Makefile: Document deeply-nested libraries.
[nit.git] / c_src / parser_work.sep.1.c
1 #include "parser_work.sep.0.h"
2 /* method parser_work#State#init for (self: State, Int, nullable Object) */
3 void parser_work__State__init(val* self, long p0, val* p1) {
4 long var_state /* var state: Int */;
5 val* var_nodes /* var nodes: nullable Object */;
6 var_state = p0;
7 var_nodes = p1;
8 self->attrs[COLOR_parser_work__State___state].l = var_state; /* _state on <self:State> */
9 self->attrs[COLOR_parser_work__State___nodes].val = var_nodes; /* _nodes on <self:State> */
10 RET_LABEL:;
11 }
12 /* method parser_work#State#init for (self: Object, Int, nullable Object) */
13 void VIRTUAL_parser_work__State__init(val* self, long p0, val* p1) {
14 parser_work__State__init(self, p0, p1); /* Direct call parser_work#State#init on <self:Object(State)>*/
15 RET_LABEL:;
16 }
17 /* method parser_work#Parser#init for (self: Parser, Lexer) */
18 void parser_work__Parser__init(val* self, val* p0) {
19 val* var_lexer /* var lexer: Lexer */;
20 val* var /* : Array[State] */;
21 long var1 /* : Int */;
22 long var2 /* : Int */;
23 long var4 /* : Int */;
24 var_lexer = p0;
25 self->attrs[COLOR_parser_work__Parser___lexer].val = var_lexer; /* _lexer on <self:Parser> */
26 var = NEW_array__Array(&type_array__Arrayparser_work__State);
27 {
28 array__Array__init(var); /* Direct call array#Array#init on <var:Array[State]>*/
29 }
30 self->attrs[COLOR_parser_work__Parser___stack].val = var; /* _stack on <self:Parser> */
31 var1 = 1;
32 {
33 { /* Inline kernel#Int#unary - (var1) on <var1:Int> */
34 var4 = -var1;
35 var2 = var4;
36 goto RET_LABEL3;
37 RET_LABEL3:(void)0;
38 }
39 }
40 self->attrs[COLOR_parser_work__Parser___stack_pos].l = var2; /* _stack_pos on <self:Parser> */
41 {
42 parser__Parser__build_reduce_table(self); /* Direct call parser#Parser#build_reduce_table on <self:Parser>*/
43 }
44 RET_LABEL:;
45 }
46 /* method parser_work#Parser#init for (self: Object, Lexer) */
47 void VIRTUAL_parser_work__Parser__init(val* self, val* p0) {
48 parser_work__Parser__init(self, p0); /* Direct call parser_work#Parser#init on <self:Object(Parser)>*/
49 RET_LABEL:;
50 }
51 /* method parser_work#Parser#go_to for (self: Parser, Int): Int */
52 long parser_work__Parser__go_to(val* self, long p0) {
53 long var /* : Int */;
54 long var_index /* var index: Int */;
55 long var1 /* : Int */;
56 long var_state /* var state: Int */;
57 long var2 /* : Int */;
58 long var_low /* var low: Int */;
59 long var3 /* : Int */;
60 long var4 /* : Int */;
61 long var6 /* : Int */;
62 long var7 /* : Int */;
63 long var8 /* : Int */;
64 short int var10 /* : Bool */;
65 int cltype;
66 int idtype;
67 const char* var_class_name;
68 long var11 /* : Int */;
69 long var_high /* var high: Int */;
70 short int var12 /* : Bool */;
71 short int var14 /* : Bool */;
72 int cltype15;
73 int idtype16;
74 const char* var_class_name17;
75 short int var18 /* : Bool */;
76 long var19 /* : Int */;
77 short int var21 /* : Bool */;
78 int cltype22;
79 int idtype23;
80 const char* var_class_name24;
81 long var25 /* : Int */;
82 long var26 /* : Int */;
83 long var27 /* : Int */;
84 short int var29 /* : Bool */;
85 int cltype30;
86 int idtype31;
87 const char* var_class_name32;
88 long var33 /* : Int */;
89 long var_middle /* var middle: Int */;
90 long var34 /* : Int */;
91 long var35 /* : Int */;
92 short int var37 /* : Bool */;
93 int cltype38;
94 int idtype39;
95 const char* var_class_name40;
96 long var41 /* : Int */;
97 long var42 /* : Int */;
98 long var43 /* : Int */;
99 short int var45 /* : Bool */;
100 int cltype46;
101 int idtype47;
102 const char* var_class_name48;
103 long var49 /* : Int */;
104 long var_subindex /* var subindex: Int */;
105 long var50 /* : Int */;
106 long var52 /* : Int */;
107 long var_goal /* var goal: Int */;
108 short int var53 /* : Bool */;
109 short int var55 /* : Bool */;
110 int cltype56;
111 int idtype57;
112 const char* var_class_name58;
113 short int var59 /* : Bool */;
114 long var60 /* : Int */;
115 long var61 /* : Int */;
116 short int var63 /* : Bool */;
117 int cltype64;
118 int idtype65;
119 const char* var_class_name66;
120 long var67 /* : Int */;
121 short int var68 /* : Bool */;
122 short int var70 /* : Bool */;
123 int cltype71;
124 int idtype72;
125 const char* var_class_name73;
126 short int var74 /* : Bool */;
127 long var75 /* : Int */;
128 long var76 /* : Int */;
129 short int var78 /* : Bool */;
130 int cltype79;
131 int idtype80;
132 const char* var_class_name81;
133 long var82 /* : Int */;
134 long var83 /* : Int */;
135 long var84 /* : Int */;
136 short int var86 /* : Bool */;
137 int cltype87;
138 int idtype88;
139 const char* var_class_name89;
140 long var90 /* : Int */;
141 long var91 /* : Int */;
142 long var93 /* : Int */;
143 long var94 /* : Int */;
144 long var95 /* : Int */;
145 long var97 /* : Int */;
146 var_index = p0;
147 {
148 var1 = parser_work__Parser__state(self);
149 }
150 var_state = var1;
151 var2 = 1;
152 var_low = var2;
153 var3 = 0;
154 {
155 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var3) on <self:Parser> */
156 var6 = parser_goto(self, var_index, var3);
157 var4 = var6;
158 goto RET_LABEL5;
159 RET_LABEL5:(void)0;
160 }
161 }
162 var7 = 1;
163 {
164 { /* Inline kernel#Int#- (var4,var7) on <var4:Int> */
165 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
166 /* <var7:Int> isa OTHER */
167 var10 = 1; /* easy <var7:Int> isa OTHER*/
168 if (unlikely(!var10)) {
169 var_class_name = type_kernel__Int.name;
170 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
171 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
172 show_backtrace(1);
173 }
174 var11 = var4 - var7;
175 var8 = var11;
176 goto RET_LABEL9;
177 RET_LABEL9:(void)0;
178 }
179 }
180 var_high = var8;
181 for(;;) {
182 {
183 { /* Inline kernel#Int#<= (var_low,var_high) on <var_low:Int> */
184 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
185 /* <var_high:Int> isa OTHER */
186 var14 = 1; /* easy <var_high:Int> isa OTHER*/
187 if (unlikely(!var14)) {
188 var_class_name17 = type_kernel__Int.name;
189 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
190 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
191 show_backtrace(1);
192 }
193 var18 = var_low <= var_high;
194 var12 = var18;
195 goto RET_LABEL13;
196 RET_LABEL13:(void)0;
197 }
198 }
199 if (!var12) break;
200 {
201 { /* Inline kernel#Int#+ (var_low,var_high) on <var_low:Int> */
202 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
203 /* <var_high:Int> isa OTHER */
204 var21 = 1; /* easy <var_high:Int> isa OTHER*/
205 if (unlikely(!var21)) {
206 var_class_name24 = type_kernel__Int.name;
207 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
208 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
209 show_backtrace(1);
210 }
211 var25 = var_low + var_high;
212 var19 = var25;
213 goto RET_LABEL20;
214 RET_LABEL20:(void)0;
215 }
216 }
217 var26 = 2;
218 {
219 { /* Inline kernel#Int#/ (var19,var26) on <var19:Int> */
220 /* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
221 /* <var26:Int> isa OTHER */
222 var29 = 1; /* easy <var26:Int> isa OTHER*/
223 if (unlikely(!var29)) {
224 var_class_name32 = type_kernel__Int.name;
225 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
226 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 333);
227 show_backtrace(1);
228 }
229 var33 = var19 / var26;
230 var27 = var33;
231 goto RET_LABEL28;
232 RET_LABEL28:(void)0;
233 }
234 }
235 var_middle = var27;
236 var34 = 2;
237 {
238 { /* Inline kernel#Int#* (var_middle,var34) on <var_middle:Int> */
239 /* Covariant cast for argument 0 (i) <var34:Int> isa OTHER */
240 /* <var34:Int> isa OTHER */
241 var37 = 1; /* easy <var34:Int> isa OTHER*/
242 if (unlikely(!var37)) {
243 var_class_name40 = type_kernel__Int.name;
244 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
245 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 332);
246 show_backtrace(1);
247 }
248 var41 = var_middle * var34;
249 var35 = var41;
250 goto RET_LABEL36;
251 RET_LABEL36:(void)0;
252 }
253 }
254 var42 = 1;
255 {
256 { /* Inline kernel#Int#+ (var35,var42) on <var35:Int> */
257 /* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
258 /* <var42:Int> isa OTHER */
259 var45 = 1; /* easy <var42:Int> isa OTHER*/
260 if (unlikely(!var45)) {
261 var_class_name48 = type_kernel__Int.name;
262 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
263 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
264 show_backtrace(1);
265 }
266 var49 = var35 + var42;
267 var43 = var49;
268 goto RET_LABEL44;
269 RET_LABEL44:(void)0;
270 }
271 }
272 var_subindex = var43;
273 {
274 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var_subindex) on <self:Parser> */
275 var52 = parser_goto(self, var_index, var_subindex);
276 var50 = var52;
277 goto RET_LABEL51;
278 RET_LABEL51:(void)0;
279 }
280 }
281 var_goal = var50;
282 {
283 { /* Inline kernel#Int#< (var_state,var_goal) on <var_state:Int> */
284 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
285 /* <var_goal:Int> isa OTHER */
286 var55 = 1; /* easy <var_goal:Int> isa OTHER*/
287 if (unlikely(!var55)) {
288 var_class_name58 = type_kernel__Int.name;
289 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
290 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
291 show_backtrace(1);
292 }
293 var59 = var_state < var_goal;
294 var53 = var59;
295 goto RET_LABEL54;
296 RET_LABEL54:(void)0;
297 }
298 }
299 if (var53){
300 var60 = 1;
301 {
302 { /* Inline kernel#Int#- (var_middle,var60) on <var_middle:Int> */
303 /* Covariant cast for argument 0 (i) <var60:Int> isa OTHER */
304 /* <var60:Int> isa OTHER */
305 var63 = 1; /* easy <var60:Int> isa OTHER*/
306 if (unlikely(!var63)) {
307 var_class_name66 = type_kernel__Int.name;
308 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
309 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
310 show_backtrace(1);
311 }
312 var67 = var_middle - var60;
313 var61 = var67;
314 goto RET_LABEL62;
315 RET_LABEL62:(void)0;
316 }
317 }
318 var_high = var61;
319 } else {
320 {
321 { /* Inline kernel#Int#> (var_state,var_goal) on <var_state:Int> */
322 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
323 /* <var_goal:Int> isa OTHER */
324 var70 = 1; /* easy <var_goal:Int> isa OTHER*/
325 if (unlikely(!var70)) {
326 var_class_name73 = type_kernel__Int.name;
327 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
328 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
329 show_backtrace(1);
330 }
331 var74 = var_state > var_goal;
332 var68 = var74;
333 goto RET_LABEL69;
334 RET_LABEL69:(void)0;
335 }
336 }
337 if (var68){
338 var75 = 1;
339 {
340 { /* Inline kernel#Int#+ (var_middle,var75) on <var_middle:Int> */
341 /* Covariant cast for argument 0 (i) <var75:Int> isa OTHER */
342 /* <var75:Int> isa OTHER */
343 var78 = 1; /* easy <var75:Int> isa OTHER*/
344 if (unlikely(!var78)) {
345 var_class_name81 = type_kernel__Int.name;
346 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name81);
347 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
348 show_backtrace(1);
349 }
350 var82 = var_middle + var75;
351 var76 = var82;
352 goto RET_LABEL77;
353 RET_LABEL77:(void)0;
354 }
355 }
356 var_low = var76;
357 } else {
358 var83 = 1;
359 {
360 { /* Inline kernel#Int#+ (var_subindex,var83) on <var_subindex:Int> */
361 /* Covariant cast for argument 0 (i) <var83:Int> isa OTHER */
362 /* <var83:Int> isa OTHER */
363 var86 = 1; /* easy <var83:Int> isa OTHER*/
364 if (unlikely(!var86)) {
365 var_class_name89 = type_kernel__Int.name;
366 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name89);
367 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
368 show_backtrace(1);
369 }
370 var90 = var_subindex + var83;
371 var84 = var90;
372 goto RET_LABEL85;
373 RET_LABEL85:(void)0;
374 }
375 }
376 {
377 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var84) on <self:Parser> */
378 var93 = parser_goto(self, var_index, var84);
379 var91 = var93;
380 goto RET_LABEL92;
381 RET_LABEL92:(void)0;
382 }
383 }
384 var = var91;
385 goto RET_LABEL;
386 }
387 }
388 CONTINUE_label: (void)0;
389 }
390 BREAK_label: (void)0;
391 var94 = 2;
392 {
393 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var94) on <self:Parser> */
394 var97 = parser_goto(self, var_index, var94);
395 var95 = var97;
396 goto RET_LABEL96;
397 RET_LABEL96:(void)0;
398 }
399 }
400 var = var95;
401 goto RET_LABEL;
402 RET_LABEL:;
403 return var;
404 }
405 /* method parser_work#Parser#go_to for (self: Object, Int): Int */
406 long VIRTUAL_parser_work__Parser__go_to(val* self, long p0) {
407 long var /* : Int */;
408 long var1 /* : Int */;
409 var1 = parser_work__Parser__go_to(self, p0);
410 var = var1;
411 RET_LABEL:;
412 return var;
413 }
414 /* method parser_work#Parser#push for (self: Parser, Int, nullable Object) */
415 void parser_work__Parser__push(val* self, long p0, val* p1) {
416 long var_numstate /* var numstate: Int */;
417 val* var_list_node /* var list_node: nullable Object */;
418 long var /* : Int */;
419 long var1 /* : Int */;
420 long var2 /* : Int */;
421 short int var4 /* : Bool */;
422 int cltype;
423 int idtype;
424 const char* var_class_name;
425 long var5 /* : Int */;
426 long var_pos /* var pos: Int */;
427 val* var6 /* : Array[State] */;
428 long var7 /* : Int */;
429 short int var8 /* : Bool */;
430 short int var10 /* : Bool */;
431 int cltype11;
432 int idtype12;
433 const char* var_class_name13;
434 short int var14 /* : Bool */;
435 val* var15 /* : Array[State] */;
436 val* var16 /* : nullable Object */;
437 val* var_state /* var state: State */;
438 val* var17 /* : Array[State] */;
439 val* var18 /* : State */;
440 var_numstate = p0;
441 var_list_node = p1;
442 var = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
443 var1 = 1;
444 {
445 { /* Inline kernel#Int#+ (var,var1) on <var:Int> */
446 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
447 /* <var1:Int> isa OTHER */
448 var4 = 1; /* easy <var1:Int> isa OTHER*/
449 if (unlikely(!var4)) {
450 var_class_name = type_kernel__Int.name;
451 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
452 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
453 show_backtrace(1);
454 }
455 var5 = var + var1;
456 var2 = var5;
457 goto RET_LABEL3;
458 RET_LABEL3:(void)0;
459 }
460 }
461 var_pos = var2;
462 self->attrs[COLOR_parser_work__Parser___stack_pos].l = var_pos; /* _stack_pos on <self:Parser> */
463 var6 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
464 if (unlikely(var6 == NULL)) {
465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
466 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 84);
467 show_backtrace(1);
468 }
469 {
470 var7 = array__AbstractArrayRead__length(var6);
471 }
472 {
473 { /* Inline kernel#Int#< (var_pos,var7) on <var_pos:Int> */
474 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
475 /* <var7:Int> isa OTHER */
476 var10 = 1; /* easy <var7:Int> isa OTHER*/
477 if (unlikely(!var10)) {
478 var_class_name13 = type_kernel__Int.name;
479 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
480 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
481 show_backtrace(1);
482 }
483 var14 = var_pos < var7;
484 var8 = var14;
485 goto RET_LABEL9;
486 RET_LABEL9:(void)0;
487 }
488 }
489 if (var8){
490 var15 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
491 if (unlikely(var15 == NULL)) {
492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
493 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 85);
494 show_backtrace(1);
495 }
496 {
497 var16 = array__Array___91d_93d(var15, var_pos);
498 }
499 var_state = var16;
500 var_state->attrs[COLOR_parser_work__State___state].l = var_numstate; /* _state on <var_state:State> */
501 var_state->attrs[COLOR_parser_work__State___nodes].val = var_list_node; /* _nodes on <var_state:State> */
502 } else {
503 var17 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
504 if (unlikely(var17 == NULL)) {
505 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
506 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 89);
507 show_backtrace(1);
508 }
509 var18 = NEW_parser_work__State(&type_parser_work__State);
510 {
511 parser_work__State__init(var18, var_numstate, var_list_node); /* Direct call parser_work#State#init on <var18:State>*/
512 }
513 {
514 array__AbstractArray__push(var17, var18); /* Direct call array#AbstractArray#push on <var17:Array[State]>*/
515 }
516 }
517 RET_LABEL:;
518 }
519 /* method parser_work#Parser#push for (self: Object, Int, nullable Object) */
520 void VIRTUAL_parser_work__Parser__push(val* self, long p0, val* p1) {
521 parser_work__Parser__push(self, p0, p1); /* Direct call parser_work#Parser#push on <self:Object(Parser)>*/
522 RET_LABEL:;
523 }
524 /* method parser_work#Parser#state for (self: Parser): Int */
525 long parser_work__Parser__state(val* self) {
526 long var /* : Int */;
527 val* var1 /* : Array[State] */;
528 long var2 /* : Int */;
529 val* var3 /* : nullable Object */;
530 long var4 /* : Int */;
531 var1 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
532 if (unlikely(var1 == NULL)) {
533 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
534 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 96);
535 show_backtrace(1);
536 }
537 var2 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
538 {
539 var3 = array__Array___91d_93d(var1, var2);
540 }
541 var4 = var3->attrs[COLOR_parser_work__State___state].l; /* _state on <var3:nullable Object(State)> */
542 var = var4;
543 goto RET_LABEL;
544 RET_LABEL:;
545 return var;
546 }
547 /* method parser_work#Parser#state for (self: Object): Int */
548 long VIRTUAL_parser_work__Parser__state(val* self) {
549 long var /* : Int */;
550 long var1 /* : Int */;
551 var1 = parser_work__Parser__state(self);
552 var = var1;
553 RET_LABEL:;
554 return var;
555 }
556 /* method parser_work#Parser#pop for (self: Parser): nullable Object */
557 val* parser_work__Parser__pop(val* self) {
558 val* var /* : nullable Object */;
559 val* var1 /* : Array[State] */;
560 long var2 /* : Int */;
561 val* var3 /* : nullable Object */;
562 val* var4 /* : nullable Object */;
563 val* var_res /* var res: nullable Object */;
564 long var5 /* : Int */;
565 long var6 /* : Int */;
566 long var7 /* : Int */;
567 short int var9 /* : Bool */;
568 int cltype;
569 int idtype;
570 const char* var_class_name;
571 long var10 /* : Int */;
572 var1 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
573 if (unlikely(var1 == NULL)) {
574 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
575 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 102);
576 show_backtrace(1);
577 }
578 var2 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
579 {
580 var3 = array__Array___91d_93d(var1, var2);
581 }
582 var4 = var3->attrs[COLOR_parser_work__State___nodes].val; /* _nodes on <var3:nullable Object(State)> */
583 var_res = var4;
584 var5 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
585 var6 = 1;
586 {
587 { /* Inline kernel#Int#- (var5,var6) on <var5:Int> */
588 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
589 /* <var6:Int> isa OTHER */
590 var9 = 1; /* easy <var6:Int> isa OTHER*/
591 if (unlikely(!var9)) {
592 var_class_name = type_kernel__Int.name;
593 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
594 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
595 show_backtrace(1);
596 }
597 var10 = var5 - var6;
598 var7 = var10;
599 goto RET_LABEL8;
600 RET_LABEL8:(void)0;
601 }
602 }
603 self->attrs[COLOR_parser_work__Parser___stack_pos].l = var7; /* _stack_pos on <self:Parser> */
604 var = var_res;
605 goto RET_LABEL;
606 RET_LABEL:;
607 return var;
608 }
609 /* method parser_work#Parser#pop for (self: Object): nullable Object */
610 val* VIRTUAL_parser_work__Parser__pop(val* self) {
611 val* var /* : nullable Object */;
612 val* var1 /* : nullable Object */;
613 var1 = parser_work__Parser__pop(self);
614 var = var1;
615 RET_LABEL:;
616 return var;
617 }
618 /* method parser_work#Parser#parse for (self: Parser): Start */
619 val* parser_work__Parser__parse(val* self) {
620 val* var /* : Start */;
621 long var1 /* : Int */;
622 val* var2 /* : null */;
623 val* var3 /* : Lexer */;
624 val* var_lexer /* var lexer: Lexer */;
625 val* var4 /* : Token */;
626 val* var_token /* var token: Token */;
627 short int var5 /* : Bool */;
628 int cltype;
629 int idtype;
630 val* var6 /* : Start */;
631 val* var7 /* : null */;
632 long var8 /* : Int */;
633 long var_state /* var state: Int */;
634 long var9 /* : Int */;
635 long var_index /* var index: Int */;
636 long var10 /* : Int */;
637 long var11 /* : Int */;
638 long var13 /* : Int */;
639 long var_action_type /* var action_type: Int */;
640 long var14 /* : Int */;
641 long var15 /* : Int */;
642 long var17 /* : Int */;
643 long var_action_value /* var action_value: Int */;
644 long var18 /* : Int */;
645 long var_low /* var low: Int */;
646 long var19 /* : Int */;
647 long var20 /* : Int */;
648 long var22 /* : Int */;
649 long var23 /* : Int */;
650 long var24 /* : Int */;
651 short int var26 /* : Bool */;
652 int cltype27;
653 int idtype28;
654 const char* var_class_name;
655 long var29 /* : Int */;
656 long var_high /* var high: Int */;
657 short int var30 /* : Bool */;
658 short int var32 /* : Bool */;
659 int cltype33;
660 int idtype34;
661 const char* var_class_name35;
662 short int var36 /* : Bool */;
663 long var37 /* : Int */;
664 short int var39 /* : Bool */;
665 int cltype40;
666 int idtype41;
667 const char* var_class_name42;
668 long var43 /* : Int */;
669 long var44 /* : Int */;
670 long var45 /* : Int */;
671 short int var47 /* : Bool */;
672 int cltype48;
673 int idtype49;
674 const char* var_class_name50;
675 long var51 /* : Int */;
676 long var_middle /* var middle: Int */;
677 long var52 /* : Int */;
678 long var53 /* : Int */;
679 short int var55 /* : Bool */;
680 int cltype56;
681 int idtype57;
682 const char* var_class_name58;
683 long var59 /* : Int */;
684 long var60 /* : Int */;
685 long var61 /* : Int */;
686 short int var63 /* : Bool */;
687 int cltype64;
688 int idtype65;
689 const char* var_class_name66;
690 long var67 /* : Int */;
691 long var_subindex /* var subindex: Int */;
692 long var68 /* : Int */;
693 long var70 /* : Int */;
694 long var_goal /* var goal: Int */;
695 short int var71 /* : Bool */;
696 short int var73 /* : Bool */;
697 int cltype74;
698 int idtype75;
699 const char* var_class_name76;
700 short int var77 /* : Bool */;
701 long var78 /* : Int */;
702 long var79 /* : Int */;
703 short int var81 /* : Bool */;
704 int cltype82;
705 int idtype83;
706 const char* var_class_name84;
707 long var85 /* : Int */;
708 short int var86 /* : Bool */;
709 short int var88 /* : Bool */;
710 int cltype89;
711 int idtype90;
712 const char* var_class_name91;
713 short int var92 /* : Bool */;
714 long var93 /* : Int */;
715 long var94 /* : Int */;
716 short int var96 /* : Bool */;
717 int cltype97;
718 int idtype98;
719 const char* var_class_name99;
720 long var100 /* : Int */;
721 long var101 /* : Int */;
722 long var102 /* : Int */;
723 short int var104 /* : Bool */;
724 int cltype105;
725 int idtype106;
726 const char* var_class_name107;
727 long var108 /* : Int */;
728 long var109 /* : Int */;
729 long var111 /* : Int */;
730 long var112 /* : Int */;
731 long var113 /* : Int */;
732 short int var115 /* : Bool */;
733 int cltype116;
734 int idtype117;
735 const char* var_class_name118;
736 long var119 /* : Int */;
737 long var120 /* : Int */;
738 long var122 /* : Int */;
739 long var123 /* : Int */;
740 short int var124 /* : Bool */;
741 short int var125 /* : Bool */;
742 short int var127 /* : Bool */;
743 val* var128 /* : Token */;
744 long var129 /* : Int */;
745 short int var130 /* : Bool */;
746 short int var131 /* : Bool */;
747 short int var133 /* : Bool */;
748 val* var134 /* : Array[ReduceAction] */;
749 val* var135 /* : nullable Object */;
750 long var136 /* : Int */;
751 short int var137 /* : Bool */;
752 short int var138 /* : Bool */;
753 short int var140 /* : Bool */;
754 val* var141 /* : Token */;
755 val* var_node2 /* var node2: Token */;
756 short int var142 /* : Bool */;
757 int cltype143;
758 int idtype144;
759 val* var145 /* : nullable Object */;
760 val* var_node1 /* var node1: nullable Object */;
761 short int var146 /* : Bool */;
762 int cltype147;
763 int idtype148;
764 val* var149 /* : Start */;
765 val* var_node /* var node: Start */;
766 val* var150 /* : ComputeProdLocationVisitor */;
767 long var151 /* : Int */;
768 short int var152 /* : Bool */;
769 short int var153 /* : Bool */;
770 short int var155 /* : Bool */;
771 val* var156 /* : nullable Location */;
772 val* var157 /* : null */;
773 short int var158 /* : Bool */;
774 short int var159 /* : Bool */;
775 val* var160 /* : Token */;
776 val* var162 /* : AParserError */;
777 static val* varonce;
778 val* var163 /* : String */;
779 char* var164 /* : NativeString */;
780 long var165 /* : Int */;
781 val* var166 /* : FlatString */;
782 static val* varonce167;
783 val* var168 /* : String */;
784 char* var169 /* : NativeString */;
785 long var170 /* : Int */;
786 val* var171 /* : FlatString */;
787 val* var172 /* : Array[Object] */;
788 long var173 /* : Int */;
789 val* var174 /* : NativeArray[Object] */;
790 val* var175 /* : String */;
791 val* var176 /* : Location */;
792 val* var_node2177 /* var node2: AParserError */;
793 val* var178 /* : Start */;
794 val* var179 /* : null */;
795 val* var_node180 /* var node: Start */;
796 var1 = 0;
797 var2 = NULL;
798 {
799 parser_work__Parser__push(self, var1, var2); /* Direct call parser_work#Parser#push on <self:Parser>*/
800 }
801 var3 = self->attrs[COLOR_parser_work__Parser___lexer].val; /* _lexer on <self:Parser> */
802 if (unlikely(var3 == NULL)) {
803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lexer");
804 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 112);
805 show_backtrace(1);
806 }
807 var_lexer = var3;
808 for(;;) {
809 {
810 var4 = lexer_work__Lexer__peek(var_lexer);
811 }
812 var_token = var4;
813 /* <var_token:Token> isa AError */
814 cltype = type_parser_nodes__AError.color;
815 idtype = type_parser_nodes__AError.id;
816 if(cltype >= var_token->type->table_size) {
817 var5 = 0;
818 } else {
819 var5 = var_token->type->type_table[cltype] == idtype;
820 }
821 if (var5){
822 var6 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
823 var7 = NULL;
824 {
825 parser_nodes__Start__init(var6, var7, var_token); /* Direct call parser_nodes#Start#init on <var6:Start>*/
826 }
827 var = var6;
828 goto RET_LABEL;
829 } else {
830 }
831 {
832 var8 = parser_work__Parser__state(self);
833 }
834 var_state = var8;
835 {
836 var9 = ((long (*)(val*))(var_token->class->vft[COLOR_lexer_work__Token__parser_index]))(var_token) /* parser_index on <var_token:Token>*/;
837 }
838 var_index = var9;
839 var10 = 2;
840 {
841 { /* Inline tables#TablesCapable#parser_action (self,var_state,var10) on <self:Parser> */
842 var13 = parser_action(self, var_state, var10);
843 var11 = var13;
844 goto RET_LABEL12;
845 RET_LABEL12:(void)0;
846 }
847 }
848 var_action_type = var11;
849 var14 = 3;
850 {
851 { /* Inline tables#TablesCapable#parser_action (self,var_state,var14) on <self:Parser> */
852 var17 = parser_action(self, var_state, var14);
853 var15 = var17;
854 goto RET_LABEL16;
855 RET_LABEL16:(void)0;
856 }
857 }
858 var_action_value = var15;
859 var18 = 1;
860 var_low = var18;
861 var19 = 0;
862 {
863 { /* Inline tables#TablesCapable#parser_action (self,var_state,var19) on <self:Parser> */
864 var22 = parser_action(self, var_state, var19);
865 var20 = var22;
866 goto RET_LABEL21;
867 RET_LABEL21:(void)0;
868 }
869 }
870 var23 = 1;
871 {
872 { /* Inline kernel#Int#- (var20,var23) on <var20:Int> */
873 /* Covariant cast for argument 0 (i) <var23:Int> isa OTHER */
874 /* <var23:Int> isa OTHER */
875 var26 = 1; /* easy <var23:Int> isa OTHER*/
876 if (unlikely(!var26)) {
877 var_class_name = type_kernel__Int.name;
878 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
879 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
880 show_backtrace(1);
881 }
882 var29 = var20 - var23;
883 var24 = var29;
884 goto RET_LABEL25;
885 RET_LABEL25:(void)0;
886 }
887 }
888 var_high = var24;
889 for(;;) {
890 {
891 { /* Inline kernel#Int#<= (var_low,var_high) on <var_low:Int> */
892 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
893 /* <var_high:Int> isa OTHER */
894 var32 = 1; /* easy <var_high:Int> isa OTHER*/
895 if (unlikely(!var32)) {
896 var_class_name35 = type_kernel__Int.name;
897 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
898 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
899 show_backtrace(1);
900 }
901 var36 = var_low <= var_high;
902 var30 = var36;
903 goto RET_LABEL31;
904 RET_LABEL31:(void)0;
905 }
906 }
907 if (!var30) break;
908 {
909 { /* Inline kernel#Int#+ (var_low,var_high) on <var_low:Int> */
910 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
911 /* <var_high:Int> isa OTHER */
912 var39 = 1; /* easy <var_high:Int> isa OTHER*/
913 if (unlikely(!var39)) {
914 var_class_name42 = type_kernel__Int.name;
915 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
916 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
917 show_backtrace(1);
918 }
919 var43 = var_low + var_high;
920 var37 = var43;
921 goto RET_LABEL38;
922 RET_LABEL38:(void)0;
923 }
924 }
925 var44 = 2;
926 {
927 { /* Inline kernel#Int#/ (var37,var44) on <var37:Int> */
928 /* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
929 /* <var44:Int> isa OTHER */
930 var47 = 1; /* easy <var44:Int> isa OTHER*/
931 if (unlikely(!var47)) {
932 var_class_name50 = type_kernel__Int.name;
933 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name50);
934 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 333);
935 show_backtrace(1);
936 }
937 var51 = var37 / var44;
938 var45 = var51;
939 goto RET_LABEL46;
940 RET_LABEL46:(void)0;
941 }
942 }
943 var_middle = var45;
944 var52 = 3;
945 {
946 { /* Inline kernel#Int#* (var_middle,var52) on <var_middle:Int> */
947 /* Covariant cast for argument 0 (i) <var52:Int> isa OTHER */
948 /* <var52:Int> isa OTHER */
949 var55 = 1; /* easy <var52:Int> isa OTHER*/
950 if (unlikely(!var55)) {
951 var_class_name58 = type_kernel__Int.name;
952 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
953 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 332);
954 show_backtrace(1);
955 }
956 var59 = var_middle * var52;
957 var53 = var59;
958 goto RET_LABEL54;
959 RET_LABEL54:(void)0;
960 }
961 }
962 var60 = 1;
963 {
964 { /* Inline kernel#Int#+ (var53,var60) on <var53:Int> */
965 /* Covariant cast for argument 0 (i) <var60:Int> isa OTHER */
966 /* <var60:Int> isa OTHER */
967 var63 = 1; /* easy <var60:Int> isa OTHER*/
968 if (unlikely(!var63)) {
969 var_class_name66 = type_kernel__Int.name;
970 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
971 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
972 show_backtrace(1);
973 }
974 var67 = var53 + var60;
975 var61 = var67;
976 goto RET_LABEL62;
977 RET_LABEL62:(void)0;
978 }
979 }
980 var_subindex = var61;
981 {
982 { /* Inline tables#TablesCapable#parser_action (self,var_state,var_subindex) on <self:Parser> */
983 var70 = parser_action(self, var_state, var_subindex);
984 var68 = var70;
985 goto RET_LABEL69;
986 RET_LABEL69:(void)0;
987 }
988 }
989 var_goal = var68;
990 {
991 { /* Inline kernel#Int#< (var_index,var_goal) on <var_index:Int> */
992 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
993 /* <var_goal:Int> isa OTHER */
994 var73 = 1; /* easy <var_goal:Int> isa OTHER*/
995 if (unlikely(!var73)) {
996 var_class_name76 = type_kernel__Int.name;
997 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
998 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 325);
999 show_backtrace(1);
1000 }
1001 var77 = var_index < var_goal;
1002 var71 = var77;
1003 goto RET_LABEL72;
1004 RET_LABEL72:(void)0;
1005 }
1006 }
1007 if (var71){
1008 var78 = 1;
1009 {
1010 { /* Inline kernel#Int#- (var_middle,var78) on <var_middle:Int> */
1011 /* Covariant cast for argument 0 (i) <var78:Int> isa OTHER */
1012 /* <var78:Int> isa OTHER */
1013 var81 = 1; /* easy <var78:Int> isa OTHER*/
1014 if (unlikely(!var81)) {
1015 var_class_name84 = type_kernel__Int.name;
1016 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
1017 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
1018 show_backtrace(1);
1019 }
1020 var85 = var_middle - var78;
1021 var79 = var85;
1022 goto RET_LABEL80;
1023 RET_LABEL80:(void)0;
1024 }
1025 }
1026 var_high = var79;
1027 } else {
1028 {
1029 { /* Inline kernel#Int#> (var_index,var_goal) on <var_index:Int> */
1030 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
1031 /* <var_goal:Int> isa OTHER */
1032 var88 = 1; /* easy <var_goal:Int> isa OTHER*/
1033 if (unlikely(!var88)) {
1034 var_class_name91 = type_kernel__Int.name;
1035 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
1036 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 327);
1037 show_backtrace(1);
1038 }
1039 var92 = var_index > var_goal;
1040 var86 = var92;
1041 goto RET_LABEL87;
1042 RET_LABEL87:(void)0;
1043 }
1044 }
1045 if (var86){
1046 var93 = 1;
1047 {
1048 { /* Inline kernel#Int#+ (var_middle,var93) on <var_middle:Int> */
1049 /* Covariant cast for argument 0 (i) <var93:Int> isa OTHER */
1050 /* <var93:Int> isa OTHER */
1051 var96 = 1; /* easy <var93:Int> isa OTHER*/
1052 if (unlikely(!var96)) {
1053 var_class_name99 = type_kernel__Int.name;
1054 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name99);
1055 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1056 show_backtrace(1);
1057 }
1058 var100 = var_middle + var93;
1059 var94 = var100;
1060 goto RET_LABEL95;
1061 RET_LABEL95:(void)0;
1062 }
1063 }
1064 var_low = var94;
1065 } else {
1066 var101 = 1;
1067 {
1068 { /* Inline kernel#Int#+ (var_subindex,var101) on <var_subindex:Int> */
1069 /* Covariant cast for argument 0 (i) <var101:Int> isa OTHER */
1070 /* <var101:Int> isa OTHER */
1071 var104 = 1; /* easy <var101:Int> isa OTHER*/
1072 if (unlikely(!var104)) {
1073 var_class_name107 = type_kernel__Int.name;
1074 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name107);
1075 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1076 show_backtrace(1);
1077 }
1078 var108 = var_subindex + var101;
1079 var102 = var108;
1080 goto RET_LABEL103;
1081 RET_LABEL103:(void)0;
1082 }
1083 }
1084 {
1085 { /* Inline tables#TablesCapable#parser_action (self,var_state,var102) on <self:Parser> */
1086 var111 = parser_action(self, var_state, var102);
1087 var109 = var111;
1088 goto RET_LABEL110;
1089 RET_LABEL110:(void)0;
1090 }
1091 }
1092 var_action_type = var109;
1093 var112 = 2;
1094 {
1095 { /* Inline kernel#Int#+ (var_subindex,var112) on <var_subindex:Int> */
1096 /* Covariant cast for argument 0 (i) <var112:Int> isa OTHER */
1097 /* <var112:Int> isa OTHER */
1098 var115 = 1; /* easy <var112:Int> isa OTHER*/
1099 if (unlikely(!var115)) {
1100 var_class_name118 = type_kernel__Int.name;
1101 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name118);
1102 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
1103 show_backtrace(1);
1104 }
1105 var119 = var_subindex + var112;
1106 var113 = var119;
1107 goto RET_LABEL114;
1108 RET_LABEL114:(void)0;
1109 }
1110 }
1111 {
1112 { /* Inline tables#TablesCapable#parser_action (self,var_state,var113) on <self:Parser> */
1113 var122 = parser_action(self, var_state, var113);
1114 var120 = var122;
1115 goto RET_LABEL121;
1116 RET_LABEL121:(void)0;
1117 }
1118 }
1119 var_action_value = var120;
1120 goto BREAK_label;
1121 }
1122 }
1123 CONTINUE_label: (void)0;
1124 }
1125 BREAK_label: (void)0;
1126 var123 = 0;
1127 {
1128 { /* Inline kernel#Int#== (var_action_type,var123) on <var_action_type:Int> */
1129 var127 = var_action_type == var123;
1130 var125 = var127;
1131 goto RET_LABEL126;
1132 RET_LABEL126:(void)0;
1133 }
1134 var124 = var125;
1135 }
1136 if (var124){
1137 {
1138 var128 = lexer_work__Lexer__next(var_lexer);
1139 }
1140 {
1141 parser_work__Parser__push(self, var_action_value, var128); /* Direct call parser_work#Parser#push on <self:Parser>*/
1142 }
1143 } else {
1144 var129 = 1;
1145 {
1146 { /* Inline kernel#Int#== (var_action_type,var129) on <var_action_type:Int> */
1147 var133 = var_action_type == var129;
1148 var131 = var133;
1149 goto RET_LABEL132;
1150 RET_LABEL132:(void)0;
1151 }
1152 var130 = var131;
1153 }
1154 if (var130){
1155 var134 = self->attrs[COLOR_parser_work__Parser___reduce_table].val; /* _reduce_table on <self:Parser> */
1156 if (unlikely(var134 == NULL)) {
1157 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _reduce_table");
1158 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 146);
1159 show_backtrace(1);
1160 }
1161 {
1162 var135 = array__Array___91d_93d(var134, var_action_value);
1163 }
1164 {
1165 ((void (*)(val*, val*))(var135->class->vft[COLOR_parser_work__ReduceAction__action]))(var135, self) /* action on <var135:nullable Object(ReduceAction)>*/;
1166 }
1167 } else {
1168 var136 = 2;
1169 {
1170 { /* Inline kernel#Int#== (var_action_type,var136) on <var_action_type:Int> */
1171 var140 = var_action_type == var136;
1172 var138 = var140;
1173 goto RET_LABEL139;
1174 RET_LABEL139:(void)0;
1175 }
1176 var137 = var138;
1177 }
1178 if (var137){
1179 {
1180 var141 = lexer_work__Lexer__next(var_lexer);
1181 }
1182 var_node2 = var141;
1183 /* <var_node2:Token> isa EOF */
1184 cltype143 = type_parser_nodes__EOF.color;
1185 idtype144 = type_parser_nodes__EOF.id;
1186 if(cltype143 >= var_node2->type->table_size) {
1187 var142 = 0;
1188 } else {
1189 var142 = var_node2->type->type_table[cltype143] == idtype144;
1190 }
1191 if (unlikely(!var142)) {
1192 PRINT_ERROR("Runtime error: %s", "Assert failed");
1193 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 149);
1194 show_backtrace(1);
1195 }
1196 {
1197 var145 = parser_work__Parser__pop(self);
1198 }
1199 var_node1 = var145;
1200 /* <var_node1:nullable Object> isa AModule */
1201 cltype147 = type_parser_nodes__AModule.color;
1202 idtype148 = type_parser_nodes__AModule.id;
1203 if(var_node1 == NULL) {
1204 var146 = 0;
1205 } else {
1206 if(cltype147 >= var_node1->type->table_size) {
1207 var146 = 0;
1208 } else {
1209 var146 = var_node1->type->type_table[cltype147] == idtype148;
1210 }
1211 }
1212 if (unlikely(!var146)) {
1213 PRINT_ERROR("Runtime error: %s", "Assert failed");
1214 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 151);
1215 show_backtrace(1);
1216 }
1217 var149 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
1218 {
1219 parser_nodes__Start__init(var149, var_node1, var_node2); /* Direct call parser_nodes#Start#init on <var149:Start>*/
1220 }
1221 var_node = var149;
1222 var150 = NEW_parser_work__ComputeProdLocationVisitor(&type_parser_work__ComputeProdLocationVisitor);
1223 {
1224 parser_work__ComputeProdLocationVisitor__init(var150); /* Direct call parser_work#ComputeProdLocationVisitor#init on <var150:ComputeProdLocationVisitor>*/
1225 }
1226 {
1227 parser_nodes__Visitor__enter_visit(var150, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <var150:ComputeProdLocationVisitor>*/
1228 }
1229 var = var_node;
1230 goto RET_LABEL;
1231 } else {
1232 var151 = 3;
1233 {
1234 { /* Inline kernel#Int#== (var_action_type,var151) on <var_action_type:Int> */
1235 var155 = var_action_type == var151;
1236 var153 = var155;
1237 goto RET_LABEL154;
1238 RET_LABEL154:(void)0;
1239 }
1240 var152 = var153;
1241 }
1242 if (var152){
1243 for(;;) {
1244 var156 = var_token->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_token:Token> */
1245 var157 = NULL;
1246 if (var156 == NULL) {
1247 var158 = 1; /* is null */
1248 } else {
1249 var158 = 0; /* arg is null but recv is not */
1250 }
1251 if (0) {
1252 var159 = location__Location___61d_61d(var156, var157);
1253 var158 = var159;
1254 }
1255 if (!var158) break;
1256 {
1257 var160 = lexer_work__Lexer__next(var_lexer);
1258 }
1259 var_token = var160;
1260 CONTINUE_label161: (void)0;
1261 }
1262 BREAK_label161: (void)0;
1263 var162 = NEW_parser_nodes__AParserError(&type_parser_nodes__AParserError);
1264 if (varonce) {
1265 var163 = varonce;
1266 } else {
1267 var164 = "Syntax error: unexpected ";
1268 var165 = 25;
1269 var166 = string__NativeString__to_s_with_length(var164, var165);
1270 var163 = var166;
1271 varonce = var163;
1272 }
1273 if (varonce167) {
1274 var168 = varonce167;
1275 } else {
1276 var169 = ".";
1277 var170 = 1;
1278 var171 = string__NativeString__to_s_with_length(var169, var170);
1279 var168 = var171;
1280 varonce167 = var168;
1281 }
1282 var172 = NEW_array__Array(&type_array__Arraykernel__Object);
1283 { /* var172 = array_instance Array[Object] */
1284 var173 = 3;
1285 var174 = NEW_array__NativeArray(var173, &type_array__NativeArraykernel__Object);
1286 ((struct instance_array__NativeArray*)var174)->values[0] = (val*) var163;
1287 ((struct instance_array__NativeArray*)var174)->values[1] = (val*) var_token;
1288 ((struct instance_array__NativeArray*)var174)->values[2] = (val*) var168;
1289 {
1290 ((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[Object]>*/;
1291 }
1292 }
1293 {
1294 var175 = ((val* (*)(val*))(var172->class->vft[COLOR_string__Object__to_s]))(var172) /* to_s on <var172:Array[Object]>*/;
1295 }
1296 {
1297 var176 = parser_nodes__ANode__location(var_token);
1298 }
1299 {
1300 lexer_work__AParserError__init_parser_error(var162, var175, var176, var_token); /* Direct call lexer_work#AParserError#init_parser_error on <var162:AParserError>*/
1301 }
1302 var_node2177 = var162;
1303 var178 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
1304 var179 = NULL;
1305 {
1306 parser_nodes__Start__init(var178, var179, var_node2177); /* Direct call parser_nodes#Start#init on <var178:Start>*/
1307 }
1308 var_node180 = var178;
1309 var = var_node180;
1310 goto RET_LABEL;
1311 } else {
1312 }
1313 }
1314 }
1315 }
1316 CONTINUE_label181: (void)0;
1317 }
1318 BREAK_label181: (void)0;
1319 RET_LABEL:;
1320 return var;
1321 }
1322 /* method parser_work#Parser#parse for (self: Object): Start */
1323 val* VIRTUAL_parser_work__Parser__parse(val* self) {
1324 val* var /* : Start */;
1325 val* var1 /* : Start */;
1326 var1 = parser_work__Parser__parse(self);
1327 var = var1;
1328 RET_LABEL:;
1329 return var;
1330 }
1331 /* method parser_work#ComputeProdLocationVisitor#visit for (self: ComputeProdLocationVisitor, ANode) */
1332 void parser_work__ComputeProdLocationVisitor__visit(val* self, val* p0) {
1333 val* var_n /* var n: ANode */;
1334 short int var /* : Bool */;
1335 int cltype;
1336 int idtype;
1337 val* var1 /* : nullable Location */;
1338 val* var_loc /* var loc: nullable Location */;
1339 val* var2 /* : null */;
1340 short int var3 /* : Bool */;
1341 short int var4 /* : Bool */;
1342 val* var5 /* : Array[Prod] */;
1343 short int var6 /* : Bool */;
1344 short int var7 /* : Bool */;
1345 val* var8 /* : Array[Prod] */;
1346 val* var9 /* : ArrayIterator[nullable Object] */;
1347 short int var10 /* : Bool */;
1348 val* var11 /* : nullable Object */;
1349 val* var_no /* var no: Prod */;
1350 val* var12 /* : Array[Prod] */;
1351 val* var13 /* : Array[Prod] */;
1352 short int var14 /* : Bool */;
1353 short int var15 /* : Bool */;
1354 val* var16 /* : Location */;
1355 val* var17 /* : nullable SourceFile */;
1356 val* var19 /* : nullable SourceFile */;
1357 long var20 /* : Int */;
1358 long var22 /* : Int */;
1359 long var23 /* : Int */;
1360 long var25 /* : Int */;
1361 long var26 /* : Int */;
1362 long var28 /* : Int */;
1363 long var29 /* : Int */;
1364 long var31 /* : Int */;
1365 val* var_loco /* var loco: Location */;
1366 val* var32 /* : Array[Prod] */;
1367 val* var33 /* : ArrayIterator[nullable Object] */;
1368 short int var34 /* : Bool */;
1369 val* var35 /* : nullable Object */;
1370 val* var_no36 /* var no: Prod */;
1371 val* var38 /* : Array[Prod] */;
1372 short int var39 /* : Bool */;
1373 int cltype40;
1374 int idtype41;
1375 val* var42 /* : Array[Prod] */;
1376 val* var43 /* : nullable Location */;
1377 val* var_startl /* var startl: nullable Location */;
1378 val* var44 /* : null */;
1379 short int var45 /* : Bool */;
1380 short int var46 /* : Bool */;
1381 val* var_other /* var other: nullable Object */;
1382 short int var48 /* : Bool */;
1383 short int var49 /* : Bool */;
1384 short int var50 /* : Bool */;
1385 val* var51 /* : nullable Location */;
1386 val* var_endl /* var endl: nullable Location */;
1387 val* var52 /* : null */;
1388 short int var53 /* : Bool */;
1389 short int var54 /* : Bool */;
1390 short int var56 /* : Bool */;
1391 short int var57 /* : Bool */;
1392 short int var58 /* : Bool */;
1393 val* var59 /* : Location */;
1394 val* var60 /* : nullable SourceFile */;
1395 val* var62 /* : nullable SourceFile */;
1396 long var63 /* : Int */;
1397 long var65 /* : Int */;
1398 long var66 /* : Int */;
1399 long var68 /* : Int */;
1400 long var69 /* : Int */;
1401 long var71 /* : Int */;
1402 long var72 /* : Int */;
1403 long var74 /* : Int */;
1404 val* var75 /* : Array[Prod] */;
1405 short int var76 /* : Bool */;
1406 short int var77 /* : Bool */;
1407 val* var78 /* : Location */;
1408 val* var79 /* : nullable SourceFile */;
1409 val* var81 /* : nullable SourceFile */;
1410 long var82 /* : Int */;
1411 long var84 /* : Int */;
1412 long var85 /* : Int */;
1413 long var87 /* : Int */;
1414 long var88 /* : Int */;
1415 long var90 /* : Int */;
1416 long var91 /* : Int */;
1417 long var93 /* : Int */;
1418 val* var_loc94 /* var loc: Location */;
1419 val* var95 /* : Array[Prod] */;
1420 val* var96 /* : ArrayIterator[nullable Object] */;
1421 short int var97 /* : Bool */;
1422 val* var98 /* : nullable Object */;
1423 val* var_no99 /* var no: Prod */;
1424 val* var101 /* : Array[Prod] */;
1425 val* var102 /* : Array[Prod] */;
1426 var_n = p0;
1427 /* <var_n:ANode> isa Token */
1428 cltype = type_parser_nodes__Token.color;
1429 idtype = type_parser_nodes__Token.id;
1430 if(cltype >= var_n->type->table_size) {
1431 var = 0;
1432 } else {
1433 var = var_n->type->type_table[cltype] == idtype;
1434 }
1435 if (var){
1436 var1 = var_n->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_n:ANode(Token)> */
1437 var_loc = var1;
1438 var2 = NULL;
1439 if (var_loc == NULL) {
1440 var3 = 1; /* is null */
1441 } else {
1442 var3 = 0; /* arg is null but recv is not */
1443 }
1444 if (0) {
1445 var4 = location__Location___61d_61d(var_loc, var2);
1446 var3 = var4;
1447 }
1448 if (var3){
1449 goto RET_LABEL;
1450 } else {
1451 }
1452 self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___last_location].val = var_loc; /* _last_location on <self:ComputeProdLocationVisitor> */
1453 var5 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1454 if (unlikely(var5 == NULL)) {
1455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1456 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 196);
1457 show_backtrace(1);
1458 }
1459 {
1460 var6 = array__AbstractArrayRead__is_empty(var5);
1461 }
1462 var7 = !var6;
1463 if (var7){
1464 var8 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1465 if (unlikely(var8 == NULL)) {
1466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1467 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 197);
1468 show_backtrace(1);
1469 }
1470 {
1471 var9 = array__AbstractArrayRead__iterator(var8);
1472 }
1473 for(;;) {
1474 {
1475 var10 = array__ArrayIterator__is_ok(var9);
1476 }
1477 if(!var10) break;
1478 {
1479 var11 = array__ArrayIterator__item(var9);
1480 }
1481 var_no = var11;
1482 var_no->attrs[COLOR_parser_work__Prod___first_location].val = var_loc; /* _first_location on <var_no:Prod> */
1483 CONTINUE_label: (void)0;
1484 {
1485 array__ArrayIterator__next(var9); /* Direct call array#ArrayIterator#next on <var9:ArrayIterator[nullable Object]>*/
1486 }
1487 }
1488 BREAK_label: (void)0;
1489 var12 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1490 if (unlikely(var12 == NULL)) {
1491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1492 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 200);
1493 show_backtrace(1);
1494 }
1495 {
1496 array__AbstractArray__clear(var12); /* Direct call array#AbstractArray#clear on <var12:Array[Prod]>*/
1497 }
1498 } else {
1499 }
1500 var13 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1501 if (unlikely(var13 == NULL)) {
1502 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1503 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 204);
1504 show_backtrace(1);
1505 }
1506 {
1507 var14 = array__AbstractArrayRead__is_empty(var13);
1508 }
1509 var15 = !var14;
1510 if (var15){
1511 var16 = NEW_location__Location(&type_location__Location);
1512 {
1513 { /* Inline location#Location#file (var_loc) on <var_loc:nullable Location(Location)> */
1514 var19 = var_loc->attrs[COLOR_location__Location___file].val; /* _file on <var_loc:nullable Location(Location)> */
1515 var17 = var19;
1516 RET_LABEL18:(void)0;
1517 }
1518 }
1519 {
1520 { /* Inline location#Location#line_start (var_loc) on <var_loc:nullable Location(Location)> */
1521 var22 = var_loc->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_loc:nullable Location(Location)> */
1522 var20 = var22;
1523 RET_LABEL21:(void)0;
1524 }
1525 }
1526 {
1527 { /* Inline location#Location#line_start (var_loc) on <var_loc:nullable Location(Location)> */
1528 var25 = var_loc->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_loc:nullable Location(Location)> */
1529 var23 = var25;
1530 RET_LABEL24:(void)0;
1531 }
1532 }
1533 {
1534 { /* Inline location#Location#column_start (var_loc) on <var_loc:nullable Location(Location)> */
1535 var28 = var_loc->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_loc:nullable Location(Location)> */
1536 var26 = var28;
1537 RET_LABEL27:(void)0;
1538 }
1539 }
1540 {
1541 { /* Inline location#Location#column_start (var_loc) on <var_loc:nullable Location(Location)> */
1542 var31 = var_loc->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_loc:nullable Location(Location)> */
1543 var29 = var31;
1544 RET_LABEL30:(void)0;
1545 }
1546 }
1547 {
1548 location__Location__init(var16, var17, var20, var23, var26, var29); /* Direct call location#Location#init on <var16:Location>*/
1549 }
1550 var_loco = var16;
1551 var32 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1552 if (unlikely(var32 == NULL)) {
1553 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1554 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 206);
1555 show_backtrace(1);
1556 }
1557 {
1558 var33 = array__AbstractArrayRead__iterator(var32);
1559 }
1560 for(;;) {
1561 {
1562 var34 = array__ArrayIterator__is_ok(var33);
1563 }
1564 if(!var34) break;
1565 {
1566 var35 = array__ArrayIterator__item(var33);
1567 }
1568 var_no36 = var35;
1569 {
1570 parser_nodes__Prod__location_61d(var_no36, var_loco); /* Direct call parser_nodes#Prod#location= on <var_no36:Prod>*/
1571 }
1572 CONTINUE_label37: (void)0;
1573 {
1574 array__ArrayIterator__next(var33); /* Direct call array#ArrayIterator#next on <var33:ArrayIterator[nullable Object]>*/
1575 }
1576 }
1577 BREAK_label37: (void)0;
1578 var38 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1579 if (unlikely(var38 == NULL)) {
1580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1581 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 209);
1582 show_backtrace(1);
1583 }
1584 {
1585 array__AbstractArray__clear(var38); /* Direct call array#AbstractArray#clear on <var38:Array[Prod]>*/
1586 }
1587 } else {
1588 }
1589 } else {
1590 /* <var_n:ANode> isa Prod */
1591 cltype40 = type_parser_nodes__Prod.color;
1592 idtype41 = type_parser_nodes__Prod.id;
1593 if(cltype40 >= var_n->type->table_size) {
1594 var39 = 0;
1595 } else {
1596 var39 = var_n->type->type_table[cltype40] == idtype41;
1597 }
1598 if (unlikely(!var39)) {
1599 PRINT_ERROR("Runtime error: %s", "Assert failed");
1600 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 212);
1601 show_backtrace(1);
1602 }
1603 var42 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1604 if (unlikely(var42 == NULL)) {
1605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1606 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 213);
1607 show_backtrace(1);
1608 }
1609 {
1610 array__Array__add(var42, var_n); /* Direct call array#Array#add on <var42:Array[Prod]>*/
1611 }
1612 {
1613 ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode(Prod)>*/;
1614 }
1615 var43 = var_n->attrs[COLOR_parser_work__Prod___first_location].val; /* _first_location on <var_n:ANode(Prod)> */
1616 var_startl = var43;
1617 var44 = NULL;
1618 if (var_startl == NULL) {
1619 var45 = 0; /* is null */
1620 } else {
1621 var45 = 1; /* arg is null and recv is not */
1622 }
1623 if (0) {
1624 { /* Inline kernel#Object#!= (var_startl,var44) on <var_startl:nullable Location> */
1625 var_other = var44;
1626 {
1627 var49 = ((short int (*)(val*, val*))(var_startl->class->vft[COLOR_kernel__Object___61d_61d]))(var_startl, var_other) /* == on <var_startl:nullable Location(Location)>*/;
1628 var48 = var49;
1629 }
1630 var50 = !var48;
1631 var46 = var50;
1632 goto RET_LABEL47;
1633 RET_LABEL47:(void)0;
1634 }
1635 var45 = var46;
1636 }
1637 if (var45){
1638 var51 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___last_location].val; /* _last_location on <self:ComputeProdLocationVisitor> */
1639 var_endl = var51;
1640 var52 = NULL;
1641 if (var_endl == NULL) {
1642 var53 = 0; /* is null */
1643 } else {
1644 var53 = 1; /* arg is null and recv is not */
1645 }
1646 if (0) {
1647 { /* Inline kernel#Object#!= (var_endl,var52) on <var_endl:nullable Location> */
1648 var_other = var52;
1649 {
1650 var57 = ((short int (*)(val*, val*))(var_endl->class->vft[COLOR_kernel__Object___61d_61d]))(var_endl, var_other) /* == on <var_endl:nullable Location(Location)>*/;
1651 var56 = var57;
1652 }
1653 var58 = !var56;
1654 var54 = var58;
1655 goto RET_LABEL55;
1656 RET_LABEL55:(void)0;
1657 }
1658 var53 = var54;
1659 }
1660 if (unlikely(!var53)) {
1661 PRINT_ERROR("Runtime error: %s", "Assert failed");
1662 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 221);
1663 show_backtrace(1);
1664 }
1665 var59 = NEW_location__Location(&type_location__Location);
1666 {
1667 { /* Inline location#Location#file (var_startl) on <var_startl:nullable Location(Location)> */
1668 var62 = var_startl->attrs[COLOR_location__Location___file].val; /* _file on <var_startl:nullable Location(Location)> */
1669 var60 = var62;
1670 RET_LABEL61:(void)0;
1671 }
1672 }
1673 {
1674 { /* Inline location#Location#line_start (var_startl) on <var_startl:nullable Location(Location)> */
1675 var65 = var_startl->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_startl:nullable Location(Location)> */
1676 var63 = var65;
1677 RET_LABEL64:(void)0;
1678 }
1679 }
1680 {
1681 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1682 var68 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1683 var66 = var68;
1684 RET_LABEL67:(void)0;
1685 }
1686 }
1687 {
1688 { /* Inline location#Location#column_start (var_startl) on <var_startl:nullable Location(Location)> */
1689 var71 = var_startl->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_startl:nullable Location(Location)> */
1690 var69 = var71;
1691 RET_LABEL70:(void)0;
1692 }
1693 }
1694 {
1695 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1696 var74 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1697 var72 = var74;
1698 RET_LABEL73:(void)0;
1699 }
1700 }
1701 {
1702 location__Location__init(var59, var60, var63, var66, var69, var72); /* Direct call location#Location#init on <var59:Location>*/
1703 }
1704 {
1705 parser_nodes__Prod__location_61d(var_n, var59); /* Direct call parser_nodes#Prod#location= on <var_n:ANode(Prod)>*/
1706 }
1707 var75 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1708 if (unlikely(var75 == NULL)) {
1709 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1710 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 225);
1711 show_backtrace(1);
1712 }
1713 {
1714 var76 = array__AbstractArrayRead__is_empty(var75);
1715 }
1716 var77 = !var76;
1717 if (var77){
1718 var78 = NEW_location__Location(&type_location__Location);
1719 {
1720 { /* Inline location#Location#file (var_endl) on <var_endl:nullable Location(Location)> */
1721 var81 = var_endl->attrs[COLOR_location__Location___file].val; /* _file on <var_endl:nullable Location(Location)> */
1722 var79 = var81;
1723 RET_LABEL80:(void)0;
1724 }
1725 }
1726 {
1727 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1728 var84 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1729 var82 = var84;
1730 RET_LABEL83:(void)0;
1731 }
1732 }
1733 {
1734 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1735 var87 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1736 var85 = var87;
1737 RET_LABEL86:(void)0;
1738 }
1739 }
1740 {
1741 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1742 var90 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1743 var88 = var90;
1744 RET_LABEL89:(void)0;
1745 }
1746 }
1747 {
1748 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1749 var93 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1750 var91 = var93;
1751 RET_LABEL92:(void)0;
1752 }
1753 }
1754 {
1755 location__Location__init(var78, var79, var82, var85, var88, var91); /* Direct call location#Location#init on <var78:Location>*/
1756 }
1757 var_loc94 = var78;
1758 var95 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1759 if (unlikely(var95 == NULL)) {
1760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1761 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 227);
1762 show_backtrace(1);
1763 }
1764 {
1765 var96 = array__AbstractArrayRead__iterator(var95);
1766 }
1767 for(;;) {
1768 {
1769 var97 = array__ArrayIterator__is_ok(var96);
1770 }
1771 if(!var97) break;
1772 {
1773 var98 = array__ArrayIterator__item(var96);
1774 }
1775 var_no99 = var98;
1776 {
1777 parser_nodes__Prod__location_61d(var_no99, var_loc94); /* Direct call parser_nodes#Prod#location= on <var_no99:Prod>*/
1778 }
1779 CONTINUE_label100: (void)0;
1780 {
1781 array__ArrayIterator__next(var96); /* Direct call array#ArrayIterator#next on <var96:ArrayIterator[nullable Object]>*/
1782 }
1783 }
1784 BREAK_label100: (void)0;
1785 var101 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1786 if (unlikely(var101 == NULL)) {
1787 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1788 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 231);
1789 show_backtrace(1);
1790 }
1791 {
1792 array__AbstractArray__clear(var101); /* Direct call array#AbstractArray#clear on <var101:Array[Prod]>*/
1793 }
1794 } else {
1795 }
1796 } else {
1797 var102 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1798 if (unlikely(var102 == NULL)) {
1799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1800 PRINT_ERROR(" (%s:%d)\n", "src/parser/parser_work.nit", 235);
1801 show_backtrace(1);
1802 }
1803 {
1804 array__Array__add(var102, var_n); /* Direct call array#Array#add on <var102:Array[Prod]>*/
1805 }
1806 }
1807 }
1808 RET_LABEL:;
1809 }
1810 /* method parser_work#ComputeProdLocationVisitor#visit for (self: Object, ANode) */
1811 void VIRTUAL_parser_work__ComputeProdLocationVisitor__visit(val* self, val* p0) {
1812 parser_work__ComputeProdLocationVisitor__visit(self, p0); /* Direct call parser_work#ComputeProdLocationVisitor#visit on <self:Object(ComputeProdLocationVisitor)>*/
1813 RET_LABEL:;
1814 }
1815 /* method parser_work#ComputeProdLocationVisitor#init for (self: ComputeProdLocationVisitor) */
1816 void parser_work__ComputeProdLocationVisitor__init(val* self) {
1817 {
1818 { /* Inline parser_nodes#Visitor#init (self) on <self:ComputeProdLocationVisitor> */
1819 RET_LABEL1:(void)0;
1820 }
1821 }
1822 RET_LABEL:;
1823 }
1824 /* method parser_work#ComputeProdLocationVisitor#init for (self: Object) */
1825 void VIRTUAL_parser_work__ComputeProdLocationVisitor__init(val* self) {
1826 parser_work__ComputeProdLocationVisitor__init(self); /* Direct call parser_work#ComputeProdLocationVisitor#init on <self:Object(ComputeProdLocationVisitor)>*/
1827 RET_LABEL:;
1828 }
1829 /* method parser_work#ReduceAction#concat for (self: ReduceAction, Array[Object], Array[Object]): Array[Object] */
1830 val* parser_work__ReduceAction__concat(val* self, val* p0, val* p1) {
1831 val* var /* : Array[Object] */;
1832 val* var_l1 /* var l1: Array[Object] */;
1833 val* var_l2 /* var l2: Array[Object] */;
1834 short int var1 /* : Bool */;
1835 var_l1 = p0;
1836 var_l2 = p1;
1837 {
1838 var1 = array__AbstractArrayRead__is_empty(var_l1);
1839 }
1840 if (var1){
1841 var = var_l2;
1842 goto RET_LABEL;
1843 } else {
1844 }
1845 {
1846 abstract_collection__Sequence__append(var_l1, var_l2); /* Direct call abstract_collection#Sequence#append on <var_l1:Array[Object]>*/
1847 }
1848 var = var_l1;
1849 goto RET_LABEL;
1850 RET_LABEL:;
1851 return var;
1852 }
1853 /* method parser_work#ReduceAction#concat for (self: Object, Array[Object], Array[Object]): Array[Object] */
1854 val* VIRTUAL_parser_work__ReduceAction__concat(val* self, val* p0, val* p1) {
1855 val* var /* : Array[Object] */;
1856 val* var1 /* : Array[Object] */;
1857 var1 = parser_work__ReduceAction__concat(self, p0, p1);
1858 var = var1;
1859 RET_LABEL:;
1860 return var;
1861 }
1862 /* method parser_work#ReduceAction#init for (self: ReduceAction, Int) */
1863 void parser_work__ReduceAction__init(val* self, long p0) {
1864 long var_g /* var g: Int */;
1865 var_g = p0;
1866 self->attrs[COLOR_parser_work__ReduceAction___goto].l = var_g; /* _goto on <self:ReduceAction> */
1867 RET_LABEL:;
1868 }
1869 /* method parser_work#ReduceAction#init for (self: Object, Int) */
1870 void VIRTUAL_parser_work__ReduceAction__init(val* self, long p0) {
1871 parser_work__ReduceAction__init(self, p0); /* Direct call parser_work#ReduceAction#init on <self:Object(ReduceAction)>*/
1872 RET_LABEL:;
1873 }