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