2017-01-14 13 views
0

Существует язык определяется контекстно-свободной грамматики с правилами производства ниже:вывести данное решение с использованием данного контекста правил свободной грамматики

E -> T + E | T 
T -> F * T | F 
F -> (E) | C 
C -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

В этой грамматики, не являющиеся терминалы Е, Т, F, и C; терминалы - круглые скобки, плюс знак, звездочка и номера; E - символ начала. Что из следующего показывает, что выражение 7 + 3 * (6 + 4) является предложением этого языка?

(a) E -> 7 + 3 * (F + T) (c) E -> 7 + 3 * (T) 
(b) E -> 7 + 3 * E   (d) E -> 7 + T * (E) 

i производный вариант (d) Но правильный ответ - вариант (a) .why? пожалуйста, объясните.thanks

ответ

2

Задача не очень четко определена, потому что неясно, что означает вариант (например, один из этих четырех), чтобы «показать», что выражение находится на этом языке.

Мое лучшее предположение о намерении проблемы состоит в том, чтобы игнорировать «E ->» в каждой опции и спросить, какая из четырех является условной формой, которая может появляться при выводе данного предложения.

Вы можете разделить это на два вопроса: (1) какие из них являются условными формами (т. Е. Формами, которые могут быть получены из E), и (2) из ​​тех, которые получают данное предложение?

На стадии (1), можно устранить (б) и (d):

повторно (б), если вы пытаетесь получить 7 + 3 * E, вы можете получить 7 + 3 * T, но T не получает E

повторно (d), если вы пытаетесь получить 7 + T * (E), вы можете получить 7 + F * (E), но F не получает T.

На стадии (2), вы избавляете (с), потому что, хотя 7 + 3 * (T) могут быть получены из E, T не получает 6+4.

Так что ответ (а), потому что 7 + 3 * (F + T) может быть получена из E и F можно получить 6 и T можно получить 4.

 Смежные вопросы

  • Нет связанных вопросов^_^