main.cpp

来自「Java写的词法/语法分析器。可生成JAVA语言或者是C++的词法和语法分析器。」· C++ 代码 · 共 61 行

CPP
61
字号
#include <iostream>#include "antlr/CommonASTWithHiddenTokens.hpp"#include "antlr/CommonHiddenStreamToken.hpp"#include "InstrLexer.hpp"#include "InstrParser.hpp"#include "InstrTreeWalker.hpp"ANTLR_USING_NAMESPACE(std)ANTLR_USING_NAMESPACE(antlr)int main(int argc,char* argv[]){	InstrLexer lexer(cin);	lexer.setTokenObjectFactory(&CommonHiddenStreamToken::factory);	TokenStreamHiddenTokenFilter filter(lexer);	filter.hide(InstrParser::WS_);	filter.hide(InstrParser::SL_COMMENT);	InstrParser parser(filter);	parser.setASTNodeFactory(&CommonASTWithHiddenTokens::factory);	try {		// Parse the input statements		parser.slist();	}	catch(RecognitionException& e) {		cerr << "exception: " << e.what() << endl;	}	RefAST t = parser.getAST();	InstrTreeWalker walker;	walker.setFilter(filter);	try {		walker.slist(t);	}	catch(RecognitionException& e) {		cerr << "exception: " << e.what() << endl;	}}void InstrTreeWalker::setFilter(TokenStreamHiddenTokenFilter& filter_){	filter = &filter_;}/** walk list of hidden tokens in order, printing them out */void InstrTreeWalker::dumpHidden(RefToken t){	for ( ; t ; t=filter->getHiddenAfter(t) ) {		cout << t->getText();	}}void InstrTreeWalker::pr(RefAST p){	cout << p->getText();	dumpHidden(		(RefCommonASTWithHiddenTokens(p))->getHiddenAfter()	);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?