X-Git-Url: https://gitweb.ps.run/toc/blobdiff_plain/dbc4a22d3c8c4189459f0361cb9da06415ec2dc9..refs/heads/main:/src/main.cpp diff --git a/src/main.cpp b/src/main.cpp index 19b35f3..a075a80 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,7 +7,8 @@ #include "toc.h" #include "repr.h" #include "repr_get.h" -#include "check.h" +#include "generic.h" +//#include "check.h" using namespace antlr4; @@ -16,39 +17,45 @@ int main(int argc, const char * argv[]) { std::ifstream ifs("test/test2.toc"); + // create ANTLR input from filestream ANTLRInputStream input(ifs); + // lex input TocLexer lexer(&input); CommonTokenStream tokens(&lexer); + // parse TocParser parser(&tokens); + + // get Prog (root node) TocParser::ProgContext * prog = parser.prog(); - tree::ParseTree * tree = prog; + // dont continue on parse error if (parser.getNumberOfSyntaxErrors() > 0) { std::cerr << "Parsing error" << std::endl; return 1; } - std::string s = tree->toStringTree(&parser) + "\n"; - + // print raw parse tree + //tree::ParseTree * tree = prog; + //std::string s = tree->toStringTree(&parser) + "\n"; //std::cout << "Parse Tree: " << s << std::endl; - Program prg = getProgram(prog); + // generate IR from tree and instantiate generics + Program prg = getProgram(prog, nullptr); + instantiateGenerics(prg); + // print to cout and file try { tocProgram(std::cout, prg); - if (!checkProgram(prg)) - std::cerr << "Error" << std::endl; - std::ofstream ofs("output.c"); tocProgram(ofs, prg); ofs.close(); } - catch (const std::string & e) + catch (const char * e) { std::cerr << "Error: " << e << std::endl; }