Parsing 如何反驳LL(3)的语法?

Parsing 如何反驳LL(3)的语法?,parsing,grammar,automata,ll,Parsing,Grammar,Automata,Ll,我编了以下语法: S -> a a a t | a a a a 我试图证明它不是LL(3)。我发现First(S)={a}和Follow(S)={$}但是我似乎不知道我需要做什么来反驳它是LL(3)。这是我为自己建立的一个小语法,用来理解如何反驳LL(k)。对于LL(1),我构建了一个表,并在每个字段中首先/接着插入规则库。但是使用lookahead 3我怎么做呢?要证明语法是(不是)LL(3),需要为它构造一个LL(3)解析器,并显示结果表中存在(或不存在)冲突 要构造LL(3)的解析

我编了以下语法:

S -> a a a t | a a a a
我试图证明它不是LL(3)。我发现
First(S)={a}
Follow(S)={$}
但是我似乎不知道我需要做什么来反驳它是LL(3)。这是我为自己建立的一个小语法,用来理解如何反驳LL(k)。对于LL(1),我构建了一个表,并在每个字段中首先/接着插入规则库。但是使用lookahead 3我怎么做呢?

要证明语法是(不是)LL(3),需要为它构造一个LL(3)解析器,并显示结果表中存在(或不存在)冲突

要构造LL(3)的解析器表,需要FIRST3和FOLLOW3,它们类似于FIRST和FOLLOW,只是它们是(最多)3个标记的序列集,而不是单个标记集。因此,您将得到FIRST3(S)={“aaa”},它可以为S选择任何一个产品,从而在表中显示这些产品之间的冲突。

要证明语法是(不是)LL(3),您需要为它构造一个LL(3)解析器,并显示结果表中存在(或不存在)冲突

要构造LL(3)的解析器表,需要FIRST3和FOLLOW3,它们类似于FIRST和FOLLOW,只是它们是(最多)3个标记的序列集,而不是单个标记集。因此,您可以得到FIRST3(S)={“aaa”},它可以为S选择任何一个产品,从而在表中显示这些产品之间的冲突