如何将歧义语法转换为歧义语法

时间:2019-02-10 20:07:41

标签: compiler-construction ambiguous-grammar

我有一个语法,我认为这是模棱两可的。我不知道如何消除歧义并将其转换为明确的语法。

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

对吗?

0 个答案:

没有答案