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
.nitni_local_ref_head
= NULL
;
15 fra
.me
.REG
[0] = NIT_NULL
;
17 /* syntax/syntax.nit:31 */
19 fra
.me
.REG
[0] = BOX_NativeString("nit");
21 fra
.me
.REG
[0] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[0], REGB0
);
22 once_value_1
= fra
.me
.REG
[0];
23 register_static_object(&once_value_1
);
24 } else fra
.me
.REG
[0] = once_value_1
;
25 fra
.me
.REG
[0] = fra
.me
.REG
[0];
28 stack_frame_head
= fra
.me
.prev
;
31 val_t
syntax___SrcModuleLoader___parse_file(val_t p0
, val_t p1
, val_t p2
, val_t p3
, val_t p4
, val_t p5
){
32 struct {struct stack_frame_t me
; val_t MORE_REG
[7];} fra
;
37 static val_t once_value_4
; /* Once value */
38 static val_t once_value_5
; /* Once value */
39 static val_t once_value_6
; /* Once value */
40 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
41 fra
.me
.file
= LOCATE_syntax
;
43 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___parse_file
;
46 fra
.me
.nitni_local_ref_head
= NULL
;
47 fra
.me
.REG
[0] = NIT_NULL
;
48 fra
.me
.REG
[1] = NIT_NULL
;
49 fra
.me
.REG
[2] = NIT_NULL
;
50 fra
.me
.REG
[3] = NIT_NULL
;
51 fra
.me
.REG
[4] = NIT_NULL
;
52 fra
.me
.REG
[5] = NIT_NULL
;
53 fra
.me
.REG
[6] = NIT_NULL
;
54 fra
.me
.REG
[7] = NIT_NULL
;
61 /* syntax/syntax.nit:35 */
62 fra
.me
.REG
[6] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
63 /* ../lib/standard/collection/array.nit:24 */
64 REGB0
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[6])!=NIT_NULL
);
65 if (UNTAG_Bool(REGB0
)) {
67 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
69 REGB0
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[6]);
70 /* syntax/syntax.nit:35 */
72 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
73 if (UNTAG_Bool(REGB2
)) {
75 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
77 /* ../lib/standard/kernel.nit:234 */
78 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)>UNTAG_Int(REGB1
));
79 /* syntax/syntax.nit:35 */
80 if (UNTAG_Bool(REGB1
)) {
81 fra
.me
.REG
[6] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
83 REGB1
= CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra
.me
.REG
[6])(fra
.me
.REG
[6], REGB1
);
84 REGB1
= CALL_standard___kernel___Char___is_lower(REGB1
)(REGB1
);
86 REGB0
= TAG_Bool(false);
89 fra
.me
.REG
[6] = REGB1
;
90 /* syntax/syntax.nit:36 */
91 fra
.me
.REG
[7] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
92 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[7])(fra
.me
.REG
[7], (&(fra
.me
)), ((fun_t
)OC_syntax___SrcModuleLoader___parse_file_1
));
93 switch ((&(fra
.me
))->has_broke
) {
95 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
98 /* syntax/syntax.nit:41 */
99 REGB1
= TAG_Bool(!UNTAG_Bool(fra
.me
.REG
[6]));
100 if (UNTAG_Bool(REGB1
)) {
101 /* syntax/syntax.nit:42 */
103 fra
.me
.REG
[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1
);
105 fra
.me
.REG
[7] = BOX_NativeString("");
107 fra
.me
.REG
[7] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[7], REGB1
);
108 once_value_4
= fra
.me
.REG
[7];
109 register_static_object(&once_value_4
);
110 } else fra
.me
.REG
[7] = once_value_4
;
111 fra
.me
.REG
[7] = fra
.me
.REG
[7];
112 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[7]);
113 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[3]);
115 fra
.me
.REG
[7] = BOX_NativeString(": Error module name \"");
117 fra
.me
.REG
[7] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[7], REGB1
);
118 once_value_5
= fra
.me
.REG
[7];
119 register_static_object(&once_value_5
);
120 } else fra
.me
.REG
[7] = once_value_5
;
121 fra
.me
.REG
[7] = fra
.me
.REG
[7];
122 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[7]);
123 fra
.me
.REG
[7] = CALL_standard___string___Object___to_s(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
124 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[7]);
126 fra
.me
.REG
[7] = BOX_NativeString("\", must start with a lower case letter and contain only letters, digits and '_'.");
128 fra
.me
.REG
[7] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[7], REGB1
);
129 once_value_6
= fra
.me
.REG
[7];
130 register_static_object(&once_value_6
);
131 } else fra
.me
.REG
[7] = once_value_6
;
132 fra
.me
.REG
[7] = fra
.me
.REG
[7];
133 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[7]);
134 fra
.me
.REG
[6] = CALL_standard___string___Object___to_s(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
135 CALL_toolcontext___ToolContext___error(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
, fra
.me
.REG
[6]);
137 /* syntax/syntax.nit:45 */
138 fra
.me
.REG
[2] = NEW_SourceFile_location___SourceFile___init(fra
.me
.REG
[3], fra
.me
.REG
[2]);
139 /* syntax/syntax.nit:46 */
140 fra
.me
.REG
[3] = NEW_Lexer_parser___lexer___Lexer___init(fra
.me
.REG
[2]);
141 /* syntax/syntax.nit:47 */
142 fra
.me
.REG
[3] = NEW_Parser_parser___Parser___init(fra
.me
.REG
[3]);
143 /* syntax/syntax.nit:48 */
144 fra
.me
.REG
[3] = CALL_parser___Parser___parse(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
145 /* syntax/syntax.nit:49 */
146 fra
.me
.REG
[6] = CALL_parser___parser_nodes___Start___n_base(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
147 REGB1
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
148 if (UNTAG_Bool(REGB1
)) {
150 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
151 if (UNTAG_Bool(REGB0
)) {
152 REGB0
= TAG_Bool(false);
155 REGB0
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
);
159 if (UNTAG_Bool(REGB1
)) {
160 /* syntax/syntax.nit:50 */
161 fra
.me
.REG
[6] = CALL_parser___parser_nodes___Start___n_eof(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
162 /* syntax/syntax.nit:51 */
163 REGB1
= TAG_Bool(VAL_ISA(fra
.me
.REG
[6], COLOR_parser___parser_nodes___AError
, ID_parser___parser_nodes___AError
)) /*cast AError*/;
164 if (UNTAG_Bool(REGB1
)) {
166 nit_abort("Assert failed", NULL
, LOCATE_syntax
, 51);
168 /* syntax/syntax.nit:52 */
169 fra
.me
.REG
[0] = CALL_parser___parser_nodes___ANode___location(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
170 fra
.me
.REG
[6] = CALL_parser___lexer___AError___message(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
171 CALL_toolcontext___ToolContext___fatal_error(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], fra
.me
.REG
[6]);
173 /* syntax/syntax.nit:54 */
174 fra
.me
.REG
[3] = CALL_parser___parser_nodes___Start___n_base(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
175 /* syntax/syntax.nit:55 */
176 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
177 if (UNTAG_Bool(REGB1
)) {
179 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
180 if (UNTAG_Bool(REGB0
)) {
181 REGB0
= TAG_Bool(false);
184 REGB0
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
188 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
189 if (UNTAG_Bool(REGB1
)) {
191 nit_abort("Assert failed", NULL
, LOCATE_syntax
, 55);
193 /* syntax/syntax.nit:56 */
194 fra
.me
.REG
[2] = NEW_Location_location___Location___with_file(fra
.me
.REG
[2]);
195 /* syntax/syntax.nit:57 */
196 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]);
197 /* syntax/syntax.nit:58 */
200 stack_frame_head
= fra
.me
.prev
;
201 return fra
.me
.REG
[2];
203 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
){
204 struct {struct stack_frame_t me
;} fra
;
210 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
211 fra
.me
.file
= LOCATE_syntax
;
213 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___parse_file
;
214 fra
.me
.has_broke
= 0;
216 fra
.me
.nitni_local_ref_head
= NULL
;
217 fra
.me
.REG
[0] = NIT_NULL
;
218 fra
.me
.closure_ctx
= closctx_param
;
219 fra
.me
.closure_funs
= CREG
;
222 REGB0
= fra
.me
.REG
[0];
223 REGB1
= CALL_standard___kernel___Char___is_digit(REGB0
)(REGB0
);
224 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
225 if (UNTAG_Bool(REGB1
)) {
226 REGB1
= CALL_standard___kernel___Char___is_letter(REGB0
)(REGB0
);
227 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
229 REGB2
= TAG_Bool(false);
232 if (UNTAG_Bool(REGB1
)) {
233 REGB1
= TAG_Char('_');
234 REGB2
= TAG_Bool(IS_EQUAL_OO(REGB0
,REGB1
));
235 if (UNTAG_Bool(REGB2
)) {
237 /* ../lib/standard/kernel.nit:378 */
238 REGB1
= TAG_Bool((REGB0
)==(REGB1
));
239 /* syntax/syntax.nit:36 */
242 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
244 REGB1
= TAG_Bool(false);
247 if (UNTAG_Bool(REGB2
)) {
248 /* syntax/syntax.nit:38 */
249 REGB2
= TAG_Bool(false);
250 closctx
->REG
[6] = REGB2
;
251 /* syntax/syntax.nit:39 */
252 closctx
->has_broke
= 1;
256 stack_frame_head
= fra
.me
.prev
;
259 void syntax___SrcModuleLoader___process_metamodel(val_t p0
, val_t p1
, val_t p2
){
260 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
263 static val_t once_value_1
; /* Once value */
264 static val_t once_value_2
; /* Once value */
265 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
266 fra
.me
.file
= LOCATE_syntax
;
268 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___process_metamodel
;
269 fra
.me
.has_broke
= 0;
271 fra
.me
.nitni_local_ref_head
= NULL
;
272 fra
.me
.REG
[0] = NIT_NULL
;
273 fra
.me
.REG
[1] = NIT_NULL
;
274 fra
.me
.REG
[2] = NIT_NULL
;
275 fra
.me
.REG
[3] = NIT_NULL
;
279 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[2], VTCOLOR_mmloader___ModuleLoader___MODULE(fra
.me
.REG
[0]), VTID_mmloader___ModuleLoader___MODULE(fra
.me
.REG
[0]))) /*cast MODULE*/;
280 if (UNTAG_Bool(REGB0
)) {
282 nit_abort("Cast failed", NULL
, LOCATE_syntax
, 0);
284 /* syntax/syntax.nit:63 */
285 CALL_syntax___MMSrcModule___process_supermodules(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
286 /* syntax/syntax.nit:64 */
288 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
290 fra
.me
.REG
[3] = BOX_NativeString("Syntax analysis for module: ");
292 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
293 once_value_1
= fra
.me
.REG
[3];
294 register_static_object(&once_value_1
);
295 } else fra
.me
.REG
[3] = once_value_1
;
296 fra
.me
.REG
[3] = fra
.me
.REG
[3];
297 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
298 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMModule___name(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
299 fra
.me
.REG
[3] = CALL_standard___string___Object___to_s(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
300 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
302 fra
.me
.REG
[3] = BOX_NativeString("");
304 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
305 once_value_2
= fra
.me
.REG
[3];
306 register_static_object(&once_value_2
);
307 } else fra
.me
.REG
[3] = once_value_2
;
308 fra
.me
.REG
[3] = fra
.me
.REG
[3];
309 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
310 fra
.me
.REG
[0] = CALL_standard___string___Object___to_s(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
312 CALL_toolcontext___ToolContext___info(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], REGB0
);
313 /* syntax/syntax.nit:65 */
314 CALL_syntax___MMSrcModule___process_syntax(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
315 stack_frame_head
= fra
.me
.prev
;
318 void syntax___SrcModuleLoader___init(val_t p0
, int* init_table
){
319 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_syntax___SrcModuleLoader
].i
;
320 struct {struct stack_frame_t me
;} fra
;
322 if (init_table
[itpos0
]) return;
323 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
324 fra
.me
.file
= LOCATE_syntax
;
326 fra
.me
.meth
= LOCATE_syntax___SrcModuleLoader___init
;
327 fra
.me
.has_broke
= 0;
329 fra
.me
.nitni_local_ref_head
= NULL
;
330 fra
.me
.REG
[0] = NIT_NULL
;
332 stack_frame_head
= fra
.me
.prev
;
333 init_table
[itpos0
] = 1;
336 void syntax___MMSrcModule___process_supermodules(val_t p0
, val_t p1
){
337 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
339 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
340 fra
.me
.file
= LOCATE_syntax
;
342 fra
.me
.meth
= LOCATE_syntax___MMSrcModule___process_supermodules
;
343 fra
.me
.has_broke
= 0;
345 fra
.me
.nitni_local_ref_head
= NULL
;
346 fra
.me
.REG
[0] = NIT_NULL
;
347 fra
.me
.REG
[1] = NIT_NULL
;
348 fra
.me
.REG
[2] = NIT_NULL
;
351 /* syntax/syntax.nit:75 */
352 fra
.me
.REG
[2] = CALL_syntax___syntax_base___MMSrcModule___node(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
353 CALL_syntax___mmbuilder___AModule___import_super_modules(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1], fra
.me
.REG
[0]);
354 stack_frame_head
= fra
.me
.prev
;
357 void syntax___MMSrcModule___process_syntax(val_t p0
, val_t p1
){
358 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
361 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
362 fra
.me
.file
= LOCATE_syntax
;
364 fra
.me
.meth
= LOCATE_syntax___MMSrcModule___process_syntax
;
365 fra
.me
.has_broke
= 0;
367 fra
.me
.nitni_local_ref_head
= NULL
;
368 fra
.me
.REG
[0] = NIT_NULL
;
369 fra
.me
.REG
[1] = NIT_NULL
;
372 /* syntax/syntax.nit:82 */
373 CALL_syntax___mmbuilder___MMSrcModule___do_mmbuilder(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
374 /* syntax/syntax.nit:83 */
375 CALL_toolcontext___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
376 /* syntax/syntax.nit:85 */
377 CALL_syntax___typing___MMSrcModule___do_typing(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
378 /* syntax/syntax.nit:86 */
379 CALL_toolcontext___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
380 /* syntax/syntax.nit:88 */
381 CALL_syntax___icode_generation___MMSrcModule___generate_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
382 /* syntax/syntax.nit:89 */
383 CALL_toolcontext___ToolContext___check_errors(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
384 /* syntax/syntax.nit:91 */
385 REGB0
= CALL_syntax___ToolContext___keep_ast(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
386 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
387 if (UNTAG_Bool(REGB0
)) {
388 CALL_syntax___syntax_base___MMSrcModule___clear_ast(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
390 stack_frame_head
= fra
.me
.prev
;
393 val_t
syntax___ToolContext___keep_ast(val_t p0
){
394 struct {struct stack_frame_t me
;} fra
;
397 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
398 fra
.me
.file
= LOCATE_syntax
;
400 fra
.me
.meth
= LOCATE_syntax___ToolContext___keep_ast
;
401 fra
.me
.has_broke
= 0;
403 fra
.me
.nitni_local_ref_head
= NULL
;
404 fra
.me
.REG
[0] = NIT_NULL
;
406 /* syntax/syntax.nit:96 */
407 REGB0
= TAG_Bool(ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0])!=NIT_NULL
);
408 if (UNTAG_Bool(REGB0
)) {
410 nit_abort("Uninitialized attribute %s", "_keep_ast", LOCATE_syntax
, 96);
412 REGB0
= ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0]);
413 stack_frame_head
= fra
.me
.prev
;
416 void syntax___ToolContext___keep_ast__eq(val_t p0
, val_t p1
){
417 struct {struct stack_frame_t me
;} fra
;
420 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
421 fra
.me
.file
= LOCATE_syntax
;
423 fra
.me
.meth
= LOCATE_syntax___ToolContext___keep_ast__eq
;
424 fra
.me
.has_broke
= 0;
426 fra
.me
.nitni_local_ref_head
= NULL
;
427 fra
.me
.REG
[0] = NIT_NULL
;
430 /* syntax/syntax.nit:96 */
431 ATTR_syntax___ToolContext____keep_ast(fra
.me
.REG
[0]) = REGB0
;
432 stack_frame_head
= fra
.me
.prev
;