我如何左因子并消除左递归?
How Do I left factor and eliminate left recursion?
我的制作规则如下:
S → id = Exp
S → id (Arglist)
Arglist → Arglist , Exp
Arglist → Exp
Exp → id (Arglist)
Exp → id
这是我的第一次尝试:
S -> id S'
S' -> ϵ | = EXP | (Arglist)
Arglist -> Arglist'
Arglist' -> ϵ | ,Exp Arglist'
Exp -> id Exp'
Exp' -> ϵ | (Arglist)
我的问题是 Arglist 生产规则,我错了。
您只需要将 Arglist
更改为右递归,它将识别相同的语言(解析树略有不同):
Arglist → Exp , Arglist
Arglist → Exp
然后左因数:
Arglist → Exp Arglist'
Arglist' → ε | , Exp Arglist'
我的制作规则如下:
S → id = Exp
S → id (Arglist)
Arglist → Arglist , Exp
Arglist → Exp
Exp → id (Arglist)
Exp → id
这是我的第一次尝试:
S -> id S'
S' -> ϵ | = EXP | (Arglist)
Arglist -> Arglist'
Arglist' -> ϵ | ,Exp Arglist'
Exp -> id Exp'
Exp' -> ϵ | (Arglist)
我的问题是 Arglist 生产规则,我错了。
您只需要将 Arglist
更改为右递归,它将识别相同的语言(解析树略有不同):
Arglist → Exp , Arglist
Arglist → Exp
然后左因数:
Arglist → Exp Arglist'
Arglist' → ε | , Exp Arglist'