Удаление левой рекурсии в контекстно-свободной грамматике - PullRequest
3 голосов
/ 30 сентября 2010

Попытка выяснить, как удалить левую рекурсию в контекстно-свободных грамматиках.Я привык к определенным формам, но эта заставляет меня немного запутаться.

S --> S {S} S | (A) | a
A --> {S} A | epsilon

Я также должен разработать приличный парсер, который я могу сделать.Однако выяснение этой левой рекурсии (особенно первой) привело меня в замешательство.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2010

Попробуйте это:

S --> a [ { S } S ]
    | ( [ A ] ) [ {S} S ]


A --> { S } [ A ]
0 голосов
/ 30 сентября 2010

Есть интересная статья в Википедии о левой рекурсии. Также имеется раздел об удалении левой рекурсии для неконтекстных грамматик.

http://en.wikipedia.org/wiki/Left_recursion

...