
Глава №4
1. Вопрос:
К какому описанию языка применим термин формальная грамматика?
1. Ответ:
Термин «формальная грамматика» применим к любому определению формального языка, основанному на грамматических правилах, с помощью которых можно порождать и анализировать цепочки аналогично тому, как грамматики используются при изучении естественных языков.
2. Вопрос:
Опишите при помощи грамматики язык, состоящий из следующих предложений:
Зеленый крокодил видит зеленый лес.
Большой зеленый крокодил видит лес.
Крокодил видит большой зеленый лес.
Крокодил видит зеленый лес.
2. Ответ:
V={крокодил, лес, зеленый, большой, видит}
Правила:
1) <предложение><подлежащее><сказуемое><дополнение>
2)<подлежащее><прилагательное><существительное>|
<существительное>
3) <дополнение ><прилагательное><существительное>|
<существительное>
4) <прилагательное>зеленый | большой | большой зеленый
5) <существительное>лес | крокодил
6) <сказуемое>видит
3. Вопрос:
Дайте определение порождающей грамматики Хомского
3. Ответ:
Порождающей грамматикой Хомского – называется грамматика, которая «порождает» (выводит) множество называемое языком.
4. Вопрос:
Задайте с помощью грамматики Хомского следующий язык: L={aab, abab, abc, aabc}. Постройте дерево вывода для одной из цепочек языка.
4. Ответ:
G0=(T0 , N0 , S , R0)
T0={a,b}
N0={A,B,S}
R0:
SaAb|aBc
Aa|ba
Bb|ab
S
aAb
abab
aab
5. Вопрос:
Пусть грамматика G содержит следующие правила: bAacBc, aBcc. Выводимы ли в данной из цепочки =acbAacaBc цепочки = acacBcacc, = acacBcaca ? Докажите.
Дана грамматика G: G= (Т, N, S, R), Т= {a, b}, N= {A, B, S}, R: SaS
bAab
aSbA
Какой язык задает данная грамматика? Постройте вывод цепочки языка. Приведите пример сентенциальной формы для данного вывода.
5.Ответ:
1) =acbAacaBc
= acacBcacc
=acbAacaBc acacBcacaBc acacBcacc=
= acacBcaca
так как грамматика G содержит следующие правила: bAacBc, aBcc.
из можно вывести и нельзя вывести
2) Дана грамматика G: G= (Т, N, S, R), Т= {a, b}, N= {A, B, S}, R: SaS
bAab
aSbA
Язык L={(a)nb; n>=1}
SaSaaSabAaab
Cентенциальные формы: aS,aaS,abA
6. Вопрос:
Приведите пример продукции, задающей процесс усвоения знаний студентом на лекции.
6. Ответ:
Выучи лекции, если хочешь сдать экзамен, ответь на билет и получи отличную оценку.
Выучи лекции – условие применимости ядра
если хочешь сдать экзамен - ядро продукции
ответь на билет и получи отличную оценку - постусловия продукции
7. Вопрос:
а) Дана грамматика G= (Т, N, S, R), Т= {a, b, c, d}, N= {A, B, S},
R0: S®aSc
bAB®ab
bAd®abc
aS®bAdc
Какой язык порождает данная грамматика?
Построить эквивалентную ей грамматику.
б) Построить нетривиальную грамматику, порождающую следующий язык:
L={abcda, abcaba, daabc, aabdaa, cada}. Докажите, что построенная Вами грамматика действительно порождает этот язык.
7. Ответ:
а) Язык: L={(a)nb(c)n+2; n>=0}
Эквивалентная грамматика:
G= (Т, N, S, R), Т= {a, b, c}, N= {S},
R0: S®aSc
aS®abcc
б) L={abcda, abcaba, daabc, aabdaa, cada}.
R1: S® abcda | abcaba | daabc | aabdaa | cada; G1={{a,b,c,d},{S},S,R1}
R2: S® AB | Aaba | BA | aabBa | caB, A®abc, B®da; G2={{a,b,c,d},{S,A,B},S,R2}
Проверка:
8. Вопрос:
Можно ли построить дерево вывода для грамматики G из упражнения 7а ? Поясните.
8. Ответ:
Не для каждой грамматики можно построить дерево вывода. Деревом вывод можно представить в грамматиках, у которых левая часть правил состоит из одного нетерминала. Для грамматики G из упражнения 7а это условие не выполняется.
9. Вопрос:
Построить вывод в данной грамматике следующих констант: 0.253, 0.5E35, 2E-3
9.Ответ:
<константа>®<десятичное число>®<целое без знака>.<целое без знака>®<0>.<253>®0.253
<константа>®<десятичное число>E<целое>®<целое без знака>.<целое без знака>E<целое без знака>®<0>.<5>E<35>®0.5E35
<константа>®<целое>E<целое>®<целое без знака>E-<целое без знака>®<2>E-<3>®2E-3
10. Вопрос:
Постройте вывод в данной грамматики следующей конструкции: ((АТОМ.(АТОМ.АТОМ))(АТОМ.АТОМ)
10. Ответ:
<S>®(<S>.<S>)®((<S>.<S>).<S>)® ((<S>.<S>)(<S>.<S>))® ((<S>.(<S>.<S>))(<S>.<S>))® ((АТОМ.(АТОМ.АТОМ))(АТОМ.АТОМ))
11. Вопрос:
Постойте в данной грамматике вывод цепочки (2+7)*(5-(3+1)). Покажите, каким образом для данной цепочки определяются операнды в каждой операции.
11. Ответ:
12. Вопрос:
а) Приведите примеры правил для каждого типа грамматик.
б) Определите типы следующих грамматик:
1) G1= {{a, b, c}, {A, B, S}, S, R}
R: SAaB; ABbc; Bab.
2) G= {{a, b, c}, {A, B, S}, S, R}
R: SAaB; aAbaBbcb; aBab.
3) G= {{a, b, c}, {A, B, S}, S, R}
R: SaA; AcB; B
в) Для каких из данных грамматик существует самый эффективный алгоритм распознавания цепочек?
12. Ответ:
а)
0-типа:
G= (Т, N, S, R), Т= {a, b, c}, N= {S}, R: S®aFD; F®AFB; FB®bA; AF®D; D® ε
1-типа:
G= {{a, b, c}, {A, B, S}, S, R}, R: SAaB; aAbaBbcb; aBab.
2-типа:
G1= {{a, b, c}, {A, B, S}, S, R}, R: SAaB; ABbc; Bab.
3-типа:
G= {{a, b, c}, {A, B, S}, S, R}, R: SaA; AcB; B
б)
1) G1= {{a, b, c}, {A, B, S}, S, R}; R: SAaB; ABbc; Bab.
Грамматика 2типа: контекстно-свободная
2) G= {{a, b, c}, {A, B, S}, S, R}; R: SAaB; aAbaBbcb; aBab.
Грамматика 1типа: контекстно-зависимая
3) G= {{a, b, c}, {A, B, S}, S, R}; R: SaA; AcB; B
Грамматика 3типа: автоматная
в) Для 2-типа – существует алгоритм, и он более эффективен, а также для 3-типа – существует простой и эффективный алгоритм.