gpt4 book ai didi

antlr4 - 如何在 ANTLR4 语法中指定像 "<"这样的非关联运算符?

转载 作者:行者123 更新时间:2023-12-04 02:29:36 24 4
gpt4 key购买 nike

在规则 expr : expr '<' expr | ...;ANTLR 解析器将接受类似 1 < 2 < 3 的表达式(并构建对应于括号 (1 < 2) < 3 的左关联树。

您可以告诉 ANTLR 将运算符视为右结合,例如

expr : expr '<'<assoc=right> expr | ...; 

产生解析树 1 < (2 < 3) .

然而,在许多语言中,关系运算符是非关联的,即表达式 1 < 2 < 3是禁止的。
这可以在 YACC 及其衍生物中指定。

它也可以在ANTLR中指定吗?
例如,作为 expr : expr '<'<assoc=no> expr | ...;
到目前为止,我无法在 ANTLR4 书中找到一些东西。

最佳答案

下面的方法怎么样。基本上是 a < b 的“结果”具有与运算符 < 的另一个应用程序不兼容的类型或 > :

expression
: boolExpression
| nonBoolExpression
;

boolExpression
: nonBoolExpression '<' nonBoolExpression
| nonBoolExpression '>' nonBoolExpression
| ...
;

nonBoolExpression
: expression '*' expression
| expression '+' expression
| ...
;

虽然我个人会选择 Darien而是在解析后检测错误。

关于antlr4 - 如何在 ANTLR4 语法中指定像 "<"这样的非关联运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023046/

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