Search in sources :

Example 1 with Parser

use of org.antlr.runtime.Parser in project antlr4 by antlr.

the class TestASTStructure method execParser.

public Object execParser(String ruleName, String input, int scriptLine) throws Exception {
    ANTLRStringStream is = new ANTLRStringStream(input);
    Class<? extends TokenSource> lexerClass = Class.forName(lexerClassName).asSubclass(TokenSource.class);
    Constructor<? extends TokenSource> lexConstructor = lexerClass.getConstructor(CharStream.class);
    TokenSource lexer = lexConstructor.newInstance(is);
    is.setLine(scriptLine);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    Class<? extends Parser> parserClass = Class.forName(parserClassName).asSubclass(Parser.class);
    Constructor<? extends Parser> parConstructor = parserClass.getConstructor(TokenStream.class);
    Parser parser = parConstructor.newInstance(tokens);
    // set up customized tree adaptor if necessary
    if (adaptorClassName != null) {
        Method m = parserClass.getMethod("setTreeAdaptor", TreeAdaptor.class);
        Class<? extends TreeAdaptor> adaptorClass = Class.forName(adaptorClassName).asSubclass(TreeAdaptor.class);
        m.invoke(parser, adaptorClass.newInstance());
    }
    Method ruleMethod = parserClass.getMethod(ruleName);
    // INVOKE RULE
    return ruleMethod.invoke(parser);
}
Also used : ANTLRStringStream(org.antlr.runtime.ANTLRStringStream) CommonTokenStream(org.antlr.runtime.CommonTokenStream) TokenSource(org.antlr.runtime.TokenSource) Method(java.lang.reflect.Method) Parser(org.antlr.runtime.Parser)

Aggregations

Method (java.lang.reflect.Method)1 ANTLRStringStream (org.antlr.runtime.ANTLRStringStream)1 CommonTokenStream (org.antlr.runtime.CommonTokenStream)1 Parser (org.antlr.runtime.Parser)1 TokenSource (org.antlr.runtime.TokenSource)1