]> git.rm.cloudns.org Git - xonotic/gmqcc.git/commitdiff
Building the output - global variables for now
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 09:25:53 +0000 (11:25 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 09:25:53 +0000 (11:25 +0200)
parser.c

index 80347dfedf566ce5ba47fdcf6b0a85661bab0705..bc43ea71fc10fe8f917ec58ee41b84b004b5f46c 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -125,6 +125,7 @@ bool parser_compile(const char *filename)
 {
     size_t i;
     parser_t *parser;
+    ir_builder *ir;
 
     parser = (parser_t*)mem_a(sizeof(parser_t));
     if (!parser)
@@ -157,6 +158,22 @@ bool parser_compile(const char *filename)
     }
 
     lex_close(parser->lex);
+
+    ir = ir_builder_new("gmqcc_out");
+    if (!ir) {
+        printf("failed to allocate builder\n");
+        goto cleanup;
+    }
+
+    for (i = 0; i < parser->globals_count; ++i) {
+        if (!ast_global_codegen(parser->globals[i], ir)) {
+            printf("failed to generate global %s\n", parser->globals[i]->name);
+        }
+    }
+
+    ir_builder_dump(ir, printf);
+
+cleanup:
     for (i = 0; i < parser->globals_count; ++i) {
         ast_value_delete(parser->globals[i]);
     }