#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?