我lexer grammar
名为BasicTokens
,是我语言的基本令牌集,包含null
,true
,false
等令牌。
现在当我创建解析器语法时,说BasicGrammar
导入引用BasicTokens
,另一个语法InheritedGrammar
导入BasicGrammar
。
当Antlr4为InheritedGrammar
生成解析器时,它包含BasicGrammar
中已定义的所有规则。
有没有办法让Antlr只描述InheritedGrammar
而不是BasicGrammar
中生成的规则,还会继承BasicGrammarParser
而不是Parser
?
答案 0 :(得分:1)
由于ANTLR 4实现导入的方式,这是不可能的。
如果语法x
导入语法y
,则操作行为如下:
y
(及其所有规则)。x
中的规则添加到规则集合中。如果发生任何名称冲突,请将y
中的规则替换为x
中找到的规则。到达代码生成器时,规则层次结构完全展平。