4 #include "TocLexer.h"
\r
5 #include "TocParser.h"
\r
9 #include "repr_get.h"
\r
10 #include "generic.h"
\r
11 //#include "check.h"
\r
13 using namespace antlr4;
\r
16 int main(int argc, const char * argv[])
\r
18 std::ifstream ifs("test/test2.toc");
\r
20 // create ANTLR input from filestream
\r
21 ANTLRInputStream input(ifs);
\r
24 TocLexer lexer(&input);
\r
25 CommonTokenStream tokens(&lexer);
\r
28 TocParser parser(&tokens);
\r
30 // get Prog (root node)
\r
31 TocParser::ProgContext * prog = parser.prog();
\r
33 // dont continue on parse error
\r
34 if (parser.getNumberOfSyntaxErrors() > 0)
\r
36 std::cerr << "Parsing error" << std::endl;
\r
40 // print raw parse tree
\r
41 //tree::ParseTree * tree = prog;
\r
42 //std::string s = tree->toStringTree(&parser) + "\n";
\r
43 //std::cout << "Parse Tree: " << s << std::endl;
\r
45 // generate IR from tree and instantiate generics
\r
46 Program prg = getProgram(prog, nullptr);
\r
47 instantiateGenerics(prg);
\r
49 // print to cout and file
\r
52 tocProgram(std::cout, prg);
\r
54 std::ofstream ofs("output.c");
\r
55 tocProgram(ofs, prg);
\r
58 catch (const char * e)
\r
60 std::cerr << "Error: " << e << std::endl;
\r