定义一个名为'message'的终端来处理“\ n”,噩梦......

时间:2012-12-12 08:55:47

标签: antlr antlr3 antlrworks antlrv3ide

我使用了一个名为

的定义
message : '"'.* '"';
表示“”里面的每一个小东西的

是消息,终端 它适用于“lkjaldjfa kajf”一些常见的东西 但当我遇到“\ n”时,它变成了一场噩梦 - 这会导致不确定的循环,让我的记忆消耗殆尽。

我不知道为什么..谢谢

1 个答案:

答案 0 :(得分:1)

  

......它变成了一场噩梦 - 导致不确定的循环,吞噬了我的记忆。

很难对其进行评论而无法重现它。

然而,解析器规则:

message : '"' .* '"';

匹配令牌 '"',后跟零个或多个其他令牌,以令牌 '"'结尾。< / p>

除非您有充分的理由将其保留为解析器规则(我当时希望听到),否则请将其更改为 lexer 规则:

Message : '"' .* '"';

匹配字符 '"',后跟零个或多个其他字符,以字符 '"'结尾。


另见:Practical difference between parser rules and lexer rules in ANTLR?