我如何能理解的表達像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