我编写了一个生成 AST 的基本编译器,正确考虑了表达式中的运算符优先级。但是,在执行代码生成以生成 C++ 代码时,我不确定如何处理括号的使用。
对于这个表达式:
A - (B - c)
下面的AST:
-
/ \
A -
/ \
B C
应该正确生成包含括号的前一个表达式,但是如果第二个运算符是加法运算符(例如),则括号将是不必要的。我宁愿只在必要时使用它们以提高可读性。
是否有任何规则规定这种行为以及如何知道何时使用括号。加号和减号在大多数语言中具有相同的优先级,我想让所有运算符都可以使用。