我有这部分语法
S ‐> S a | S b a | a | S b c S | S b c b | c S | c b
我需要使用它来创建一些SD集,然后再用于解析表。
但是,在这之前,我应该将其转换为自上而下的可解析语法。
我的问题是你是怎么做到的?我知道你必须摆脱左递归,但我该如何去做呢?
我阅读了维基百科的文章和其他一篇来自大学的文章,但我无法理解我应该怎么做。
你能帮我个忙吗?答案 0 :(得分:1)
这是一般的算法:
每条规则都是
A -> Aa
A -> b
变为
A -> bA'
A'-> aA'
A'-> e
其中e
表示空(epsilon)。
因此,对于您的情况,您可以从
开始S ‐> S a | S b a | a => S -> aS' , S' -> aS' | baS' | e
找出其余部分