README: document nit_env.sh
[nit.git] / c_src / nit__parser_work.sep.1.c
1 #include "nit__parser_work.sep.0.h"
2 /* method parser_work#State#state= for (self: State, Int) */
3 void nit__parser_work___nit__parser_work__State___state_61d(val* self, long p0) {
4 self->attrs[COLOR_nit__parser_work__State___state].l = p0; /* _state on <self:State> */
5 RET_LABEL:;
6 }
7 /* method parser_work#State#nodes= for (self: State, nullable Object) */
8 void nit__parser_work___nit__parser_work__State___nodes_61d(val* self, val* p0) {
9 self->attrs[COLOR_nit__parser_work__State___nodes].val = p0; /* _nodes on <self:State> */
10 RET_LABEL:;
11 }
12 /* method parser_work#State#init for (self: State) */
13 void nit__parser_work___nit__parser_work__State___standard__kernel__Object__init(val* self) {
14 {
15 ((void(*)(val* self))(self->class->vft[COLOR_nit__parser_work___nit__parser_work__State___standard__kernel__Object__init]))(self); /* init on <self:State>*/
16 }
17 RET_LABEL:;
18 }
19 /* method parser_work#Parser#lexer= for (self: Parser, Lexer) */
20 void nit___nit__Parser___lexer_61d(val* self, val* p0) {
21 self->attrs[COLOR_nit__parser_work__Parser___lexer].val = p0; /* _lexer on <self:Parser> */
22 RET_LABEL:;
23 }
24 /* method parser_work#Parser#init for (self: Parser) */
25 void nit___nit__Parser___standard__kernel__Object__init(val* self) {
26 {
27 nit__parser___Parser___build_reduce_table(self); /* Direct call parser#Parser#build_reduce_table on <self:Parser>*/
28 }
29 RET_LABEL:;
30 }
31 /* method parser_work#Parser#go_to for (self: Parser, Int): Int */
32 long nit___nit__Parser___go_to(val* self, long p0) {
33 long var /* : Int */;
34 long var_index /* var index: Int */;
35 long var1 /* : Int */;
36 long var_state /* var state: Int */;
37 long var_low /* var low: Int */;
38 long var2 /* : Int */;
39 long var4 /* : Int for extern */;
40 long var5 /* : Int */;
41 short int var7 /* : Bool */;
42 int cltype;
43 int idtype;
44 const char* var_class_name;
45 long var8 /* : Int */;
46 long var_high /* var high: Int */;
47 short int var9 /* : Bool */;
48 short int var11 /* : Bool */;
49 int cltype12;
50 int idtype13;
51 const char* var_class_name14;
52 short int var15 /* : Bool */;
53 long var16 /* : Int */;
54 short int var18 /* : Bool */;
55 int cltype19;
56 int idtype20;
57 const char* var_class_name21;
58 long var22 /* : Int */;
59 long var23 /* : Int */;
60 short int var25 /* : Bool */;
61 int cltype26;
62 int idtype27;
63 const char* var_class_name28;
64 long var29 /* : Int */;
65 long var_middle /* var middle: Int */;
66 long var30 /* : Int */;
67 short int var32 /* : Bool */;
68 int cltype33;
69 int idtype34;
70 const char* var_class_name35;
71 long var36 /* : Int */;
72 long var37 /* : Int */;
73 short int var39 /* : Bool */;
74 int cltype40;
75 int idtype41;
76 const char* var_class_name42;
77 long var43 /* : Int */;
78 long var_subindex /* var subindex: Int */;
79 long var44 /* : Int */;
80 long var46 /* : Int for extern */;
81 long var_goal /* var goal: Int */;
82 short int var47 /* : Bool */;
83 short int var49 /* : Bool */;
84 int cltype50;
85 int idtype51;
86 const char* var_class_name52;
87 short int var53 /* : Bool */;
88 long var54 /* : Int */;
89 short int var56 /* : Bool */;
90 int cltype57;
91 int idtype58;
92 const char* var_class_name59;
93 long var60 /* : Int */;
94 short int var61 /* : Bool */;
95 short int var63 /* : Bool */;
96 int cltype64;
97 int idtype65;
98 const char* var_class_name66;
99 short int var67 /* : Bool */;
100 long var68 /* : Int */;
101 short int var70 /* : Bool */;
102 int cltype71;
103 int idtype72;
104 const char* var_class_name73;
105 long var74 /* : Int */;
106 long var75 /* : Int */;
107 short int var77 /* : Bool */;
108 int cltype78;
109 int idtype79;
110 const char* var_class_name80;
111 long var81 /* : Int */;
112 long var82 /* : Int */;
113 long var84 /* : Int for extern */;
114 long var85 /* : Int */;
115 long var87 /* : Int for extern */;
116 var_index = p0;
117 {
118 var1 = nit___nit__Parser___state(self);
119 }
120 var_state = var1;
121 var_low = 1l;
122 {
123 { /* Inline tables#TablesCapable#parser_goto (self,var_index,0l) on <self:Parser> */
124 var4 = parser_goto(self, var_index, 0l);
125 var2 = var4;
126 goto RET_LABEL3;
127 RET_LABEL3:(void)0;
128 }
129 }
130 {
131 { /* Inline kernel#Int#- (var2,1l) on <var2:Int> */
132 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
133 /* <1l:Int> isa OTHER */
134 var7 = 1; /* easy <1l:Int> isa OTHER*/
135 if (unlikely(!var7)) {
136 var_class_name = type_standard__Int.name;
137 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
138 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
139 fatal_exit(1);
140 }
141 var8 = var2 - 1l;
142 var5 = var8;
143 goto RET_LABEL6;
144 RET_LABEL6:(void)0;
145 }
146 }
147 var_high = var5;
148 for(;;) {
149 {
150 { /* Inline kernel#Int#<= (var_low,var_high) on <var_low:Int> */
151 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
152 /* <var_high:Int> isa OTHER */
153 var11 = 1; /* easy <var_high:Int> isa OTHER*/
154 if (unlikely(!var11)) {
155 var_class_name14 = type_standard__Int.name;
156 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
157 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
158 fatal_exit(1);
159 }
160 var15 = var_low <= var_high;
161 var9 = var15;
162 goto RET_LABEL10;
163 RET_LABEL10:(void)0;
164 }
165 }
166 if (var9){
167 {
168 { /* Inline kernel#Int#+ (var_low,var_high) on <var_low:Int> */
169 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
170 /* <var_high:Int> isa OTHER */
171 var18 = 1; /* easy <var_high:Int> isa OTHER*/
172 if (unlikely(!var18)) {
173 var_class_name21 = type_standard__Int.name;
174 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
175 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
176 fatal_exit(1);
177 }
178 var22 = var_low + var_high;
179 var16 = var22;
180 goto RET_LABEL17;
181 RET_LABEL17:(void)0;
182 }
183 }
184 {
185 { /* Inline kernel#Int#/ (var16,2l) on <var16:Int> */
186 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
187 /* <2l:Int> isa OTHER */
188 var25 = 1; /* easy <2l:Int> isa OTHER*/
189 if (unlikely(!var25)) {
190 var_class_name28 = type_standard__Int.name;
191 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name28);
192 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
193 fatal_exit(1);
194 }
195 var29 = var16 / 2l;
196 var23 = var29;
197 goto RET_LABEL24;
198 RET_LABEL24:(void)0;
199 }
200 }
201 var_middle = var23;
202 {
203 { /* Inline kernel#Int#* (var_middle,2l) on <var_middle:Int> */
204 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
205 /* <2l:Int> isa OTHER */
206 var32 = 1; /* easy <2l:Int> isa OTHER*/
207 if (unlikely(!var32)) {
208 var_class_name35 = type_standard__Int.name;
209 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name35);
210 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 541);
211 fatal_exit(1);
212 }
213 var36 = var_middle * 2l;
214 var30 = var36;
215 goto RET_LABEL31;
216 RET_LABEL31:(void)0;
217 }
218 }
219 {
220 { /* Inline kernel#Int#+ (var30,1l) on <var30:Int> */
221 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
222 /* <1l:Int> isa OTHER */
223 var39 = 1; /* easy <1l:Int> isa OTHER*/
224 if (unlikely(!var39)) {
225 var_class_name42 = type_standard__Int.name;
226 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name42);
227 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
228 fatal_exit(1);
229 }
230 var43 = var30 + 1l;
231 var37 = var43;
232 goto RET_LABEL38;
233 RET_LABEL38:(void)0;
234 }
235 }
236 var_subindex = var37;
237 {
238 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var_subindex) on <self:Parser> */
239 var46 = parser_goto(self, var_index, var_subindex);
240 var44 = var46;
241 goto RET_LABEL45;
242 RET_LABEL45:(void)0;
243 }
244 }
245 var_goal = var44;
246 {
247 { /* Inline kernel#Int#< (var_state,var_goal) on <var_state:Int> */
248 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
249 /* <var_goal:Int> isa OTHER */
250 var49 = 1; /* easy <var_goal:Int> isa OTHER*/
251 if (unlikely(!var49)) {
252 var_class_name52 = type_standard__Int.name;
253 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
254 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
255 fatal_exit(1);
256 }
257 var53 = var_state < var_goal;
258 var47 = var53;
259 goto RET_LABEL48;
260 RET_LABEL48:(void)0;
261 }
262 }
263 if (var47){
264 {
265 { /* Inline kernel#Int#- (var_middle,1l) on <var_middle:Int> */
266 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
267 /* <1l:Int> isa OTHER */
268 var56 = 1; /* easy <1l:Int> isa OTHER*/
269 if (unlikely(!var56)) {
270 var_class_name59 = type_standard__Int.name;
271 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name59);
272 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
273 fatal_exit(1);
274 }
275 var60 = var_middle - 1l;
276 var54 = var60;
277 goto RET_LABEL55;
278 RET_LABEL55:(void)0;
279 }
280 }
281 var_high = var54;
282 } else {
283 {
284 { /* Inline kernel#Int#> (var_state,var_goal) on <var_state:Int> */
285 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
286 /* <var_goal:Int> isa OTHER */
287 var63 = 1; /* easy <var_goal:Int> isa OTHER*/
288 if (unlikely(!var63)) {
289 var_class_name66 = type_standard__Int.name;
290 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name66);
291 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
292 fatal_exit(1);
293 }
294 var67 = var_state > var_goal;
295 var61 = var67;
296 goto RET_LABEL62;
297 RET_LABEL62:(void)0;
298 }
299 }
300 if (var61){
301 {
302 { /* Inline kernel#Int#+ (var_middle,1l) on <var_middle:Int> */
303 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
304 /* <1l:Int> isa OTHER */
305 var70 = 1; /* easy <1l:Int> isa OTHER*/
306 if (unlikely(!var70)) {
307 var_class_name73 = type_standard__Int.name;
308 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name73);
309 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
310 fatal_exit(1);
311 }
312 var74 = var_middle + 1l;
313 var68 = var74;
314 goto RET_LABEL69;
315 RET_LABEL69:(void)0;
316 }
317 }
318 var_low = var68;
319 } else {
320 {
321 { /* Inline kernel#Int#+ (var_subindex,1l) on <var_subindex:Int> */
322 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
323 /* <1l:Int> isa OTHER */
324 var77 = 1; /* easy <1l:Int> isa OTHER*/
325 if (unlikely(!var77)) {
326 var_class_name80 = type_standard__Int.name;
327 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name80);
328 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
329 fatal_exit(1);
330 }
331 var81 = var_subindex + 1l;
332 var75 = var81;
333 goto RET_LABEL76;
334 RET_LABEL76:(void)0;
335 }
336 }
337 {
338 { /* Inline tables#TablesCapable#parser_goto (self,var_index,var75) on <self:Parser> */
339 var84 = parser_goto(self, var_index, var75);
340 var82 = var84;
341 goto RET_LABEL83;
342 RET_LABEL83:(void)0;
343 }
344 }
345 var = var82;
346 goto RET_LABEL;
347 }
348 }
349 } else {
350 goto BREAK_label;
351 }
352 }
353 BREAK_label: (void)0;
354 {
355 { /* Inline tables#TablesCapable#parser_goto (self,var_index,2l) on <self:Parser> */
356 var87 = parser_goto(self, var_index, 2l);
357 var85 = var87;
358 goto RET_LABEL86;
359 RET_LABEL86:(void)0;
360 }
361 }
362 var = var85;
363 goto RET_LABEL;
364 RET_LABEL:;
365 return var;
366 }
367 /* method parser_work#Parser#push for (self: Parser, Int, nullable Object) */
368 void nit___nit__Parser___push(val* self, long p0, val* p1) {
369 long var_numstate /* var numstate: Int */;
370 val* var_list_node /* var list_node: nullable Object */;
371 long var /* : Int */;
372 long var1 /* : Int */;
373 short int var3 /* : Bool */;
374 int cltype;
375 int idtype;
376 const char* var_class_name;
377 long var4 /* : Int */;
378 long var_pos /* var pos: Int */;
379 val* var5 /* : Array[State] */;
380 long var6 /* : Int */;
381 long var8 /* : Int */;
382 short int var9 /* : Bool */;
383 short int var11 /* : Bool */;
384 int cltype12;
385 int idtype13;
386 const char* var_class_name14;
387 short int var15 /* : Bool */;
388 val* var16 /* : Array[State] */;
389 val* var17 /* : nullable Object */;
390 val* var_state /* var state: State */;
391 val* var18 /* : Array[State] */;
392 val* var19 /* : State */;
393 var_numstate = p0;
394 var_list_node = p1;
395 var = self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
396 {
397 { /* Inline kernel#Int#+ (var,1l) on <var:Int> */
398 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
399 /* <1l:Int> isa OTHER */
400 var3 = 1; /* easy <1l:Int> isa OTHER*/
401 if (unlikely(!var3)) {
402 var_class_name = type_standard__Int.name;
403 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
404 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
405 fatal_exit(1);
406 }
407 var4 = var + 1l;
408 var1 = var4;
409 goto RET_LABEL2;
410 RET_LABEL2:(void)0;
411 }
412 }
413 var_pos = var1;
414 self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l = var_pos; /* _stack_pos on <self:Parser> */
415 var5 = self->attrs[COLOR_nit__parser_work__Parser___stack].val; /* _stack on <self:Parser> */
416 if (unlikely(var5 == NULL)) {
417 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
418 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 75);
419 fatal_exit(1);
420 }
421 {
422 { /* Inline array#AbstractArrayRead#length (var5) on <var5:Array[State]> */
423 var8 = var5->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var5:Array[State]> */
424 var6 = var8;
425 RET_LABEL7:(void)0;
426 }
427 }
428 {
429 { /* Inline kernel#Int#< (var_pos,var6) on <var_pos:Int> */
430 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
431 /* <var6:Int> isa OTHER */
432 var11 = 1; /* easy <var6:Int> isa OTHER*/
433 if (unlikely(!var11)) {
434 var_class_name14 = type_standard__Int.name;
435 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
436 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
437 fatal_exit(1);
438 }
439 var15 = var_pos < var6;
440 var9 = var15;
441 goto RET_LABEL10;
442 RET_LABEL10:(void)0;
443 }
444 }
445 if (var9){
446 var16 = self->attrs[COLOR_nit__parser_work__Parser___stack].val; /* _stack on <self:Parser> */
447 if (unlikely(var16 == NULL)) {
448 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
449 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 76);
450 fatal_exit(1);
451 }
452 {
453 var17 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var16, var_pos);
454 }
455 var_state = var17;
456 var_state->attrs[COLOR_nit__parser_work__State___state].l = var_numstate; /* _state on <var_state:State> */
457 var_state->attrs[COLOR_nit__parser_work__State___nodes].val = var_list_node; /* _nodes on <var_state:State> */
458 } else {
459 var18 = self->attrs[COLOR_nit__parser_work__Parser___stack].val; /* _stack on <self:Parser> */
460 if (unlikely(var18 == NULL)) {
461 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
462 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 80);
463 fatal_exit(1);
464 }
465 var19 = NEW_nit__parser_work__State(&type_nit__parser_work__State);
466 {
467 ((void(*)(val* self, long p0))(var19->class->vft[COLOR_nit__parser_work__State__state_61d]))(var19, var_numstate); /* state= on <var19:State>*/
468 }
469 {
470 ((void(*)(val* self, val* p0))(var19->class->vft[COLOR_nit__parser_work__State__nodes_61d]))(var19, var_list_node); /* nodes= on <var19:State>*/
471 }
472 {
473 ((void(*)(val* self))(var19->class->vft[COLOR_standard__kernel__Object__init]))(var19); /* init on <var19:State>*/
474 }
475 {
476 standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var18, var19); /* Direct call array#AbstractArray#push on <var18:Array[State]>*/
477 }
478 }
479 RET_LABEL:;
480 }
481 /* method parser_work#Parser#state for (self: Parser): Int */
482 long nit___nit__Parser___state(val* self) {
483 long var /* : Int */;
484 val* var1 /* : Array[State] */;
485 long var2 /* : Int */;
486 val* var3 /* : nullable Object */;
487 long var4 /* : Int */;
488 var1 = self->attrs[COLOR_nit__parser_work__Parser___stack].val; /* _stack on <self:Parser> */
489 if (unlikely(var1 == NULL)) {
490 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
491 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 87);
492 fatal_exit(1);
493 }
494 var2 = self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
495 {
496 var3 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var1, var2);
497 }
498 var4 = var3->attrs[COLOR_nit__parser_work__State___state].l; /* _state on <var3:nullable Object(State)> */
499 var = var4;
500 goto RET_LABEL;
501 RET_LABEL:;
502 return var;
503 }
504 /* method parser_work#Parser#pop for (self: Parser): nullable Object */
505 val* nit___nit__Parser___pop(val* self) {
506 val* var /* : nullable Object */;
507 val* var1 /* : Array[State] */;
508 long var2 /* : Int */;
509 val* var3 /* : nullable Object */;
510 val* var4 /* : nullable Object */;
511 val* var_res /* var res: nullable Object */;
512 long var5 /* : Int */;
513 long var6 /* : Int */;
514 short int var8 /* : Bool */;
515 int cltype;
516 int idtype;
517 const char* var_class_name;
518 long var9 /* : Int */;
519 var1 = self->attrs[COLOR_nit__parser_work__Parser___stack].val; /* _stack on <self:Parser> */
520 if (unlikely(var1 == NULL)) {
521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stack");
522 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 93);
523 fatal_exit(1);
524 }
525 var2 = self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
526 {
527 var3 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var1, var2);
528 }
529 var4 = var3->attrs[COLOR_nit__parser_work__State___nodes].val; /* _nodes on <var3:nullable Object(State)> */
530 var_res = var4;
531 var5 = self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
532 {
533 { /* Inline kernel#Int#- (var5,1l) on <var5:Int> */
534 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
535 /* <1l:Int> isa OTHER */
536 var8 = 1; /* easy <1l:Int> isa OTHER*/
537 if (unlikely(!var8)) {
538 var_class_name = type_standard__Int.name;
539 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
540 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
541 fatal_exit(1);
542 }
543 var9 = var5 - 1l;
544 var6 = var9;
545 goto RET_LABEL7;
546 RET_LABEL7:(void)0;
547 }
548 }
549 self->attrs[COLOR_nit__parser_work__Parser___stack_pos].l = var6; /* _stack_pos on <self:Parser> */
550 var = var_res;
551 goto RET_LABEL;
552 RET_LABEL:;
553 return var;
554 }
555 /* method parser_work#Parser#parse for (self: Parser): Start */
556 val* nit___nit__Parser___parse(val* self) {
557 val* var /* : Start */;
558 val* var1 /* : Lexer */;
559 val* var_lexer /* var lexer: Lexer */;
560 val* var2 /* : Token */;
561 val* var_token /* var token: Token */;
562 short int var3 /* : Bool */;
563 int cltype;
564 int idtype;
565 val* var4 /* : Start */;
566 long var5 /* : Int */;
567 long var_state /* var state: Int */;
568 long var6 /* : Int */;
569 long var_index /* var index: Int */;
570 long var7 /* : Int */;
571 long var9 /* : Int for extern */;
572 long var_action_type /* var action_type: Int */;
573 long var10 /* : Int */;
574 long var12 /* : Int for extern */;
575 long var_action_value /* var action_value: Int */;
576 long var_low /* var low: Int */;
577 long var13 /* : Int */;
578 long var15 /* : Int for extern */;
579 long var16 /* : Int */;
580 short int var18 /* : Bool */;
581 int cltype19;
582 int idtype20;
583 const char* var_class_name;
584 long var21 /* : Int */;
585 long var_high /* var high: Int */;
586 short int var22 /* : Bool */;
587 short int var24 /* : Bool */;
588 int cltype25;
589 int idtype26;
590 const char* var_class_name27;
591 short int var28 /* : Bool */;
592 long var29 /* : Int */;
593 short int var31 /* : Bool */;
594 int cltype32;
595 int idtype33;
596 const char* var_class_name34;
597 long var35 /* : Int */;
598 long var36 /* : Int */;
599 short int var38 /* : Bool */;
600 int cltype39;
601 int idtype40;
602 const char* var_class_name41;
603 long var42 /* : Int */;
604 long var_middle /* var middle: Int */;
605 long var43 /* : Int */;
606 short int var45 /* : Bool */;
607 int cltype46;
608 int idtype47;
609 const char* var_class_name48;
610 long var49 /* : Int */;
611 long var50 /* : Int */;
612 short int var52 /* : Bool */;
613 int cltype53;
614 int idtype54;
615 const char* var_class_name55;
616 long var56 /* : Int */;
617 long var_subindex /* var subindex: Int */;
618 long var57 /* : Int */;
619 long var59 /* : Int for extern */;
620 long var_goal /* var goal: Int */;
621 short int var60 /* : Bool */;
622 short int var62 /* : Bool */;
623 int cltype63;
624 int idtype64;
625 const char* var_class_name65;
626 short int var66 /* : Bool */;
627 long var67 /* : Int */;
628 short int var69 /* : Bool */;
629 int cltype70;
630 int idtype71;
631 const char* var_class_name72;
632 long var73 /* : Int */;
633 short int var74 /* : Bool */;
634 short int var76 /* : Bool */;
635 int cltype77;
636 int idtype78;
637 const char* var_class_name79;
638 short int var80 /* : Bool */;
639 long var81 /* : Int */;
640 short int var83 /* : Bool */;
641 int cltype84;
642 int idtype85;
643 const char* var_class_name86;
644 long var87 /* : Int */;
645 long var88 /* : Int */;
646 short int var90 /* : Bool */;
647 int cltype91;
648 int idtype92;
649 const char* var_class_name93;
650 long var94 /* : Int */;
651 long var95 /* : Int */;
652 long var97 /* : Int for extern */;
653 long var98 /* : Int */;
654 short int var100 /* : Bool */;
655 int cltype101;
656 int idtype102;
657 const char* var_class_name103;
658 long var104 /* : Int */;
659 long var105 /* : Int */;
660 long var107 /* : Int for extern */;
661 short int var108 /* : Bool */;
662 short int var110 /* : Bool */;
663 val* var111 /* : Token */;
664 short int var112 /* : Bool */;
665 short int var114 /* : Bool */;
666 val* var115 /* : Array[ReduceAction] */;
667 val* var116 /* : nullable Object */;
668 short int var117 /* : Bool */;
669 short int var119 /* : Bool */;
670 val* var120 /* : Token */;
671 val* var_node2 /* var node2: Token */;
672 short int var121 /* : Bool */;
673 int cltype122;
674 int idtype123;
675 val* var124 /* : nullable Object */;
676 val* var_node1 /* var node1: nullable Object */;
677 short int var125 /* : Bool */;
678 int cltype126;
679 int idtype127;
680 val* var128 /* : Start */;
681 val* var_node /* var node: Start */;
682 val* var130 /* : ComputeProdLocationVisitor */;
683 val* var131 /* : SourceFile */;
684 val* var133 /* : SourceFile */;
685 val* var134 /* : nullable Token */;
686 val* var136 /* : nullable Token */;
687 short int var137 /* : Bool */;
688 short int var139 /* : Bool */;
689 short int var140 /* : Bool */;
690 short int var141 /* : Bool */;
691 val* var142 /* : Token */;
692 val* var144 /* : AParserError */;
693 val* var145 /* : NativeArray[String] */;
694 static val* varonce;
695 static val* varonce146;
696 val* var147 /* : String */;
697 char* var148 /* : NativeString */;
698 val* var149 /* : FlatString */;
699 static val* varonce150;
700 val* var151 /* : String */;
701 char* var152 /* : NativeString */;
702 val* var153 /* : FlatString */;
703 val* var154 /* : String */;
704 val* var155 /* : String */;
705 val* var156 /* : Location */;
706 val* var158 /* : Location */;
707 val* var_node2159 /* var node2: AParserError */;
708 val* var160 /* : Start */;
709 val* var_node161 /* var node: Start */;
710 {
711 nit___nit__Parser___push(self, 0l, ((val*)NULL)); /* Direct call parser_work#Parser#push on <self:Parser>*/
712 }
713 var1 = self->attrs[COLOR_nit__parser_work__Parser___lexer].val; /* _lexer on <self:Parser> */
714 if (unlikely(var1 == NULL)) {
715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lexer");
716 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 103);
717 fatal_exit(1);
718 }
719 var_lexer = var1;
720 for(;;) {
721 {
722 var2 = nit___nit__Lexer___peek(var_lexer);
723 }
724 var_token = var2;
725 /* <var_token:Token> isa AError */
726 cltype = type_nit__AError.color;
727 idtype = type_nit__AError.id;
728 if(cltype >= var_token->type->table_size) {
729 var3 = 0;
730 } else {
731 var3 = var_token->type->type_table[cltype] == idtype;
732 }
733 if (var3){
734 var4 = NEW_nit__Start(&type_nit__Start);
735 {
736 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nit__parser_nodes__Start__n_base_61d]))(var4, ((val*)NULL)); /* n_base= on <var4:Start>*/
737 }
738 {
739 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nit__parser_nodes__Start__n_eof_61d]))(var4, var_token); /* n_eof= on <var4:Start>*/
740 }
741 {
742 ((void(*)(val* self))(var4->class->vft[COLOR_standard__kernel__Object__init]))(var4); /* init on <var4:Start>*/
743 }
744 var = var4;
745 goto RET_LABEL;
746 } else {
747 }
748 {
749 var5 = nit___nit__Parser___state(self);
750 }
751 var_state = var5;
752 {
753 var6 = ((long(*)(val* self))(var_token->class->vft[COLOR_nit__lexer_work__Token__parser_index]))(var_token); /* parser_index on <var_token:Token>*/
754 }
755 var_index = var6;
756 {
757 { /* Inline tables#TablesCapable#parser_action (self,var_state,2l) on <self:Parser> */
758 var9 = parser_action(self, var_state, 2l);
759 var7 = var9;
760 goto RET_LABEL8;
761 RET_LABEL8:(void)0;
762 }
763 }
764 var_action_type = var7;
765 {
766 { /* Inline tables#TablesCapable#parser_action (self,var_state,3l) on <self:Parser> */
767 var12 = parser_action(self, var_state, 3l);
768 var10 = var12;
769 goto RET_LABEL11;
770 RET_LABEL11:(void)0;
771 }
772 }
773 var_action_value = var10;
774 var_low = 1l;
775 {
776 { /* Inline tables#TablesCapable#parser_action (self,var_state,0l) on <self:Parser> */
777 var15 = parser_action(self, var_state, 0l);
778 var13 = var15;
779 goto RET_LABEL14;
780 RET_LABEL14:(void)0;
781 }
782 }
783 {
784 { /* Inline kernel#Int#- (var13,1l) on <var13:Int> */
785 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
786 /* <1l:Int> isa OTHER */
787 var18 = 1; /* easy <1l:Int> isa OTHER*/
788 if (unlikely(!var18)) {
789 var_class_name = type_standard__Int.name;
790 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
791 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
792 fatal_exit(1);
793 }
794 var21 = var13 - 1l;
795 var16 = var21;
796 goto RET_LABEL17;
797 RET_LABEL17:(void)0;
798 }
799 }
800 var_high = var16;
801 for(;;) {
802 {
803 { /* Inline kernel#Int#<= (var_low,var_high) on <var_low:Int> */
804 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
805 /* <var_high:Int> isa OTHER */
806 var24 = 1; /* easy <var_high:Int> isa OTHER*/
807 if (unlikely(!var24)) {
808 var_class_name27 = type_standard__Int.name;
809 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name27);
810 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
811 fatal_exit(1);
812 }
813 var28 = var_low <= var_high;
814 var22 = var28;
815 goto RET_LABEL23;
816 RET_LABEL23:(void)0;
817 }
818 }
819 if (var22){
820 {
821 { /* Inline kernel#Int#+ (var_low,var_high) on <var_low:Int> */
822 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
823 /* <var_high:Int> isa OTHER */
824 var31 = 1; /* easy <var_high:Int> isa OTHER*/
825 if (unlikely(!var31)) {
826 var_class_name34 = type_standard__Int.name;
827 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name34);
828 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
829 fatal_exit(1);
830 }
831 var35 = var_low + var_high;
832 var29 = var35;
833 goto RET_LABEL30;
834 RET_LABEL30:(void)0;
835 }
836 }
837 {
838 { /* Inline kernel#Int#/ (var29,2l) on <var29:Int> */
839 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
840 /* <2l:Int> isa OTHER */
841 var38 = 1; /* easy <2l:Int> isa OTHER*/
842 if (unlikely(!var38)) {
843 var_class_name41 = type_standard__Int.name;
844 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
845 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 542);
846 fatal_exit(1);
847 }
848 var42 = var29 / 2l;
849 var36 = var42;
850 goto RET_LABEL37;
851 RET_LABEL37:(void)0;
852 }
853 }
854 var_middle = var36;
855 {
856 { /* Inline kernel#Int#* (var_middle,3l) on <var_middle:Int> */
857 /* Covariant cast for argument 0 (i) <3l:Int> isa OTHER */
858 /* <3l:Int> isa OTHER */
859 var45 = 1; /* easy <3l:Int> isa OTHER*/
860 if (unlikely(!var45)) {
861 var_class_name48 = type_standard__Int.name;
862 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
863 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 541);
864 fatal_exit(1);
865 }
866 var49 = var_middle * 3l;
867 var43 = var49;
868 goto RET_LABEL44;
869 RET_LABEL44:(void)0;
870 }
871 }
872 {
873 { /* Inline kernel#Int#+ (var43,1l) on <var43:Int> */
874 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
875 /* <1l:Int> isa OTHER */
876 var52 = 1; /* easy <1l:Int> isa OTHER*/
877 if (unlikely(!var52)) {
878 var_class_name55 = type_standard__Int.name;
879 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name55);
880 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
881 fatal_exit(1);
882 }
883 var56 = var43 + 1l;
884 var50 = var56;
885 goto RET_LABEL51;
886 RET_LABEL51:(void)0;
887 }
888 }
889 var_subindex = var50;
890 {
891 { /* Inline tables#TablesCapable#parser_action (self,var_state,var_subindex) on <self:Parser> */
892 var59 = parser_action(self, var_state, var_subindex);
893 var57 = var59;
894 goto RET_LABEL58;
895 RET_LABEL58:(void)0;
896 }
897 }
898 var_goal = var57;
899 {
900 { /* Inline kernel#Int#< (var_index,var_goal) on <var_index:Int> */
901 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
902 /* <var_goal:Int> isa OTHER */
903 var62 = 1; /* easy <var_goal:Int> isa OTHER*/
904 if (unlikely(!var62)) {
905 var_class_name65 = type_standard__Int.name;
906 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
907 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
908 fatal_exit(1);
909 }
910 var66 = var_index < var_goal;
911 var60 = var66;
912 goto RET_LABEL61;
913 RET_LABEL61:(void)0;
914 }
915 }
916 if (var60){
917 {
918 { /* Inline kernel#Int#- (var_middle,1l) on <var_middle:Int> */
919 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
920 /* <1l:Int> isa OTHER */
921 var69 = 1; /* easy <1l:Int> isa OTHER*/
922 if (unlikely(!var69)) {
923 var_class_name72 = type_standard__Int.name;
924 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name72);
925 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
926 fatal_exit(1);
927 }
928 var73 = var_middle - 1l;
929 var67 = var73;
930 goto RET_LABEL68;
931 RET_LABEL68:(void)0;
932 }
933 }
934 var_high = var67;
935 } else {
936 {
937 { /* Inline kernel#Int#> (var_index,var_goal) on <var_index:Int> */
938 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
939 /* <var_goal:Int> isa OTHER */
940 var76 = 1; /* easy <var_goal:Int> isa OTHER*/
941 if (unlikely(!var76)) {
942 var_class_name79 = type_standard__Int.name;
943 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name79);
944 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
945 fatal_exit(1);
946 }
947 var80 = var_index > var_goal;
948 var74 = var80;
949 goto RET_LABEL75;
950 RET_LABEL75:(void)0;
951 }
952 }
953 if (var74){
954 {
955 { /* Inline kernel#Int#+ (var_middle,1l) on <var_middle:Int> */
956 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
957 /* <1l:Int> isa OTHER */
958 var83 = 1; /* easy <1l:Int> isa OTHER*/
959 if (unlikely(!var83)) {
960 var_class_name86 = type_standard__Int.name;
961 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
962 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
963 fatal_exit(1);
964 }
965 var87 = var_middle + 1l;
966 var81 = var87;
967 goto RET_LABEL82;
968 RET_LABEL82:(void)0;
969 }
970 }
971 var_low = var81;
972 } else {
973 {
974 { /* Inline kernel#Int#+ (var_subindex,1l) on <var_subindex:Int> */
975 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
976 /* <1l:Int> isa OTHER */
977 var90 = 1; /* easy <1l:Int> isa OTHER*/
978 if (unlikely(!var90)) {
979 var_class_name93 = type_standard__Int.name;
980 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name93);
981 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
982 fatal_exit(1);
983 }
984 var94 = var_subindex + 1l;
985 var88 = var94;
986 goto RET_LABEL89;
987 RET_LABEL89:(void)0;
988 }
989 }
990 {
991 { /* Inline tables#TablesCapable#parser_action (self,var_state,var88) on <self:Parser> */
992 var97 = parser_action(self, var_state, var88);
993 var95 = var97;
994 goto RET_LABEL96;
995 RET_LABEL96:(void)0;
996 }
997 }
998 var_action_type = var95;
999 {
1000 { /* Inline kernel#Int#+ (var_subindex,2l) on <var_subindex:Int> */
1001 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
1002 /* <2l:Int> isa OTHER */
1003 var100 = 1; /* easy <2l:Int> isa OTHER*/
1004 if (unlikely(!var100)) {
1005 var_class_name103 = type_standard__Int.name;
1006 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name103);
1007 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
1008 fatal_exit(1);
1009 }
1010 var104 = var_subindex + 2l;
1011 var98 = var104;
1012 goto RET_LABEL99;
1013 RET_LABEL99:(void)0;
1014 }
1015 }
1016 {
1017 { /* Inline tables#TablesCapable#parser_action (self,var_state,var98) on <self:Parser> */
1018 var107 = parser_action(self, var_state, var98);
1019 var105 = var107;
1020 goto RET_LABEL106;
1021 RET_LABEL106:(void)0;
1022 }
1023 }
1024 var_action_value = var105;
1025 goto BREAK_label;
1026 }
1027 }
1028 } else {
1029 goto BREAK_label;
1030 }
1031 }
1032 BREAK_label: (void)0;
1033 {
1034 { /* Inline kernel#Int#== (var_action_type,0l) on <var_action_type:Int> */
1035 var110 = var_action_type == 0l;
1036 var108 = var110;
1037 goto RET_LABEL109;
1038 RET_LABEL109:(void)0;
1039 }
1040 }
1041 if (var108){
1042 {
1043 var111 = nit___nit__Lexer___next(var_lexer);
1044 }
1045 {
1046 nit___nit__Parser___push(self, var_action_value, var111); /* Direct call parser_work#Parser#push on <self:Parser>*/
1047 }
1048 } else {
1049 {
1050 { /* Inline kernel#Int#== (var_action_type,1l) on <var_action_type:Int> */
1051 var114 = var_action_type == 1l;
1052 var112 = var114;
1053 goto RET_LABEL113;
1054 RET_LABEL113:(void)0;
1055 }
1056 }
1057 if (var112){
1058 var115 = self->attrs[COLOR_nit__parser_work__Parser___reduce_table].val; /* _reduce_table on <self:Parser> */
1059 if (unlikely(var115 == NULL)) {
1060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _reduce_table");
1061 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 137);
1062 fatal_exit(1);
1063 }
1064 {
1065 var116 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var115, var_action_value);
1066 }
1067 {
1068 ((void(*)(val* self, val* p0))(var116->class->vft[COLOR_nit__parser_work__ReduceAction__action]))(var116, self); /* action on <var116:nullable Object(ReduceAction)>*/
1069 }
1070 } else {
1071 {
1072 { /* Inline kernel#Int#== (var_action_type,2l) on <var_action_type:Int> */
1073 var119 = var_action_type == 2l;
1074 var117 = var119;
1075 goto RET_LABEL118;
1076 RET_LABEL118:(void)0;
1077 }
1078 }
1079 if (var117){
1080 {
1081 var120 = nit___nit__Lexer___next(var_lexer);
1082 }
1083 var_node2 = var120;
1084 /* <var_node2:Token> isa EOF */
1085 cltype122 = type_nit__EOF.color;
1086 idtype123 = type_nit__EOF.id;
1087 if(cltype122 >= var_node2->type->table_size) {
1088 var121 = 0;
1089 } else {
1090 var121 = var_node2->type->type_table[cltype122] == idtype123;
1091 }
1092 if (unlikely(!var121)) {
1093 PRINT_ERROR("Runtime error: %s", "Assert failed");
1094 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 140);
1095 fatal_exit(1);
1096 }
1097 {
1098 var124 = nit___nit__Parser___pop(self);
1099 }
1100 var_node1 = var124;
1101 /* <var_node1:nullable Object> isa AModule */
1102 cltype126 = type_nit__AModule.color;
1103 idtype127 = type_nit__AModule.id;
1104 if(var_node1 == NULL) {
1105 var125 = 0;
1106 } else {
1107 if(cltype126 >= (((long)var_node1&3)?type_info[((long)var_node1&3)]:var_node1->type)->table_size) {
1108 var125 = 0;
1109 } else {
1110 var125 = (((long)var_node1&3)?type_info[((long)var_node1&3)]:var_node1->type)->type_table[cltype126] == idtype127;
1111 }
1112 }
1113 if (unlikely(!var125)) {
1114 PRINT_ERROR("Runtime error: %s", "Assert failed");
1115 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 142);
1116 fatal_exit(1);
1117 }
1118 var128 = NEW_nit__Start(&type_nit__Start);
1119 {
1120 ((void(*)(val* self, val* p0))(var128->class->vft[COLOR_nit__parser_nodes__Start__n_base_61d]))(var128, var_node1); /* n_base= on <var128:Start>*/
1121 }
1122 {
1123 ((void(*)(val* self, val* p0))(var128->class->vft[COLOR_nit__parser_nodes__Start__n_eof_61d]))(var128, var_node2); /* n_eof= on <var128:Start>*/
1124 }
1125 {
1126 ((void(*)(val* self))(var128->class->vft[COLOR_standard__kernel__Object__init]))(var128); /* init on <var128:Start>*/
1127 }
1128 var_node = var128;
1129 {
1130 { /* Inline parser_nodes#ANode#parent= (var_node2,var_node) on <var_node2:Token(EOF)> */
1131 var_node2->attrs[COLOR_nit__parser_nodes__ANode___parent].val = var_node; /* _parent on <var_node2:Token(EOF)> */
1132 RET_LABEL129:(void)0;
1133 }
1134 }
1135 var130 = NEW_nit__parser_work__ComputeProdLocationVisitor(&type_nit__parser_work__ComputeProdLocationVisitor);
1136 {
1137 { /* Inline lexer_work#Lexer#file (var_lexer) on <var_lexer:Lexer> */
1138 var133 = var_lexer->attrs[COLOR_nit__lexer_work__Lexer___file].val; /* _file on <var_lexer:Lexer> */
1139 if (unlikely(var133 == NULL)) {
1140 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _file");
1141 PRINT_ERROR(" (%s:%d)\n", FILE_nit__lexer_work, 90);
1142 fatal_exit(1);
1143 }
1144 var131 = var133;
1145 RET_LABEL132:(void)0;
1146 }
1147 }
1148 {
1149 { /* Inline parser_nodes#SourceFile#first_token (var131) on <var131:SourceFile> */
1150 var136 = var131->attrs[COLOR_nit__parser_nodes__SourceFile___first_token].val; /* _first_token on <var131:SourceFile> */
1151 var134 = var136;
1152 RET_LABEL135:(void)0;
1153 }
1154 }
1155 {
1156 ((void(*)(val* self, val* p0))(var130->class->vft[COLOR_nit__parser_work__ComputeProdLocationVisitor__token_61d]))(var130, var134); /* token= on <var130:ComputeProdLocationVisitor>*/
1157 }
1158 {
1159 ((void(*)(val* self))(var130->class->vft[COLOR_standard__kernel__Object__init]))(var130); /* init on <var130:ComputeProdLocationVisitor>*/
1160 }
1161 {
1162 nit___nit__Visitor___enter_visit(var130, var_node); /* Direct call parser_nodes#Visitor#enter_visit on <var130:ComputeProdLocationVisitor>*/
1163 }
1164 var = var_node;
1165 goto RET_LABEL;
1166 } else {
1167 {
1168 { /* Inline kernel#Int#== (var_action_type,3l) on <var_action_type:Int> */
1169 var139 = var_action_type == 3l;
1170 var137 = var139;
1171 goto RET_LABEL138;
1172 RET_LABEL138:(void)0;
1173 }
1174 }
1175 if (var137){
1176 for(;;) {
1177 var140 = var_token->attrs[COLOR_nit__parser_nodes__ANode___location].val != NULL; /* _location on <var_token:Token> */
1178 var141 = !var140;
1179 if (var141){
1180 {
1181 var142 = nit___nit__Lexer___next(var_lexer);
1182 }
1183 var_token = var142;
1184 } else {
1185 goto BREAK_label143;
1186 }
1187 }
1188 BREAK_label143: (void)0;
1189 var144 = NEW_nit__AParserError(&type_nit__AParserError);
1190 if (unlikely(varonce==NULL)) {
1191 var145 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1192 if (likely(varonce146!=NULL)) {
1193 var147 = varonce146;
1194 } else {
1195 var148 = "Syntax Error: unexpected ";
1196 var149 = standard___standard__NativeString___to_s_with_length(var148, 25l);
1197 var147 = var149;
1198 varonce146 = var147;
1199 }
1200 ((struct instance_standard__NativeArray*)var145)->values[0]=var147;
1201 if (likely(varonce150!=NULL)) {
1202 var151 = varonce150;
1203 } else {
1204 var152 = ".";
1205 var153 = standard___standard__NativeString___to_s_with_length(var152, 1l);
1206 var151 = var153;
1207 varonce150 = var151;
1208 }
1209 ((struct instance_standard__NativeArray*)var145)->values[2]=var151;
1210 } else {
1211 var145 = varonce;
1212 varonce = NULL;
1213 }
1214 {
1215 var154 = ((val*(*)(val* self))(var_token->class->vft[COLOR_standard__string__Object__to_s]))(var_token); /* to_s on <var_token:Token>*/
1216 }
1217 ((struct instance_standard__NativeArray*)var145)->values[1]=var154;
1218 {
1219 var155 = ((val*(*)(val* self))(var145->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var145); /* native_to_s on <var145:NativeArray[String]>*/
1220 }
1221 varonce = var145;
1222 {
1223 { /* Inline parser_nodes#ANode#location (var_token) on <var_token:Token> */
1224 var158 = var_token->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_token:Token> */
1225 if (unlikely(var158 == NULL)) {
1226 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1227 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
1228 fatal_exit(1);
1229 }
1230 var156 = var158;
1231 RET_LABEL157:(void)0;
1232 }
1233 }
1234 {
1235 nit__lexer_work___AParserError___init_parser_error(var144, var155, var156, var_token); /* Direct call lexer_work#AParserError#init_parser_error on <var144:AParserError>*/
1236 }
1237 var_node2159 = var144;
1238 var160 = NEW_nit__Start(&type_nit__Start);
1239 {
1240 ((void(*)(val* self, val* p0))(var160->class->vft[COLOR_nit__parser_nodes__Start__n_base_61d]))(var160, ((val*)NULL)); /* n_base= on <var160:Start>*/
1241 }
1242 {
1243 ((void(*)(val* self, val* p0))(var160->class->vft[COLOR_nit__parser_nodes__Start__n_eof_61d]))(var160, var_node2159); /* n_eof= on <var160:Start>*/
1244 }
1245 {
1246 ((void(*)(val* self))(var160->class->vft[COLOR_standard__kernel__Object__init]))(var160); /* init on <var160:Start>*/
1247 }
1248 var_node161 = var160;
1249 var = var_node161;
1250 goto RET_LABEL;
1251 } else {
1252 }
1253 }
1254 }
1255 }
1256 }
1257 RET_LABEL:;
1258 return var;
1259 }
1260 /* method parser_work#Parser#reduce_table= for (self: Parser, Array[ReduceAction]) */
1261 void nit___nit__Parser___reduce_table_61d(val* self, val* p0) {
1262 self->attrs[COLOR_nit__parser_work__Parser___reduce_table].val = p0; /* _reduce_table on <self:Parser> */
1263 RET_LABEL:;
1264 }
1265 /* method parser_work#Prod#collect_text for (self: Prod): String */
1266 val* nit__parser_work___Prod___collect_text(val* self) {
1267 val* var /* : String */;
1268 val* var1 /* : TextCollectorVisitor */;
1269 val* var_v /* var v: TextCollectorVisitor */;
1270 val* var3 /* : String */;
1271 val* var5 /* : String */;
1272 static val* varonce;
1273 val* var6 /* : String */;
1274 char* var7 /* : NativeString */;
1275 val* var8 /* : FlatString */;
1276 short int var9 /* : Bool */;
1277 val* var_other /* var other: nullable Object */;
1278 short int var11 /* : Bool */;
1279 short int var12 /* : Bool */;
1280 val* var13 /* : String */;
1281 val* var15 /* : String */;
1282 var1 = NEW_nit__parser_work__TextCollectorVisitor(&type_nit__parser_work__TextCollectorVisitor);
1283 {
1284 { /* Inline kernel#Object#init (var1) on <var1:TextCollectorVisitor> */
1285 RET_LABEL2:(void)0;
1286 }
1287 }
1288 var_v = var1;
1289 {
1290 nit___nit__Visitor___enter_visit(var_v, self); /* Direct call parser_nodes#Visitor#enter_visit on <var_v:TextCollectorVisitor>*/
1291 }
1292 {
1293 { /* Inline parser_work#TextCollectorVisitor#text (var_v) on <var_v:TextCollectorVisitor> */
1294 var5 = var_v->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val; /* _text on <var_v:TextCollectorVisitor> */
1295 if (unlikely(var5 == NULL)) {
1296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1297 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 281);
1298 fatal_exit(1);
1299 }
1300 var3 = var5;
1301 RET_LABEL4:(void)0;
1302 }
1303 }
1304 if (likely(varonce!=NULL)) {
1305 var6 = varonce;
1306 } else {
1307 var7 = "";
1308 var8 = standard___standard__NativeString___to_s_with_length(var7, 0l);
1309 var6 = var8;
1310 varonce = var6;
1311 }
1312 {
1313 { /* Inline kernel#Object#!= (var3,var6) on <var3:String> */
1314 var_other = var6;
1315 {
1316 var11 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var3, var_other); /* == on <var3:String>*/
1317 }
1318 var12 = !var11;
1319 var9 = var12;
1320 goto RET_LABEL10;
1321 RET_LABEL10:(void)0;
1322 }
1323 }
1324 if (unlikely(!var9)) {
1325 PRINT_ERROR("Runtime error: %s", "Assert failed");
1326 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 171);
1327 fatal_exit(1);
1328 }
1329 {
1330 { /* Inline parser_work#TextCollectorVisitor#text (var_v) on <var_v:TextCollectorVisitor> */
1331 var15 = var_v->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val; /* _text on <var_v:TextCollectorVisitor> */
1332 if (unlikely(var15 == NULL)) {
1333 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
1334 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 281);
1335 fatal_exit(1);
1336 }
1337 var13 = var15;
1338 RET_LABEL14:(void)0;
1339 }
1340 }
1341 var = var13;
1342 goto RET_LABEL;
1343 RET_LABEL:;
1344 return var;
1345 }
1346 /* method parser_work#ComputeProdLocationVisitor#token for (self: ComputeProdLocationVisitor): nullable Token */
1347 val* nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___token(val* self) {
1348 val* var /* : nullable Token */;
1349 val* var1 /* : nullable Token */;
1350 var1 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___token].val; /* _token on <self:ComputeProdLocationVisitor> */
1351 var = var1;
1352 RET_LABEL:;
1353 return var;
1354 }
1355 /* method parser_work#ComputeProdLocationVisitor#token= for (self: ComputeProdLocationVisitor, nullable Token) */
1356 void nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___token_61d(val* self, val* p0) {
1357 self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___token].val = p0; /* _token on <self:ComputeProdLocationVisitor> */
1358 RET_LABEL:;
1359 }
1360 /* method parser_work#ComputeProdLocationVisitor#last_token for (self: ComputeProdLocationVisitor): nullable Token */
1361 val* nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___last_token(val* self) {
1362 val* var /* : nullable Token */;
1363 val* var1 /* : nullable Token */;
1364 var1 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___last_token].val; /* _last_token on <self:ComputeProdLocationVisitor> */
1365 var = var1;
1366 RET_LABEL:;
1367 return var;
1368 }
1369 /* method parser_work#ComputeProdLocationVisitor#visit for (self: ComputeProdLocationVisitor, ANode) */
1370 void nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) {
1371 val* var_n /* var n: ANode */;
1372 short int var /* : Bool */;
1373 int cltype;
1374 int idtype;
1375 short int var1 /* : Bool */;
1376 short int var2 /* : Bool */;
1377 val* var3 /* : nullable Token */;
1378 val* var5 /* : nullable Token */;
1379 val* var_cursor /* var cursor: nullable Token */;
1380 short int var6 /* : Bool */;
1381 val* var_other /* var other: nullable Object */;
1382 short int var8 /* : Bool */;
1383 short int var9 /* : Bool */;
1384 val* var10 /* : nullable Token */;
1385 val* var12 /* : nullable Token */;
1386 val* var_lt /* var lt: nullable Token */;
1387 short int var13 /* : Bool */;
1388 short int var14 /* : Bool */;
1389 short int var16 /* : Bool */;
1390 short int var17 /* : Bool */;
1391 val* var18 /* : Location */;
1392 val* var20 /* : Location */;
1393 long var21 /* : Int */;
1394 long var23 /* : Int */;
1395 long var_ltl /* var ltl: Int */;
1396 short int var24 /* : Bool */;
1397 short int var25 /* : Bool */;
1398 short int var26 /* : Bool */;
1399 short int var27 /* : Bool */;
1400 short int var29 /* : Bool */;
1401 short int var30 /* : Bool */;
1402 short int var_ /* var : Bool */;
1403 short int var31 /* : Bool */;
1404 short int var33 /* : Bool */;
1405 short int var34 /* : Bool */;
1406 short int var_35 /* var : Bool */;
1407 val* var36 /* : Location */;
1408 val* var38 /* : Location */;
1409 long var39 /* : Int */;
1410 long var41 /* : Int */;
1411 short int var42 /* : Bool */;
1412 short int var44 /* : Bool */;
1413 val* var46 /* : Array[Token] */;
1414 val* var47 /* : nullable Token */;
1415 val* var49 /* : nullable Token */;
1416 short int var50 /* : Bool */;
1417 short int var51 /* : Bool */;
1418 short int var52 /* : Bool */;
1419 short int var54 /* : Bool */;
1420 short int var55 /* : Bool */;
1421 short int var_56 /* var : Bool */;
1422 short int var57 /* : Bool */;
1423 short int var59 /* : Bool */;
1424 short int var60 /* : Bool */;
1425 val* var62 /* : Array[Token] */;
1426 val* var63 /* : nullable Token */;
1427 val* var65 /* : nullable Token */;
1428 val* var67 /* : nullable Token */;
1429 val* var69 /* : nullable Token */;
1430 val* var71 /* : Location */;
1431 val* var_loc /* var loc: Location */;
1432 val* var72 /* : Array[Prod] */;
1433 short int var73 /* : Bool */;
1434 short int var74 /* : Bool */;
1435 val* var75 /* : Array[Prod] */;
1436 val* var_76 /* var : Array[Prod] */;
1437 val* var77 /* : ArrayIterator[nullable Object] */;
1438 val* var_78 /* var : ArrayIterator[Prod] */;
1439 short int var79 /* : Bool */;
1440 val* var80 /* : nullable Object */;
1441 val* var_no /* var no: Prod */;
1442 val* var82 /* : Array[Prod] */;
1443 val* var83 /* : Array[Prod] */;
1444 short int var84 /* : Bool */;
1445 short int var85 /* : Bool */;
1446 val* var86 /* : Location */;
1447 val* var87 /* : nullable SourceFile */;
1448 val* var89 /* : nullable SourceFile */;
1449 long var90 /* : Int */;
1450 long var92 /* : Int */;
1451 long var93 /* : Int */;
1452 long var95 /* : Int */;
1453 long var96 /* : Int */;
1454 long var98 /* : Int */;
1455 long var99 /* : Int */;
1456 long var101 /* : Int */;
1457 val* var_loco /* var loco: Location */;
1458 val* var102 /* : Array[Prod] */;
1459 val* var_103 /* var : Array[Prod] */;
1460 val* var104 /* : ArrayIterator[nullable Object] */;
1461 val* var_105 /* var : ArrayIterator[Prod] */;
1462 short int var106 /* : Bool */;
1463 val* var107 /* : nullable Object */;
1464 val* var_no108 /* var no: Prod */;
1465 val* var111 /* : Array[Prod] */;
1466 short int var112 /* : Bool */;
1467 int cltype113;
1468 int idtype114;
1469 val* var115 /* : Array[Prod] */;
1470 val* var116 /* : nullable Location */;
1471 val* var_startl /* var startl: nullable Location */;
1472 short int var117 /* : Bool */;
1473 short int var118 /* : Bool */;
1474 short int var120 /* : Bool */;
1475 short int var121 /* : Bool */;
1476 val* var122 /* : nullable Token */;
1477 val* var123 /* : Location */;
1478 val* var125 /* : Location */;
1479 val* var_endl /* var endl: Location */;
1480 short int var126 /* : Bool */;
1481 val* var128 /* : Location */;
1482 val* var129 /* : nullable SourceFile */;
1483 val* var131 /* : nullable SourceFile */;
1484 long var132 /* : Int */;
1485 long var134 /* : Int */;
1486 long var135 /* : Int */;
1487 long var137 /* : Int */;
1488 long var138 /* : Int */;
1489 long var140 /* : Int */;
1490 long var141 /* : Int */;
1491 long var143 /* : Int */;
1492 val* var145 /* : Array[Prod] */;
1493 short int var146 /* : Bool */;
1494 short int var147 /* : Bool */;
1495 val* var148 /* : Location */;
1496 val* var149 /* : nullable SourceFile */;
1497 val* var151 /* : nullable SourceFile */;
1498 long var152 /* : Int */;
1499 long var154 /* : Int */;
1500 long var155 /* : Int */;
1501 long var157 /* : Int */;
1502 long var158 /* : Int */;
1503 long var160 /* : Int */;
1504 long var161 /* : Int */;
1505 long var163 /* : Int */;
1506 val* var_loc164 /* var loc: Location */;
1507 val* var165 /* : Array[Prod] */;
1508 val* var_166 /* var : Array[Prod] */;
1509 val* var167 /* : ArrayIterator[nullable Object] */;
1510 val* var_168 /* var : ArrayIterator[Prod] */;
1511 short int var169 /* : Bool */;
1512 val* var170 /* : nullable Object */;
1513 val* var_no171 /* var no: Prod */;
1514 val* var174 /* : Array[Prod] */;
1515 val* var175 /* : Array[Prod] */;
1516 var_n = p0;
1517 /* <var_n:ANode> isa Token */
1518 cltype = type_nit__Token.color;
1519 idtype = type_nit__Token.id;
1520 if(cltype >= var_n->type->table_size) {
1521 var = 0;
1522 } else {
1523 var = var_n->type->type_table[cltype] == idtype;
1524 }
1525 if (var){
1526 var1 = var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val != NULL; /* _location on <var_n:ANode(Token)> */
1527 var2 = !var1;
1528 if (var2){
1529 goto RET_LABEL;
1530 } else {
1531 }
1532 {
1533 { /* Inline parser_work#ComputeProdLocationVisitor#token (self) on <self:ComputeProdLocationVisitor> */
1534 var5 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___token].val; /* _token on <self:ComputeProdLocationVisitor> */
1535 var3 = var5;
1536 RET_LABEL4:(void)0;
1537 }
1538 }
1539 var_cursor = var3;
1540 {
1541 { /* Inline kernel#Object#!= (var_n,var_cursor) on <var_n:ANode(Token)> */
1542 var_other = var_cursor;
1543 {
1544 var8 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other); /* == on <var_n:ANode(Token)>*/
1545 }
1546 var9 = !var8;
1547 var6 = var9;
1548 goto RET_LABEL7;
1549 RET_LABEL7:(void)0;
1550 }
1551 }
1552 if (var6){
1553 {
1554 { /* Inline parser_work#ComputeProdLocationVisitor#last_token (self) on <self:ComputeProdLocationVisitor> */
1555 var12 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___last_token].val; /* _last_token on <self:ComputeProdLocationVisitor> */
1556 var10 = var12;
1557 RET_LABEL11:(void)0;
1558 }
1559 }
1560 var_lt = var10;
1561 if (var_lt == NULL) {
1562 var13 = 0; /* is null */
1563 } else {
1564 var13 = 1; /* arg is null and recv is not */
1565 }
1566 if (0) {
1567 { /* Inline kernel#Object#!= (var_lt,((val*)NULL)) on <var_lt:nullable Token> */
1568 var_other = ((val*)NULL);
1569 {
1570 var16 = ((short int(*)(val* self, val* p0))(var_lt->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_lt, var_other); /* == on <var_lt:nullable Token(Token)>*/
1571 }
1572 var17 = !var16;
1573 var14 = var17;
1574 goto RET_LABEL15;
1575 RET_LABEL15:(void)0;
1576 }
1577 var13 = var14;
1578 }
1579 if (var13){
1580 {
1581 { /* Inline parser_nodes#ANode#location (var_lt) on <var_lt:nullable Token(Token)> */
1582 var20 = var_lt->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_lt:nullable Token(Token)> */
1583 if (unlikely(var20 == NULL)) {
1584 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1585 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
1586 fatal_exit(1);
1587 }
1588 var18 = var20;
1589 RET_LABEL19:(void)0;
1590 }
1591 }
1592 {
1593 { /* Inline location#Location#line_end (var18) on <var18:Location> */
1594 var23 = var18->attrs[COLOR_nit__location__Location___line_end].l; /* _line_end on <var18:Location> */
1595 var21 = var23;
1596 RET_LABEL22:(void)0;
1597 }
1598 }
1599 var_ltl = var21;
1600 for(;;) {
1601 if (var_cursor == NULL) {
1602 var26 = 0; /* is null */
1603 } else {
1604 var26 = 1; /* arg is null and recv is not */
1605 }
1606 if (0) {
1607 { /* Inline kernel#Object#!= (var_cursor,((val*)NULL)) on <var_cursor:nullable Token> */
1608 var_other = ((val*)NULL);
1609 {
1610 var29 = ((short int(*)(val* self, val* p0))(var_cursor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cursor, var_other); /* == on <var_cursor:nullable Token(Token)>*/
1611 }
1612 var30 = !var29;
1613 var27 = var30;
1614 goto RET_LABEL28;
1615 RET_LABEL28:(void)0;
1616 }
1617 var26 = var27;
1618 }
1619 var_ = var26;
1620 if (var26){
1621 {
1622 { /* Inline kernel#Object#!= (var_cursor,var_n) on <var_cursor:nullable Token(Token)> */
1623 var_other = var_n;
1624 {
1625 var33 = ((short int(*)(val* self, val* p0))(var_cursor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cursor, var_other); /* == on <var_cursor:nullable Token(Token)>*/
1626 }
1627 var34 = !var33;
1628 var31 = var34;
1629 goto RET_LABEL32;
1630 RET_LABEL32:(void)0;
1631 }
1632 }
1633 var25 = var31;
1634 } else {
1635 var25 = var_;
1636 }
1637 var_35 = var25;
1638 if (var25){
1639 {
1640 { /* Inline parser_nodes#ANode#location (var_cursor) on <var_cursor:nullable Token(Token)> */
1641 var38 = var_cursor->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_cursor:nullable Token(Token)> */
1642 if (unlikely(var38 == NULL)) {
1643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1644 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
1645 fatal_exit(1);
1646 }
1647 var36 = var38;
1648 RET_LABEL37:(void)0;
1649 }
1650 }
1651 {
1652 { /* Inline location#Location#line_start (var36) on <var36:Location> */
1653 var41 = var36->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var36:Location> */
1654 var39 = var41;
1655 RET_LABEL40:(void)0;
1656 }
1657 }
1658 {
1659 { /* Inline kernel#Int#== (var_ltl,var39) on <var_ltl:Int> */
1660 var44 = var_ltl == var39;
1661 var42 = var44;
1662 goto RET_LABEL43;
1663 RET_LABEL43:(void)0;
1664 }
1665 }
1666 var24 = var42;
1667 } else {
1668 var24 = var_35;
1669 }
1670 if (var24){
1671 {
1672 { /* Inline parser_nodes#Token#is_loose= (var_cursor,1) on <var_cursor:nullable Token(Token)> */
1673 var_cursor->attrs[COLOR_nit__parser_nodes__Token___is_loose].s = 1; /* _is_loose on <var_cursor:nullable Token(Token)> */
1674 RET_LABEL45:(void)0;
1675 }
1676 }
1677 {
1678 var46 = nit___nit__Token___next_looses(var_lt);
1679 }
1680 {
1681 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var46, var_cursor); /* Direct call array#Array#add on <var46:Array[Token]>*/
1682 }
1683 {
1684 { /* Inline parser_nodes#Token#next_token (var_cursor) on <var_cursor:nullable Token(Token)> */
1685 var49 = var_cursor->attrs[COLOR_nit__parser_nodes__Token___next_token].val; /* _next_token on <var_cursor:nullable Token(Token)> */
1686 var47 = var49;
1687 RET_LABEL48:(void)0;
1688 }
1689 }
1690 var_cursor = var47;
1691 } else {
1692 goto BREAK_label;
1693 }
1694 }
1695 BREAK_label: (void)0;
1696 } else {
1697 }
1698 for(;;) {
1699 if (var_cursor == NULL) {
1700 var51 = 0; /* is null */
1701 } else {
1702 var51 = 1; /* arg is null and recv is not */
1703 }
1704 if (0) {
1705 { /* Inline kernel#Object#!= (var_cursor,((val*)NULL)) on <var_cursor:nullable Token> */
1706 var_other = ((val*)NULL);
1707 {
1708 var54 = ((short int(*)(val* self, val* p0))(var_cursor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cursor, var_other); /* == on <var_cursor:nullable Token(Token)>*/
1709 }
1710 var55 = !var54;
1711 var52 = var55;
1712 goto RET_LABEL53;
1713 RET_LABEL53:(void)0;
1714 }
1715 var51 = var52;
1716 }
1717 var_56 = var51;
1718 if (var51){
1719 {
1720 { /* Inline kernel#Object#!= (var_cursor,var_n) on <var_cursor:nullable Token(Token)> */
1721 var_other = var_n;
1722 {
1723 var59 = ((short int(*)(val* self, val* p0))(var_cursor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cursor, var_other); /* == on <var_cursor:nullable Token(Token)>*/
1724 }
1725 var60 = !var59;
1726 var57 = var60;
1727 goto RET_LABEL58;
1728 RET_LABEL58:(void)0;
1729 }
1730 }
1731 var50 = var57;
1732 } else {
1733 var50 = var_56;
1734 }
1735 if (var50){
1736 {
1737 { /* Inline parser_nodes#Token#is_loose= (var_cursor,1) on <var_cursor:nullable Token(Token)> */
1738 var_cursor->attrs[COLOR_nit__parser_nodes__Token___is_loose].s = 1; /* _is_loose on <var_cursor:nullable Token(Token)> */
1739 RET_LABEL61:(void)0;
1740 }
1741 }
1742 {
1743 var62 = nit___nit__Token___prev_looses(var_n);
1744 }
1745 {
1746 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var62, var_cursor); /* Direct call array#Array#add on <var62:Array[Token]>*/
1747 }
1748 {
1749 { /* Inline parser_nodes#Token#next_token (var_cursor) on <var_cursor:nullable Token(Token)> */
1750 var65 = var_cursor->attrs[COLOR_nit__parser_nodes__Token___next_token].val; /* _next_token on <var_cursor:nullable Token(Token)> */
1751 var63 = var65;
1752 RET_LABEL64:(void)0;
1753 }
1754 }
1755 var_cursor = var63;
1756 } else {
1757 goto BREAK_label66;
1758 }
1759 }
1760 BREAK_label66: (void)0;
1761 } else {
1762 }
1763 {
1764 { /* Inline parser_nodes#Token#next_token (var_n) on <var_n:ANode(Token)> */
1765 var69 = var_n->attrs[COLOR_nit__parser_nodes__Token___next_token].val; /* _next_token on <var_n:ANode(Token)> */
1766 var67 = var69;
1767 RET_LABEL68:(void)0;
1768 }
1769 }
1770 {
1771 { /* Inline parser_work#ComputeProdLocationVisitor#token= (self,var67) on <self:ComputeProdLocationVisitor> */
1772 self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___token].val = var67; /* _token on <self:ComputeProdLocationVisitor> */
1773 RET_LABEL70:(void)0;
1774 }
1775 }
1776 var71 = var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_n:ANode(Token)> */
1777 if (unlikely(var71 == NULL)) {
1778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
1779 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 227);
1780 fatal_exit(1);
1781 }
1782 var_loc = var71;
1783 self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___last_token].val = var_n; /* _last_token on <self:ComputeProdLocationVisitor> */
1784 var72 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1785 if (unlikely(var72 == NULL)) {
1786 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1787 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 231);
1788 fatal_exit(1);
1789 }
1790 {
1791 var73 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var72);
1792 }
1793 var74 = !var73;
1794 if (var74){
1795 var75 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1796 if (unlikely(var75 == NULL)) {
1797 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1798 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 232);
1799 fatal_exit(1);
1800 }
1801 var_76 = var75;
1802 {
1803 var77 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_76);
1804 }
1805 var_78 = var77;
1806 for(;;) {
1807 {
1808 var79 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_78);
1809 }
1810 if (var79){
1811 {
1812 var80 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_78);
1813 }
1814 var_no = var80;
1815 var_no->attrs[COLOR_nit__parser_work__Prod___first_location].val = var_loc; /* _first_location on <var_no:Prod> */
1816 {
1817 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_78); /* Direct call array#ArrayIterator#next on <var_78:ArrayIterator[Prod]>*/
1818 }
1819 } else {
1820 goto BREAK_label81;
1821 }
1822 }
1823 BREAK_label81: (void)0;
1824 {
1825 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_78); /* Direct call array#ArrayIterator#finish on <var_78:ArrayIterator[Prod]>*/
1826 }
1827 var82 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1828 if (unlikely(var82 == NULL)) {
1829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1830 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 235);
1831 fatal_exit(1);
1832 }
1833 {
1834 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var82); /* Direct call array#AbstractArray#clear on <var82:Array[Prod]>*/
1835 }
1836 } else {
1837 }
1838 var83 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1839 if (unlikely(var83 == NULL)) {
1840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1841 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 239);
1842 fatal_exit(1);
1843 }
1844 {
1845 var84 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var83);
1846 }
1847 var85 = !var84;
1848 if (var85){
1849 var86 = NEW_nit__Location(&type_nit__Location);
1850 {
1851 { /* Inline location#Location#file (var_loc) on <var_loc:Location> */
1852 var89 = var_loc->attrs[COLOR_nit__location__Location___file].val; /* _file on <var_loc:Location> */
1853 var87 = var89;
1854 RET_LABEL88:(void)0;
1855 }
1856 }
1857 {
1858 { /* Inline location#Location#line_start (var_loc) on <var_loc:Location> */
1859 var92 = var_loc->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var_loc:Location> */
1860 var90 = var92;
1861 RET_LABEL91:(void)0;
1862 }
1863 }
1864 {
1865 { /* Inline location#Location#line_start (var_loc) on <var_loc:Location> */
1866 var95 = var_loc->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var_loc:Location> */
1867 var93 = var95;
1868 RET_LABEL94:(void)0;
1869 }
1870 }
1871 {
1872 { /* Inline location#Location#column_start (var_loc) on <var_loc:Location> */
1873 var98 = var_loc->attrs[COLOR_nit__location__Location___column_start].l; /* _column_start on <var_loc:Location> */
1874 var96 = var98;
1875 RET_LABEL97:(void)0;
1876 }
1877 }
1878 {
1879 { /* Inline location#Location#column_start (var_loc) on <var_loc:Location> */
1880 var101 = var_loc->attrs[COLOR_nit__location__Location___column_start].l; /* _column_start on <var_loc:Location> */
1881 var99 = var101;
1882 RET_LABEL100:(void)0;
1883 }
1884 }
1885 {
1886 ((void(*)(val* self, val* p0))(var86->class->vft[COLOR_nit__location__Location__file_61d]))(var86, var87); /* file= on <var86:Location>*/
1887 }
1888 {
1889 ((void(*)(val* self, long p0))(var86->class->vft[COLOR_nit__location__Location__line_start_61d]))(var86, var90); /* line_start= on <var86:Location>*/
1890 }
1891 {
1892 ((void(*)(val* self, long p0))(var86->class->vft[COLOR_nit__location__Location__line_end_61d]))(var86, var93); /* line_end= on <var86:Location>*/
1893 }
1894 {
1895 ((void(*)(val* self, long p0))(var86->class->vft[COLOR_nit__location__Location__column_start_61d]))(var86, var96); /* column_start= on <var86:Location>*/
1896 }
1897 {
1898 ((void(*)(val* self, long p0))(var86->class->vft[COLOR_nit__location__Location__column_end_61d]))(var86, var99); /* column_end= on <var86:Location>*/
1899 }
1900 {
1901 ((void(*)(val* self))(var86->class->vft[COLOR_standard__kernel__Object__init]))(var86); /* init on <var86:Location>*/
1902 }
1903 var_loco = var86;
1904 var102 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1905 if (unlikely(var102 == NULL)) {
1906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1907 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 241);
1908 fatal_exit(1);
1909 }
1910 var_103 = var102;
1911 {
1912 var104 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_103);
1913 }
1914 var_105 = var104;
1915 for(;;) {
1916 {
1917 var106 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_105);
1918 }
1919 if (var106){
1920 {
1921 var107 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_105);
1922 }
1923 var_no108 = var107;
1924 {
1925 { /* Inline parser_nodes#ANode#location= (var_no108,var_loco) on <var_no108:Prod> */
1926 var_no108->attrs[COLOR_nit__parser_nodes__ANode___location].val = var_loco; /* _location on <var_no108:Prod> */
1927 RET_LABEL109:(void)0;
1928 }
1929 }
1930 {
1931 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_105); /* Direct call array#ArrayIterator#next on <var_105:ArrayIterator[Prod]>*/
1932 }
1933 } else {
1934 goto BREAK_label110;
1935 }
1936 }
1937 BREAK_label110: (void)0;
1938 {
1939 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_105); /* Direct call array#ArrayIterator#finish on <var_105:ArrayIterator[Prod]>*/
1940 }
1941 var111 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
1942 if (unlikely(var111 == NULL)) {
1943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
1944 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 244);
1945 fatal_exit(1);
1946 }
1947 {
1948 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var111); /* Direct call array#AbstractArray#clear on <var111:Array[Prod]>*/
1949 }
1950 } else {
1951 }
1952 } else {
1953 /* <var_n:ANode> isa Prod */
1954 cltype113 = type_nit__Prod.color;
1955 idtype114 = type_nit__Prod.id;
1956 if(cltype113 >= var_n->type->table_size) {
1957 var112 = 0;
1958 } else {
1959 var112 = var_n->type->type_table[cltype113] == idtype114;
1960 }
1961 if (unlikely(!var112)) {
1962 PRINT_ERROR("Runtime error: %s", "Assert failed");
1963 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 247);
1964 fatal_exit(1);
1965 }
1966 var115 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_first_prods].val; /* _need_first_prods on <self:ComputeProdLocationVisitor> */
1967 if (unlikely(var115 == NULL)) {
1968 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_first_prods");
1969 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 248);
1970 fatal_exit(1);
1971 }
1972 {
1973 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var115, var_n); /* Direct call array#Array#add on <var115:Array[Prod]>*/
1974 }
1975 {
1976 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode(Prod)>*/
1977 }
1978 var116 = var_n->attrs[COLOR_nit__parser_work__Prod___first_location].val; /* _first_location on <var_n:ANode(Prod)> */
1979 var_startl = var116;
1980 if (var_startl == NULL) {
1981 var117 = 0; /* is null */
1982 } else {
1983 var117 = 1; /* arg is null and recv is not */
1984 }
1985 if (0) {
1986 { /* Inline kernel#Object#!= (var_startl,((val*)NULL)) on <var_startl:nullable Location> */
1987 var_other = ((val*)NULL);
1988 {
1989 var120 = ((short int(*)(val* self, val* p0))(var_startl->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_startl, var_other); /* == on <var_startl:nullable Location(Location)>*/
1990 }
1991 var121 = !var120;
1992 var118 = var121;
1993 goto RET_LABEL119;
1994 RET_LABEL119:(void)0;
1995 }
1996 var117 = var118;
1997 }
1998 if (var117){
1999 var122 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___last_token].val; /* _last_token on <self:ComputeProdLocationVisitor> */
2000 if (var122 == NULL) {
2001 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2002 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 255);
2003 fatal_exit(1);
2004 } else {
2005 { /* Inline parser_nodes#ANode#location (var122) on <var122:nullable Token> */
2006 if (unlikely(var122 == NULL)) {
2007 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2008 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
2009 fatal_exit(1);
2010 }
2011 var125 = var122->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var122:nullable Token> */
2012 if (unlikely(var125 == NULL)) {
2013 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
2014 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
2015 fatal_exit(1);
2016 }
2017 var123 = var125;
2018 RET_LABEL124:(void)0;
2019 }
2020 }
2021 var_endl = var123;
2022 {
2023 var126 = nit___nit__Location___standard__kernel__Object___61d_61d(var_startl, var_endl);
2024 }
2025 if (var126){
2026 {
2027 { /* Inline parser_nodes#ANode#location= (var_n,var_startl) on <var_n:ANode(Prod)> */
2028 var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val = var_startl; /* _location on <var_n:ANode(Prod)> */
2029 RET_LABEL127:(void)0;
2030 }
2031 }
2032 } else {
2033 var128 = NEW_nit__Location(&type_nit__Location);
2034 {
2035 { /* Inline location#Location#file (var_startl) on <var_startl:nullable Location(Location)> */
2036 var131 = var_startl->attrs[COLOR_nit__location__Location___file].val; /* _file on <var_startl:nullable Location(Location)> */
2037 var129 = var131;
2038 RET_LABEL130:(void)0;
2039 }
2040 }
2041 {
2042 { /* Inline location#Location#line_start (var_startl) on <var_startl:nullable Location(Location)> */
2043 var134 = var_startl->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var_startl:nullable Location(Location)> */
2044 var132 = var134;
2045 RET_LABEL133:(void)0;
2046 }
2047 }
2048 {
2049 { /* Inline location#Location#line_end (var_endl) on <var_endl:Location> */
2050 var137 = var_endl->attrs[COLOR_nit__location__Location___line_end].l; /* _line_end on <var_endl:Location> */
2051 var135 = var137;
2052 RET_LABEL136:(void)0;
2053 }
2054 }
2055 {
2056 { /* Inline location#Location#column_start (var_startl) on <var_startl:nullable Location(Location)> */
2057 var140 = var_startl->attrs[COLOR_nit__location__Location___column_start].l; /* _column_start on <var_startl:nullable Location(Location)> */
2058 var138 = var140;
2059 RET_LABEL139:(void)0;
2060 }
2061 }
2062 {
2063 { /* Inline location#Location#column_end (var_endl) on <var_endl:Location> */
2064 var143 = var_endl->attrs[COLOR_nit__location__Location___column_end].l; /* _column_end on <var_endl:Location> */
2065 var141 = var143;
2066 RET_LABEL142:(void)0;
2067 }
2068 }
2069 {
2070 ((void(*)(val* self, val* p0))(var128->class->vft[COLOR_nit__location__Location__file_61d]))(var128, var129); /* file= on <var128:Location>*/
2071 }
2072 {
2073 ((void(*)(val* self, long p0))(var128->class->vft[COLOR_nit__location__Location__line_start_61d]))(var128, var132); /* line_start= on <var128:Location>*/
2074 }
2075 {
2076 ((void(*)(val* self, long p0))(var128->class->vft[COLOR_nit__location__Location__line_end_61d]))(var128, var135); /* line_end= on <var128:Location>*/
2077 }
2078 {
2079 ((void(*)(val* self, long p0))(var128->class->vft[COLOR_nit__location__Location__column_start_61d]))(var128, var138); /* column_start= on <var128:Location>*/
2080 }
2081 {
2082 ((void(*)(val* self, long p0))(var128->class->vft[COLOR_nit__location__Location__column_end_61d]))(var128, var141); /* column_end= on <var128:Location>*/
2083 }
2084 {
2085 ((void(*)(val* self))(var128->class->vft[COLOR_standard__kernel__Object__init]))(var128); /* init on <var128:Location>*/
2086 }
2087 {
2088 { /* Inline parser_nodes#ANode#location= (var_n,var128) on <var_n:ANode(Prod)> */
2089 var_n->attrs[COLOR_nit__parser_nodes__ANode___location].val = var128; /* _location on <var_n:ANode(Prod)> */
2090 RET_LABEL144:(void)0;
2091 }
2092 }
2093 }
2094 var145 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
2095 if (unlikely(var145 == NULL)) {
2096 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
2097 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 263);
2098 fatal_exit(1);
2099 }
2100 {
2101 var146 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var145);
2102 }
2103 var147 = !var146;
2104 if (var147){
2105 var148 = NEW_nit__Location(&type_nit__Location);
2106 {
2107 { /* Inline location#Location#file (var_endl) on <var_endl:Location> */
2108 var151 = var_endl->attrs[COLOR_nit__location__Location___file].val; /* _file on <var_endl:Location> */
2109 var149 = var151;
2110 RET_LABEL150:(void)0;
2111 }
2112 }
2113 {
2114 { /* Inline location#Location#line_end (var_endl) on <var_endl:Location> */
2115 var154 = var_endl->attrs[COLOR_nit__location__Location___line_end].l; /* _line_end on <var_endl:Location> */
2116 var152 = var154;
2117 RET_LABEL153:(void)0;
2118 }
2119 }
2120 {
2121 { /* Inline location#Location#line_end (var_endl) on <var_endl:Location> */
2122 var157 = var_endl->attrs[COLOR_nit__location__Location___line_end].l; /* _line_end on <var_endl:Location> */
2123 var155 = var157;
2124 RET_LABEL156:(void)0;
2125 }
2126 }
2127 {
2128 { /* Inline location#Location#column_end (var_endl) on <var_endl:Location> */
2129 var160 = var_endl->attrs[COLOR_nit__location__Location___column_end].l; /* _column_end on <var_endl:Location> */
2130 var158 = var160;
2131 RET_LABEL159:(void)0;
2132 }
2133 }
2134 {
2135 { /* Inline location#Location#column_end (var_endl) on <var_endl:Location> */
2136 var163 = var_endl->attrs[COLOR_nit__location__Location___column_end].l; /* _column_end on <var_endl:Location> */
2137 var161 = var163;
2138 RET_LABEL162:(void)0;
2139 }
2140 }
2141 {
2142 ((void(*)(val* self, val* p0))(var148->class->vft[COLOR_nit__location__Location__file_61d]))(var148, var149); /* file= on <var148:Location>*/
2143 }
2144 {
2145 ((void(*)(val* self, long p0))(var148->class->vft[COLOR_nit__location__Location__line_start_61d]))(var148, var152); /* line_start= on <var148:Location>*/
2146 }
2147 {
2148 ((void(*)(val* self, long p0))(var148->class->vft[COLOR_nit__location__Location__line_end_61d]))(var148, var155); /* line_end= on <var148:Location>*/
2149 }
2150 {
2151 ((void(*)(val* self, long p0))(var148->class->vft[COLOR_nit__location__Location__column_start_61d]))(var148, var158); /* column_start= on <var148:Location>*/
2152 }
2153 {
2154 ((void(*)(val* self, long p0))(var148->class->vft[COLOR_nit__location__Location__column_end_61d]))(var148, var161); /* column_end= on <var148:Location>*/
2155 }
2156 {
2157 ((void(*)(val* self))(var148->class->vft[COLOR_standard__kernel__Object__init]))(var148); /* init on <var148:Location>*/
2158 }
2159 var_loc164 = var148;
2160 var165 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
2161 if (unlikely(var165 == NULL)) {
2162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
2163 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 265);
2164 fatal_exit(1);
2165 }
2166 var_166 = var165;
2167 {
2168 var167 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_166);
2169 }
2170 var_168 = var167;
2171 for(;;) {
2172 {
2173 var169 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_168);
2174 }
2175 if (var169){
2176 {
2177 var170 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_168);
2178 }
2179 var_no171 = var170;
2180 {
2181 { /* Inline parser_nodes#ANode#location= (var_no171,var_loc164) on <var_no171:Prod> */
2182 var_no171->attrs[COLOR_nit__parser_nodes__ANode___location].val = var_loc164; /* _location on <var_no171:Prod> */
2183 RET_LABEL172:(void)0;
2184 }
2185 }
2186 {
2187 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_168); /* Direct call array#ArrayIterator#next on <var_168:ArrayIterator[Prod]>*/
2188 }
2189 } else {
2190 goto BREAK_label173;
2191 }
2192 }
2193 BREAK_label173: (void)0;
2194 {
2195 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_168); /* Direct call array#ArrayIterator#finish on <var_168:ArrayIterator[Prod]>*/
2196 }
2197 var174 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
2198 if (unlikely(var174 == NULL)) {
2199 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
2200 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 269);
2201 fatal_exit(1);
2202 }
2203 {
2204 standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var174); /* Direct call array#AbstractArray#clear on <var174:Array[Prod]>*/
2205 }
2206 } else {
2207 }
2208 } else {
2209 var175 = self->attrs[COLOR_nit__parser_work__ComputeProdLocationVisitor___need_after_epsilons].val; /* _need_after_epsilons on <self:ComputeProdLocationVisitor> */
2210 if (unlikely(var175 == NULL)) {
2211 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _need_after_epsilons");
2212 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 273);
2213 fatal_exit(1);
2214 }
2215 {
2216 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var175, var_n); /* Direct call array#Array#add on <var175:Array[Prod]>*/
2217 }
2218 }
2219 }
2220 RET_LABEL:;
2221 }
2222 /* method parser_work#ComputeProdLocationVisitor#init for (self: ComputeProdLocationVisitor) */
2223 void nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___standard__kernel__Object__init(val* self) {
2224 {
2225 ((void(*)(val* self))(self->class->vft[COLOR_nit__parser_work___nit__parser_work__ComputeProdLocationVisitor___standard__kernel__Object__init]))(self); /* init on <self:ComputeProdLocationVisitor>*/
2226 }
2227 RET_LABEL:;
2228 }
2229 /* method parser_work#TextCollectorVisitor#text for (self: TextCollectorVisitor): String */
2230 val* nit__parser_work___nit__parser_work__TextCollectorVisitor___text(val* self) {
2231 val* var /* : String */;
2232 val* var1 /* : String */;
2233 var1 = self->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val; /* _text on <self:TextCollectorVisitor> */
2234 if (unlikely(var1 == NULL)) {
2235 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
2236 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 281);
2237 fatal_exit(1);
2238 }
2239 var = var1;
2240 RET_LABEL:;
2241 return var;
2242 }
2243 /* method parser_work#TextCollectorVisitor#text= for (self: TextCollectorVisitor, String) */
2244 void nit__parser_work___nit__parser_work__TextCollectorVisitor___text_61d(val* self, val* p0) {
2245 self->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val = p0; /* _text on <self:TextCollectorVisitor> */
2246 RET_LABEL:;
2247 }
2248 /* method parser_work#TextCollectorVisitor#visit for (self: TextCollectorVisitor, ANode) */
2249 void nit__parser_work___nit__parser_work__TextCollectorVisitor___nit__parser_nodes__Visitor__visit(val* self, val* p0) {
2250 val* var_n /* var n: ANode */;
2251 short int var /* : Bool */;
2252 int cltype;
2253 int idtype;
2254 val* var_ /* var : TextCollectorVisitor */;
2255 val* var1 /* : String */;
2256 val* var3 /* : String */;
2257 val* var4 /* : String */;
2258 val* var5 /* : String */;
2259 var_n = p0;
2260 /* <var_n:ANode> isa Token */
2261 cltype = type_nit__Token.color;
2262 idtype = type_nit__Token.id;
2263 if(cltype >= var_n->type->table_size) {
2264 var = 0;
2265 } else {
2266 var = var_n->type->type_table[cltype] == idtype;
2267 }
2268 if (var){
2269 var_ = self;
2270 {
2271 { /* Inline parser_work#TextCollectorVisitor#text (var_) on <var_:TextCollectorVisitor> */
2272 var3 = var_->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val; /* _text on <var_:TextCollectorVisitor> */
2273 if (unlikely(var3 == NULL)) {
2274 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _text");
2275 PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_work, 281);
2276 fatal_exit(1);
2277 }
2278 var1 = var3;
2279 RET_LABEL2:(void)0;
2280 }
2281 }
2282 {
2283 var4 = nit__lexer_work___Token___text(var_n);
2284 }
2285 {
2286 var5 = ((val*(*)(val* self, val* p0))(var1->class->vft[COLOR_standard__string__String___43d]))(var1, var4); /* + on <var1:String>*/
2287 }
2288 {
2289 { /* Inline parser_work#TextCollectorVisitor#text= (var_,var5) on <var_:TextCollectorVisitor> */
2290 var_->attrs[COLOR_nit__parser_work__TextCollectorVisitor___text].val = var5; /* _text on <var_:TextCollectorVisitor> */
2291 RET_LABEL6:(void)0;
2292 }
2293 }
2294 } else {
2295 }
2296 {
2297 ((void(*)(val* self, val* p0))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__visit_all]))(var_n, self); /* visit_all on <var_n:ANode>*/
2298 }
2299 RET_LABEL:;
2300 }
2301 /* method parser_work#ReduceAction#concat for (self: ReduceAction, Array[Object], Array[Object]): Array[Object] */
2302 val* nit__parser_work___nit__parser_work__ReduceAction___concat(val* self, val* p0, val* p1) {
2303 val* var /* : Array[Object] */;
2304 val* var_l1 /* var l1: Array[Object] */;
2305 val* var_l2 /* var l2: Array[Object] */;
2306 short int var1 /* : Bool */;
2307 var_l1 = p0;
2308 var_l2 = p1;
2309 {
2310 var1 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_l1);
2311 }
2312 if (var1){
2313 var = var_l2;
2314 goto RET_LABEL;
2315 } else {
2316 }
2317 {
2318 standard___standard__Sequence___append(var_l1, var_l2); /* Direct call abstract_collection#Sequence#append on <var_l1:Array[Object]>*/
2319 }
2320 var = var_l1;
2321 goto RET_LABEL;
2322 RET_LABEL:;
2323 return var;
2324 }
2325 /* method parser_work#ReduceAction#goto= for (self: ReduceAction, Int) */
2326 void nit__parser_work___nit__parser_work__ReduceAction___goto_61d(val* self, long p0) {
2327 self->attrs[COLOR_nit__parser_work__ReduceAction___goto].l = p0; /* _goto on <self:ReduceAction> */
2328 RET_LABEL:;
2329 }
2330 /* method parser_work#ReduceAction#init for (self: ReduceAction) */
2331 void nit__parser_work___nit__parser_work__ReduceAction___standard__kernel__Object__init(val* self) {
2332 {
2333 ((void(*)(val* self))(self->class->vft[COLOR_nit__parser_work___nit__parser_work__ReduceAction___standard__kernel__Object__init]))(self); /* init on <self:ReduceAction>*/
2334 }
2335 RET_LABEL:;
2336 }