int main(int argc, char *argv[]) { if (argc < 1) return 0; ANTLR_USING_NAMESPACE(std); ANTLR_USING_NAMESPACE(antlr); ANTLR_USING_NAMESPACE(Asm); char *filename = argv[1]; if (!filename) exit(1); try { ifstream input(filename); AsmLexer lexer(input); TokenBuffer buffer(lexer); AsmParser parser(buffer); ASTFactory ast_factory; parser.initializeASTFactory(ast_factory); parser.setASTFactory(&ast_factory); parser.asmFile(); RefAST a = parser.getAST(); AsmTreeParser tree_parser; tree_parser.init(false, false, false); tree_parser.initializeASTFactory(ast_factory); tree_parser.setASTFactory(&ast_factory); tree_parser.asmFile(a); #if 0 cout << "List:" << endl; cout << a->toStringList() << endl; cout << "Tree:" << endl; cout << a->toStringTree() << endl; #endif } catch (ANTLRException& e) { cerr << "exception: " << e.getMessage() << endl; return 2; } catch (exception& e) { cerr << "exception: " << e.what() << endl; return 3; } return 0; }
int main( int argc, char *argv[] ) { ANTLR_USING_NAMESPACE(std); ANTLR_USING_NAMESPACE(antlr); ANTLR_USING_NAMESPACE(VmiCalls); if( argc < 2 ) exit( 0 ); try { ifstream input( argv[1] ); VmiCallsLexer lexer(input); TokenBuffer buffer(lexer); VmiCallsParser parser(buffer); ASTFactory ast_factory; parser.initializeASTFactory( ast_factory ); parser.setASTFactory( &ast_factory ); parser.vmiCallsFile(); RefAST a = parser.getAST(); VmiCallsHtmlEmitter tree_walker; tree_walker.initializeASTFactory( ast_factory ); tree_walker.setASTFactory( &ast_factory ); tree_walker.vmiCalls( a ); /* cout << "Tree:" << endl; cout << a->toStringTree() << endl; */ } catch( ANTLRException& e ) { cerr << "exception: " << e.getMessage() << endl; return -1; } catch( exception& e ) { cerr << "exception: " << e.what() << endl; return -1; } return 0; }
int main() { ANTLR_USING_NAMESPACE(std); ANTLR_USING_NAMESPACE(antlr); try { SimpleLexer lexer(cin); /* Invoke first parser */ cout << "first parser" << endl; SimpleParser parser(lexer); parser.simple(); /* Now we need to get the inputState from the first parser * this includes data about guessing and stuff like it. * If we don't do this and create the second parser * with just the lexer object we might (doh! will!) miss tokens * read for lookahead tests. */ ParserSharedInputState inputstate(parser.getInputState()); /* When first parser runs out, invoke secnond parser */ cout << "second parser" << endl; SimpleParser2 parser2(inputstate); parser2.simple(); } catch( ANTLRException& e ) { cerr << "exception: " << e.getMessage() << endl; return -1; } catch( exception& e ) { cerr << "exception: " << e.what() << endl; return -1; } return 0; }