2021SC@SDUSC
对树的上下访问
我从队中第四部分的负责人那里得知,在对操作的逻辑优化过程中,对树的访问确实不是单向的,而是“上蹿下跳”的。逻辑优化会在一个树状结构上来回访问,并且还有多种不同的优化逻辑,有不同的“上下翻飞”的方法。(不得不说后面的逻辑优化太难了)
既然它们后续的各种处理都需要在树上双向行走,那ASTNode保存父节点的必要性可太大了。
compile
compile
方法其实包含了后续大量操作,甚至包括第四部分的内容……的入口。实际上,主方法compile
就是一系列方法的入口的集合。
对于我们来说,我们的工作很大程度上——看上去——只是在读某一个方法。但实际上,这个方法往往会有层层复杂调用,背后有非常多的实现。
不过我想我的工作内容可能是比较特殊的,因为我是从入口开始的,内容逻辑、算法含量偏少,组织、调用偏多。debug
对我的收益可能会明显大于其他人。
总结
我的分析内容——至少对于hive开发者来说——其实集中在处理字符串。在这部分里需要对不同的输入模式进行处理,变量代换处理,消除注释,分割命令。而对ASTNode
的生成则完全被hive之外的另一个库完成了(甚至尝试去读取这些部分的源码时IDEA都会提醒你反编译)。
ps:至此我都没有找到将string打散为token的意义……