我正在使用c ++编写Stroustrups编程原理和实践。在本书的前几章中,他使用这种语法来构建计算器。其中一个练习是在计算器中添加一个阶乘算子。他给了一个提示
首先修改语法以考虑更高级别的操作符
什么是更高级别的运营商? (不幸的是,他没有对书中的那一章进行解释,我不知道是否在其他章节中对其进行了解释)
他要求修改的语法是:
Expression:
Term
Expression "+" Term
Expression "-" Term
Term:
Primary
Term "*" Primary
Term "/" Primary
Term "%" Primary
Primary:
Number
"(" Expression ")"
Number:
floating-point-literal
我现在已经整整努力了一整天,而我却无处可去。会很高兴得到一些解释。
答案 0 :(得分:0)
更高级别的运算符是一个优先级高于其他运算符的运算符。
这可以添加到你的语法中,就像乘法,除法和模数与加法和抽象的不同一样。
换句话说,你的解析器应首先尝试解析阶乘语法,然后再乘法,然后加法