Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 如何将语法转换为自上而下的可分析语法_Compiler Construction_Grammar_Context Free Grammar_Ll_Left Recursion - Fatal编程技术网

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
然后找出剩下的