use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / parser.sep.1.c
1 #include "parser.sep.0.h"
2 /* method parser#State#state for (self: State): Int */
3 long parser__State__state(val* self) {
4 long var /* : Int */;
5 long var1 /* : Int */;
6 var1 = self->attrs[COLOR_parser__State___state].l; /* _state on <self:State> */
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method parser#State#state for (self: Object): Int */
12 long VIRTUAL_parser__State__state(val* self) {
13 long var /* : Int */;
14 long var1 /* : Int */;
15 var1 = parser__State__state(self);
16 var = var1;
17 RET_LABEL:;
18 return var;
19 }
20 /* method parser#State#state= for (self: State, Int) */
21 void parser__State__state_61d(val* self, long p0) {
22 self->attrs[COLOR_parser__State___state].l = p0; /* _state on <self:State> */
23 RET_LABEL:;
24 }
25 /* method parser#State#state= for (self: Object, Int) */
26 void VIRTUAL_parser__State__state_61d(val* self, long p0) {
27 parser__State__state_61d(self, p0);
28 RET_LABEL:;
29 }
30 /* method parser#State#nodes for (self: State): nullable Object */
31 val* parser__State__nodes(val* self) {
32 val* var /* : nullable Object */;
33 val* var1 /* : nullable Object */;
34 var1 = self->attrs[COLOR_parser__State___nodes].val; /* _nodes on <self:State> */
35 var = var1;
36 RET_LABEL:;
37 return var;
38 }
39 /* method parser#State#nodes for (self: Object): nullable Object */
40 val* VIRTUAL_parser__State__nodes(val* self) {
41 val* var /* : nullable Object */;
42 val* var1 /* : nullable Object */;
43 var1 = parser__State__nodes(self);
44 var = var1;
45 RET_LABEL:;
46 return var;
47 }
48 /* method parser#State#nodes= for (self: State, nullable Object) */
49 void parser__State__nodes_61d(val* self, val* p0) {
50 self->attrs[COLOR_parser__State___nodes].val = p0; /* _nodes on <self:State> */
51 RET_LABEL:;
52 }
53 /* method parser#State#nodes= for (self: Object, nullable Object) */
54 void VIRTUAL_parser__State__nodes_61d(val* self, val* p0) {
55 parser__State__nodes_61d(self, p0);
56 RET_LABEL:;
57 }
58 /* method parser#State#init for (self: State, Int, nullable Object) */
59 void parser__State__init(val* self, long p0, val* p1) {
60 long var_state /* var state: Int */;
61 val* var_nodes /* var nodes: nullable Object */;
62 var_state = p0;
63 var_nodes = p1;
64 self->attrs[COLOR_parser__State___state].l = var_state; /* _state on <self:State> */
65 self->attrs[COLOR_parser__State___nodes].val = var_nodes; /* _nodes on <self:State> */
66 RET_LABEL:;
67 }
68 /* method parser#State#init for (self: Object, Int, nullable Object) */
69 void VIRTUAL_parser__State__init(val* self, long p0, val* p1) {
70 parser__State__init(self, p0, p1);
71 RET_LABEL:;
72 }
73 /* method parser#Parser#init for (self: Parser, Lexer) */
74 void parser__Parser__init(val* self, val* p0) {
75 val* var_lexer /* var lexer: Lexer */;
76 val* var /* : Array[State] */;
77 long var1 /* : Int */;
78 long var2 /* : Int */;
79 long var4 /* : Int */;
80 var_lexer = p0;
81 self->attrs[COLOR_parser__Parser___lexer].val = var_lexer; /* _lexer on <self:Parser> */
82 var = NEW_array__Array(&type_array__Arrayparser__State);
83 ((void (*)(val*))(var->class->vft[COLOR_array__Array__init]))(var) /* init on <var:Array[State]>*/;
84 CHECK_NEW_array__Array(var);
85 self->attrs[COLOR_parser__Parser___stack].val = var; /* _stack on <self:Parser> */
86 var1 = 1;
87 { /* Inline kernel#Int#unary - (var1) */
88 var4 = -var1;
89 var2 = var4;
90 goto RET_LABEL3;
91 RET_LABEL3:(void)0;
92 }
93 self->attrs[COLOR_parser__Parser___stack_pos].l = var2; /* _stack_pos on <self:Parser> */
94 ((void (*)(val*))(self->class->vft[COLOR_parser__Parser__build_reduce_table]))(self) /* build_reduce_table on <self:Parser>*/;
95 RET_LABEL:;
96 }
97 /* method parser#Parser#init for (self: Object, Lexer) */
98 void VIRTUAL_parser__Parser__init(val* self, val* p0) {
99 parser__Parser__init(self, p0);
100 RET_LABEL:;
101 }
102 /* method parser#Parser#go_to for (self: Parser, Int): Int */
103 long parser__Parser__go_to(val* self, long p0) {
104 long var /* : Int */;
105 long var_index /* var index: Int */;
106 long var1 /* : Int */;
107 long var_state /* var state: Int */;
108 long var2 /* : Int */;
109 long var_low /* var low: Int */;
110 long var3 /* : Int */;
111 long var4 /* : Int */;
112 long var5 /* : Int */;
113 long var6 /* : Int */;
114 long var8 /* : Int */;
115 long var_high /* var high: Int */;
116 short int var9 /* : Bool */;
117 short int var11 /* : Bool */;
118 int cltype;
119 int idtype;
120 short int var12 /* : Bool */;
121 long var13 /* : Int */;
122 long var15 /* : Int */;
123 long var16 /* : Int */;
124 long var17 /* : Int */;
125 long var19 /* : Int */;
126 long var_middle /* var middle: Int */;
127 long var20 /* : Int */;
128 long var21 /* : Int */;
129 long var23 /* : Int */;
130 long var24 /* : Int */;
131 long var25 /* : Int */;
132 long var27 /* : Int */;
133 long var_subindex /* var subindex: Int */;
134 long var28 /* : Int */;
135 long var_goal /* var goal: Int */;
136 short int var29 /* : Bool */;
137 short int var31 /* : Bool */;
138 int cltype32;
139 int idtype33;
140 short int var34 /* : Bool */;
141 long var35 /* : Int */;
142 long var36 /* : Int */;
143 long var38 /* : Int */;
144 short int var39 /* : Bool */;
145 short int var41 /* : Bool */;
146 int cltype42;
147 int idtype43;
148 short int var44 /* : Bool */;
149 long var45 /* : Int */;
150 long var46 /* : Int */;
151 long var48 /* : Int */;
152 long var49 /* : Int */;
153 long var50 /* : Int */;
154 long var52 /* : Int */;
155 long var53 /* : Int */;
156 long var54 /* : Int */;
157 long var55 /* : Int */;
158 var_index = p0;
159 var1 = ((long (*)(val*))(self->class->vft[COLOR_parser__Parser__state]))(self) /* state on <self:Parser>*/;
160 var_state = var1;
161 var2 = 1;
162 var_low = var2;
163 var3 = 0;
164 var4 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_goto]))(self, var_index, var3) /* parser_goto on <self:Parser>*/;
165 var5 = 1;
166 { /* Inline kernel#Int#- (var4,var5) */
167 var8 = var4 - var5;
168 var6 = var8;
169 goto RET_LABEL7;
170 RET_LABEL7:(void)0;
171 }
172 var_high = var6;
173 for(;;) {
174 { /* Inline kernel#Int#<= (var_low,var_high) */
175 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
176 /* <var_high:Int> isa OTHER */
177 var11 = 1; /* easy <var_high:Int> isa OTHER*/
178 if (!var11) {
179 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
180 exit(1);
181 }
182 var12 = var_low <= var_high;
183 var9 = var12;
184 goto RET_LABEL10;
185 RET_LABEL10:(void)0;
186 }
187 if (!var9) break;
188 { /* Inline kernel#Int#+ (var_low,var_high) */
189 var15 = var_low + var_high;
190 var13 = var15;
191 goto RET_LABEL14;
192 RET_LABEL14:(void)0;
193 }
194 var16 = 2;
195 { /* Inline kernel#Int#/ (var13,var16) */
196 var19 = var13 / var16;
197 var17 = var19;
198 goto RET_LABEL18;
199 RET_LABEL18:(void)0;
200 }
201 var_middle = var17;
202 var20 = 2;
203 { /* Inline kernel#Int#* (var_middle,var20) */
204 var23 = var_middle * var20;
205 var21 = var23;
206 goto RET_LABEL22;
207 RET_LABEL22:(void)0;
208 }
209 var24 = 1;
210 { /* Inline kernel#Int#+ (var21,var24) */
211 var27 = var21 + var24;
212 var25 = var27;
213 goto RET_LABEL26;
214 RET_LABEL26:(void)0;
215 }
216 var_subindex = var25;
217 var28 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_goto]))(self, var_index, var_subindex) /* parser_goto on <self:Parser>*/;
218 var_goal = var28;
219 { /* Inline kernel#Int#< (var_state,var_goal) */
220 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
221 /* <var_goal:Int> isa OTHER */
222 var31 = 1; /* easy <var_goal:Int> isa OTHER*/
223 if (!var31) {
224 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
225 exit(1);
226 }
227 var34 = var_state < var_goal;
228 var29 = var34;
229 goto RET_LABEL30;
230 RET_LABEL30:(void)0;
231 }
232 if (var29){
233 var35 = 1;
234 { /* Inline kernel#Int#- (var_middle,var35) */
235 var38 = var_middle - var35;
236 var36 = var38;
237 goto RET_LABEL37;
238 RET_LABEL37:(void)0;
239 }
240 var_high = var36;
241 } else {
242 { /* Inline kernel#Int#> (var_state,var_goal) */
243 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
244 /* <var_goal:Int> isa OTHER */
245 var41 = 1; /* easy <var_goal:Int> isa OTHER*/
246 if (!var41) {
247 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
248 exit(1);
249 }
250 var44 = var_state > var_goal;
251 var39 = var44;
252 goto RET_LABEL40;
253 RET_LABEL40:(void)0;
254 }
255 if (var39){
256 var45 = 1;
257 { /* Inline kernel#Int#+ (var_middle,var45) */
258 var48 = var_middle + var45;
259 var46 = var48;
260 goto RET_LABEL47;
261 RET_LABEL47:(void)0;
262 }
263 var_low = var46;
264 } else {
265 var49 = 1;
266 { /* Inline kernel#Int#+ (var_subindex,var49) */
267 var52 = var_subindex + var49;
268 var50 = var52;
269 goto RET_LABEL51;
270 RET_LABEL51:(void)0;
271 }
272 var53 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_goto]))(self, var_index, var50) /* parser_goto on <self:Parser>*/;
273 var = var53;
274 goto RET_LABEL;
275 }
276 }
277 CONTINUE_label: (void)0;
278 }
279 BREAK_label: (void)0;
280 var54 = 2;
281 var55 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_goto]))(self, var_index, var54) /* parser_goto on <self:Parser>*/;
282 var = var55;
283 goto RET_LABEL;
284 RET_LABEL:;
285 return var;
286 }
287 /* method parser#Parser#go_to for (self: Object, Int): Int */
288 long VIRTUAL_parser__Parser__go_to(val* self, long p0) {
289 long var /* : Int */;
290 long var1 /* : Int */;
291 var1 = parser__Parser__go_to(self, p0);
292 var = var1;
293 RET_LABEL:;
294 return var;
295 }
296 /* method parser#Parser#push for (self: Parser, Int, nullable Object) */
297 void parser__Parser__push(val* self, long p0, val* p1) {
298 long var_numstate /* var numstate: Int */;
299 val* var_list_node /* var list_node: nullable Object */;
300 long var /* : Int */;
301 long var1 /* : Int */;
302 long var2 /* : Int */;
303 long var4 /* : Int */;
304 long var_pos /* var pos: Int */;
305 val* var5 /* : Array[State] */;
306 long var6 /* : Int */;
307 short int var7 /* : Bool */;
308 short int var9 /* : Bool */;
309 int cltype;
310 int idtype;
311 short int var10 /* : Bool */;
312 val* var11 /* : Array[State] */;
313 val* var12 /* : nullable Object */;
314 val* var_state /* var state: State */;
315 val* var13 /* : Array[State] */;
316 val* var14 /* : State */;
317 var_numstate = p0;
318 var_list_node = p1;
319 var = self->attrs[COLOR_parser__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
320 var1 = 1;
321 { /* Inline kernel#Int#+ (var,var1) */
322 var4 = var + var1;
323 var2 = var4;
324 goto RET_LABEL3;
325 RET_LABEL3:(void)0;
326 }
327 var_pos = var2;
328 self->attrs[COLOR_parser__Parser___stack_pos].l = var_pos; /* _stack_pos on <self:Parser> */
329 var5 = self->attrs[COLOR_parser__Parser___stack].val; /* _stack on <self:Parser> */
330 if (var5 == NULL) {
331 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _stack", "src/parser/parser.nit", 72);
332 exit(1);
333 }
334 var6 = ((long (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__length]))(var5) /* length on <var5:Array[State]>*/;
335 { /* Inline kernel#Int#< (var_pos,var6) */
336 /* Covariant cast for argument 0 (i) <var6:Int> isa OTHER */
337 /* <var6:Int> isa OTHER */
338 var9 = 1; /* easy <var6:Int> isa OTHER*/
339 if (!var9) {
340 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
341 exit(1);
342 }
343 var10 = var_pos < var6;
344 var7 = var10;
345 goto RET_LABEL8;
346 RET_LABEL8:(void)0;
347 }
348 if (var7){
349 var11 = self->attrs[COLOR_parser__Parser___stack].val; /* _stack on <self:Parser> */
350 if (var11 == NULL) {
351 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _stack", "src/parser/parser.nit", 73);
352 exit(1);
353 }
354 var12 = ((val* (*)(val*, long))(var11->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var11, var_pos) /* [] on <var11:Array[State]>*/;
355 var_state = var12;
356 ((void (*)(val*, long))(var_state->class->vft[COLOR_parser__State__state_61d]))(var_state, var_numstate) /* state= on <var_state:State>*/;
357 ((void (*)(val*, val*))(var_state->class->vft[COLOR_parser__State__nodes_61d]))(var_state, var_list_node) /* nodes= on <var_state:State>*/;
358 } else {
359 var13 = self->attrs[COLOR_parser__Parser___stack].val; /* _stack on <self:Parser> */
360 if (var13 == NULL) {
361 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _stack", "src/parser/parser.nit", 77);
362 exit(1);
363 }
364 var14 = NEW_parser__State(&type_parser__State);
365 ((void (*)(val*, long, val*))(var14->class->vft[COLOR_parser__State__init]))(var14, var_numstate, var_list_node) /* init on <var14:State>*/;
366 CHECK_NEW_parser__State(var14);
367 ((void (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Sequence__push]))(var13, var14) /* push on <var13:Array[State]>*/;
368 }
369 RET_LABEL:;
370 }
371 /* method parser#Parser#push for (self: Object, Int, nullable Object) */
372 void VIRTUAL_parser__Parser__push(val* self, long p0, val* p1) {
373 parser__Parser__push(self, p0, p1);
374 RET_LABEL:;
375 }
376 /* method parser#Parser#state for (self: Parser): Int */
377 long parser__Parser__state(val* self) {
378 long var /* : Int */;
379 val* var1 /* : Array[State] */;
380 long var2 /* : Int */;
381 val* var3 /* : nullable Object */;
382 long var4 /* : Int */;
383 var1 = self->attrs[COLOR_parser__Parser___stack].val; /* _stack on <self:Parser> */
384 if (var1 == NULL) {
385 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _stack", "src/parser/parser.nit", 84);
386 exit(1);
387 }
388 var2 = self->attrs[COLOR_parser__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
389 var3 = ((val* (*)(val*, long))(var1->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var1, var2) /* [] on <var1:Array[State]>*/;
390 var4 = ((long (*)(val*))(var3->class->vft[COLOR_parser__State__state]))(var3) /* state on <var3:nullable Object(State)>*/;
391 var = var4;
392 goto RET_LABEL;
393 RET_LABEL:;
394 return var;
395 }
396 /* method parser#Parser#state for (self: Object): Int */
397 long VIRTUAL_parser__Parser__state(val* self) {
398 long var /* : Int */;
399 long var1 /* : Int */;
400 var1 = parser__Parser__state(self);
401 var = var1;
402 RET_LABEL:;
403 return var;
404 }
405 /* method parser#Parser#pop for (self: Parser): nullable Object */
406 val* parser__Parser__pop(val* self) {
407 val* var /* : nullable Object */;
408 val* var1 /* : Array[State] */;
409 long var2 /* : Int */;
410 val* var3 /* : nullable Object */;
411 val* var4 /* : nullable Object */;
412 val* var_res /* var res: nullable Object */;
413 long var5 /* : Int */;
414 long var6 /* : Int */;
415 long var7 /* : Int */;
416 long var9 /* : Int */;
417 var1 = self->attrs[COLOR_parser__Parser___stack].val; /* _stack on <self:Parser> */
418 if (var1 == NULL) {
419 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _stack", "src/parser/parser.nit", 90);
420 exit(1);
421 }
422 var2 = self->attrs[COLOR_parser__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
423 var3 = ((val* (*)(val*, long))(var1->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var1, var2) /* [] on <var1:Array[State]>*/;
424 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_parser__State__nodes]))(var3) /* nodes on <var3:nullable Object(State)>*/;
425 var_res = var4;
426 var5 = self->attrs[COLOR_parser__Parser___stack_pos].l; /* _stack_pos on <self:Parser> */
427 var6 = 1;
428 { /* Inline kernel#Int#- (var5,var6) */
429 var9 = var5 - var6;
430 var7 = var9;
431 goto RET_LABEL8;
432 RET_LABEL8:(void)0;
433 }
434 self->attrs[COLOR_parser__Parser___stack_pos].l = var7; /* _stack_pos on <self:Parser> */
435 var = var_res;
436 goto RET_LABEL;
437 RET_LABEL:;
438 return var;
439 }
440 /* method parser#Parser#pop for (self: Object): nullable Object */
441 val* VIRTUAL_parser__Parser__pop(val* self) {
442 val* var /* : nullable Object */;
443 val* var1 /* : nullable Object */;
444 var1 = parser__Parser__pop(self);
445 var = var1;
446 RET_LABEL:;
447 return var;
448 }
449 /* method parser#Parser#parse for (self: Parser): Start */
450 val* parser__Parser__parse(val* self) {
451 val* var /* : Start */;
452 long var1 /* : Int */;
453 val* var2 /* : null */;
454 val* var3 /* : Lexer */;
455 val* var_lexer /* var lexer: Lexer */;
456 val* var4 /* : Token */;
457 val* var_token /* var token: Token */;
458 short int var5 /* : Bool */;
459 int cltype;
460 int idtype;
461 val* var6 /* : Start */;
462 val* var7 /* : null */;
463 long var8 /* : Int */;
464 long var_state /* var state: Int */;
465 long var9 /* : Int */;
466 long var_index /* var index: Int */;
467 long var10 /* : Int */;
468 long var11 /* : Int */;
469 long var_action_type /* var action_type: Int */;
470 long var12 /* : Int */;
471 long var13 /* : Int */;
472 long var_action_value /* var action_value: Int */;
473 long var14 /* : Int */;
474 long var_low /* var low: Int */;
475 long var15 /* : Int */;
476 long var16 /* : Int */;
477 long var17 /* : Int */;
478 long var18 /* : Int */;
479 long var20 /* : Int */;
480 long var_high /* var high: Int */;
481 short int var21 /* : Bool */;
482 short int var23 /* : Bool */;
483 int cltype24;
484 int idtype25;
485 short int var26 /* : Bool */;
486 long var27 /* : Int */;
487 long var29 /* : Int */;
488 long var30 /* : Int */;
489 long var31 /* : Int */;
490 long var33 /* : Int */;
491 long var_middle /* var middle: Int */;
492 long var34 /* : Int */;
493 long var35 /* : Int */;
494 long var37 /* : Int */;
495 long var38 /* : Int */;
496 long var39 /* : Int */;
497 long var41 /* : Int */;
498 long var_subindex /* var subindex: Int */;
499 long var42 /* : Int */;
500 long var_goal /* var goal: Int */;
501 short int var43 /* : Bool */;
502 short int var45 /* : Bool */;
503 int cltype46;
504 int idtype47;
505 short int var48 /* : Bool */;
506 long var49 /* : Int */;
507 long var50 /* : Int */;
508 long var52 /* : Int */;
509 short int var53 /* : Bool */;
510 short int var55 /* : Bool */;
511 int cltype56;
512 int idtype57;
513 short int var58 /* : Bool */;
514 long var59 /* : Int */;
515 long var60 /* : Int */;
516 long var62 /* : Int */;
517 long var63 /* : Int */;
518 long var64 /* : Int */;
519 long var66 /* : Int */;
520 long var67 /* : Int */;
521 long var68 /* : Int */;
522 long var69 /* : Int */;
523 long var71 /* : Int */;
524 long var72 /* : Int */;
525 long var73 /* : Int */;
526 short int var74 /* : Bool */;
527 short int var76 /* : Bool */;
528 val* var77 /* : Token */;
529 long var78 /* : Int */;
530 short int var79 /* : Bool */;
531 short int var81 /* : Bool */;
532 val* var82 /* : Array[ReduceAction] */;
533 val* var83 /* : nullable Object */;
534 long var84 /* : Int */;
535 short int var85 /* : Bool */;
536 short int var87 /* : Bool */;
537 val* var88 /* : Token */;
538 val* var_node2 /* var node2: Token */;
539 short int var89 /* : Bool */;
540 int cltype90;
541 int idtype91;
542 val* var92 /* : nullable Object */;
543 val* var_node1 /* var node1: nullable Object */;
544 short int var93 /* : Bool */;
545 int cltype94;
546 int idtype95;
547 val* var96 /* : Start */;
548 val* var_node /* var node: Start */;
549 val* var97 /* : ComputeProdLocationVisitor */;
550 long var98 /* : Int */;
551 short int var99 /* : Bool */;
552 short int var101 /* : Bool */;
553 val* var102 /* : AParserError */;
554 val* var103 /* : Array[Object] */;
555 long var104 /* : Int */;
556 val* var_ /* var : Array[Object] */;
557 static val* varonce;
558 val* var105 /* : String */;
559 char* var106 /* : NativeString */;
560 long var107 /* : Int */;
561 val* var108 /* : String */;
562 static val* varonce109;
563 val* var110 /* : String */;
564 char* var111 /* : NativeString */;
565 long var112 /* : Int */;
566 val* var113 /* : String */;
567 val* var114 /* : String */;
568 val* var115 /* : Location */;
569 val* var_node2116 /* var node2: AParserError */;
570 val* var117 /* : Start */;
571 val* var118 /* : null */;
572 val* var_node119 /* var node: Start */;
573 var1 = 0;
574 var2 = NULL;
575 ((void (*)(val*, long, val*))(self->class->vft[COLOR_parser__Parser__push]))(self, var1, var2) /* push on <self:Parser>*/;
576 var3 = self->attrs[COLOR_parser__Parser___lexer].val; /* _lexer on <self:Parser> */
577 if (var3 == NULL) {
578 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _lexer", "src/parser/parser.nit", 100);
579 exit(1);
580 }
581 var_lexer = var3;
582 for(;;) {
583 var4 = ((val* (*)(val*))(var_lexer->class->vft[COLOR_lexer__Lexer__peek]))(var_lexer) /* peek on <var_lexer:Lexer>*/;
584 var_token = var4;
585 /* <var_token:Token> isa AError */
586 cltype = type_parser_nodes__AError.color;
587 idtype = type_parser_nodes__AError.id;
588 if(cltype >= var_token->type->table_size) {
589 var5 = 0;
590 } else {
591 var5 = var_token->type->type_table[cltype] == idtype;
592 }
593 if (var5){
594 var6 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
595 var7 = NULL;
596 ((void (*)(val*, val*, val*))(var6->class->vft[COLOR_parser_nodes__Start__init]))(var6, var7, var_token) /* init on <var6:Start>*/;
597 CHECK_NEW_parser_nodes__Start(var6);
598 var = var6;
599 goto RET_LABEL;
600 } else {
601 }
602 var8 = ((long (*)(val*))(self->class->vft[COLOR_parser__Parser__state]))(self) /* state on <self:Parser>*/;
603 var_state = var8;
604 var9 = ((long (*)(val*))(var_token->class->vft[COLOR_lexer__Token__parser_index]))(var_token) /* parser_index on <var_token:Token>*/;
605 var_index = var9;
606 var10 = 2;
607 var11 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var10) /* parser_action on <self:Parser>*/;
608 var_action_type = var11;
609 var12 = 3;
610 var13 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var12) /* parser_action on <self:Parser>*/;
611 var_action_value = var13;
612 var14 = 1;
613 var_low = var14;
614 var15 = 0;
615 var16 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var15) /* parser_action on <self:Parser>*/;
616 var17 = 1;
617 { /* Inline kernel#Int#- (var16,var17) */
618 var20 = var16 - var17;
619 var18 = var20;
620 goto RET_LABEL19;
621 RET_LABEL19:(void)0;
622 }
623 var_high = var18;
624 for(;;) {
625 { /* Inline kernel#Int#<= (var_low,var_high) */
626 /* Covariant cast for argument 0 (i) <var_high:Int> isa OTHER */
627 /* <var_high:Int> isa OTHER */
628 var23 = 1; /* easy <var_high:Int> isa OTHER*/
629 if (!var23) {
630 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 256);
631 exit(1);
632 }
633 var26 = var_low <= var_high;
634 var21 = var26;
635 goto RET_LABEL22;
636 RET_LABEL22:(void)0;
637 }
638 if (!var21) break;
639 { /* Inline kernel#Int#+ (var_low,var_high) */
640 var29 = var_low + var_high;
641 var27 = var29;
642 goto RET_LABEL28;
643 RET_LABEL28:(void)0;
644 }
645 var30 = 2;
646 { /* Inline kernel#Int#/ (var27,var30) */
647 var33 = var27 / var30;
648 var31 = var33;
649 goto RET_LABEL32;
650 RET_LABEL32:(void)0;
651 }
652 var_middle = var31;
653 var34 = 3;
654 { /* Inline kernel#Int#* (var_middle,var34) */
655 var37 = var_middle * var34;
656 var35 = var37;
657 goto RET_LABEL36;
658 RET_LABEL36:(void)0;
659 }
660 var38 = 1;
661 { /* Inline kernel#Int#+ (var35,var38) */
662 var41 = var35 + var38;
663 var39 = var41;
664 goto RET_LABEL40;
665 RET_LABEL40:(void)0;
666 }
667 var_subindex = var39;
668 var42 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var_subindex) /* parser_action on <self:Parser>*/;
669 var_goal = var42;
670 { /* Inline kernel#Int#< (var_index,var_goal) */
671 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
672 /* <var_goal:Int> isa OTHER */
673 var45 = 1; /* easy <var_goal:Int> isa OTHER*/
674 if (!var45) {
675 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 257);
676 exit(1);
677 }
678 var48 = var_index < var_goal;
679 var43 = var48;
680 goto RET_LABEL44;
681 RET_LABEL44:(void)0;
682 }
683 if (var43){
684 var49 = 1;
685 { /* Inline kernel#Int#- (var_middle,var49) */
686 var52 = var_middle - var49;
687 var50 = var52;
688 goto RET_LABEL51;
689 RET_LABEL51:(void)0;
690 }
691 var_high = var50;
692 } else {
693 { /* Inline kernel#Int#> (var_index,var_goal) */
694 /* Covariant cast for argument 0 (i) <var_goal:Int> isa OTHER */
695 /* <var_goal:Int> isa OTHER */
696 var55 = 1; /* easy <var_goal:Int> isa OTHER*/
697 if (!var55) {
698 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
699 exit(1);
700 }
701 var58 = var_index > var_goal;
702 var53 = var58;
703 goto RET_LABEL54;
704 RET_LABEL54:(void)0;
705 }
706 if (var53){
707 var59 = 1;
708 { /* Inline kernel#Int#+ (var_middle,var59) */
709 var62 = var_middle + var59;
710 var60 = var62;
711 goto RET_LABEL61;
712 RET_LABEL61:(void)0;
713 }
714 var_low = var60;
715 } else {
716 var63 = 1;
717 { /* Inline kernel#Int#+ (var_subindex,var63) */
718 var66 = var_subindex + var63;
719 var64 = var66;
720 goto RET_LABEL65;
721 RET_LABEL65:(void)0;
722 }
723 var67 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var64) /* parser_action on <self:Parser>*/;
724 var_action_type = var67;
725 var68 = 2;
726 { /* Inline kernel#Int#+ (var_subindex,var68) */
727 var71 = var_subindex + var68;
728 var69 = var71;
729 goto RET_LABEL70;
730 RET_LABEL70:(void)0;
731 }
732 var72 = ((long (*)(val*, long, long))(self->class->vft[COLOR_tables__TablesCapable__parser_action]))(self, var_state, var69) /* parser_action on <self:Parser>*/;
733 var_action_value = var72;
734 goto BREAK_label;
735 }
736 }
737 CONTINUE_label: (void)0;
738 }
739 BREAK_label: (void)0;
740 var73 = 0;
741 { /* Inline kernel#Int#== (var_action_type,var73) */
742 var76 = var_action_type == var73;
743 var74 = var76;
744 goto RET_LABEL75;
745 RET_LABEL75:(void)0;
746 }
747 if (var74){
748 var77 = ((val* (*)(val*))(var_lexer->class->vft[COLOR_lexer__Lexer__next]))(var_lexer) /* next on <var_lexer:Lexer>*/;
749 ((void (*)(val*, long, val*))(self->class->vft[COLOR_parser__Parser__push]))(self, var_action_value, var77) /* push on <self:Parser>*/;
750 } else {
751 var78 = 1;
752 { /* Inline kernel#Int#== (var_action_type,var78) */
753 var81 = var_action_type == var78;
754 var79 = var81;
755 goto RET_LABEL80;
756 RET_LABEL80:(void)0;
757 }
758 if (var79){
759 var82 = self->attrs[COLOR_parser__Parser___reduce_table].val; /* _reduce_table on <self:Parser> */
760 if (var82 == NULL) {
761 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute _reduce_table", "src/parser/parser.nit", 134);
762 exit(1);
763 }
764 var83 = ((val* (*)(val*, long))(var82->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var82, var_action_value) /* [] on <var82:Array[ReduceAction]>*/;
765 ((void (*)(val*, val*))(var83->class->vft[COLOR_parser__ReduceAction__action]))(var83, self) /* action on <var83:nullable Object(ReduceAction)>*/;
766 } else {
767 var84 = 2;
768 { /* Inline kernel#Int#== (var_action_type,var84) */
769 var87 = var_action_type == var84;
770 var85 = var87;
771 goto RET_LABEL86;
772 RET_LABEL86:(void)0;
773 }
774 if (var85){
775 var88 = ((val* (*)(val*))(var_lexer->class->vft[COLOR_lexer__Lexer__next]))(var_lexer) /* next on <var_lexer:Lexer>*/;
776 var_node2 = var88;
777 /* <var_node2:Token> isa EOF */
778 cltype90 = type_parser_nodes__EOF.color;
779 idtype91 = type_parser_nodes__EOF.id;
780 if(cltype90 >= var_node2->type->table_size) {
781 var89 = 0;
782 } else {
783 var89 = var_node2->type->type_table[cltype90] == idtype91;
784 }
785 if (!var89) {
786 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 137);
787 exit(1);
788 }
789 var92 = ((val* (*)(val*))(self->class->vft[COLOR_parser__Parser__pop]))(self) /* pop on <self:Parser>*/;
790 var_node1 = var92;
791 /* <var_node1:nullable Object> isa AModule */
792 cltype94 = type_parser_nodes__AModule.color;
793 idtype95 = type_parser_nodes__AModule.id;
794 if(var_node1 == NULL) {
795 var93 = 0;
796 } else {
797 if(cltype94 >= var_node1->type->table_size) {
798 var93 = 0;
799 } else {
800 var93 = var_node1->type->type_table[cltype94] == idtype95;
801 }
802 }
803 if (!var93) {
804 fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 139);
805 exit(1);
806 }
807 var96 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
808 ((void (*)(val*, val*, val*))(var96->class->vft[COLOR_parser_nodes__Start__init]))(var96, var_node1, var_node2) /* init on <var96:Start>*/;
809 CHECK_NEW_parser_nodes__Start(var96);
810 var_node = var96;
811 var97 = NEW_parser__ComputeProdLocationVisitor(&type_parser__ComputeProdLocationVisitor);
812 ((void (*)(val*))(var97->class->vft[COLOR_parser__ComputeProdLocationVisitor__init]))(var97) /* init on <var97:ComputeProdLocationVisitor>*/;
813 CHECK_NEW_parser__ComputeProdLocationVisitor(var97);
814 ((void (*)(val*, val*))(var97->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var97, var_node) /* enter_visit on <var97:ComputeProdLocationVisitor>*/;
815 var = var_node;
816 goto RET_LABEL;
817 } else {
818 var98 = 3;
819 { /* Inline kernel#Int#== (var_action_type,var98) */
820 var101 = var_action_type == var98;
821 var99 = var101;
822 goto RET_LABEL100;
823 RET_LABEL100:(void)0;
824 }
825 if (var99){
826 var102 = NEW_parser_nodes__AParserError(&type_parser_nodes__AParserError);
827 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
828 var104 = 3;
829 ((void (*)(val*, long))(var103->class->vft[COLOR_array__Array__with_capacity]))(var103, var104) /* with_capacity on <var103:Array[Object]>*/;
830 CHECK_NEW_array__Array(var103);
831 var_ = var103;
832 if (varonce) {
833 var105 = varonce;
834 } else {
835 var106 = "Syntax error: unexpected ";
836 var107 = 25;
837 var108 = string__NativeString__to_s_with_length(var106, var107);
838 var105 = var108;
839 varonce = var105;
840 }
841 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var105) /* add on <var_:Array[Object]>*/;
842 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_token) /* add on <var_:Array[Object]>*/;
843 if (varonce109) {
844 var110 = varonce109;
845 } else {
846 var111 = ".";
847 var112 = 1;
848 var113 = string__NativeString__to_s_with_length(var111, var112);
849 var110 = var113;
850 varonce109 = var110;
851 }
852 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var110) /* add on <var_:Array[Object]>*/;
853 var114 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
854 var115 = ((val* (*)(val*))(var_token->class->vft[COLOR_parser_nodes__ANode__location]))(var_token) /* location on <var_token:Token>*/;
855 ((void (*)(val*, val*, val*, val*))(var102->class->vft[COLOR_lexer__AParserError__init_parser_error]))(var102, var114, var115, var_token) /* init_parser_error on <var102:AParserError>*/;
856 CHECK_NEW_parser_nodes__AParserError(var102);
857 var_node2116 = var102;
858 var117 = NEW_parser_nodes__Start(&type_parser_nodes__Start);
859 var118 = NULL;
860 ((void (*)(val*, val*, val*))(var117->class->vft[COLOR_parser_nodes__Start__init]))(var117, var118, var_node2116) /* init on <var117:Start>*/;
861 CHECK_NEW_parser_nodes__Start(var117);
862 var_node119 = var117;
863 var = var_node119;
864 goto RET_LABEL;
865 } else {
866 }
867 }
868 }
869 }
870 CONTINUE_label120: (void)0;
871 }
872 BREAK_label120: (void)0;
873 RET_LABEL:;
874 return var;
875 }
876 /* method parser#Parser#parse for (self: Object): Start */
877 val* VIRTUAL_parser__Parser__parse(val* self) {
878 val* var /* : Start */;
879 val* var1 /* : Start */;
880 var1 = parser__Parser__parse(self);
881 var = var1;
882 RET_LABEL:;
883 return var;
884 }