本节我们完成 SQL 解释器的最后一部分,它涉及到数据的删除和更改,首先我们看删除语句的解析。我们先看 delete 对应的语法:
Delete -> DELETE FROM ID (where Predicate)?
从语法规则可以看出,delete 语句必须以关键字 DELETE , FROM 开始,然后接着的字符串必须要满足 ID 的定义,最后可能接着 where 关键字,然后进入 Predicate 的解析,我们看看代码实现,在 parser.go 中的 Delete 函数增加代码如下:
func (p *SQLParser) Delete() interface{
} {
/*
第一个关键字 delete,第二个关键字必须 from
*/
p.checkWordTag(lexer.DELETE)
p.checkWordTag(lexer.FROM)
p.checkWordTag(lexer.ID)
tblName := p.sqlLexer.Lexeme
pred := query.NewPredicate()
if p.isMatchTag(lexer.WHERE) {
pred = p.Predicate()
}
return NewDeleteData(tblName, pred)
<