先扔一下我们伟大的助教提供的题面。
注:以下做法仅供娱乐,大多数都十分复杂且低效,请尽量不要尝试。
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。(指针类型自行推导)
目前的进度
neix@MetallicBrick:/cplcode$ cd projekt-01
neix@MetallicBrick:/cplcode/projekt-01$ ls
__main_discarded_0.c __main_discarded_1.c
标签:__,解释器,实现,list,MetallicBrick,SQL,array,main,Minus
From: https://www.cnblogs.com/aliasRevir/p/sql-minus.html