E-E*T
/T
T-T+F
/F
F-num
评估2 * 3 + 5 * 6 + 4
在上面的作品中,+符号的优先级高于*符号。通常*总是优先于*。那么为什么不在这个问题上呢
答案 0 :(得分:0)
我对语法有点生疏,所以如果我错了,请纠正我。
快速回答是:这是仅用+
和*
切换的算术表达式的典型无歧义上下文自由语法。
如果我们假设E
是根/开头,则通过系统地应用产品来查看语法树。这使得它更加清晰。
2 * 3 + 5 * 6 + 4
F F | F |
| | | | |
| T + F T + F
T | |
| | |
E * T |
| |
E * T
|
E
+
具有更高的优先级,并且首先绑定它T
和F
,而*
将获得剩余的T
和{{1} }}。规则依赖关系是创建优先级的原因。您可以轻松修改它to change precedence or introduce new levels
E
要使E-E+G
/G
G-G.J
/J
J-J*F
/F
F-num
最高,*
最低,新符号+
的优先级高于.
且低于+
。深入的信息可以在很多计算机科学/编译器构建部门找到,如here,here和here。