Интерпретатор синтаксического анализа ANTLR

#antlr #antlr4

#antlr #antlr4

Вопрос:

Я пытаюсь создать ANTLR ParserInterpreter, следуя этому руководству. Из третьего примера на этой странице, помеченного как Для загрузки отдельных грамматик лексера / синтаксического анализатора, … я вижу следующий код:

 public static ParseTree parse(String fileNameToParse,
                          String lexerGrammarFileName,
                          String parserGrammarFileName,
                          String startRule)
throws IOException{

    final LexerGrammar lg = (LexerGrammar) Grammar.load(lexerGrammarFileName);

    final Grammar pg = Grammar.load(parserGrammarFileName, lg);

    CharStream input = CharStreams.fromPath(Paths.get(fileNameToParse));
    LexerInterpreter lexEngine = lg.createLexerInterpreter(input);
    CommonTokenStream tokens = new CommonTokenStream(lexEngine);
    ParserInterpreter parser = pg.createParserInterpreter(tokens);
    ParseTree t = parser.parse(pg.getRule(startRule).index);
    System.out.println("parse tree: "   t.toStringTree(parser));
    return t;
}
  

В строке 5 Grammar.load передаются два параметра, a String и a LexerGrammar . Однако JavaDoc для org.antlr.v4.tool.Grammar показывает load метод, принимающий только один параметр.

Я что-то здесь упускаю? Если нет, есть ли обходной путь для создания ParserInterpreter с учетом грамматики lexer и файла грамматики parser?