📄 main.cpp
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -