⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 基于ANTLR的简单编译器源码version0.1
💻 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 + -