gpt4 book ai didi

antlr - ANTLR中是否存在逻辑AND和NOT?

转载 作者:行者123 更新时间:2023-12-04 09:42:58 25 4
gpt4 key购买 nike

ANTLR中没有逻辑吗?我基本上是想否定我已有的规则,并想知道它是否可能,并且还有逻辑吗?

最佳答案

@larsmans 已经提供了答案,我只想举例说明 ANTLR 规则中的法律否定(因为经常发生错误)。

ANTLR 中的否定运算符是 ~(波浪号)。在词法分析器规则中, ~ 否定单个字符:

NOT_A : ~'A';

匹配除 'A' 之外的任何字符并且:
NOT_LOWER_CASE : ~('a'..'z');

匹配除小写 ASCII 字母之外的任何字符。 lats 的例子也可以写成:
NOT_LOWER_CASE : ~LOWER_CASE;
LOWER_CASE : 'a'..'z';

只要您否定一个字符,就可以使用 ~ 无效 做这样的事情:
INVALID : ~('a' | 'aa');

因为你不能否定字符串 'aa'

在解析器规则中,否定对字符不起作用,但对标记起作用。所以 parse 规则:
parse
: ~B
;

A : 'a';
B : 'b';
C : 'c';

匹配 'b' 以外的任何字符,而是匹配 B 标记以外的任何标记。所以它会匹配标记 A (字符 'a' )或标记 C (字符 'c' )。

相同的逻辑适用于 . (DOT) 运算符:

词法分析器中的
  • 规则它匹配来自集合 \u0000..\uFFFF 的任何字符;
  • 在解析器规则中匹配任何标记(任何词法分析器规则)。
  • 关于antlr - ANTLR中是否存在逻辑AND和NOT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532576/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com