nitc: fix calling extern constructors from extern code in separate compiler
[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 ((void (*)(val*))(var->class->vft[COLOR_kernel__Object__init]))(var) /* 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 for extern */;
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 for extern */;
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 for extern */;
143 long var94 /* : Int */;
144 long var95 /* : Int */;
145 long var97 /* : Int for extern */;
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", 377);
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", 370);
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){
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", 374);
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", 379);
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", 378);
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", 374);
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", 371);
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", 377);
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", 373);
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", 374);
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", 374);
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 } else {
389 goto BREAK_label;
390 }
391 }
392 BREAK_label: (void)0;
393 var94 = 2;
394 {
395 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var94) on <self:Parser> */
396 var97 = parser_goto(self, var_index, var94);
397 var95 = var97;
398 goto RET_LABEL96;
399 RET_LABEL96:(void)0;
400 }
401 }
402 var = var95;
403 goto RET_LABEL;
404 RET_LABEL:;
405 return var;
406 }
407 /* method parser_work#Parser#go_to for (self: Object, Int): Int */
408 long VIRTUAL_parser_work__Parser__go_to(val* self, long p0) {
409 long var /* : Int */;
410 long var1 /* : Int */;
411 var1 = parser_work__Parser__go_to(self, p0);
412 var = var1;
413 RET_LABEL:;
414 return var;
415 }
416 /* method parser_work#Parser#push for (self: Parser, Int, nullable Object) */
417 void parser_work__Parser__push(val* self, long p0, val* p1) {
418 long var_numstate /* var numstate: Int */;
419 val* var_list_node /* var list_node: nullable Object */;
420 long var /* : Int */;
421 long var1 /* : Int */;
422 long var2 /* : Int */;
423 short int var4 /* : Bool */;
424 int cltype;
425 int idtype;
426 const char* var_class_name;
427 long var5 /* : Int */;
428 long var_pos /* var pos: Int */;
429 val* var6 /* : Array[State] */;
430 long var7 /* : Int */;
431 long var9 /* : Int */;
432 short int var10 /* : Bool */;
433 short int var12 /* : Bool */;
434 int cltype13;
435 int idtype14;
436 const char* var_class_name15;
437 short int var16 /* : Bool */;
438 val* var17 /* : Array[State] */;
439 val* var18 /* : nullable Object */;
440 val* var_state /* var state: State */;
441 val* var19 /* : Array[State] */;
442 val* var20 /* : State */;
443 var_numstate = p0;
444 var_list_node = p1;
445 var = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
446 var1 = 1;
447 {
448 { /* Inline kernel#Int#+ (var,var1) on <var:Int> */
449 /* Covariant cast for argument 0 (i) <var1:Int> isa OTHER */
450 /* <var1:Int> isa OTHER */
451 var4 = 1; /* easy <var1:Int> isa OTHER*/
452 if (unlikely(!var4)) {
453 var_class_name = type_kernel__Int.name;
454 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
455 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
456 show_backtrace(1);
457 }
458 var5 = var + var1;
459 var2 = var5;
460 goto RET_LABEL3;
461 RET_LABEL3:(void)0;
462 }
463 }
464 var_pos = var2;
465 self->attrs[COLOR_parser_work__Parser___stack_pos].l = var_pos; /* _stack_pos on <self:Parser> */
466 var6 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
467 if (unlikely(var6 == NULL)) {
468 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
469 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 85);
470 show_backtrace(1);
471 }
472 {
473 { /* Inline array#AbstractArrayRead#length (var6) on <var6:Array[State]> */
474 var9 = var6->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var6:Array[State]> */
475 var7 = var9;
476 RET_LABEL8:(void)0;
477 }
478 }
479 {
480 { /* Inline kernel#Int#< (var_pos,var7) on <var_pos:Int> */
481 /* Covariant cast for argument 0 (i) <var7:Int> isa OTHER */
482 /* <var7:Int> isa OTHER */
483 var12 = 1; /* easy <var7:Int> isa OTHER*/
484 if (unlikely(!var12)) {
485 var_class_name15 = type_kernel__Int.name;
486 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
487 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
488 show_backtrace(1);
489 }
490 var16 = var_pos < var7;
491 var10 = var16;
492 goto RET_LABEL11;
493 RET_LABEL11:(void)0;
494 }
495 }
496 if (var10){
497 var17 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
498 if (unlikely(var17 == NULL)) {
499 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
500 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 86);
501 show_backtrace(1);
502 }
503 {
504 var18 = array__Array___91d_93d(var17, var_pos);
505 }
506 var_state = var18;
507 var_state->attrs[COLOR_parser_work__State___state].l = var_numstate; /* _state on <var_state:State> */
508 var_state->attrs[COLOR_parser_work__State___nodes].val = var_list_node; /* _nodes on <var_state:State> */
509 } else {
510 var19 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
511 if (unlikely(var19 == NULL)) {
512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
513 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 90);
514 show_backtrace(1);
515 }
516 var20 = NEW_parser_work__State(&type_parser_work__State);
517 {
518 parser_work__State__init(var20, var_numstate, var_list_node); /* Direct call parser_work#State#init on <var20:State>*/
519 }
520 {
521 array__AbstractArray__push(var19, var20); /* Direct call array#AbstractArray#push on <var19:Array[State]>*/
522 }
523 }
524 RET_LABEL:;
525 }
526 /* method parser_work#Parser#push for (self: Object, Int, nullable Object) */
527 void VIRTUAL_parser_work__Parser__push(val* self, long p0, val* p1) {
528 parser_work__Parser__push(self, p0, p1); /* Direct call parser_work#Parser#push on <self:Object(Parser)>*/
529 RET_LABEL:;
530 }
531 /* method parser_work#Parser#state for (self: Parser): Int */
532 long parser_work__Parser__state(val* self) {
533 long var /* : Int */;
534 val* var1 /* : Array[State] */;
535 long var2 /* : Int */;
536 val* var3 /* : nullable Object */;
537 long var4 /* : Int */;
538 var1 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
539 if (unlikely(var1 == NULL)) {
540 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
541 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 97);
542 show_backtrace(1);
543 }
544 var2 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
545 {
546 var3 = array__Array___91d_93d(var1, var2);
547 }
548 var4 = var3->attrs[COLOR_parser_work__State___state].l; /* _state on <var3:nullable Object(State)> */
549 var = var4;
550 goto RET_LABEL;
551 RET_LABEL:;
552 return var;
553 }
554 /* method parser_work#Parser#state for (self: Object): Int */
555 long VIRTUAL_parser_work__Parser__state(val* self) {
556 long var /* : Int */;
557 long var1 /* : Int */;
558 var1 = parser_work__Parser__state(self);
559 var = var1;
560 RET_LABEL:;
561 return var;
562 }
563 /* method parser_work#Parser#pop for (self: Parser): nullable Object */
564 val* parser_work__Parser__pop(val* self) {
565 val* var /* : nullable Object */;
566 val* var1 /* : Array[State] */;
567 long var2 /* : Int */;
568 val* var3 /* : nullable Object */;
569 val* var4 /* : nullable Object */;
570 val* var_res /* var res: nullable Object */;
571 long var5 /* : Int */;
572 long var6 /* : Int */;
573 long var7 /* : Int */;
574 short int var9 /* : Bool */;
575 int cltype;
576 int idtype;
577 const char* var_class_name;
578 long var10 /* : Int */;
579 var1 = self->attrs[COLOR_parser_work__Parser___stack].val; /* _stack on <self:Parser> */
580 if (unlikely(var1 == NULL)) {
581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
582 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 103);
583 show_backtrace(1);
584 }
585 var2 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
586 {
587 var3 = array__Array___91d_93d(var1, var2);
588 }
589 var4 = var3->attrs[COLOR_parser_work__State___nodes].val; /* _nodes on <var3:nullable Object(State)> */
590 var_res = var4;
591 var5 = self->attrs[COLOR_parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
592 var6 = 1;
593 {
594 { /* Inline kernel#Int#- (var5,var6) on <var5:Int> */
595 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
596 /* <var6:Int> isa OTHER */
597 var9 = 1; /* easy <var6:Int> isa OTHER*/
598 if (unlikely(!var9)) {
599 var_class_name = type_kernel__Int.name;
600 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
601 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
602 show_backtrace(1);
603 }
604 var10 = var5 - var6;
605 var7 = var10;
606 goto RET_LABEL8;
607 RET_LABEL8:(void)0;
608 }
609 }
610 self->attrs[COLOR_parser_work__Parser___stack_pos].l = var7; /* _stack_pos on <self:Parser> */
611 var = var_res;
612 goto RET_LABEL;
613 RET_LABEL:;
614 return var;
615 }
616 /* method parser_work#Parser#pop for (self: Object): nullable Object */
617 val* VIRTUAL_parser_work__Parser__pop(val* self) {
618 val* var /* : nullable Object */;
619 val* var1 /* : nullable Object */;
620 var1 = parser_work__Parser__pop(self);
621 var = var1;
622 RET_LABEL:;
623 return var;
624 }
625 /* method parser_work#Parser#parse for (self: Parser): Start */
626 val* parser_work__Parser__parse(val* self) {
627 val* var /* : Start */;
628 long var1 /* : Int */;
629 val* var2 /* : null */;
630 val* var3 /* : Lexer */;
631 val* var_lexer /* var lexer: Lexer */;
632 val* var4 /* : Token */;
633 val* var_token /* var token: Token */;
634 short int var5 /* : Bool */;
635 int cltype;
636 int idtype;
637 val* var6 /* : Start */;
638 val* var7 /* : null */;
639 long var8 /* : Int */;
640 long var_state /* var state: Int */;
641 long var9 /* : Int */;
642 long var_index /* var index: Int */;
643 long var10 /* : Int */;
644 long var11 /* : Int */;
645 long var13 /* : Int for extern */;
646 long var_action_type /* var action_type: Int */;
647 long var14 /* : Int */;
648 long var15 /* : Int */;
649 long var17 /* : Int for extern */;
650 long var_action_value /* var action_value: Int */;
651 long var18 /* : Int */;
652 long var_low /* var low: Int */;
653 long var19 /* : Int */;
654 long var20 /* : Int */;
655 long var22 /* : Int for extern */;
656 long var23 /* : Int */;
657 long var24 /* : Int */;
658 short int var26 /* : Bool */;
659 int cltype27;
660 int idtype28;
661 const char* var_class_name;
662 long var29 /* : Int */;
663 long var_high /* var high: Int */;
664 short int var30 /* : Bool */;
665 short int var32 /* : Bool */;
666 int cltype33;
667 int idtype34;
668 const char* var_class_name35;
669 short int var36 /* : Bool */;
670 long var37 /* : Int */;
671 short int var39 /* : Bool */;
672 int cltype40;
673 int idtype41;
674 const char* var_class_name42;
675 long var43 /* : Int */;
676 long var44 /* : Int */;
677 long var45 /* : Int */;
678 short int var47 /* : Bool */;
679 int cltype48;
680 int idtype49;
681 const char* var_class_name50;
682 long var51 /* : Int */;
683 long var_middle /* var middle: Int */;
684 long var52 /* : Int */;
685 long var53 /* : Int */;
686 short int var55 /* : Bool */;
687 int cltype56;
688 int idtype57;
689 const char* var_class_name58;
690 long var59 /* : Int */;
691 long var60 /* : Int */;
692 long var61 /* : Int */;
693 short int var63 /* : Bool */;
694 int cltype64;
695 int idtype65;
696 const char* var_class_name66;
697 long var67 /* : Int */;
698 long var_subindex /* var subindex: Int */;
699 long var68 /* : Int */;
700 long var70 /* : Int for extern */;
701 long var_goal /* var goal: Int */;
702 short int var71 /* : Bool */;
703 short int var73 /* : Bool */;
704 int cltype74;
705 int idtype75;
706 const char* var_class_name76;
707 short int var77 /* : Bool */;
708 long var78 /* : Int */;
709 long var79 /* : Int */;
710 short int var81 /* : Bool */;
711 int cltype82;
712 int idtype83;
713 const char* var_class_name84;
714 long var85 /* : Int */;
715 short int var86 /* : Bool */;
716 short int var88 /* : Bool */;
717 int cltype89;
718 int idtype90;
719 const char* var_class_name91;
720 short int var92 /* : Bool */;
721 long var93 /* : Int */;
722 long var94 /* : Int */;
723 short int var96 /* : Bool */;
724 int cltype97;
725 int idtype98;
726 const char* var_class_name99;
727 long var100 /* : Int */;
728 long var101 /* : Int */;
729 long var102 /* : Int */;
730 short int var104 /* : Bool */;
731 int cltype105;
732 int idtype106;
733 const char* var_class_name107;
734 long var108 /* : Int */;
735 long var109 /* : Int */;
736 long var111 /* : Int for extern */;
737 long var112 /* : Int */;
738 long var113 /* : Int */;
739 short int var115 /* : Bool */;
740 int cltype116;
741 int idtype117;
742 const char* var_class_name118;
743 long var119 /* : Int */;
744 long var120 /* : Int */;
745 long var122 /* : Int for extern */;
746 long var123 /* : Int */;
747 short int var124 /* : Bool */;
748 short int var125 /* : Bool */;
749 short int var127 /* : Bool */;
750 val* var128 /* : Token */;
751 long var129 /* : Int */;
752 short int var130 /* : Bool */;
753 short int var131 /* : Bool */;
754 short int var133 /* : Bool */;
755 val* var134 /* : Array[ReduceAction] */;
756 val* var135 /* : nullable Object */;
757 long var136 /* : Int */;
758 short int var137 /* : Bool */;
759 short int var138 /* : Bool */;
760 short int var140 /* : Bool */;
761 val* var141 /* : Token */;
762 val* var_node2 /* var node2: Token */;
763 short int var142 /* : Bool */;
764 int cltype143;
765 int idtype144;
766 val* var145 /* : nullable Object */;
767 val* var_node1 /* var node1: nullable Object */;
768 short int var146 /* : Bool */;
769 int cltype147;
770 int idtype148;
771 val* var149 /* : Start */;
772 val* var_node /* var node: Start */;
773 val* var150 /* : ComputeProdLocationVisitor */;
774 long var151 /* : Int */;
775 short int var152 /* : Bool */;
776 short int var153 /* : Bool */;
777 short int var155 /* : Bool */;
778 short int var156 /* : Bool */;
779 short int var157 /* : Bool */;
780 val* var158 /* : Token */;
781 val* var160 /* : AParserError */;
782 static val* varonce;
783 val* var161 /* : String */;
784 char* var162 /* : NativeString */;
785 long var163 /* : Int */;
786 val* var164 /* : FlatString */;
787 static val* varonce165;
788 val* var166 /* : String */;
789 char* var167 /* : NativeString */;
790 long var168 /* : Int */;
791 val* var169 /* : FlatString */;
792 val* var170 /* : Array[Object] */;
793 long var171 /* : Int */;
794 val* var172 /* : NativeArray[Object] */;
795 val* var173 /* : String */;
796 val* var174 /* : Location */;
797 val* var176 /* : Location */;
798 val* var_node2177 /* var node2: AParserError */;
799 val* var178 /* : Start */;
800 val* var179 /* : null */;
801 val* var_node180 /* var node: Start */;
802 var1 = 0;
803 var2 = NULL;
804 {
805 parser_work__Parser__push(self, var1, var2); /* Direct call parser_work#Parser#push on <self:Parser>*/
806 }
807 var3 = self->attrs[COLOR_parser_work__Parser___lexer].val; /* _lexer on <self:Parser> */
808 if (unlikely(var3 == NULL)) {
809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lexer");
810 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 113);
811 show_backtrace(1);
812 }
813 var_lexer = var3;
814 for(;;) {
815 {
816 var4 = lexer_work__Lexer__peek(var_lexer);
817 }
818 var_token = var4;
819 /* <var_token:Token> isa AError */
820 cltype = type_parser_nodes__AError.color;
821 idtype = type_parser_nodes__AError.id;
822 if(cltype >= var_token->type->table_size) {
823 var5 = 0;
824 } else {
825 var5 = var_token->type->type_table[cltype] == idtype;
826 }
827 if (var5){
828 var6 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
829 var7 = NULL;
830 {
831 parser_nodes__Start__init(var6, var7, var_token); /* Direct call parser_nodes#Start#init on <var6:Start>*/
832 }
833 var = var6;
834 goto RET_LABEL;
835 } else {
836 }
837 {
838 var8 = parser_work__Parser__state(self);
839 }
840 var_state = var8;
841 {
842 var9 = ((long (*)(val*))(var_token->class->vft[COLOR_lexer_work__Token__parser_index]))(var_token) /* parser_index on <var_token:Token>*/;
843 }
844 var_index = var9;
845 var10 = 2;
846 {
847 { /* Inline tables#TablesCapable#parser_action (self,var_state,var10) on <self:Parser> */
848 var13 = parser_action(self, var_state, var10);
849 var11 = var13;
850 goto RET_LABEL12;
851 RET_LABEL12:(void)0;
852 }
853 }
854 var_action_type = var11;
855 var14 = 3;
856 {
857 { /* Inline tables#TablesCapable#parser_action (self,var_state,var14) on <self:Parser> */
858 var17 = parser_action(self, var_state, var14);
859 var15 = var17;
860 goto RET_LABEL16;
861 RET_LABEL16:(void)0;
862 }
863 }
864 var_action_value = var15;
865 var18 = 1;
866 var_low = var18;
867 var19 = 0;
868 {
869 { /* Inline tables#TablesCapable#parser_action (self,var_state,var19) on <self:Parser> */
870 var22 = parser_action(self, var_state, var19);
871 var20 = var22;
872 goto RET_LABEL21;
873 RET_LABEL21:(void)0;
874 }
875 }
876 var23 = 1;
877 {
878 { /* Inline kernel#Int#- (var20,var23) on <var20:Int> */
879 /* Covariant cast for argument 0 (i) <var23:Int> isa OTHER */
880 /* <var23:Int> isa OTHER */
881 var26 = 1; /* easy <var23:Int> isa OTHER*/
882 if (unlikely(!var26)) {
883 var_class_name = type_kernel__Int.name;
884 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
885 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
886 show_backtrace(1);
887 }
888 var29 = var20 - var23;
889 var24 = var29;
890 goto RET_LABEL25;
891 RET_LABEL25:(void)0;
892 }
893 }
894 var_high = var24;
895 for(;;) {
896 {
897 { /* Inline kernel#Int#<= (var_low,var_high) on <var_low:Int> */
898 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
899 /* <var_high:Int> isa OTHER */
900 var32 = 1; /* easy <var_high:Int> isa OTHER*/
901 if (unlikely(!var32)) {
902 var_class_name35 = type_kernel__Int.name;
903 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
904 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
905 show_backtrace(1);
906 }
907 var36 = var_low <= var_high;
908 var30 = var36;
909 goto RET_LABEL31;
910 RET_LABEL31:(void)0;
911 }
912 }
913 if (var30){
914 {
915 { /* Inline kernel#Int#+ (var_low,var_high) on <var_low:Int> */
916 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
917 /* <var_high:Int> isa OTHER */
918 var39 = 1; /* easy <var_high:Int> isa OTHER*/
919 if (unlikely(!var39)) {
920 var_class_name42 = type_kernel__Int.name;
921 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
922 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
923 show_backtrace(1);
924 }
925 var43 = var_low + var_high;
926 var37 = var43;
927 goto RET_LABEL38;
928 RET_LABEL38:(void)0;
929 }
930 }
931 var44 = 2;
932 {
933 { /* Inline kernel#Int#/ (var37,var44) on <var37:Int> */
934 /* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
935 /* <var44:Int> isa OTHER */
936 var47 = 1; /* easy <var44:Int> isa OTHER*/
937 if (unlikely(!var47)) {
938 var_class_name50 = type_kernel__Int.name;
939 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name50);
940 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 379);
941 show_backtrace(1);
942 }
943 var51 = var37 / var44;
944 var45 = var51;
945 goto RET_LABEL46;
946 RET_LABEL46:(void)0;
947 }
948 }
949 var_middle = var45;
950 var52 = 3;
951 {
952 { /* Inline kernel#Int#* (var_middle,var52) on <var_middle:Int> */
953 /* Covariant cast for argument 0 (i) <var52:Int> isa OTHER */
954 /* <var52:Int> isa OTHER */
955 var55 = 1; /* easy <var52:Int> isa OTHER*/
956 if (unlikely(!var55)) {
957 var_class_name58 = type_kernel__Int.name;
958 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name58);
959 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 378);
960 show_backtrace(1);
961 }
962 var59 = var_middle * var52;
963 var53 = var59;
964 goto RET_LABEL54;
965 RET_LABEL54:(void)0;
966 }
967 }
968 var60 = 1;
969 {
970 { /* Inline kernel#Int#+ (var53,var60) on <var53:Int> */
971 /* Covariant cast for argument 0 (i) <var60:Int> isa OTHER */
972 /* <var60:Int> isa OTHER */
973 var63 = 1; /* easy <var60:Int> isa OTHER*/
974 if (unlikely(!var63)) {
975 var_class_name66 = type_kernel__Int.name;
976 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
977 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
978 show_backtrace(1);
979 }
980 var67 = var53 + var60;
981 var61 = var67;
982 goto RET_LABEL62;
983 RET_LABEL62:(void)0;
984 }
985 }
986 var_subindex = var61;
987 {
988 { /* Inline tables#TablesCapable#parser_action (self,var_state,var_subindex) on <self:Parser> */
989 var70 = parser_action(self, var_state, var_subindex);
990 var68 = var70;
991 goto RET_LABEL69;
992 RET_LABEL69:(void)0;
993 }
994 }
995 var_goal = var68;
996 {
997 { /* Inline kernel#Int#< (var_index,var_goal) on <var_index:Int> */
998 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
999 /* <var_goal:Int> isa OTHER */
1000 var73 = 1; /* easy <var_goal:Int> isa OTHER*/
1001 if (unlikely(!var73)) {
1002 var_class_name76 = type_kernel__Int.name;
1003 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76);
1004 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
1005 show_backtrace(1);
1006 }
1007 var77 = var_index < var_goal;
1008 var71 = var77;
1009 goto RET_LABEL72;
1010 RET_LABEL72:(void)0;
1011 }
1012 }
1013 if (var71){
1014 var78 = 1;
1015 {
1016 { /* Inline kernel#Int#- (var_middle,var78) on <var_middle:Int> */
1017 /* Covariant cast for argument 0 (i) <var78:Int> isa OTHER */
1018 /* <var78:Int> isa OTHER */
1019 var81 = 1; /* easy <var78:Int> isa OTHER*/
1020 if (unlikely(!var81)) {
1021 var_class_name84 = type_kernel__Int.name;
1022 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name84);
1023 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
1024 show_backtrace(1);
1025 }
1026 var85 = var_middle - var78;
1027 var79 = var85;
1028 goto RET_LABEL80;
1029 RET_LABEL80:(void)0;
1030 }
1031 }
1032 var_high = var79;
1033 } else {
1034 {
1035 { /* Inline kernel#Int#> (var_index,var_goal) on <var_index:Int> */
1036 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
1037 /* <var_goal:Int> isa OTHER */
1038 var88 = 1; /* easy <var_goal:Int> isa OTHER*/
1039 if (unlikely(!var88)) {
1040 var_class_name91 = type_kernel__Int.name;
1041 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name91);
1042 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
1043 show_backtrace(1);
1044 }
1045 var92 = var_index > var_goal;
1046 var86 = var92;
1047 goto RET_LABEL87;
1048 RET_LABEL87:(void)0;
1049 }
1050 }
1051 if (var86){
1052 var93 = 1;
1053 {
1054 { /* Inline kernel#Int#+ (var_middle,var93) on <var_middle:Int> */
1055 /* Covariant cast for argument 0 (i) <var93:Int> isa OTHER */
1056 /* <var93:Int> isa OTHER */
1057 var96 = 1; /* easy <var93:Int> isa OTHER*/
1058 if (unlikely(!var96)) {
1059 var_class_name99 = type_kernel__Int.name;
1060 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name99);
1061 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1062 show_backtrace(1);
1063 }
1064 var100 = var_middle + var93;
1065 var94 = var100;
1066 goto RET_LABEL95;
1067 RET_LABEL95:(void)0;
1068 }
1069 }
1070 var_low = var94;
1071 } else {
1072 var101 = 1;
1073 {
1074 { /* Inline kernel#Int#+ (var_subindex,var101) on <var_subindex:Int> */
1075 /* Covariant cast for argument 0 (i) <var101:Int> isa OTHER */
1076 /* <var101:Int> isa OTHER */
1077 var104 = 1; /* easy <var101:Int> isa OTHER*/
1078 if (unlikely(!var104)) {
1079 var_class_name107 = type_kernel__Int.name;
1080 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name107);
1081 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1082 show_backtrace(1);
1083 }
1084 var108 = var_subindex + var101;
1085 var102 = var108;
1086 goto RET_LABEL103;
1087 RET_LABEL103:(void)0;
1088 }
1089 }
1090 {
1091 { /* Inline tables#TablesCapable#parser_action (self,var_state,var102) on <self:Parser> */
1092 var111 = parser_action(self, var_state, var102);
1093 var109 = var111;
1094 goto RET_LABEL110;
1095 RET_LABEL110:(void)0;
1096 }
1097 }
1098 var_action_type = var109;
1099 var112 = 2;
1100 {
1101 { /* Inline kernel#Int#+ (var_subindex,var112) on <var_subindex:Int> */
1102 /* Covariant cast for argument 0 (i) <var112:Int> isa OTHER */
1103 /* <var112:Int> isa OTHER */
1104 var115 = 1; /* easy <var112:Int> isa OTHER*/
1105 if (unlikely(!var115)) {
1106 var_class_name118 = type_kernel__Int.name;
1107 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name118);
1108 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
1109 show_backtrace(1);
1110 }
1111 var119 = var_subindex + var112;
1112 var113 = var119;
1113 goto RET_LABEL114;
1114 RET_LABEL114:(void)0;
1115 }
1116 }
1117 {
1118 { /* Inline tables#TablesCapable#parser_action (self,var_state,var113) on <self:Parser> */
1119 var122 = parser_action(self, var_state, var113);
1120 var120 = var122;
1121 goto RET_LABEL121;
1122 RET_LABEL121:(void)0;
1123 }
1124 }
1125 var_action_value = var120;
1126 goto BREAK_label;
1127 }
1128 }
1129 } else {
1130 goto BREAK_label;
1131 }
1132 }
1133 BREAK_label: (void)0;
1134 var123 = 0;
1135 {
1136 { /* Inline kernel#Int#== (var_action_type,var123) on <var_action_type:Int> */
1137 var127 = var_action_type == var123;
1138 var125 = var127;
1139 goto RET_LABEL126;
1140 RET_LABEL126:(void)0;
1141 }
1142 var124 = var125;
1143 }
1144 if (var124){
1145 {
1146 var128 = lexer_work__Lexer__next(var_lexer);
1147 }
1148 {
1149 parser_work__Parser__push(self, var_action_value, var128); /* Direct call parser_work#Parser#push on <self:Parser>*/
1150 }
1151 } else {
1152 var129 = 1;
1153 {
1154 { /* Inline kernel#Int#== (var_action_type,var129) on <var_action_type:Int> */
1155 var133 = var_action_type == var129;
1156 var131 = var133;
1157 goto RET_LABEL132;
1158 RET_LABEL132:(void)0;
1159 }
1160 var130 = var131;
1161 }
1162 if (var130){
1163 var134 = self->attrs[COLOR_parser_work__Parser___reduce_table].val; /* _reduce_table on <self:Parser> */
1164 if (unlikely(var134 == NULL)) {
1165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _reduce_table");
1166 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 147);
1167 show_backtrace(1);
1168 }
1169 {
1170 var135 = array__Array___91d_93d(var134, var_action_value);
1171 }
1172 {
1173 ((void (*)(val*, val*))(var135->class->vft[COLOR_parser_work__ReduceAction__action]))(var135, self) /* action on <var135:nullable Object(ReduceAction)>*/;
1174 }
1175 } else {
1176 var136 = 2;
1177 {
1178 { /* Inline kernel#Int#== (var_action_type,var136) on <var_action_type:Int> */
1179 var140 = var_action_type == var136;
1180 var138 = var140;
1181 goto RET_LABEL139;
1182 RET_LABEL139:(void)0;
1183 }
1184 var137 = var138;
1185 }
1186 if (var137){
1187 {
1188 var141 = lexer_work__Lexer__next(var_lexer);
1189 }
1190 var_node2 = var141;
1191 /* <var_node2:Token> isa EOF */
1192 cltype143 = type_parser_nodes__EOF.color;
1193 idtype144 = type_parser_nodes__EOF.id;
1194 if(cltype143 >= var_node2->type->table_size) {
1195 var142 = 0;
1196 } else {
1197 var142 = var_node2->type->type_table[cltype143] == idtype144;
1198 }
1199 if (unlikely(!var142)) {
1200 PRINT_ERROR("Runtime error: %s", "Assert failed");
1201 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 150);
1202 show_backtrace(1);
1203 }
1204 {
1205 var145 = parser_work__Parser__pop(self);
1206 }
1207 var_node1 = var145;
1208 /* <var_node1:nullable Object> isa AModule */
1209 cltype147 = type_parser_nodes__AModule.color;
1210 idtype148 = type_parser_nodes__AModule.id;
1211 if(var_node1 == NULL) {
1212 var146 = 0;
1213 } else {
1214 if(cltype147 >= var_node1->type->table_size) {
1215 var146 = 0;
1216 } else {
1217 var146 = var_node1->type->type_table[cltype147] == idtype148;
1218 }
1219 }
1220 if (unlikely(!var146)) {
1221 PRINT_ERROR("Runtime error: %s", "Assert failed");
1222 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 152);
1223 show_backtrace(1);
1224 }
1225 var149 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
1226 {
1227 parser_nodes__Start__init(var149, var_node1, var_node2); /* Direct call parser_nodes#Start#init on <var149:Start>*/
1228 }
1229 var_node = var149;
1230 var150 = NEW_parser_work__ComputeProdLocationVisitor(&type_parser_work__ComputeProdLocationVisitor);
1231 {
1232 ((void (*)(val*))(var150->class->vft[COLOR_kernel__Object__init]))(var150) /* init on <var150:ComputeProdLocationVisitor>*/;
1233 }
1234 {
1235 parser_nodes__Visitor__enter_visit(var150, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <var150:ComputeProdLocationVisitor>*/
1236 }
1237 var = var_node;
1238 goto RET_LABEL;
1239 } else {
1240 var151 = 3;
1241 {
1242 { /* Inline kernel#Int#== (var_action_type,var151) on <var_action_type:Int> */
1243 var155 = var_action_type == var151;
1244 var153 = var155;
1245 goto RET_LABEL154;
1246 RET_LABEL154:(void)0;
1247 }
1248 var152 = var153;
1249 }
1250 if (var152){
1251 for(;;) {
1252 var156 = var_token->attrs[COLOR_parser_nodes__ANode___location].val != NULL; /* _location on <var_token:Token> */
1253 var157 = !var156;
1254 if (var157){
1255 {
1256 var158 = lexer_work__Lexer__next(var_lexer);
1257 }
1258 var_token = var158;
1259 } else {
1260 goto BREAK_label159;
1261 }
1262 }
1263 BREAK_label159: (void)0;
1264 var160 = NEW_parser_nodes__AParserError(&type_parser_nodes__AParserError);
1265 if (varonce) {
1266 var161 = varonce;
1267 } else {
1268 var162 = "Syntax error: unexpected ";
1269 var163 = 25;
1270 var164 = string__NativeString__to_s_with_length(var162, var163);
1271 var161 = var164;
1272 varonce = var161;
1273 }
1274 if (varonce165) {
1275 var166 = varonce165;
1276 } else {
1277 var167 = ".";
1278 var168 = 1;
1279 var169 = string__NativeString__to_s_with_length(var167, var168);
1280 var166 = var169;
1281 varonce165 = var166;
1282 }
1283 var170 = NEW_array__Array(&type_array__Arraykernel__Object);
1284 { /* var170 = array_instance Array[Object] */
1285 var171 = 3;
1286 var172 = NEW_array__NativeArray(var171, &type_array__NativeArraykernel__Object);
1287 ((struct instance_array__NativeArray*)var172)->values[0] = (val*) var161;
1288 ((struct instance_array__NativeArray*)var172)->values[1] = (val*) var_token;
1289 ((struct instance_array__NativeArray*)var172)->values[2] = (val*) var166;
1290 {
1291 ((void (*)(val*, val*, long))(var170->class->vft[COLOR_array__Array__with_native]))(var170, var172, var171) /* with_native on <var170:Array[Object]>*/;
1292 }
1293 }
1294 {
1295 var173 = ((val* (*)(val*))(var170->class->vft[COLOR_string__Object__to_s]))(var170) /* to_s on <var170:Array[Object]>*/;
1296 }
1297 {
1298 { /* Inline parser_nodes#ANode#location (var_token) on <var_token:Token> */
1299 var176 = var_token->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_token:Token> */
1300 if (unlikely(var176 == NULL)) {
1301 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1302 PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
1303 show_backtrace(1);
1304 }
1305 var174 = var176;
1306 RET_LABEL175:(void)0;
1307 }
1308 }
1309 {
1310 lexer_work__AParserError__init_parser_error(var160, var173, var174, var_token); /* Direct call lexer_work#AParserError#init_parser_error on <var160:AParserError>*/
1311 }
1312 var_node2177 = var160;
1313 var178 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
1314 var179 = NULL;
1315 {
1316 parser_nodes__Start__init(var178, var179, var_node2177); /* Direct call parser_nodes#Start#init on <var178:Start>*/
1317 }
1318 var_node180 = var178;
1319 var = var_node180;
1320 goto RET_LABEL;
1321 } else {
1322 }
1323 }
1324 }
1325 }
1326 }
1327 RET_LABEL:;
1328 return var;
1329 }
1330 /* method parser_work#Parser#parse for (self: Object): Start */
1331 val* VIRTUAL_parser_work__Parser__parse(val* self) {
1332 val* var /* : Start */;
1333 val* var1 /* : Start */;
1334 var1 = parser_work__Parser__parse(self);
1335 var = var1;
1336 RET_LABEL:;
1337 return var;
1338 }
1339 /* method parser_work#Prod#collect_text for (self: Prod): String */
1340 val* parser_work__Prod__collect_text(val* self) {
1341 val* var /* : String */;
1342 val* var1 /* : TextCollectorVisitor */;
1343 val* var_v /* var v: TextCollectorVisitor */;
1344 val* var2 /* : String */;
1345 val* var4 /* : String */;
1346 static val* varonce;
1347 val* var5 /* : String */;
1348 char* var6 /* : NativeString */;
1349 long var7 /* : Int */;
1350 val* var8 /* : FlatString */;
1351 short int var9 /* : Bool */;
1352 short int var10 /* : Bool */;
1353 val* var_other /* var other: nullable Object */;
1354 short int var12 /* : Bool */;
1355 short int var13 /* : Bool */;
1356 short int var14 /* : Bool */;
1357 val* var15 /* : String */;
1358 val* var17 /* : String */;
1359 var1 = NEW_parser_work__TextCollectorVisitor(&type_parser_work__TextCollectorVisitor);
1360 {
1361 ((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:TextCollectorVisitor>*/;
1362 }
1363 var_v = var1;
1364 {
1365 parser_nodes__Visitor__enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:TextCollectorVisitor>*/
1366 }
1367 {
1368 { /* Inline parser_work#TextCollectorVisitor#text (var_v) on <var_v:TextCollectorVisitor> */
1369 var4 = var_v->attrs[COLOR_parser_work__TextCollectorVisitor___text].val; /* _text on <var_v:TextCollectorVisitor> */
1370 if (unlikely(var4 == NULL)) {
1371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1372 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 253);
1373 show_backtrace(1);
1374 }
1375 var2 = var4;
1376 RET_LABEL3:(void)0;
1377 }
1378 }
1379 if (varonce) {
1380 var5 = varonce;
1381 } else {
1382 var6 = "";
1383 var7 = 0;
1384 var8 = string__NativeString__to_s_with_length(var6, var7);
1385 var5 = var8;
1386 varonce = var5;
1387 }
1388 {
1389 { /* Inline kernel#Object#!= (var2,var5) on <var2:String> */
1390 var_other = var5;
1391 {
1392 var13 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var_other) /* == on <var2:String>*/;
1393 var12 = var13;
1394 }
1395 var14 = !var12;
1396 var10 = var14;
1397 goto RET_LABEL11;
1398 RET_LABEL11:(void)0;
1399 }
1400 var9 = var10;
1401 }
1402 if (unlikely(!var9)) {
1403 PRINT_ERROR("Runtime error: %s", "Assert failed");
1404 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 180);
1405 show_backtrace(1);
1406 }
1407 {
1408 { /* Inline parser_work#TextCollectorVisitor#text (var_v) on <var_v:TextCollectorVisitor> */
1409 var17 = var_v->attrs[COLOR_parser_work__TextCollectorVisitor___text].val; /* _text on <var_v:TextCollectorVisitor> */
1410 if (unlikely(var17 == NULL)) {
1411 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1412 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 253);
1413 show_backtrace(1);
1414 }
1415 var15 = var17;
1416 RET_LABEL16:(void)0;
1417 }
1418 }
1419 var = var15;
1420 goto RET_LABEL;
1421 RET_LABEL:;
1422 return var;
1423 }
1424 /* method parser_work#Prod#collect_text for (self: Object): String */
1425 val* VIRTUAL_parser_work__Prod__collect_text(val* self) {
1426 val* var /* : String */;
1427 val* var1 /* : String */;
1428 var1 = parser_work__Prod__collect_text(self);
1429 var = var1;
1430 RET_LABEL:;
1431 return var;
1432 }
1433 /* method parser_work#ComputeProdLocationVisitor#visit for (self: ComputeProdLocationVisitor, ANode) */
1434 void parser_work__ComputeProdLocationVisitor__visit(val* self, val* p0) {
1435 val* var_n /* var n: ANode */;
1436 short int var /* : Bool */;
1437 int cltype;
1438 int idtype;
1439 short int var1 /* : Bool */;
1440 short int var2 /* : Bool */;
1441 val* var3 /* : Location */;
1442 val* var_loc /* var loc: Location */;
1443 val* var4 /* : Array[Prod] */;
1444 short int var5 /* : Bool */;
1445 short int var6 /* : Bool */;
1446 val* var7 /* : Array[Prod] */;
1447 val* var_ /* var : Array[Prod] */;
1448 val* var8 /* : ArrayIterator[nullable Object] */;
1449 val* var_9 /* var : ArrayIterator[Prod] */;
1450 short int var10 /* : Bool */;
1451 val* var11 /* : nullable Object */;
1452 val* var_no /* var no: Prod */;
1453 val* var13 /* : Array[Prod] */;
1454 val* var14 /* : Array[Prod] */;
1455 short int var15 /* : Bool */;
1456 short int var16 /* : Bool */;
1457 val* var17 /* : Location */;
1458 val* var18 /* : nullable SourceFile */;
1459 val* var20 /* : nullable SourceFile */;
1460 long var21 /* : Int */;
1461 long var23 /* : Int */;
1462 long var24 /* : Int */;
1463 long var26 /* : Int */;
1464 long var27 /* : Int */;
1465 long var29 /* : Int */;
1466 long var30 /* : Int */;
1467 long var32 /* : Int */;
1468 val* var_loco /* var loco: Location */;
1469 val* var33 /* : Array[Prod] */;
1470 val* var_34 /* var : Array[Prod] */;
1471 val* var35 /* : ArrayIterator[nullable Object] */;
1472 val* var_36 /* var : ArrayIterator[Prod] */;
1473 short int var37 /* : Bool */;
1474 val* var38 /* : nullable Object */;
1475 val* var_no39 /* var no: Prod */;
1476 val* var43 /* : Array[Prod] */;
1477 short int var44 /* : Bool */;
1478 int cltype45;
1479 int idtype46;
1480 val* var47 /* : Array[Prod] */;
1481 val* var48 /* : nullable Location */;
1482 val* var_startl /* var startl: nullable Location */;
1483 val* var49 /* : null */;
1484 short int var50 /* : Bool */;
1485 short int var51 /* : Bool */;
1486 val* var_other /* var other: nullable Object */;
1487 short int var53 /* : Bool */;
1488 short int var54 /* : Bool */;
1489 short int var55 /* : Bool */;
1490 val* var56 /* : nullable Location */;
1491 val* var_endl /* var endl: nullable Location */;
1492 val* var57 /* : null */;
1493 short int var58 /* : Bool */;
1494 short int var59 /* : Bool */;
1495 short int var61 /* : Bool */;
1496 short int var62 /* : Bool */;
1497 short int var63 /* : Bool */;
1498 val* var64 /* : Location */;
1499 val* var65 /* : nullable SourceFile */;
1500 val* var67 /* : nullable SourceFile */;
1501 long var68 /* : Int */;
1502 long var70 /* : Int */;
1503 long var71 /* : Int */;
1504 long var73 /* : Int */;
1505 long var74 /* : Int */;
1506 long var76 /* : Int */;
1507 long var77 /* : Int */;
1508 long var79 /* : Int */;
1509 val* var81 /* : Array[Prod] */;
1510 short int var82 /* : Bool */;
1511 short int var83 /* : Bool */;
1512 val* var84 /* : Location */;
1513 val* var85 /* : nullable SourceFile */;
1514 val* var87 /* : nullable SourceFile */;
1515 long var88 /* : Int */;
1516 long var90 /* : Int */;
1517 long var91 /* : Int */;
1518 long var93 /* : Int */;
1519 long var94 /* : Int */;
1520 long var96 /* : Int */;
1521 long var97 /* : Int */;
1522 long var99 /* : Int */;
1523 val* var_loc100 /* var loc: Location */;
1524 val* var101 /* : Array[Prod] */;
1525 val* var_102 /* var : Array[Prod] */;
1526 val* var103 /* : ArrayIterator[nullable Object] */;
1527 val* var_104 /* var : ArrayIterator[Prod] */;
1528 short int var105 /* : Bool */;
1529 val* var106 /* : nullable Object */;
1530 val* var_no107 /* var no: Prod */;
1531 val* var111 /* : Array[Prod] */;
1532 val* var112 /* : Array[Prod] */;
1533 var_n = p0;
1534 /* <var_n:ANode> isa Token */
1535 cltype = type_parser_nodes__Token.color;
1536 idtype = type_parser_nodes__Token.id;
1537 if(cltype >= var_n->type->table_size) {
1538 var = 0;
1539 } else {
1540 var = var_n->type->type_table[cltype] == idtype;
1541 }
1542 if (var){
1543 var1 = var_n->attrs[COLOR_parser_nodes__ANode___location].val != NULL; /* _location on <var_n:ANode(Token)> */
1544 var2 = !var1;
1545 if (var2){
1546 goto RET_LABEL;
1547 } else {
1548 }
1549 var3 = var_n->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_n:ANode(Token)> */
1550 if (unlikely(var3 == NULL)) {
1551 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1552 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 202);
1553 show_backtrace(1);
1554 }
1555 var_loc = var3;
1556 self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___last_location].val = var_loc; /* _last_location on <self:ComputeProdLocationVisitor> */
1557 var4 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1558 if (unlikely(var4 == NULL)) {
1559 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1560 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 206);
1561 show_backtrace(1);
1562 }
1563 {
1564 var5 = array__AbstractArrayRead__is_empty(var4);
1565 }
1566 var6 = !var5;
1567 if (var6){
1568 var7 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1569 if (unlikely(var7 == NULL)) {
1570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1571 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 207);
1572 show_backtrace(1);
1573 }
1574 var_ = var7;
1575 {
1576 var8 = array__AbstractArrayRead__iterator(var_);
1577 }
1578 var_9 = var8;
1579 for(;;) {
1580 {
1581 var10 = array__ArrayIterator__is_ok(var_9);
1582 }
1583 if (var10){
1584 {
1585 var11 = array__ArrayIterator__item(var_9);
1586 }
1587 var_no = var11;
1588 var_no->attrs[COLOR_parser_work__Prod___first_location].val = var_loc; /* _first_location on <var_no:Prod> */
1589 {
1590 array__ArrayIterator__next(var_9); /* Direct call array#ArrayIterator#next on <var_9:ArrayIterator[Prod]>*/
1591 }
1592 } else {
1593 goto BREAK_label;
1594 }
1595 }
1596 BREAK_label: (void)0;
1597 {
1598 { /* Inline abstract_collection#Iterator#finish (var_9) on <var_9:ArrayIterator[Prod]> */
1599 RET_LABEL12:(void)0;
1600 }
1601 }
1602 var13 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1603 if (unlikely(var13 == NULL)) {
1604 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1605 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 210);
1606 show_backtrace(1);
1607 }
1608 {
1609 array__AbstractArray__clear(var13); /* Direct call array#AbstractArray#clear on <var13:Array[Prod]>*/
1610 }
1611 } else {
1612 }
1613 var14 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1614 if (unlikely(var14 == NULL)) {
1615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1616 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 214);
1617 show_backtrace(1);
1618 }
1619 {
1620 var15 = array__AbstractArrayRead__is_empty(var14);
1621 }
1622 var16 = !var15;
1623 if (var16){
1624 var17 = NEW_location__Location(&type_location__Location);
1625 {
1626 { /* Inline location#Location#file (var_loc) on <var_loc:Location> */
1627 var20 = var_loc->attrs[COLOR_location__Location___file].val; /* _file on <var_loc:Location> */
1628 var18 = var20;
1629 RET_LABEL19:(void)0;
1630 }
1631 }
1632 {
1633 { /* Inline location#Location#line_start (var_loc) on <var_loc:Location> */
1634 var23 = var_loc->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_loc:Location> */
1635 var21 = var23;
1636 RET_LABEL22:(void)0;
1637 }
1638 }
1639 {
1640 { /* Inline location#Location#line_start (var_loc) on <var_loc:Location> */
1641 var26 = var_loc->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_loc:Location> */
1642 var24 = var26;
1643 RET_LABEL25:(void)0;
1644 }
1645 }
1646 {
1647 { /* Inline location#Location#column_start (var_loc) on <var_loc:Location> */
1648 var29 = var_loc->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_loc:Location> */
1649 var27 = var29;
1650 RET_LABEL28:(void)0;
1651 }
1652 }
1653 {
1654 { /* Inline location#Location#column_start (var_loc) on <var_loc:Location> */
1655 var32 = var_loc->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_loc:Location> */
1656 var30 = var32;
1657 RET_LABEL31:(void)0;
1658 }
1659 }
1660 {
1661 location__Location__init(var17, var18, var21, var24, var27, var30); /* Direct call location#Location#init on <var17:Location>*/
1662 }
1663 var_loco = var17;
1664 var33 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1665 if (unlikely(var33 == NULL)) {
1666 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1667 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 216);
1668 show_backtrace(1);
1669 }
1670 var_34 = var33;
1671 {
1672 var35 = array__AbstractArrayRead__iterator(var_34);
1673 }
1674 var_36 = var35;
1675 for(;;) {
1676 {
1677 var37 = array__ArrayIterator__is_ok(var_36);
1678 }
1679 if (var37){
1680 {
1681 var38 = array__ArrayIterator__item(var_36);
1682 }
1683 var_no39 = var38;
1684 {
1685 { /* Inline parser_nodes#ANode#location= (var_no39,var_loco) on <var_no39:Prod> */
1686 var_no39->attrs[COLOR_parser_nodes__ANode___location].val = var_loco; /* _location on <var_no39:Prod> */
1687 RET_LABEL40:(void)0;
1688 }
1689 }
1690 {
1691 array__ArrayIterator__next(var_36); /* Direct call array#ArrayIterator#next on <var_36:ArrayIterator[Prod]>*/
1692 }
1693 } else {
1694 goto BREAK_label41;
1695 }
1696 }
1697 BREAK_label41: (void)0;
1698 {
1699 { /* Inline abstract_collection#Iterator#finish (var_36) on <var_36:ArrayIterator[Prod]> */
1700 RET_LABEL42:(void)0;
1701 }
1702 }
1703 var43 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1704 if (unlikely(var43 == NULL)) {
1705 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1706 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 219);
1707 show_backtrace(1);
1708 }
1709 {
1710 array__AbstractArray__clear(var43); /* Direct call array#AbstractArray#clear on <var43:Array[Prod]>*/
1711 }
1712 } else {
1713 }
1714 } else {
1715 /* <var_n:ANode> isa Prod */
1716 cltype45 = type_parser_nodes__Prod.color;
1717 idtype46 = type_parser_nodes__Prod.id;
1718 if(cltype45 >= var_n->type->table_size) {
1719 var44 = 0;
1720 } else {
1721 var44 = var_n->type->type_table[cltype45] == idtype46;
1722 }
1723 if (unlikely(!var44)) {
1724 PRINT_ERROR("Runtime error: %s", "Assert failed");
1725 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 222);
1726 show_backtrace(1);
1727 }
1728 var47 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1729 if (unlikely(var47 == NULL)) {
1730 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1731 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 223);
1732 show_backtrace(1);
1733 }
1734 {
1735 array__Array__add(var47, var_n); /* Direct call array#Array#add on <var47:Array[Prod]>*/
1736 }
1737 {
1738 ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode(Prod)>*/;
1739 }
1740 var48 = var_n->attrs[COLOR_parser_work__Prod___first_location].val; /* _first_location on <var_n:ANode(Prod)> */
1741 var_startl = var48;
1742 var49 = NULL;
1743 if (var_startl == NULL) {
1744 var50 = 0; /* is null */
1745 } else {
1746 var50 = 1; /* arg is null and recv is not */
1747 }
1748 if (0) {
1749 { /* Inline kernel#Object#!= (var_startl,var49) on <var_startl:nullable Location> */
1750 var_other = var49;
1751 {
1752 var54 = ((short int (*)(val*, val*))(var_startl->class->vft[COLOR_kernel__Object___61d_61d]))(var_startl, var_other) /* == on <var_startl:nullable Location(Location)>*/;
1753 var53 = var54;
1754 }
1755 var55 = !var53;
1756 var51 = var55;
1757 goto RET_LABEL52;
1758 RET_LABEL52:(void)0;
1759 }
1760 var50 = var51;
1761 }
1762 if (var50){
1763 var56 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___last_location].val; /* _last_location on <self:ComputeProdLocationVisitor> */
1764 var_endl = var56;
1765 var57 = NULL;
1766 if (var_endl == NULL) {
1767 var58 = 0; /* is null */
1768 } else {
1769 var58 = 1; /* arg is null and recv is not */
1770 }
1771 if (0) {
1772 { /* Inline kernel#Object#!= (var_endl,var57) on <var_endl:nullable Location> */
1773 var_other = var57;
1774 {
1775 var62 = ((short int (*)(val*, val*))(var_endl->class->vft[COLOR_kernel__Object___61d_61d]))(var_endl, var_other) /* == on <var_endl:nullable Location(Location)>*/;
1776 var61 = var62;
1777 }
1778 var63 = !var61;
1779 var59 = var63;
1780 goto RET_LABEL60;
1781 RET_LABEL60:(void)0;
1782 }
1783 var58 = var59;
1784 }
1785 if (unlikely(!var58)) {
1786 PRINT_ERROR("Runtime error: %s", "Assert failed");
1787 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 231);
1788 show_backtrace(1);
1789 }
1790 var64 = NEW_location__Location(&type_location__Location);
1791 {
1792 { /* Inline location#Location#file (var_startl) on <var_startl:nullable Location(Location)> */
1793 var67 = var_startl->attrs[COLOR_location__Location___file].val; /* _file on <var_startl:nullable Location(Location)> */
1794 var65 = var67;
1795 RET_LABEL66:(void)0;
1796 }
1797 }
1798 {
1799 { /* Inline location#Location#line_start (var_startl) on <var_startl:nullable Location(Location)> */
1800 var70 = var_startl->attrs[COLOR_location__Location___line_start].l; /* _line_start on <var_startl:nullable Location(Location)> */
1801 var68 = var70;
1802 RET_LABEL69:(void)0;
1803 }
1804 }
1805 {
1806 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1807 var73 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1808 var71 = var73;
1809 RET_LABEL72:(void)0;
1810 }
1811 }
1812 {
1813 { /* Inline location#Location#column_start (var_startl) on <var_startl:nullable Location(Location)> */
1814 var76 = var_startl->attrs[COLOR_location__Location___column_start].l; /* _column_start on <var_startl:nullable Location(Location)> */
1815 var74 = var76;
1816 RET_LABEL75:(void)0;
1817 }
1818 }
1819 {
1820 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1821 var79 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1822 var77 = var79;
1823 RET_LABEL78:(void)0;
1824 }
1825 }
1826 {
1827 location__Location__init(var64, var65, var68, var71, var74, var77); /* Direct call location#Location#init on <var64:Location>*/
1828 }
1829 {
1830 { /* Inline parser_nodes#ANode#location= (var_n,var64) on <var_n:ANode(Prod)> */
1831 var_n->attrs[COLOR_parser_nodes__ANode___location].val = var64; /* _location on <var_n:ANode(Prod)> */
1832 RET_LABEL80:(void)0;
1833 }
1834 }
1835 var81 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1836 if (unlikely(var81 == NULL)) {
1837 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1838 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 235);
1839 show_backtrace(1);
1840 }
1841 {
1842 var82 = array__AbstractArrayRead__is_empty(var81);
1843 }
1844 var83 = !var82;
1845 if (var83){
1846 var84 = NEW_location__Location(&type_location__Location);
1847 {
1848 { /* Inline location#Location#file (var_endl) on <var_endl:nullable Location(Location)> */
1849 var87 = var_endl->attrs[COLOR_location__Location___file].val; /* _file on <var_endl:nullable Location(Location)> */
1850 var85 = var87;
1851 RET_LABEL86:(void)0;
1852 }
1853 }
1854 {
1855 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1856 var90 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1857 var88 = var90;
1858 RET_LABEL89:(void)0;
1859 }
1860 }
1861 {
1862 { /* Inline location#Location#line_end (var_endl) on <var_endl:nullable Location(Location)> */
1863 var93 = var_endl->attrs[COLOR_location__Location___line_end].l; /* _line_end on <var_endl:nullable Location(Location)> */
1864 var91 = var93;
1865 RET_LABEL92:(void)0;
1866 }
1867 }
1868 {
1869 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1870 var96 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1871 var94 = var96;
1872 RET_LABEL95:(void)0;
1873 }
1874 }
1875 {
1876 { /* Inline location#Location#column_end (var_endl) on <var_endl:nullable Location(Location)> */
1877 var99 = var_endl->attrs[COLOR_location__Location___column_end].l; /* _column_end on <var_endl:nullable Location(Location)> */
1878 var97 = var99;
1879 RET_LABEL98:(void)0;
1880 }
1881 }
1882 {
1883 location__Location__init(var84, var85, var88, var91, var94, var97); /* Direct call location#Location#init on <var84:Location>*/
1884 }
1885 var_loc100 = var84;
1886 var101 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1887 if (unlikely(var101 == NULL)) {
1888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1889 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 237);
1890 show_backtrace(1);
1891 }
1892 var_102 = var101;
1893 {
1894 var103 = array__AbstractArrayRead__iterator(var_102);
1895 }
1896 var_104 = var103;
1897 for(;;) {
1898 {
1899 var105 = array__ArrayIterator__is_ok(var_104);
1900 }
1901 if (var105){
1902 {
1903 var106 = array__ArrayIterator__item(var_104);
1904 }
1905 var_no107 = var106;
1906 {
1907 { /* Inline parser_nodes#ANode#location= (var_no107,var_loc100) on <var_no107:Prod> */
1908 var_no107->attrs[COLOR_parser_nodes__ANode___location].val = var_loc100; /* _location on <var_no107:Prod> */
1909 RET_LABEL108:(void)0;
1910 }
1911 }
1912 {
1913 array__ArrayIterator__next(var_104); /* Direct call array#ArrayIterator#next on <var_104:ArrayIterator[Prod]>*/
1914 }
1915 } else {
1916 goto BREAK_label109;
1917 }
1918 }
1919 BREAK_label109: (void)0;
1920 {
1921 { /* Inline abstract_collection#Iterator#finish (var_104) on <var_104:ArrayIterator[Prod]> */
1922 RET_LABEL110:(void)0;
1923 }
1924 }
1925 var111 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1926 if (unlikely(var111 == NULL)) {
1927 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1928 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 241);
1929 show_backtrace(1);
1930 }
1931 {
1932 array__AbstractArray__clear(var111); /* Direct call array#AbstractArray#clear on <var111:Array[Prod]>*/
1933 }
1934 } else {
1935 }
1936 } else {
1937 var112 = self->attrs[COLOR_parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1938 if (unlikely(var112 == NULL)) {
1939 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1940 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 245);
1941 show_backtrace(1);
1942 }
1943 {
1944 array__Array__add(var112, var_n); /* Direct call array#Array#add on <var112:Array[Prod]>*/
1945 }
1946 }
1947 }
1948 RET_LABEL:;
1949 }
1950 /* method parser_work#ComputeProdLocationVisitor#visit for (self: Object, ANode) */
1951 void VIRTUAL_parser_work__ComputeProdLocationVisitor__visit(val* self, val* p0) {
1952 parser_work__ComputeProdLocationVisitor__visit(self, p0); /* Direct call parser_work#ComputeProdLocationVisitor#visit on <self:Object(ComputeProdLocationVisitor)>*/
1953 RET_LABEL:;
1954 }
1955 /* method parser_work#TextCollectorVisitor#text for (self: TextCollectorVisitor): String */
1956 val* parser_work__TextCollectorVisitor__text(val* self) {
1957 val* var /* : String */;
1958 val* var1 /* : String */;
1959 var1 = self->attrs[COLOR_parser_work__TextCollectorVisitor___text].val; /* _text on <self:TextCollectorVisitor> */
1960 if (unlikely(var1 == NULL)) {
1961 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1962 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 253);
1963 show_backtrace(1);
1964 }
1965 var = var1;
1966 RET_LABEL:;
1967 return var;
1968 }
1969 /* method parser_work#TextCollectorVisitor#text for (self: Object): String */
1970 val* VIRTUAL_parser_work__TextCollectorVisitor__text(val* self) {
1971 val* var /* : String */;
1972 val* var1 /* : String */;
1973 val* var3 /* : String */;
1974 { /* Inline parser_work#TextCollectorVisitor#text (self) on <self:Object(TextCollectorVisitor)> */
1975 var3 = self->attrs[COLOR_parser_work__TextCollectorVisitor___text].val; /* _text on <self:Object(TextCollectorVisitor)> */
1976 if (unlikely(var3 == NULL)) {
1977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1978 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 253);
1979 show_backtrace(1);
1980 }
1981 var1 = var3;
1982 RET_LABEL2:(void)0;
1983 }
1984 var = var1;
1985 RET_LABEL:;
1986 return var;
1987 }
1988 /* method parser_work#TextCollectorVisitor#text= for (self: TextCollectorVisitor, String) */
1989 void parser_work__TextCollectorVisitor__text_61d(val* self, val* p0) {
1990 self->attrs[COLOR_parser_work__TextCollectorVisitor___text].val = p0; /* _text on <self:TextCollectorVisitor> */
1991 RET_LABEL:;
1992 }
1993 /* method parser_work#TextCollectorVisitor#text= for (self: Object, String) */
1994 void VIRTUAL_parser_work__TextCollectorVisitor__text_61d(val* self, val* p0) {
1995 { /* Inline parser_work#TextCollectorVisitor#text= (self,p0) on <self:Object(TextCollectorVisitor)> */
1996 self->attrs[COLOR_parser_work__TextCollectorVisitor___text].val = p0; /* _text on <self:Object(TextCollectorVisitor)> */
1997 RET_LABEL1:(void)0;
1998 }
1999 RET_LABEL:;
2000 }
2001 /* method parser_work#TextCollectorVisitor#visit for (self: TextCollectorVisitor, ANode) */
2002 void parser_work__TextCollectorVisitor__visit(val* self, val* p0) {
2003 val* var_n /* var n: ANode */;
2004 short int var /* : Bool */;
2005 int cltype;
2006 int idtype;
2007 val* var_ /* var : TextCollectorVisitor */;
2008 val* var1 /* : String */;
2009 val* var3 /* : String */;
2010 val* var4 /* : String */;
2011 val* var5 /* : String */;
2012 var_n = p0;
2013 /* <var_n:ANode> isa Token */
2014 cltype = type_parser_nodes__Token.color;
2015 idtype = type_parser_nodes__Token.id;
2016 if(cltype >= var_n->type->table_size) {
2017 var = 0;
2018 } else {
2019 var = var_n->type->type_table[cltype] == idtype;
2020 }
2021 if (var){
2022 var_ = self;
2023 {
2024 { /* Inline parser_work#TextCollectorVisitor#text (var_) on <var_:TextCollectorVisitor> */
2025 var3 = var_->attrs[COLOR_parser_work__TextCollectorVisitor___text].val; /* _text on <var_:TextCollectorVisitor> */
2026 if (unlikely(var3 == NULL)) {
2027 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
2028 PRINT_ERROR(" (%s:%d)\n", "parser/parser_work.nit", 253);
2029 show_backtrace(1);
2030 }
2031 var1 = var3;
2032 RET_LABEL2:(void)0;
2033 }
2034 }
2035 {
2036 var4 = lexer_work__Token__text(var_n);
2037 }
2038 {
2039 var5 = string__FlatString___43d(var1, var4);
2040 }
2041 {
2042 { /* Inline parser_work#TextCollectorVisitor#text= (var_,var5) on <var_:TextCollectorVisitor> */
2043 var_->attrs[COLOR_parser_work__TextCollectorVisitor___text].val = var5; /* _text on <var_:TextCollectorVisitor> */
2044 RET_LABEL6:(void)0;
2045 }
2046 }
2047 } else {
2048 }
2049 {
2050 ((void (*)(val*, val*))(var_n->class->vft[COLOR_parser_nodes__ANode__visit_all]))(var_n, self) /* visit_all on <var_n:ANode>*/;
2051 }
2052 RET_LABEL:;
2053 }
2054 /* method parser_work#TextCollectorVisitor#visit for (self: Object, ANode) */
2055 void VIRTUAL_parser_work__TextCollectorVisitor__visit(val* self, val* p0) {
2056 parser_work__TextCollectorVisitor__visit(self, p0); /* Direct call parser_work#TextCollectorVisitor#visit on <self:Object(TextCollectorVisitor)>*/
2057 RET_LABEL:;
2058 }
2059 /* method parser_work#ReduceAction#concat for (self: ReduceAction, Array[Object], Array[Object]): Array[Object] */
2060 val* parser_work__ReduceAction__concat(val* self, val* p0, val* p1) {
2061 val* var /* : Array[Object] */;
2062 val* var_l1 /* var l1: Array[Object] */;
2063 val* var_l2 /* var l2: Array[Object] */;
2064 short int var1 /* : Bool */;
2065 var_l1 = p0;
2066 var_l2 = p1;
2067 {
2068 var1 = array__AbstractArrayRead__is_empty(var_l1);
2069 }
2070 if (var1){
2071 var = var_l2;
2072 goto RET_LABEL;
2073 } else {
2074 }
2075 {
2076 abstract_collection__Sequence__append(var_l1, var_l2); /* Direct call abstract_collection#Sequence#append on <var_l1:Array[Object]>*/
2077 }
2078 var = var_l1;
2079 goto RET_LABEL;
2080 RET_LABEL:;
2081 return var;
2082 }
2083 /* method parser_work#ReduceAction#concat for (self: Object, Array[Object], Array[Object]): Array[Object] */
2084 val* VIRTUAL_parser_work__ReduceAction__concat(val* self, val* p0, val* p1) {
2085 val* var /* : Array[Object] */;
2086 val* var1 /* : Array[Object] */;
2087 var1 = parser_work__ReduceAction__concat(self, p0, p1);
2088 var = var1;
2089 RET_LABEL:;
2090 return var;
2091 }
2092 /* method parser_work#ReduceAction#init for (self: ReduceAction, Int) */
2093 void parser_work__ReduceAction__init(val* self, long p0) {
2094 long var_g /* var g: Int */;
2095 var_g = p0;
2096 self->attrs[COLOR_parser_work__ReduceAction___goto].l = var_g; /* _goto on <self:ReduceAction> */
2097 RET_LABEL:;
2098 }
2099 /* method parser_work#ReduceAction#init for (self: Object, Int) */
2100 void VIRTUAL_parser_work__ReduceAction__init(val* self, long p0) {
2101 parser_work__ReduceAction__init(self, p0); /* Direct call parser_work#ReduceAction#init on <self:Object(ReduceAction)>*/
2102 RET_LABEL:;
2103 }