我正在使用ANTLR解析一种语言,该语言使用冒号作为注释指示符,并作为“等于”分配的一部分。例如在行中
Index := 2 :Set Index
我需要将第一部分识别为赋值语句,将第二个冒号之后的文本识别为注释。目前,我使用以下规则进行此操作:
COMMENT : ':'+ ~[:='\r\n']*;
这似乎行之有效,除了立即后跟换行时。例如在行中
Index := 2 :
换行符紧接在第二个冒号之后。在这种情况下,注释无法识别,并且其余代码未在正确的上下文中进行解析。如果第二个冒号后面有一个空格,则该行将被正确解析。
我希望'\ r'\ n'可以解决这个问题,但是它似乎仅在注释符号后至少有一个字符时才起作用-我是否从命令中遗漏了某些内容?
答案 0 :(得分:0)
大括号表示不带引号的字符集合。因此,您的'\ r \ n'文字在此处不起作用(您应该收到警告,在char范围中多次包含撇号。
改为这样定义评论:
COMMENT: ':'+ ~[:=\n\r]*;