标签: compiler-construction context-free-grammar left-recursion
我有这些语法来解决左递归问题。但为什么这些语法会递归?他们没有遵循架构A -> Aa | b:
A -> Aa | b
1。,S → 0S1 | 01
S → 0S1 | 01
2。,S → + SS | * SS
S → + SS | * SS
答案 0 :(得分:2)
这些语法是否递归
没有
为什么?
在这两种情况下,如果不首先使用终端,您将永远无法到达S(这是唯一的非终端)。在第一个语法中,S的唯一出现位于终端0之前,而在第二个出现时,每个出现位置都以+或*开头。
S
0
+
*