Write the ANSI word "restrict" instead if "__restrict" in print_type_qualifiers().
[cparser] / main.c
diff --git a/main.c b/main.c
index 217329c..58e0601 100644 (file)
--- a/main.c
+++ b/main.c
@@ -37,7 +37,7 @@ void get_output_name(char *buf, size_t buflen, const char *inputname,
 #endif
 
 static
-void compile(const char *fname)
+translation_unit_t *do_parsing(const char *fname)
 {
        FILE *in = fopen(fname, "r");
        if(in == NULL) {
@@ -47,9 +47,11 @@ void compile(const char *fname)
 
        lexer_open_stream(in, fname);
 
-       parse();
+       translation_unit_t *unit = parse();
 
        fclose(in);
+
+       return unit;
 }
 
 static
@@ -72,6 +74,8 @@ void lextest(const char *fname)
        fclose(in);
 }
 
+void write_fluffy_decls(translation_unit_t *unit);
+
 int main(int argc, char **argv)
 {
        init_symbol_table();
@@ -87,8 +91,16 @@ int main(int argc, char **argv)
                return 0;
        }
 
+       if(argc > 2 && strcmp(argv[1], "--print-ast") == 0) {
+               translation_unit_t *unit = do_parsing(argv[2]);
+               ast_set_output(stdout);
+               print_ast(unit);
+               return 0;
+       }
+
        for(int i = 1; i < argc; ++i) {
-               compile(argv[i]);
+               translation_unit_t *unit = do_parsing(argv[i]);
+               write_fluffy_decls(unit);
        }
 
        exit_parser();