From 7430008fd7088339821923bdff533369b7967904 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 7 Jul 2016 21:47:33 +0100 Subject: Initial Commit Original Git Repo "went bad" so I had to restart. --- src/main.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main.cpp (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 000000000..55bb389ab --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,41 @@ +#include "common.cpp" +#include "tokenizer.cpp" +#include "parser.cpp" +#include "printer.cpp" +#include "checker.cpp" +#include "generator.cpp" + +int main(int argc, char **argv) { + if (argc < 2) { + gb_printf_err("Please specify a .odin file\n"); + return 1; + } + + init_global_scope(); + + for (int arg_index = 1; arg_index < argc; arg_index++) { + char *arg = argv[arg_index]; + char *filename = arg; + Parser parser = {0}; + + if (init_parser(&parser, filename)) { + defer (destroy_parser(&parser)); + AstNode *root_node = parse_statement_list(&parser, NULL); + // print_ast(root_node, 0); + + Checker checker = {}; + init_checker(&checker, &parser); + defer (destroy_checker(&checker)); + + check_statement_list(&checker, root_node); + + Generator generator = {}; + if (init_generator(&generator, &checker)) { + defer (destroy_generator(&generator)); + generate_code(&generator, root_node); + } + } + } + + return 0; +} -- cgit v1.2.3