Parsing 如何使这个语法成为LL(1)

Parsing 如何使这个语法成为LL(1),parsing,grammar,Parsing,Grammar,我想知道是否有可能将此语法转换为LL1。这是语法: A -> B | C B -> a | a ';' C -> a D | a D ';' D -> ';' a | D ';' a 因为这种语言是正规的A.a+,那么是的,这是可能的 不确定我是否使用了正确的语法,但该语言基本上是一种语言;使用A->B或任何以A开头,后跟一个或多个的字符串;a成对,可选地添加另一对;最后。这是相同的语法,但更简单: A->A | A';'|a';'A 它

我想知道是否有可能将此语法转换为LL1。这是语法:

A -> B
   | C

B -> a 
   | a ';'

C -> a D
   | a D ';'

D -> ';' a
   | D ';' a

因为这种语言是正规的A.a+,那么是的,这是可能的


不确定我是否使用了正确的语法,但该语言基本上是一种语言;使用A->B或任何以A开头,后跟一个或多个的字符串;a成对,可选地添加另一对;最后。

这是相同的语法,但更简单: A->A | A';'|a';'A

它仍然不是LL1。但现在去掉左因子,它是LL1:
A->AB->ε|';'谢谢,你说得对。现在,你知道如何转换它吗?嗯,我把它变成了一个RE,所以我可能知道。如果你想在这方面得到帮助,展示你已经尝试过的东西。我忘记了规则B中的另一种可能性。现在它写得很好。我希望这不是问题。我试图删除规则B中的左递归,但语法仍然不是LL1→B|C。B→一个“;”。C→一个D |一个D';'。D→ ';' a首被告。D1→ ';' D1 |。这是一种比这种简单语言所需的复杂得多的语法。无论如何,你可以把它设为LL1,然后在符号中,A->B | C可以写成A->B;C