第607章 逻辑的岔路!魔鬼的诞生!
    这个时候,它就“懵”了。

    它不知道,这个PRINT,是属于IF语句的一部分呢,还是一个新的,独立的语句的开始?

    这就是“语法歧义”!

    一个,足以让整个编译过程,彻底崩溃的,致命的妖怪!

    “完了……”

    黄建功的手,开始颤抖。

    那份设计规范,在他手里,不再是智慧的结晶,而像一个潘多拉的魔盒。

    钱学敏他们,出于好心,为了让语言变得更“自由”,更“简单”。

    却在无意中,释放出了一个,名为“歧义”的,逻辑上的妖怪!

    他们亲手,为自己,也为编译器组,挖了一个,深不见底的巨坑!

    “黄老?黄老!您没事吧?”

    周围的专家,看到黄建功脸色惨白,额头冒汗,都吓了一跳。

    “快!快去把钱老请过来!”黄建功的声音,嘶哑而急促,“出大事了!”

    他知道,这门“华夏”语言,从它诞生的那一刻起。

    就已经走上了一条,逻辑的岔路。

    而这条路的尽头,不是通往神国的天梯。

    是一个,由他们自己创造出来的,万劫不复的,逻辑深渊!

    半小时后。

    “编译器”攻关组的会议室,气氛紧张到了冰点。

    钱学敏和几位“神谕语言”设计组的核心成员,匆匆赶到。

    他们看到黄建功和一众编译器专家,个个脸色铁青,都感到有些莫名其妙。

    “老黄,怎么了?火急火燎地把我们叫过来?”钱学敏笑着问道,脸上还带着一丝创造出完美作品的得意,“是不是被我们的设计,给惊艳到了?”

    黄建功没有说话。

    他只是拿起一支粉笔,走到黑板前,写下了一行,他们规范里定义的,“合法”代码。

    IF A > B IF C > D PRINT "1" ELSE PRINT "2"

    写完,他转过身,用一种极其压抑的目光,看着钱学敏。

    “钱老,请问,这行代码,是什么意思?”

    钱学敏看了一眼,不假思索地回答:“很简单啊。如果A大于B,那么,就再判断C是不是大于D。如果C也大于D,就打印‘1’。否则,就打印‘2’。”

    “是吗?”

    黄建功的嘴角,扯出一个比哭还难看的笑容。

    “那为什么,不能是这样理解呢?”

    “如果A大于B,那么,就执行后面的IF C > D PRINT "1"这个判断。”

    “但是,如果A不大于B,那么,就执行ELSE PRINT "2"。”

    他用粉笔,重重地在ELSE这个词上,画了一个圈。

    “请问,这个ELSE,它到底是跟第一个IF配对的,还是跟第二个IF配对的?”

    钱学敏脸上的笑容,瞬间凝固了。

    他张了张嘴,想反驳。

    可他发现,自己竟然,无从反驳。

    从人类的阅读习惯来说,ELSE通常是和最近的那个IF配对。

    但是,从语法的可能性上来说,它跟第一个IF配对,也完全说得通!

    一句话,两种截然不同的解释!

    这就是,赤裸裸的,无法回避的“歧义”!

    “这……这……”

    钱学敏的额头,也开始冒汗了。

    他和其他几位语言组的专家,面面相觑,都从对方的眼中,看到了震惊和慌乱。

    他们之前,光顾着追求语言的“灵活性”,完全没有考虑到,这种嵌套结构下,会产生如此致命的问题!

    “这只是其中一个问题!”

    黄建功的声音,变得严厉起来。

    他擦掉黑板上的代码,又写下了另一行。

    A = B + C * D;

    “这句,很简单,先算乘法,再算加法,对吧?这是我们小学就学过的‘运算符优先级’。”

    “但是!”

    他话锋一转,又写了一行。

    A = B + C++;

    “这句呢?钱老,您告诉我,是先算B+C,再让C自增1?还是先让C自增1,再算B加上那个新的C?”

    钱学敏,彻底说不出话了。

    他发现,他们引以为傲的,那个简洁的++运算符,在这里,也成了一个“歧义”的源头!

    “还有这个!”

    黄建功几乎是在咆哮了。

    PRINT A B C;

    “你们说,为了方便,函数调用可以省略括号!”

    “那这句话,编译器怎么知道,你是想调用一

本章未完,请点击下一页继续阅读>>