представляющих CFG производства - PullRequest
1 голос
/ 11 марта 2012

Я работаю над программой, которая должна решить, принадлежит ли строка "(пример + другой) * другой" к определенной грамматике.

    Start = Expr endline
    Expr  = Term Expr2
    Expr2 = + Term Expr2 | - Term Expr2 | e
    Term  = Factor Term2
    Term2 = * Factor Term2 | / Factor Term2 | e
    Factor= id | ( Expr ) | num 

Например, я пытаюсь реализовать что-то похожее на грамматику выше в Java. Пока у меня есть заявления о переключении с отговором, но я чувствую, что это не способ сделать это. Существуют ли более простые способы представления продукции? Любые советы будут оценены. Спасибо

1 Ответ

0 голосов
/ 11 марта 2012

Переключение операторов с помощью рекурсии намного ближе к тому, что вам нужно, чем вы думаете.

См. Мой ответ на о том, как создать синтаксический анализатор рекурсивного спуска .

...