我如何能理解的表达像C中表达式的解析规则是什么?
a = b+++++b---c--;
在C解析?
我只是做了上述表示,是的,我可以用任何编译器检查的结果,但我想知道的是地规则我应该知道了解C.这样的表达式的解析
我如何能理解的表达像C中表达式的解析规则是什么?
a = b+++++b---c--;
在C解析?
我只是做了上述表示,是的,我可以用任何编译器检查的结果,但我想知道的是地规则我应该知道了解C.这样的表达式的解析
从标准6.2(4):
如果输入流被解析为预处理标记到一个给定的字符,则 下预处理标记是可能构成一个 字符的最长序列预处理令牌。
他们甚至添加例如:
实施例2所述的程序片段X +++++ý 被解析为x ++ ++ + Y,其中 违反了增量 约束运算符,即使解析x ++ + ++ y可能会产生正确的表达式。
所以,你的发言:
a = b+++++b---c--;
等同于:
a = b ++ ++ + b -- - c -- ;
涉及的运营商是++
,--
,+
和-
。一些括号和空格将帮助这里:
a = ((b++)++) + (b--) - (c--);
我不知道解析是怎么工作的,但有
毫不含糊参与
(OK,还有就是,看到流浪者的答案),所以我想这是可以做到与像一些简单的规则:
+
和-
的结合两个“表情”++
和--
是一个后缀为“表达”消除不确定性,你可以给++
和--
更高的优先级比+
和-
。
谢谢,但我想知道我如何能够自己解决这个问题。 – Moeb 2010-10-23 17:04:18
我知道知道有多少你熟悉解析器,所以以防万一: http://en.wikipedia.org/wiki/LL_parser
如果您需要正式的语法描述,请查看解析器生成器的描述:https://javacc.dev.java.net/servlets/ProjectDocumentList?folderID=110
@Martin:如果你能得到6。2/4从C标准中删除为“谁在乎”,那么你可以关闭“谁在乎”这个问题; -p Daft的例子可以说明基本原理。 – 2010-10-24 23:03:35
[为什么不用+++++ b在C中工作?](https://stackoverflow.com/questions/5341202/why-doesnt-ab-work-in-c) – 2017-08-13 11:31:03