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