但真正让他感到不安的,是接下来的一个章节。
“第四章:语句结构。第四点三节:表达式语句。本语言允许将一个独立的表达式,作为一个完整的语句。例如,A + B;本身就是一句合法的语句,尽管它可能没有实际意义……”
“什么?!”
黄建功失声叫了出来。
一个独立的表达式,也能算一个语句?
那A + B;和A = A + B;,编译器该如何区分?
这……这不是在给编译器,制造混乱吗?
“黄老,怎么了?”旁边的人,好奇地问道。
黄建功没有回答,他的脸色,变得无比凝重。
他有种非常不好的预感。
他翻到了最后一章,附录。
“附录A:关于IF语句的说明。本语言的IF语句,可以省略THEN关键字。例如,IF A > B PRINT "A更大"是合法的。”
“附录B:关于函数调用的说明。本语言的函数调用,可以省略括号。例如,PRINT "你好"等价于PRINT("你好")。”
“附录C……”
黄建功越看,手心越是冰冷。
他终于明白,问题出在哪里了。
钱学敏他们,这群搞理论的,为了追求所谓的“人性化”和“灵活性”,在语言里,加入了太多太多,模棱两可的,有歧义的语法!
在人看来,PRINT "你好"和PRINT("你好"),意思是一样的。
IF A > B PRINT "A更大"和IF A > B THEN PRINT "A更大",意思也是一样的。
人类的大脑,可以很轻松地,根据上下文,理解其中的含义。
但是,机器不行!
机器是死板的!
它的“语法分析器”,在解析IF A > B PRINT "A更大"这句代码时,会遇到一个致命的问题。
当它读到IF A > B之后,它期望下一个读到的,是一个明确的THEN关键字。
但是,它读到的,却是一个PRINT。
这个时候,它就“懵”了。
它不知道,这个PRINT,是属于IF语句的一部分呢