Как сделать эту грамматику LL (1) - PullRequest
0 голосов
/ 18 марта 2019

Я хочу знать, возможно ли преобразовать эту грамматику в LL (1). Это грамматика:

A -> B
   | C

B -> a 
   | a ';'

C -> a D
   | a D ';'

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

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Поскольку этот язык является обычным (a; | a(;a)+;?), то да, это было бы возможно.

Не уверен, что я использую правильный синтаксис, но язык в основном a; (используется A-> B) или любая строка, которая начинается с a, за которой следует одна или несколько пар ;a, опционально добавив еще один ; в конце.

0 голосов
/ 19 марта 2019

Это та же самая грамматика, но проще: A -> a |';'|';'A

Это еще не LL (1).Но, удаляя левый фактор, теперь это LL (1): A -> BB -> ε |';'CC -> ε |A

...