Compiler construction 如何将语法转换为自上而下的可分析语法
我有语法的这一部分Compiler construction 如何将语法转换为自上而下的可分析语法,compiler-construction,grammar,context-free-grammar,ll,left-recursion,Compiler Construction,Grammar,Context Free Grammar,Ll,Left Recursion,我有语法的这一部分 S ‐> S a | S b a | a | S b c S | S b c b | c S | c b 我需要使用它来创建一些SD集,然后再创建一个解析表 但是,在这样做之前,我应该将其转换为自上而下的可解析语法 我的问题是你是怎么做到的?我知道你必须摆脱左递归,但是我该怎么做呢 我读了维基百科的文章和一所大学的其他文章,但我不知道该怎么做 你能给我一些帮助吗?这里是一般的规则: 每一条规则都像 A -> Aa A -> b 变成 A -> bA
S ‐> S a | S b a | a | S b c S | S b c b | c S | c b
我需要使用它来创建一些SD集,然后再创建一个解析表
但是,在这样做之前,我应该将其转换为自上而下的可解析语法
我的问题是你是怎么做到的?我知道你必须摆脱左递归,但是我该怎么做呢
我读了维基百科的文章和一所大学的其他文章,但我不知道该怎么做
你能给我一些帮助吗?这里是一般的规则: 每一条规则都像
A -> Aa
A -> b
变成
A -> bA'
A'-> aA'
A'-> e
其中e
表示空(ε)
所以对于你的情况,你可以从
S ‐> S a | S b a | a => S -> aS' , S' -> aS' | baS' | e
然后找出剩下的