简化版本 SQL-Minus 解释器

发布时间 2023-12-23 16:51:22作者: Xi'En

先扔一下我们伟大的助教提供的题面

注:以下做法仅供娱乐,大多数都十分复杂且低效,请尽量不要尝试。

CREATE TABLE

考虑实现一个 array<ValEx>

初始化时由于字段数未知,需要实现一个 list<ValEx> 来支持插入,最后将其转为 array<ValEx>

INSERT

考虑实现一个 vector<array<Val>>

需要实现一个 list<Val> 来支持插入,最后将其转为 array<Val>

另一种实现方式可以使用 array<vector<Val>>,即在字段列表后逐一 append 数据,这样可以省去 list<Val>

WHERE (<condition_clause>)

考虑对给出的条件子句构造一棵表达式树,每次递归求值。

建树后,进行一次类型推导判断是否 ERROR。

Parsing

为了保证 SYNTAX ERROR 返回及时,且内存利用充分,考虑动态构造上述的 list<>,并且随时准备报错并手动析构现有数据。

实现细节

尽量使用指针来做到动态构造、析构。

为了保持代码朴素,尽量减少不必要的封装,多使用裸露的 malloc 和 free。(指针类型自行推导)