Esempio n. 1
0
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;
}