main.cpp
来自「基于ANTLR的简单编译器源码version0.1」· C++ 代码 · 共 56 行
CPP
56 行
#include <iostream>
#include <fstream>
#include <string>
#include <antlr/AST.hpp>
#include "Datalexer.hpp"
#include "DataParser.hpp"
#include "DataASTParser.hpp"
#include "data_type.h"
int main( int argc, char* argv[] )
{
ANTLR_USING_NAMESPACE(std);
ANTLR_USING_NAMESPACE(antlr);
cout<<"start compile the test.in file: \n";
try
{
ifstream fin("test.in");
Datalexer lexer(fin);
DataParser parser(lexer);
ASTFactory ast_factory("ASTNodeExt", ASTNodeExt::factory); parser.initializeASTFactory(ast_factory); parser.setASTFactory(&ast_factory);
parser.program();
RefASTNodeExt t = parser.getAST(); if( t ) { // 打印抽象语法树 cout<<"抽象语法树:\n"; cout << t->toStringTree() << endl;
ofstream fout("test.out");
fout<<t->toStringTree()<<endl;
DataASTParser astParser;
astParser.program(t);
}
else
{
cout<<"no tree builded!\n";
}
}
catch (CompilerException& e)
{
cerr <<"抽象语法树遍历,生成中间代码时发生错误:"<< e.what() << endl;
}
catch(ANTLRException& e)
{
cerr << "语法错误:" << e.toString() << endl;
}
catch(exception& e)
{
cerr << "编译程序错误" << e.what() << endl;
}
getchar();
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?