我创建了antlr4语法文件“ Jay.g4”,并生成了“ JayLexer.java”和“ JayParser.java”,并通过编译创建了“ JayLexer.class”和“ JayParser.class”。问题是:如何在Java中使用生成的源?我使用NetBeans IDE,但我不知道如何将词法分析器和解析器集成到我的项目中,并使它们正常工作。
如果您打算进一步冒险,建议您参阅The Definitive Antlr 4 Reference。从Antlr文档中,您可以下载/查看一些示例代码,其中包括:
final LexerGrammar lg = (LexerGrammar) Grammar.load(lexerGrammarFileName);
final Grammar pg = Grammar.load(parserGrammarFileName, lg);
ANTLRFileStream input = new ANTLRFileStream(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));
Run Code Online (Sandbox Code Playgroud)
如果你有类JayLexer和JayParser但是,你宁愿写的东西,如:
ANTLRFileStream input = new ANTLRFileStream(fileName); // a character stream
JayLexer lex = new JayLexer(input); // transforms characters into tokens
CommonTokenStream tokens = new CommonTokenStream(lex); // a token stream
JayParser parser = new JayParser(tokens); // transforms tokens into parse trees
ParseTree t = parser.your_first_rule_name(); // creates the parse tree from the called rule
Run Code Online (Sandbox Code Playgroud)
然后根据需要使用分析树,例如,一个实现JayBaseListener或的类JayBaseVisitor。检查给定的链接之一以获取更多信息。
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |