ANTLR不匹配空注释

时间:2018-07-31 11:42:10

标签: antlr

我正在使用ANTLR解析一种语言,该语言使用冒号作为注释指示符,并作为“等于”分配的一部分。例如在行中

Index := 2    :Set Index

我需要将第一部分识别为赋值语句,将第二个冒号之后的文本识别为注释。目前,我使用以下规则进行此操作:

COMMENT                 : ':'+ ~[:='\r\n']*;

这似乎行之有效,除了立即后跟换行时。例如在行中

Index := 2    :

换行符紧接在第二个冒号之后。在这种情况下,注释无法识别,并且其余代码未在正确的上下文中进行解析。如果第二个冒号后面有一个空格,则该行将被正确解析。

我希望'\ r'\ n'可以解决这个问题,但是它似乎仅在注释符号后至少有一个字符时才起作用-我是否从命令中遗漏了某些内容?

1 个答案:

答案 0 :(得分:0)

大括号表示不带引号的字符集合。因此,您的'\ r \ n'文字在此处不起作用(您应该收到警告,在char范围中多次包含撇号。

改为这样定义评论:

COMMENT: ':'+ ~[:=\n\r]*;