ANTLR4中的令牌处理不一致
ANTLR4书引用了一个多模式示例 与 有没有我不见的安特福?这是在使用antlr4 maven插件ANTLR4中的令牌处理不一致,antlr4,Antlr4,ANTLR4书引用了一个多模式示例 与 有没有我不见的安特福?这是在使用antlr4 maven插件 wiki提到了一些类似的内容,但我的阅读方式与github上的示例和使用时的轶事经历相矛盾,出现了以下情况之一: 您忘记在ModeTagsLexer.g4中更新OPEN规则以使用以下表单: OPEN : '«' -> mode(ISLAND) ; 您在Antlr4中发现了一个bug,应该向管理员报告 您是否指定了ANTLR在读取语法时应该使用的文件编码?欧洲字符少于255应该没问题
wiki提到了一些类似的内容,但我的阅读方式与github上的示例和使用
时的轶事经历相矛盾,出现了以下情况之一:
您忘记在ModeTagsLexer.g4中更新OPEN
规则以使用以下表单:
OPEN : '«' -> mode(ISLAND) ;
您在Antlr4中发现了一个bug,应该向管理员报告
您是否指定了ANTLR在读取语法时应该使用的文件编码?欧洲字符少于255应该没问题,但是…我当然更新了开放规则,上面的第二个片段是剪切/粘贴。我要试着做一个票证的测试。ThanksIt看起来像是antlr4 maven插件和/或m2e的问题。除此之外,我真的没法找到它。你比我更了解这一点,你可能会有更好的运气,看看示例项目FWIW,我为此创建了一个票证,最终我看到你发现并解决了这个问题[.谢谢:)除了将源/资源指定为UTF-8之外,我还能在哪里执行此操作?请参阅示例github repo,其中中断是可重复的,不确定maven,但在命令行上键入“antlr4”表示:-编码uuuuuu_uu指定语法文件编码;例如,euc jp
parser grammar ModeTagsParser;
options { tokenVocab=ModeTagsLexer; } // use tokens from ModeTagsLexer.g4
file: (tag | TEXT)* ;
tag : '<' ID '>'
| '<' '/' ID '>'
;
tag : '«' ID '>';
OPEN : '«' -> pushMode(ISLAND);
TEXT : ~'«'+;
OPEN : '«' -> mode(ISLAND) ;