2014-08-28 57 views
0

我已经lexer grammar称为BasicTokens其设置为我的语言基本令牌,令牌有像nulltruefalse是否有可能使Antlr4从基本语法词法分析器生成词法分析器,而不是生成Lexer?

现在,当我创建解析器语法说BasicGrammar其中进口是指BasicTokens和另一个叫语法其中InheritedGrammar进口BasicGrammar

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

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

回答

1

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

如果语法x进口语法y,操作行为如下:

  1. 负载语法y(和它的所有规则)。
  2. 将规则从语法x添加到规则集合。如果发生任何名称冲突,请将y中的规则替换为x中的规则。

当您到达代码生成器时,规则层次结构完全展平。

+0

有没有办法在不导入的情况下引用语法'​​y'? – 2014-08-28 21:44:41