Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
Parsing LL(1)解析表中有多个条目?_Parsing_Compiler Construction_Context Free Grammar_Ll - Fatal编程技术网

Parsing LL(1)解析表中有多个条目?

Parsing LL(1)解析表中有多个条目?,parsing,compiler-construction,context-free-grammar,ll,Parsing,Compiler Construction,Context Free Grammar,Ll,鉴于这种语法: → S1 S2 S1→ a |ε S2→ ab |ε 因此,我们有 第一(S1)={a,ε} 跟随(S1)={a} 这是否意味着在解析表中,我将在S1的行和a的列中有多个定义?是的,这是正确的。(但是,请注意,FOLLOW集合是错误的;它还包含输入结束标记$)。这里的问题是,如果解析器看到一个a,它无法判断这是否是因为它想要使用派生 → S1S2→ S2 还是派生 → S1S2→ S2→ ab 为了解决这个问题,您可以注意到语法只生成字符串{a,ab,aab}。因此,您可以为直接

鉴于这种语法:

→ S1 S2

S1→ a |ε

S2→ ab |ε

因此,我们有

第一(S1)={a,ε}

跟随(S1)={a}

这是否意味着在解析表中,我将在S1的行和a的列中有多个定义?

是的,这是正确的。(但是,请注意,FOLLOW集合是错误的;它还包含输入结束标记$)。这里的问题是,如果解析器看到一个
a
,它无法判断这是否是因为它想要使用派生

→ S1S2→ S2

还是派生

→ S1S2→ S2→ ab

为了解决这个问题,您可以注意到语法只生成字符串{a,ab,aab}。因此,您可以为直接生成这三个字符串的语言语法构建LL(1):

→ 嗯

Y→ ε| aZ

Z→ ε| b

希望这有帮助

是的,没错。(但是,请注意,FOLLOW集合是错误的;它还包含输入结束标记$)。这里的问题是,如果解析器看到一个
a
,它无法判断这是否是因为它想要使用派生

→ S1S2→ S2

还是派生

→ S1S2→ S2→ ab

为了解决这个问题,您可以注意到语法只生成字符串{a,ab,aab}。因此,您可以为直接生成这三个字符串的语言语法构建LL(1):

→ 嗯

Y→ ε| aZ

Z→ ε| b


希望这有帮助

但是为什么在S1后面是$??因为S2含有ε?@MarounSassine-是的,这是正确的。因为S2的第一个集合中有ε,所以S1的FOLLOW集合包含S2的FOLLOW集合中的所有内容。由于S2位于开始生产的末尾,所以它的follow集合包含$。因此,S1的FOLLOW集合包含$。这就解释了吗?@templatetypedef抱歉打断一下,事实上我对编译器设计很感兴趣,发现你的幻灯片非常直观,但有时我发现它们很肤浅,你在重复幻灯片的地方,我想你一定是在课堂上解释了什么,我怎样才能从你的笔记中获得更多的资源/帮助呢?但是为什么S1后面有$??因为S2含有ε?@MarounSassine-是的,这是正确的。因为S2的第一个集合中有ε,所以S1的FOLLOW集合包含S2的FOLLOW集合中的所有内容。由于S2位于开始生产的末尾,所以它的follow集合包含$。因此,S1的FOLLOW集合包含$。这说明了什么吗?@templatetypedef抱歉打断一下,事实上我对编译器设计很感兴趣,发现你们的幻灯片我觉得很直观,但有时我发现它们很肤浅,你们在课堂上重复幻灯片的地方我想你们一定是在解释什么,我怎样才能从你们的笔记中获得更多的资源/帮助?