我在使用SQL表达式解析器时遇到了困难。具体地说,使用a AND b和a BETWEEN c AND d规则。以BetweenExpression的身份使用lower={0.02 - 0.01 AND 0.02 + 0.01}和upper={l_quantity < 25}。显然,我希望将其解析为lower={0.02 - 0.01}和upper={0.02 + 0.01},并将AndExpression作为父节点。
yacc.yacc() result = yacc.parse(data)如果我不能访问运算符,我如何使用表达式构建我可以分离像p_expr_plus这样的函数,但在本例中,我将消除运算符优先级。不是很有用,因为我是初学者,不能解决这个问题。这是我找到的关于主题的最好的材料,但它没有考虑运算符优先级的复杂性。在我链接的PDF中,他们显式地将运算符放在元组中,比如:
Server 2012谓词优先级是否被“一次性”概念覆盖?
我一直在阅读由Itzik、Dejan Sarka和查询2012的文章。第3章第1课第67页描述谓词优先级。Server在内部支持短路概念;但是,由于语言中的即时概念,它不一定要按左到右顺序计算表达式。根据与成本相关的原因,它可以决定从第二个表达式开始,然后,如果第二个表达式计算为true,则计算第一个表达式。如果这是正确的,那么谓词优先级,如本书所述,以及Itzik在SQLm