Skip to content

Commit fa5779c

Browse files
committed
Update docs
1 parent b013e72 commit fa5779c

File tree

1 file changed

+1
-12
lines changed

1 file changed

+1
-12
lines changed

docs/docs/design/miniob-sql-expression.md

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,4 @@ expression '+' expression {
161161
## 抽象表达式类型
162162
上面语法分析中描述的都是算术表达式,但是真实的SQL语句中,像字段名、常量、比较运算、函数、子查询等都是表达式。我们需要定义一个基类,然后派生出各种表达式类型。
163163

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等语句中,都使用表达式来表示。

0 commit comments

Comments
 (0)