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