将更高级别的运算符添加到语法中

时间:2013-03-05 22:33:15

标签: c++ grammar factorial

我正在使用c ++编写Stroustrups编程原理和实践。在本书的前几章中,他使用这种语法来构建计算器。其中一个练习是在计算器中添加一个阶乘算子。他给了一个提示

  

首先修改语法以考虑更高级别的操作符

什么是更高级别的运营商? (不幸的是,他没有对书中的那一章进行解释,我不知道是否在其他章节中对其进行了解释)

他要求修改的语法是:

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

我现在已经整整努力了一整天,而我却无处可去。会很高兴得到一些解释。

1 个答案:

答案 0 :(得分:0)

更高级别的运算符是一个优先级高于其他运算符的运算符。

这可以添加到你的语法中,就像乘法,除法和模数与加法和抽象的不同一样。

换句话说,你的解析器应首先尝试解析阶乘语法,然后再乘法,然后加法