很遗憾,语法分析器的实验到现在才做完,主要是因为在当时实验要求完成的时间中,还在负责公司产品的正常迭代,加上当时有新同学加入,要在保证产品迭代质量的基础上还要保证新同学能够快速上手,接着还有驾照的科三科四,最后为了弥补心中的遗憾,参加了一个Apple中国和浙大举办的比赛,十分梦想去参加一次WWDC,还打算通过明年的WWDC Scholarship,但是看了今年学长们的论文检测、毕业答辩时间等一些事情,正好交叉在了一块,感觉到明年再准备将会十分拘谨,噢,还有一门课的考试。

因此这几件事情彻底占据了我几乎所有空余时间,不过好在一切都顺利结束了,把公司产品迭代完成后本想着休息一波,整理整理思路,跟leader商量之后,他并不想让我走,我也能懂leader的意思,确实我也看出来了招到一个合适人非常不容易,更何况他们只想要实习生,所以找到一个符合要求的实习生难度可想而知。驾照也顺利拿到了,拿到的当天删光了所有与驾校有关系的微信和群,真是烦透了。比赛的事情在初赛截止之前的前一天晚上提交了所有内容,刚去看了一眼,从目前评委的评价来看,提交的两个作品都极有可能进入复赛,如果两个产品都进入了复赛,真不知道是喜是忧了。

OK,以上就是这段时间一直没更新blog的主要原因。接下来看看周末到现在的成果吧。

做的事情跟大家也都是一样的,就是一个非常普通的语法分析器,网上相关的代码都已经烂大街了,刚才去查实验,通过老师的语气和表情也能揣摩出来,并没有设么值得稀奇的地方,但是据鄙人所知,我身边的同学们几乎都是Java,而且代码来源“不祥”。不是说我的同学们就差,我就好,而是想通过这个对比,来突出我完成的这份实验真正与众不同的地方。

是的。它也是基于Swift,而且跟之前的词法分析器一样,同样是基于Cocoa框架,通过StoryBoard搭建页面逻辑,整体来看非常的简单,没有什么太值得展开说的地方。不过我觉得唯一可以值得炫耀的地方估计可能是它是第一份全网基于Swift的通用型语法分析器吧hhhh。受限于实验允许完成的时间(上周五开始写,直到昨天晚上,因为今天要查),并没有测试太多的文法,断断续续的根据四个文法调试了程序,新增的最后一个文法是因为刚才去查实验时,老师没让我说太多,直接让我先试试看课本上的一道课后练习。当时我心里没多大谱,因为这个语法分析器并没有经历过多少特殊的文法调试,深知肯定会出问题,输入文法后发现还真的出了问题,不过在当时的环境下,我并不能看出来其中的端倪,回到宿舍后,休息了一下,重新整理了思路,最新的提交已经解决了这个问题,并附上了对应的新文法(configuration5)。

这其中的大部分实现流程,就是把口头解决问题的思路转化成Swift代码,并没有多少技术难点,不过给我的感觉是真的是有些麻烦,怪不得有些同学会说:“这实验应该没人能做得出来吧,能自己全写出来的得有多厉害啊!”。当时为了顾及女朋友对实验的掌控能力,是想最初直接用C/C++,但是突然考虑到这最终肯定是无法把独特性构建出来,再加上当时确实十分想通过某个机会all in到Swift中,本来很是纠结,但是她突然拿到了上届一个学长的代码,这回好办了,基本上大家的实验都过了。emmmm

可以说,也就是有了上个实验的基础,直接让我狠下心来把接下来新开所有项目统统使用Swift(顺便改造老项目)开发。每个想动手写出来该实验的同学最终的思路都大同小异,需要考虑的细节问题视个人思维缜密程度而定,我的思路如果你有兴趣,看看就明白啦~

项目传送门

(这文章好水,根本不是总结……