#endif
static
-void compile(const char *fname)
+translation_unit_t *do_parsing(const char *fname)
{
FILE *in = fopen(fname, "r");
if(in == NULL) {
lexer_open_stream(in, fname);
- parse();
+ translation_unit_t *unit = parse();
fclose(in);
+
+ return unit;
}
static
fclose(in);
}
+void write_fluffy_decls(translation_unit_t *unit);
+
int main(int argc, char **argv)
{
init_symbol_table();
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();