1
A
回答
3
他们替代标签:
替代标签
正如我们在7.4节所看到的,标签规则替代了准确的事件的方法,我们可以得到更精确的解析树监听器通过使用#运算符标记规则的最外层选项来实现事件。规则中的所有替代方法都必须加上标签,否则都不加标签。这里有两个标签替代方案。
grammar T; stat: 'return' e ';' # Return | 'break' ';' # Break ; e : e '*' e # Mult | e '+' e # Add | INT # Int ;
可选标签不必位于行的末尾,并且#符号后面不必有空格。 ANTLR为每个标签生成规则上下文类定义。例如,这里是ANTLR生成监听器:
public interface AListener extends ParseTreeListener { void enterReturn(AParser.ReturnContext ctx); void exitReturn(AParser.ReturnContext ctx); void enterBreak(AParser.BreakContext ctx); void exitBreak(AParser.BreakContext ctx); void enterMult(AParser.MultContext ctx); void exitMult(AParser.MultContext ctx); void enterAdd(AParser.AddContext ctx); void exitAdd(AParser.AddContext ctx); void enterInt(AParser.IntContext ctx); void exitInt(AParser.IntContext ctx); }
来源:https://github.com/antlr/antlr4/blob/master/doc/parser-rules.md#alternative-labels
相关问题
- 1. ANTLR:得到语法树的最快方法是什么?
- 2. ANTLR BNF语法符号中的epsilon等价物是什么?
- 3. ANTLR语法不是回溯
- 4. CIL ANTLR语法?
- 5. ANTLR语法pred
- 6. C#ANTLR语法?
- 7. ANTLR什么是最简单的方法来实现像缩进语法的Python?
- 8. ANTLR version2语法语法?
- 9. ANTLR语法错误
- 10. antlr语法定义
- 11. Antlr 3中的语法有什么问题?
- 12. ANTLR语法if语句
- 13. 在ANTLR语法中相等(不是令牌)。这是什么意思?
- 14. setTimeout的语法是什么?
- 15. URL的语法是什么
- 16. keybinds.settings的语法是什么?
- 17. 将ANTLR v3语法迁移到ANTLR v4
- 18. 转换ANTLR 3语法ANTLR 4
- 19. mismatchedtoken ANTLR的语法谓词
- 20. ANTLR语法中的歧义
- 21. ANTLR v4的C语法
- 22. ANTLR的语法和AST
- 23. 什么是JavaCC的优势与ANTLR
- 24. R是否存在ANTLR或IRONY语法?
- 25. ANTLR解析语法 - >树语法
- 26. 这是什么语法? C++
- 27. 这是什么语法?
- 28. 什么是gstreamer caps语法?
- 29. 这是什么语法:union {}?
- 30. 这是什么Ruby语法?
我认为我做了错误的编辑您的帖子。我如何删除它? – TomServo
我已经拒绝了,我不认为别人会批准它。 –