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 + -
显示快捷键?