]> gitweb.ps.run Git - toc/blob - src/main.cpp
toc now uses internal representation instead of ast
[toc] / src / main.cpp
1 #include <iostream>\r
2 #include <fstream>\r
3 \r
4 #include "TocLexer.h"\r
5 #include "TocParser.h"\r
6 \r
7 #include "toc.h"\r
8 #include "repr.h"\r
9 #include "repr_get.h"\r
10 \r
11 using namespace antlr4;\r
12 \r
13 \r
14 int main(int argc, const char * argv[]) {\r
15   std::ifstream ifs("test.toc");\r
16 \r
17   ANTLRInputStream input(ifs);\r
18 \r
19   TocLexer lexer(&input);\r
20   CommonTokenStream tokens(&lexer);\r
21 \r
22   TocParser parser(&tokens);\r
23   TocParser::ProgContext * prog = parser.prog();\r
24   tree::ParseTree * tree = prog;\r
25 \r
26   if (parser.getNumberOfSyntaxErrors() > 0) {\r
27     std::cerr << "Parsing error" << std::endl;\r
28     return 1;\r
29   }\r
30 \r
31   std::string s = tree->toStringTree(&parser) + "\n";\r
32 \r
33   //std::cout << "Parse Tree: " << s << std::endl;\r
34 \r
35   Program prg = getProgram(prog);\r
36   std::cout << "Variables:\n";\r
37   for (auto v : prg.variables)\r
38     std::cout << " " << v.name << endl;\r
39   std::cout << "Functions:\n";\r
40   for (auto f : prg.functions)\r
41     std::cout << " " << f.name << endl;\r
42 \r
43   tocProgram(std::cout, prg);\r
44 \r
45   //std::ofstream ofs("output.c");\r
46   //tocProg(ofs, prg);\r
47   //ofs.close();\r
48 \r
49   return 0;\r
50 }