Рассмотрим грамматику с нетерминалами N = {S, C, S1}, терминалами T = {a, b, i, t, e} с символом S в качестве начального символа и следующим набором правил:
S --> iCtSS1|a S1 --> eS|ϵ C --> b
Грамматика НЕ LL (1), потому что:
(А) это осталось рекурсивным
(B) это правильно рекурсивно
(С) это неоднозначно
(D) Это не является контекстно-свободным.
Ответ: (с)
Объяснение:
Грамматика LL (1) не дает несколько записей в одной ячейке таблицы анализа. Он имеет только одну запись в одной ячейке, поэтому он должен быть однозначным.
Вариант А неверен. Грамматика не остается рекурсивной. Чтобы грамматика оставалась рекурсивной, произведение должно иметь форму A-> Ab, где A — это один нетерминал, а b — любая строка символов грамматики.
Вариант Б неверен . Потому что правильная рекурсивная грамматика не имеет ничего общего с LL (1).
Вариант D неверен . Потому что данная грамматика явно является контекстно-свободной грамматикой. Грамматика — это CFG, если она имеет вид A -> (V∪ T) *, где A — это один нетерминал, а V — это набор нетерминалов, а T — это набор терминалов.
Следовательно, вариант C должен быть правильным. т.е. грамматика неоднозначна.
Но давайте посмотрим, как грамматика неоднозначна.
Если грамматика неоднозначна, то при создании таблицы синтаксического анализа в ячейке должно быть несколько записей. А таблица Parse производится с помощью двух функций: FIRST и FOLLOW.
Таблица синтаксического анализа грамматики не будет иметь несколько записей в ячейке (то есть будет грамматикой LL (1)) тогда и только тогда, когда для каждого произведения вида A-> α | β выполняются следующие условия
1) ПЕРВЫЙ (α) ∩ ПЕРВЫЙ (β) = Φ
2) если FIRST (α) содержит «ε», то FIRST (α) ∩ FOLLOW (A) = Φ и наоборот.
Сейчас,
- Для производства S-> iCtSS1 | a правило 1 выполняется, потому что FIRST (iCtSS1) IR FIRST (a) = {i} ∩ {a} = Φ
- Для производства S1-> eS | ε выполняется правило 1, так как FIRST (eS) ∩ FIRST (ε) = {e} ∩ {ε} = Φ. Но здесь из-за 'ε' в FIRST, мы должны проверить правило 2. FIRST (eS) ∩ FOLLOW (S1) = {e} ∩ {e, $} ≠ Φ. Следовательно, правило 2 не выполняется в этом производственном правиле. Поэтому в таблице синтаксического анализа будет несколько записей, поэтому грамматика неоднозначна, а не LL (1).
Пожалуйста, перейдите по этой ссылке, чтобы узнать, как найти ПЕРВЫЙ и СЛЕДУЮЩИЙ:
http://quiz.geeksforgeeks.org/compiler-design-first-in-syntax-analysis/
http://quiz.geeksforgeeks.org/compiler-design-follow-set-in-syntax-analysis/
Тест на этот вопрос
Рекомендуемые посты:
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 52
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 65
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 64
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 53
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 54
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 55
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 56
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 57
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 58
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 59
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 60
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 61
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 62
- ВОРОТА | Sudo GATE 2020 Mock I (27 декабря 2019) | Вопрос 63
- ВОРОТА | Sudo GATE 2020 Mock II (10 января 2019 года) | Вопрос 65
0.00 (0%) 0 votes