File tree Expand file tree Collapse file tree 1 file changed +1
-12
lines changed Expand file tree Collapse file tree 1 file changed +1
-12
lines changed Original file line number Diff line number Diff line change @@ -161,15 +161,4 @@ expression '+' expression {
161
161
## 抽象表达式类型
162
162
上面语法分析中描述的都是算术表达式,但是真实的SQL语句中,像字段名、常量、比较运算、函数、子查询等都是表达式。我们需要定义一个基类,然后派生出各种表达式类型。
163
163
164
- 这些表达式的定义已经在expression.h中定义,但是没有在语法解析中体现。更完善的做法是在 select 的属性列表、where 条件、insert 的 values等语句中,都使用表达式来表示。
165
-
166
- ## ~~ '-' 缺陷~~ (已修复)
167
- 在先前版本,当负号 '-' 与数字放在一起时,会被词法分析认为是一个负值数字,作为一个完整的token返回给语法分析。故语法分析无法正确的解析类似 ` 1 -2 ` 的表达式,会将其识别为 ` 1 ` 和 ` -2 ` 两个数字。
168
-
169
- ### 解决方案
170
- 在词法分析中删除 "负数" 规则,将 '-' digits 解析为 "负号+表达式(数字)" 两个token,应用 ` UMINUS ` 的优先级,以实现正确区分一元负号和二元减号运算符。这样在处理类似 ` 1-2 ` 的表达式时,会将 ` 1 ` 、` - ` 、` 2 ` 识别为三个独立的token,以正确匹配减法规则。
171
-
172
- ### 优先级分析
173
- 1 . 二元运算符:乘除 > 加减
174
- 2 . 一元负号:高于所有二元运算符
175
- 3 . 括号:通过语法层级隐式最高
164
+ 这些表达式的定义已经在expression.h中定义,但是没有在语法解析中体现。更完善的做法是在 select 的属性列表、where 条件、insert 的 values等语句中,都使用表达式来表示。
You can’t perform that action at this time.
0 commit comments