如何在ANTLR中“减去”词法分析器规则?

时间:2009-09-19 15:19:42

标签: parsing antlr

假设我有两条规则如下:

printable_characters : '\u0020' .. '\uFFEF' ;

newline_characters : '\n' | '\r' ;

现在让我们说我想制作一个名为printable_no_newlines的新规则。我想通过从newline_characters中减去printable_characters来做到这一点:

printable_no_newlines : printable_characters - newline_characters ;

该语法在ANTLR3中不起作用,但有没有人知道在不重新输入整个规则的情况下模拟这种语法的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我不认为这是可能的。我也怀疑它会做你想做的事情:例如,你的printable_new_newlines会包含"foo\nbar",因为它与printable_characters匹配,但与newline_characters不匹配(如只匹配一个字符的字符串。)