gpt4 book ai didi

java - 蚁树语法

转载 作者:行者123 更新时间:2023-11-30 09:37:40 25 4
gpt4 key购买 nike

我在从解析器语法转移到树语法时遇到问题,当我使用树运算符 (^,!) 而不是重写规则 (->) 时出现问题

where_clause
: 'where'! condition_or
;

condition_or
: condition_and ( 'or'^ condition_and )*
;

condition_and
: condition_expr ( 'and'^ condition_expr )*
;

condition_expr
: condition_comparision
// | condition_in
// | condition_like
;

condition_comparision
: column_identifier ('=' | '!=' | '>' | '<')^ sql_element
;

对于上面的解析器语法,树语法会是什么样子?由于这不是递归的,我无法将其折叠成树语法中的单个规则。

使用重写语法强制重写解析器语法的另一种选择

condition_or
: condition_and -> condition_and
( 'or' x=condition_and -> ^('or' condition_or $x))*
;

有没有更简单的方法来做到这一点?

谢谢

最佳答案

相应的树语法如下所示:

where_clause
: condition_or
;

condition_or
: ^('or' condition_and condition_and)
;

condition_and
: ^('and' condition_expr condition_expr)
;

condition_expr
: condition_comparision
;

condition_comparision
: ^('=' column_identifier sql_element)
| ^('!=' column_identifier sql_element)
| ^('>' column_identifier sql_element)
| ^('<' column_identifier sql_element)
;

关于java - 蚁树语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393786/

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