Я хотел бы узнать, как решить перевод грамматики в LL (1). У меня следующий вопрос:LL (1) оператор грамматики и индексирования []
E -> E + E
E -> E * E
E -> E[ E ]
E -> int
E -> id
Что касается операторов «+» и «*» Я знаю, что решение:
E -> TA
A -> + TA
A -> epsilon
T -> FB
B -> * FB
B -> epsilon
проблема, что делать с оператором индексации в то время как в то же время мы должны избежать рекурсии?
Кто-нибудь знает решение?
Спасибо.
Простой: сделайте его постфиксным оператором и примените ** правую ** рекурсию, вот как это делает грамматика C89. –
Почему вы думаете, что это отличается от случаев, когда вы знаете, как обращаться? – rici
Ну, если я, как и другие один: 'F -> GC C -> [E] C C -> эпсилон G -> идентификатор G -> int' Я думал, что я не буду тот же результат. Но теперь это похоже на рабочее решение. Как вы думаете? –