2013-03-05 37 views
2

我正在使用Stroustrups編程原理和實踐使用C++。在這本書的前幾章中,他用這個語法來構建計算器。其中一項練習是在計算器中添加一個階乘操作符。他給出了一個暗示將高級操作符添加到語法

通過修改語法佔更高級別的運營商

什麼是更高級別的運營商開始? (遺憾的是他並沒有解釋它在書章,我不知道,如果它甚至在其他章節中說明)

語法他要求進行修改是這樣的:

Expression: 
    Term 
    Expression "+" Term 
    Expression "-" Term 
Term: 
    Primary 
    Term "*" Primary 
    Term "/" Primary 
    Term "%" Primary 
Primary: 
    Number 
    "(" Expression ")" 
Number: 
    floating-point-literal 

我已經爲此花了整整一天的時間,而且我無處可去。會爲一些解釋感到高興。

+2

他很可能意味着增加或者'!'的語法。 – 2013-03-05 22:35:01

+0

我認爲更高的水平意味着更高的優先級,即:2 * 3!意味着2 *(3!)不是(2 * 3)! – Slava 2013-03-05 22:57:40

回答

0

更高級別的運營商是比其他優先級更高的運營商。

這可以添加到你的語法,就像乘法,除法和模不同於加法和抽象一樣。

換句話說,解析器首先應該嘗試分析階乘的語法,然後乘,然後在加入