我知道可以在ANTLR语法中在默认和隐藏令牌通道之间切换,但可以说我想要第三个通道。我如何在Gramar中定义一个新的令牌频道?例如,可以说我想要一个名为ALTERNATIVE的频道。ANTLR:在语法中定义新通道
1
A
回答
2
他们只是final int
的在Token
class ,所以你可以简单地在你的词法分析器引入额外的int
这样的:
grammar T;
@lexer::members {
public static final int ALTERNATIVE = HIDDEN + 1;
}
// parser rules ...
FOO
: 'foo' {$type=ALTERNATIVE;}
;
// other lexer rules ...
一个相关的Q &答:How do I get an Antlr Parser rule to read from both default AND hidden channel
1
对于C你可以使用的目标
//This must be assigned somewhere
@lexer::context {
ANTLR3_UINT32 defaultChannel;
}
TOKEN : 'blah' {$channel=defaultChannel;};
这会得到每一个规则后重置,所以如果你想要一个频道分配可以在不同规则之间持续存在,您可能需要重写nextTokenStr()。
相关问题
- 1. antlr语法定义
- 2. 定义关键词在ANTLR语法
- 3. ANTLR语法中的歧义
- 4. 有条件地在ANTLR语法中添加自定义代码
- 5. ANTLR语义断言
- 6. 在antlr中处理隐藏通道3
- 7. CIL ANTLR语法?
- 8. ANTLR语法pred
- 9. C#ANTLR语法?
- 10. ANTLR中的语法和选定的词
- 11. ANTLR version2语法语法?
- 12. 在Emacs中定义新的语法
- 13. ANTLR语法错误
- 14. ANTLR语法if语句
- 15. ANTLR是否提供语义
- 16. 将ANTLR v3语法迁移到ANTLR v4
- 17. 转换ANTLR 3语法ANTLR 4
- 18. 给定语法的ANTLR代码
- 19. ANTLR解析语法 - >树语法
- 20. 在Antlr 3中生成自定义JavaDoci
- 21. ANTLR - 检查语义/值的含义
- 22. ^和!代表ANTLR语法
- 23. mismatchedtoken ANTLR的语法谓词
- 24. C#,ANTLR,ECMAScript语法错误
- 25. ANTLR语法谓词JAVACC
- 26. Antlr 100语法错误
- 27. ANTLR v4的C语法
- 28. ANTLR的语法和AST
- 29. ANTLR语法不是回溯
- 30. ANTLR语法链接错误
您必须在某处定义“ALTERNATIVE”类型,当然...... –