是否有可能使Antlr4从基础语法词法分析器生成词法分析器而不是gener Lexer?

时间:2014-08-28 02:01:13

标签: java parsing antlr antlr4 lexer

lexer grammar名为BasicTokens,是我语言的基本令牌集,包含nulltruefalse等令牌。

现在当我创建解析器语法时,说BasicGrammar导入引用BasicTokens,另一个语法InheritedGrammar导入BasicGrammar

当Antlr4为InheritedGrammar生成解析器时,它包含BasicGrammar中已定义的所有规则。

有没有办法让Antlr只描述InheritedGrammar而不是BasicGrammar中生成的规则,还会继承BasicGrammarParser而不是Parser

1 个答案:

答案 0 :(得分:1)

由于ANTLR 4实现导入的方式,这是不可能的。

如果语法x导入语法y,则操作行为如下:

  1. 加载语法y(及其所有规则)。
  2. 将语法x中的规则添加到规则集合中。如果发生任何名称冲突,请将y中的规则替换为x中找到的规则。
  3. 到达代码生成器时,规则层次结构完全展平。