Parsing LL(1)语法。如果有自递归规则,如何计算跟随集?
根据本手册的规定:Parsing LL(1)语法。如果有自递归规则,如何计算跟随集?,parsing,grammar,context-free-grammar,compiler-construction,Parsing,Grammar,Context Free Grammar,Compiler Construction,根据本手册的规定: 如果A是起始非终结符,则将EOF放在后面(A) 查找右侧有A的产品: 对于每个产品X→ αAβ,放在第一位(β)− (A)中的{EPSILON} 如果ε在第一位(β),则将FOLLOW(X)放入FOLLOW(A) 对于每个产品X→ αA,将FOLLOW(X)放入FOLLOW(A)中 我的语法还有下一段: ... A -> C B B -> , A C -> EPSILON C -> = B -> ; .
查找右侧有A的产品:
...
A -> C B
B -> , A
C -> EPSILON
C -> =
B -> ;
...
当我试图根据规则4计算FOLLOW(B)时,我必须计算FOLLOW(A),反之亦然。由于自递归,我有StackOverflowException
我该怎么办?您不使用递归。迭代,根据上一次迭代计算的内容计算
FOLLOW
集: