Как преобразовать неоднозначную грамматику в однозначную грамматику - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть грамматика, которую я считаю неоднозначной.Я не знаю, как устранить неоднозначность и преобразовать ее в однозначную грамматику.

expr    ::= num | lvalue | incrop expr | expr incrop | expr binop expr | (expr)

lvalue  ::= $expr

incrop  ::= ++ | --

binop   ::= + | - |

num ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

И вот что я придумал:

expr ::=    num expr' | lvalue expr'| incrop expr expr' | (expr) expr'

expr' ::= incrop expr' | binop expr expr' | empty

lvalue  ::= $expr

incrop  ::= ++ | --

binop   ::= + | - |

num ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...