示例#1
0
文件: main.cpp 项目: manyoso/sformsv1
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;
}
示例#2
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;
}
示例#3
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;
}