字符串层面:add(35, 2)写成+352不行,得+35空格2, +35 2. 3+5空格*2=8*2=16; 3+空格5*2=3+10=13. 3+5 *2, 3 +5*2,机器无所谓,人主子受不了“喵了个去,这有个空格?!”

token流层面:+ opnd * opnd opnd和opnd + opnd * opnd相比,确实不需要规定+和*的优先级或用()来消除歧义。

再底层:
struct op { opr; opnd1; opnd2; }和struct op { opnd1; opr; opnd2; }又没啥区别了。

消除if-else的歧义也可以:

if (x > 1)
 if (x > 2)
  y = 0;
 else
  ;
else
 y = 1;

我们一开始说的空格和上面的;性质类似吧?3+空格5*2 add(3, 空格),空格待会换成mul(5, 2). add(3, mul(5, 2))好吗?贼费括号。

请注意标题的...啥高档的 ?,?前面有个空格。语调tone和长短也能改变语义。

posted on 2021-12-02 08:26  华容道专家  阅读(49)  评论(0)    收藏  举报