c++实现算符优先关系表的构造
时间: 2023-05-29 14:02:24 浏览: 88
C++运算符优先级表格
算符优先关系表可以由文法推导出,步骤如下:
1. 对每个终结符号和非终结符号,建立一个行和列。
2. 如果该终结符号或非终结符号之间存在直接的产生式,将在对应行和列的交叉点处填入">"。
3. 如果该终结符号或非终结符号之间存在可以通过规约得到的情况,将在对应行和列的交叉点处填入"<"。
4. 如果该终结符号或非终结符号之间存在相等的情况,将在对应行和列的交叉点处填入"="。
5. 对于其他情况,将空格填入对应行和列的交叉点处。
6. 如果存在两个相邻的终结符号或非终结符号之间没有填入任何符号,那么这两个符号之间的优先级是不确定的,此时需要手动处理。
例如,考虑以下文法:
E -> E + T | T
T -> T * F | F
F -> ( E ) | id
按照上述步骤,构造算符优先关系表如下:
符号 | + | * | ( | ) | id | $
----|----|----|----|----|----|----
+ | > | < | < | > | < | >
* | > | > | < | > | < | >
( | < | < | < | = | < |
) | > | > | | > | | >
id | > | > | | > | | >
$ | < | < | < | | < | =
通过上述表格可以看出,"+"的优先级高于"*","("和")"是相等的,在表格中用"="表示,"$"表示输入的串已经结束。
阅读全文