1 /* This C file is generated by NIT to compile module syntax. */
2 #include "syntax._sep.h"
3 val_t
syntax___SrcModuleLoader___file_type(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
7 static val_t once_value_1
; /* Once value */
8 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
9 fra
.me
.file
= LOCATE_syntax
;
11 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___file_type
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* ./syntax//syntax.nit:31 */
18 fra
.me
.REG
[0] = BOX_NativeString("nit");
20 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
21 once_value_1
= fra
.me
.REG
[0];
22 register_static_object(&once_value_1
);
23 } else fra
.me
.REG
[0] = once_value_1
;
24 fra
.me
.REG
[0] = fra
.me
.REG
[0];
27 stack_frame_head
= fra
.me
.prev
;
30 val_t
syntax___SrcModuleLoader___parse_file(val_t p0
, val_t p1
, val_t p2
, val_t p3
, val_t p4
, val_t p5
){
31 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
35 static val_t once_value_4
; /* Once value */
36 static val_t once_value_5
; /* Once value */
37 static val_t once_value_6
; /* Once value */
38 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
39 fra
.me
.file
= LOCATE_syntax
;
41 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___parse_file
;
44 fra
.me
.REG
[0] = NIT_NULL
;
45 fra
.me
.REG
[1] = NIT_NULL
;
46 fra
.me
.REG
[2] = NIT_NULL
;
47 fra
.me
.REG
[3] = NIT_NULL
;
48 fra
.me
.REG
[4] = NIT_NULL
;
49 fra
.me
.REG
[5] = NIT_NULL
;
50 fra
.me
.REG
[6] = NIT_NULL
;
57 /* ./syntax//syntax.nit:35 */
58 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
59 /* ./../lib/standard//collection//array.nit:23 */
60 REGB0
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0])!=NIT_NULL
);
61 if (UNTAG_Bool(REGB0
)) {
63 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 23);
65 REGB0
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[0]);
66 /* ./syntax//syntax.nit:35 */
68 /* ./../lib/standard//kernel.nit:217 */
69 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>UNTAG_Int(REGB1
));
70 /* ./syntax//syntax.nit:35 */
71 if (UNTAG_Bool(REGB1
)) {
72 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
74 REGB1
= CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], REGB1
);
75 REGB1
= CALL_standard___kernel___Char___is_lower(REGB1
)(REGB1
);
77 REGB0
= TAG_Bool(false);
80 fra
.me
.REG
[0] = REGB1
;
81 /* ./syntax//syntax.nit:36 */
82 fra
.me
.REG
[6] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
83 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[6])(fra
.me
.REG
[6], (&(fra
.me
)), ((fun_t
)OC_syntax___SrcModuleLoader___parse_file_1
));
84 switch ((&(fra
.me
))->has_broke
) {
86 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
89 /* ./syntax//syntax.nit:41 */
90 REGB1
= TAG_Bool(!UNTAG_Bool(fra
.me
.REG
[0]));
91 if (UNTAG_Bool(REGB1
)) {
92 /* ./syntax//syntax.nit:42 */
94 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1
);
96 fra
.me
.REG
[6] = BOX_NativeString("");
98 fra
.me
.REG
[6] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[6], REGB1
);
99 once_value_4
= fra
.me
.REG
[6];
100 register_static_object(&once_value_4
);
101 } else fra
.me
.REG
[6] = once_value_4
;
102 fra
.me
.REG
[6] = fra
.me
.REG
[6];
103 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[6]);
104 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
106 fra
.me
.REG
[6] = BOX_NativeString(": Error module name \"");
108 fra
.me
.REG
[6] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[6], REGB1
);
109 once_value_5
= fra
.me
.REG
[6];
110 register_static_object(&once_value_5
);
111 } else fra
.me
.REG
[6] = once_value_5
;
112 fra
.me
.REG
[6] = fra
.me
.REG
[6];
113 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[6]);
114 fra
.me
.REG
[6] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
115 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[6]);
117 fra
.me
.REG
[6] = BOX_NativeString("\", must start with a lower case letter and contain only letters, digits and '_'.");
119 fra
.me
.REG
[6] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[6], REGB1
);
120 once_value_6
= fra
.me
.REG
[6];
121 register_static_object(&once_value_6
);
122 } else fra
.me
.REG
[6] = once_value_6
;
123 fra
.me
.REG
[6] = fra
.me
.REG
[6];
124 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[6]);
125 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
126 CALL_mmloader___ToolContext___error(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
, fra
.me
.REG
[0]);
128 /* ./syntax//syntax.nit:45 */
129 fra
.me
.REG
[2] = NEW_SourceFile_location___SourceFile___init(fra
.me
.REG
[3], fra
.me
.REG
[2]);
130 /* ./syntax//syntax.nit:46 */
131 fra
.me
.REG
[3] = NEW_Lexer_parser___lexer___Lexer___init(fra
.me
.REG
[2]);
132 /* ./syntax//syntax.nit:47 */
133 fra
.me
.REG
[3] = NEW_Parser_parser___Parser___init(fra
.me
.REG
[3]);
134 /* ./syntax//syntax.nit:48 */
135 fra
.me
.REG
[3] = CALL_parser___Parser___parse(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
136 /* ./syntax//syntax.nit:49 */
137 fra
.me
.REG
[0] = CALL_parser___parser_nodes___Start___n_base(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
138 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
139 if (UNTAG_Bool(REGB1
)) {
141 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
142 if (UNTAG_Bool(REGB0
)) {
143 REGB0
= TAG_Bool(false);
146 REGB0
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
150 if (UNTAG_Bool(REGB1
)) {
151 /* ./syntax//syntax.nit:50 */
152 fra
.me
.REG
[0] = CALL_parser___parser_nodes___Start___n_eof(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
153 /* ./syntax//syntax.nit:51 */
154 REGB1
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_parser___parser_nodes___AError
, ID_parser___parser_nodes___AError
)) /*cast AError*/;
155 if (UNTAG_Bool(REGB1
)) {
157 nit_abort("Assert failed", NULL
, LOCATE_syntax
, 51);
159 /* ./syntax//syntax.nit:52 */
160 fra
.me
.REG
[6] = CALL_parser___parser_nodes___ANode___location(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
161 fra
.me
.REG
[0] = CALL_parser___lexer___AError___message(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
162 CALL_mmloader___ToolContext___fatal_error(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[6], fra
.me
.REG
[0]);
164 /* ./syntax//syntax.nit:54 */
165 fra
.me
.REG
[3] = CALL_parser___parser_nodes___Start___n_base(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
166 /* ./syntax//syntax.nit:55 */
167 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
168 if (UNTAG_Bool(REGB1
)) {
170 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
171 if (UNTAG_Bool(REGB0
)) {
172 REGB0
= TAG_Bool(false);
175 REGB0
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
179 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
180 if (UNTAG_Bool(REGB1
)) {
182 nit_abort("Assert failed", NULL
, LOCATE_syntax
, 55);
184 /* ./syntax//syntax.nit:56 */
185 fra
.me
.REG
[2] = NEW_Location_location___Location___with_file(fra
.me
.REG
[2]);
186 /* ./syntax//syntax.nit:57 */
187 fra
.me
.REG
[2] = NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init(fra
.me
.REG
[1], fra
.me
.REG
[3], fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[2]);
188 /* ./syntax//syntax.nit:58 */
191 stack_frame_head
= fra
.me
.prev
;
192 return fra
.me
.REG
[2];
194 void OC_syntax___SrcModuleLoader___parse_file_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
195 struct {struct stack_frame_t me
;} fra
;
201 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
202 fra
.me
.file
= LOCATE_syntax
;
204 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___parse_file
;
205 fra
.me
.has_broke
= 0;
207 fra
.me
.REG
[0] = NIT_NULL
;
208 fra
.me
.closure_ctx
= closctx_param
;
209 fra
.me
.closure_funs
= CREG
;
212 REGB0
= fra
.me
.REG
[0];
213 REGB1
= CALL_standard___kernel___Char___is_digit(REGB0
)(REGB0
);
214 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
215 if (UNTAG_Bool(REGB1
)) {
216 REGB1
= CALL_standard___kernel___Char___is_letter(REGB0
)(REGB0
);
217 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
219 REGB2
= TAG_Bool(false);
222 if (UNTAG_Bool(REGB1
)) {
223 REGB1
= TAG_Char('_');
224 REGB2
= TAG_Bool(IS_EQUAL_OO(REGB0
,REGB1
));
225 if (UNTAG_Bool(REGB2
)) {
227 /* ./../lib/standard//kernel.nit:350 */
228 REGB1
= TAG_Bool((REGB0
)==(REGB1
));
229 /* ./syntax//syntax.nit:36 */
232 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
234 REGB1
= TAG_Bool(false);
237 if (UNTAG_Bool(REGB2
)) {
238 /* ./syntax//syntax.nit:38 */
239 REGB2
= TAG_Bool(false);
240 closctx
->REG
[0] = REGB2
;
241 /* ./syntax//syntax.nit:39 */
242 closctx
->has_broke
= 1;
246 stack_frame_head
= fra
.me
.prev
;
249 void syntax___SrcModuleLoader___process_metamodel(val_t p0
, val_t p1
, val_t p2
){
250 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
253 static val_t once_value_1
; /* Once value */
254 static val_t once_value_2
; /* Once value */
255 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
256 fra
.me
.file
= LOCATE_syntax
;
258 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___process_metamodel
;
259 fra
.me
.has_broke
= 0;
261 fra
.me
.REG
[0] = NIT_NULL
;
262 fra
.me
.REG
[1] = NIT_NULL
;
263 fra
.me
.REG
[2] = NIT_NULL
;
264 fra
.me
.REG
[3] = NIT_NULL
;
268 /* ./syntax//syntax.nit:63 */
269 CALL_syntax___MMSrcModule___process_supermodules(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
270 /* ./syntax//syntax.nit:64 */
272 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
274 fra
.me
.REG
[3] = BOX_NativeString("Syntax analysis for module: ");
276 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
277 once_value_1
= fra
.me
.REG
[3];
278 register_static_object(&once_value_1
);
279 } else fra
.me
.REG
[3] = once_value_1
;
280 fra
.me
.REG
[3] = fra
.me
.REG
[3];
281 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
282 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMModule___name(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
283 fra
.me
.REG
[3] = CALL_standard___string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
284 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
286 fra
.me
.REG
[3] = BOX_NativeString("");
288 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
289 once_value_2
= fra
.me
.REG
[3];
290 register_static_object(&once_value_2
);
291 } else fra
.me
.REG
[3] = once_value_2
;
292 fra
.me
.REG
[3] = fra
.me
.REG
[3];
293 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
294 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
296 CALL_mmloader___ToolContext___info(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], REGB0
);
297 /* ./syntax//syntax.nit:65 */
298 CALL_syntax___MMSrcModule___process_syntax(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
299 stack_frame_head
= fra
.me
.prev
;
302 void syntax___SrcModuleLoader___init(val_t p0
, int* init_table
){
303 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_syntax___SrcModuleLoader
].i
;
304 struct {struct stack_frame_t me
;} fra
;
306 if (init_table
[itpos0
]) return;
307 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
308 fra
.me
.file
= LOCATE_syntax
;
310 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___init
;
311 fra
.me
.has_broke
= 0;
313 fra
.me
.REG
[0] = NIT_NULL
;
315 /* ./syntax//syntax.nit:68 */
316 CALL_mmloader___ModuleLoader___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
317 stack_frame_head
= fra
.me
.prev
;
318 init_table
[itpos0
] = 1;
321 void syntax___MMSrcModule___process_supermodules(val_t p0
, val_t p1
){
322 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
324 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
325 fra
.me
.file
= LOCATE_syntax
;
327 fra
.me
.meth
= LOCATE_syntax___MMSrcModule___process_supermodules
;
328 fra
.me
.has_broke
= 0;
330 fra
.me
.REG
[0] = NIT_NULL
;
331 fra
.me
.REG
[1] = NIT_NULL
;
332 fra
.me
.REG
[2] = NIT_NULL
;
335 /* ./syntax//syntax.nit:75 */
336 fra
.me
.REG
[2] = CALL_syntax___syntax_base___MMSrcModule___node(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
337 CALL_syntax___mmbuilder___AModule___import_super_modules(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1], fra
.me
.REG
[0]);
338 stack_frame_head
= fra
.me
.prev
;
341 void syntax___MMSrcModule___process_syntax(val_t p0
, val_t p1
){
342 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
345 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
346 fra
.me
.file
= LOCATE_syntax
;
348 fra
.me
.meth
= LOCATE_syntax___MMSrcModule___process_syntax
;
349 fra
.me
.has_broke
= 0;
351 fra
.me
.REG
[0] = NIT_NULL
;
352 fra
.me
.REG
[1] = NIT_NULL
;
355 /* ./syntax//syntax.nit:82 */
356 CALL_syntax___mmbuilder___MMSrcModule___do_mmbuilder(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
357 /* ./syntax//syntax.nit:83 */
358 CALL_mmloader___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
359 /* ./syntax//syntax.nit:85 */
360 CALL_syntax___typing___MMSrcModule___do_typing(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
361 /* ./syntax//syntax.nit:86 */
362 CALL_mmloader___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
363 /* ./syntax//syntax.nit:88 */
364 CALL_syntax___icode_generation___MMSrcModule___generate_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
365 /* ./syntax//syntax.nit:89 */
366 CALL_mmloader___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
367 /* ./syntax//syntax.nit:91 */
368 REGB0
= CALL_syntax___ToolContext___keep_ast(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
369 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
370 if (UNTAG_Bool(REGB0
)) {
371 CALL_syntax___syntax_base___MMSrcModule___clear_ast(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
373 stack_frame_head
= fra
.me
.prev
;
376 val_t
syntax___ToolContext___keep_ast(val_t p0
){
377 struct {struct stack_frame_t me
;} fra
;
380 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
381 fra
.me
.file
= LOCATE_syntax
;
383 fra
.me
.meth
= LOCATE_syntax___ToolContext___keep_ast
;
384 fra
.me
.has_broke
= 0;
386 fra
.me
.REG
[0] = NIT_NULL
;
388 /* ./syntax//syntax.nit:96 */
389 REGB0
= TAG_Bool(ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0])!=NIT_NULL
);
390 if (UNTAG_Bool(REGB0
)) {
392 nit_abort("Uninitialized attribute %s", "_keep_ast", LOCATE_syntax
, 96);
394 REGB0
= ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0]);
395 stack_frame_head
= fra
.me
.prev
;
398 void syntax___ToolContext___keep_ast__eq(val_t p0
, val_t p1
){
399 struct {struct stack_frame_t me
;} fra
;
402 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
403 fra
.me
.file
= LOCATE_syntax
;
405 fra
.me
.meth
= LOCATE_syntax___ToolContext___keep_ast__eq
;
406 fra
.me
.has_broke
= 0;
408 fra
.me
.REG
[0] = NIT_NULL
;
411 /* ./syntax//syntax.nit:96 */
412 ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0]) = REGB0
;
413 stack_frame_head
= fra
.me
.prev
;