字体:大 中 小
护眼
关灯
上一章
目录
下一章
第621章 新的维度之墙!手造神祇!
第(1/3)页
一种巨大的,沉闷的压力,开始笼罩在“编译器”攻关组所有人的心头。
如果说,之前的失败,是因为“路线错误”,大家虽然痛苦,但心里还憋着一股“只要找到正确的路就能成功”的劲儿。
那么现在,他们面临的,是另一种,更让人绝望的困境。
他们,已经,站在了正确的道路上。
可这条路,是一条,需要,用血肉之躯,去攀登的,万丈绝壁!
“不管有多难,都必须干!”
在短暂的沉寂后,黄建功,第一个,打破了压抑。
他的眼中,闪烁着一种,近乎于悲壮的,决然。
“老师,已经,为我们,指明了‘道’!”
“如果,我们连,沿着‘道’,走下去的勇气,都没有!”
“那我们,就真的,是一群,无可救药的,废物!”
“没有工具,我们就自己造!”
“没有捷径,我们就用最笨的办法,一步一步地,往前挪!”
“我就不信,我们这几百个,全国最顶尖的大脑,还啃不下,这块硬骨头!”
黄建功的这番话,像一针强心剂,重新,点燃了众人心中,那即将熄灭的火焰。
对!
不能放弃!
老师,在天上看着呢!
如果,连这点困难,都克服不了,他们,还有什么脸面,自称是“老师的学生”?
“干!”
“没错!跟它拼了!”
“我就不信,用机器码,写不出一个,语法分析器!”
团队的士气,被重新,鼓舞了起来。
一场,名为“手造神祇”的,悲壮的攻坚战,正式打响。
经过激烈的讨论,他们最终,选择了两种,主流的语法分析技术路线,兵分两路,同时进行。
第一路,由黄建功,亲自带队。
他们采用的,是一种,自上而下的分析方法,名为——“递归下降分析法”。
这个方法的核心思想,非常直观。
他们,为“宪法”中的,每一个“非终结符”(比如、),都编写一个,对应的函数。
当,需要分析一个“赋值语句”的时候,就调用“分析赋值语句”这个函数。
而“分析赋值语句”这个函数内部,又会去调用“分析标识符”和“分析表达式”的函数。
“分析表达式”的函数,又会去调用“分析项”的函数……
就这样,一层一层地,向下递归调用,直到,将整个代码,分析完毕。
这个思路,听起来,很美。
它,完美地,将复杂的语法规则,分解成了,一个个,独立的,函数模块。
但是,当黄建功他们,真正开始,用机器码,编写这些,互相调用的函数时。
他们,很快,就遇到了,一个,鬼魅般的,敌人。
——“左递归”。
在他们的“宪法”中,有一条规则是:E -> E + T。
一个“表达式”,可以由,另一个“表达式”,加上一个“项”,构成。
这是一个,典型的,“左递归”定义。
当,“分析表达式”的函数,被调用时,它的第一件事,就是,再去调用,它自己!
“分析表达式” -> 调用“分析表达式” -> 调用“分析表达式”……
结果,就是程序,陷入了一个,永不停止的,自我调用的,死循环!
“轰!”
第一台,用于测试的“盘古之心”原型机,因为,函数调用栈,被瞬间撑爆,冒出了一股青烟,彻底报废。
黄建功,和他的组员们,目瞪口呆地,看着那台,烧毁的机器。
他们,花了三天三夜,写出来的,几万行机器码。
在运行的,第一毫秒,就,以一种,最惨烈的方式,宣告了,自我毁灭。
“不行……这条路,走不通……”
黄建功,喃喃自语。
他发现,“宪法”的优美,和,现实编程的残酷,是两回事。
有些,在数学上,看起来很美的定义,在计算机里,就是,一个,致命的陷阱。
第一路,宣告失败。
而另一路,则是由,钱学敏,这位数学泰斗,跨界支援。
他们采用的,是一种,更加复杂,也更加强大的,自下而上的分析方法——“LR分析法”。
这种方法,不依赖递归。
它的核心,是,构建一张,巨大的,“分析表”。
这张表,会告诉“语法分析器”,在当前状态下,读到,下一个符号时,应该执行什么操作(移入、规约、接受、或报错)。
整个分析过程,就像一辆,在,预设好的,庞大轨道网络上,行驶的,小火车。
只要,这张“分析表”,是正确的,那么,分析过程,就,绝对不会出错。
这个方法,从理论上,就,完美地,避开了“左递归”的陷阱。
看起来,似乎,是,通往成功的,康庄大道。
于是,钱学敏,带领着一群,数学和逻辑学方面的天才,开始了,一项,堪称“浩瀚”的工程。
——手动,计算和绘制,那张,决定生死存亡的,“LR分析表”。
他们,将“宪法”里的一百零八条规则,全部,转换成了,更底层的,“产生式”。
然后,他们开始,计算,每一个“产生式”的,“项目集”。
再根据“项目集”,去构建,“活前缀自动机(DFA)”。
最后,根据这个,庞大的“自动机”,来,填写那张,最终的,“分析表”。
这个过程,充满了,大量,繁琐到,令人发指的,纯粹的,数学计算。
每一步,都不能有,丝毫的差错。
一个微小的计算失误,就可能导致,整张表格,的逻辑,全部作废。
钱学敏,和他的团队,就像一群,最虔诚的,中世纪修士。
把自己,关在,与世隔绝的实验室里。
用笔,和草稿纸,在一张,铺满了整个房间的,巨大坐标纸上。
一个格子,一个格子地,计算和填写着,那张,通往神国的“地图”。
时间,一天一天地,过去。
那张“地图”,也,一点一点地,被填满。
一周后。
当他们,终于,完成了,整张表格的,初步绘制时。
所有人都,被眼前的景象,给,震撼了。
那张,铺在地上的坐标
(本章未完,请翻页)
记住手机版网址:m.lewenwx.cc
上一章
目录
下一章