[SDU软件工程实践]Blog14-一些团队交流与终章

本文探讨了在编译过程中,如何在树状结构上进行上下访问的逻辑优化,强调了ASTNode保存父节点的重要性,尤其是在处理字符串操作和编译方法中的层层调用。作者的工作集中在字符串处理和调用组织,而非核心算法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021SC@SDUSC

对树的上下访问

我从队中第四部分的负责人那里得知,在对操作的逻辑优化过程中,对树的访问确实不是单向的,而是“上蹿下跳”的。逻辑优化会在一个树状结构上来回访问,并且还有多种不同的优化逻辑,有不同的“上下翻飞”的方法。(不得不说后面的逻辑优化太难了)
既然它们后续的各种处理都需要在树上双向行走,那ASTNode保存父节点的必要性可太大了。

compile

compile方法其实包含了后续大量操作,甚至包括第四部分的内容……的入口。实际上,主方法compile就是一系列方法的入口的集合。
对于我们来说,我们的工作很大程度上——看上去——只是在读某一个方法。但实际上,这个方法往往会有层层复杂调用,背后有非常多的实现。
不过我想我的工作内容可能是比较特殊的,因为我是从入口开始的,内容逻辑、算法含量偏少,组织、调用偏多。debug对我的收益可能会明显大于其他人。

总结

我的分析内容——至少对于hive开发者来说——其实集中在处理字符串。在这部分里需要对不同的输入模式进行处理,变量代换处理,消除注释,分割命令。而对ASTNode的生成则完全被hive之外的另一个库完成了(甚至尝试去读取这些部分的源码时IDEA都会提醒你反编译)。
ps:至此我都没有找到将string打散为token的意义……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值