我的解析器由几个规则组成,其中大部分都以@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动作有什么关系?
当我拥有一个大文件时,我没遇到任何问题:lexer以及解析器规则。
此外,导入不会使ANTLRWORKS 2中的主语法文件摆脱隐式定义警告。