3

我的解析器包含几条规则,其中大部分以 @init 动作开始。现在,由于我的文件变得非常大,我决定为词法分析器规则制作一个单独的文件 LexerRules.g4 并使用

grammar TermParser;
import LexerRules;

现在,如果我使用我的别名 ANTLR4;我会遇到以下错误。

error(94): TermParser.g4:163:1: redefinition of 'init' action
error(94): TermParser.g4:189:1: redefinition of 'init' action
error(94): TermParser.g4:200:1: redefinition of 'init' action
error(94): TermParser.g4:212:1: redefinition of 'init' action
error(94): TermParser.g4:230:1: redefinition of 'init' action
error(94): TermParser.g4:296:1: redefinition of 'init' action
error(94): TermParser.g4:315:1: redefinition of 'init' action
error(94): TermParser.g4:359:1: redefinition of 'init' action
error(94): TermParser.g4:381:1: redefinition of 'init' action
error(94): TermParser.g4:440:1: redefinition of 'init' action

我分离解析器和词法分析器规则与在多个解析器规则中使用 @init 操作有什么关系?

当我拥有一个包含所有内容的大文件时,我没有遇到任何问题:词法分析器和解析器规则。

此外,导入不会使 ANTLRWORKS 2 中的主语法文件摆脱隐式定义警告。

4

0 回答 0