如何将语法转换为自上而下的可解析语法
How to transform a grammar into a top-down parsable grammar
我有这部分语法
S ‐> S a | S b a | a | S b c S | S b c b | c S | c b
我需要使用它来创建一些 SD 集,然后再进行解析 table。
但是,在这样做之前,我应该将其转换为自上而下的可解析语法。
我的问题是你是怎么做到的?我知道你必须摆脱左递归,但我该怎么做呢?
我阅读了维基百科文章和大学的其他文章,但我不知道应该怎么做。
你能帮我一些忙吗?
这是一般算法:
每条规则如
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
并找出其余的
我有这部分语法
S ‐> S a | S b a | a | S b c S | S b c b | c S | c b
我需要使用它来创建一些 SD 集,然后再进行解析 table。
但是,在这样做之前,我应该将其转换为自上而下的可解析语法。
我的问题是你是怎么做到的?我知道你必须摆脱左递归,但我该怎么做呢?
我阅读了维基百科文章和大学的其他文章,但我不知道应该怎么做。
你能帮我一些忙吗?
这是一般算法:
每条规则如
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
并找出其余的