Рыбин Сергей Витальевич
ЯЗЫКИ И ГРАММАТИКИ
1. ВВЕДЕНИЕ
Из школьного опыта хорошо известно, что представляет собой грамматический разбор предложения. При таком разборе определяется, какое слово является подлежащим, какое используется в роли сказуемого, какие слова играют роль определения, дополнения, обстоятельства и т. д. При разборе мы имеем дело с грамматическими категориями: предложение, группа существительного, группа сказуемого, существительное, глагол, наречие и т. д. При этом используются слова, составляющие предложение. В качестве примера рассмотрим грамматический разбор предложения:
«Маленький Саша учится хорошо».
Грамматический разбор подразумевает использование правил некоторой грамматики. Эти правила будем представлять в следующем виде (см. рис. 1), где символ ® означает «можно заменить на». Разбором на-
,,, г&оо собой грлмжа&нгеский
шего предложения будет следующая последовательность шагов (см. рис. 2).
Впервые понятие грамматики было формализовано лингвистами при изучении естественных языков. Предполагалось, что это может помочь при их автоматической трансляции.
На интуитивном уровне язык можно определить как некоторое множество пред-
( предложение) ® (группа существительного} (группа сказуемого}
(группа существительного} ® (прилагательное} (существительное}
(группа сказуемого} ® (глагол} (наречие}
(,прилагательное} ® маленький
(существительное} ® Саша
(глагол} ® учится
(наречие} ® хорошо
(предложение)
(группа существительного} (группа сказуемого}
(прилагательное} (существительное} (группа сказуемого}
Маленький (существительное} (группа сказуемого}
Маленький Саша (группа сказуемого}
Маленький Саша (глагол} (наречие}
Маленький Саша учится (наречие}
Маленький Саша учится хорошо
Рис. 2
Рис. 1
ложений допустимой структуры. Правила, определяющие допустимость той или иной конструкции языка, составляют синтаксис языка. Эти рассуждения можно отнести и к искусственным языкам программирования. Именно применительно к ним были достигнуты наилучшие результаты в этом направлении.
Если бы все языки состояли из небольшого конечного числа предложений, то проблемы синтаксического анализа не существовало. Можно было бы просто перечислить все предложения данного языка. Но так как большинство языков содержит неограниченное (или достаточно большое) число правильно построенных предложений, то возникает проблема разработки формальных средств описания и анализа языка (формальных грамматик).
Для формального описания языка необходимо задать набор символов (алфавит)
Ноам Хомский, американский лингвист и общественный деятель, родился в Филадельфии 7 декабря 1928 г. Его отец эмигрировал из России незадолго до начала Первой мировой войны. С 1945 г. Хомский изучал в Пенсильванском университете лингвистику, математику и философию. Там же, в 1955 г. получил докторскую степень, однако большая часть исследований, положенных в основу его первой монографии, была выполнена в Гарвардском университете в 1951-1955 г.
Ноам Хомский - создатель системы грамматического описания, известной как генеративная (порождающая) грамматика; соответствующее направление лингвистики часто называют генеративизмом. Уже несколько десятилетий он является самым знаменитым лингвистом мира; ему и его теории посвящено множество статей и монографий, а развитие лингвистики в последней трети XX в. иногда называют «хомскианской революцией». Работы Хомского оказали влияние не только на лингвистику, но и инициировали развитие новых идей в философии, психологии, музыке. Например, Леонард Бернстайн использовал теорию Хомского для анализа музыкального ряда. Хомский также входит в первую десятку самых цитируемых в научном мире авторов. За резкость и бескомпромиссность суждений его часто называют «Че Гевара в лингвистике».
Ирабима, оиреф&фющие фоицс&имос&ь Лой или иной коНс&руссуш я^-мм...
языка и правила, по которым из символов строятся их последовательности (предложения), принадлежащие данному языку.
2. ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ГРАММАТИКИ
В рассмотренном выше примере конкретной грамматики имелись:
1) грамматические термины ({группа существительного), {группа сказуемого) и т. д.), которые в теории формальных грамматик принято называть нетерминальными символами или нетерминалами;
2) слова, составляющие предложения языка, - они называются терминальными символами, терминалами или примитивами;
3) правила замены, левые и правые части которых состоят из терминальных и нетерминальных символов;
4) главный грамматический термин, который называют начальным символом, аксиомой или целью грамматики, с которого начинается разбор (вывод) любого предложения языка (в нашем примере таким символом является термин {предложение)).
Перейдем к формальным определениям. Основные идеи формальных грамматик были заложены в работах Н. Хомского.
Определение
Конечное множество символов А = {,а2,...,ап} называют алфавитом (словарем), а сами символы а{ - буквами. Цепочкой в алфавите А называют последовательность символов из этого алфавита. Пустую цепочку принято обозначать символом е. Множество всех цепочек алфа-
Ры1бин С.В.
Ш
<ро£мсы&Яог<о онисаяия Кеобхо^имо Клбор сим&о*о& ...
вита А обозначают Л. Символом Л+ с Л* будем обозначать множество, содержащее все непустые цепочки конечной длины в алфавите А.
Длиной цепочки ае А* называют число составляющих ее символов и обозначают И. Например, если а = аЪсёаЪсё, то
И = 8. Длина пустой цепочки е по определению равна нулю.
Определение
Грамматикой О называют четверку объектов {Ут ,УЫ, Р, *},где
1) ¥Т - алфавит терминальных символов;
2) Уы - алфавит нетерминальных символов, причем УТ п Уы = 0 ;
3) Множество Р - конечное множество правил (продукций), каждое из которых имеет вид:
а®5, ае(Ут и Уы)+, ¡е(Ут и Уы )*;
4) 5 - начальный символ грамматики,
* еУы.
Замечание
1. Для того чтобы различать терминальные и нетерминальные символы, принято обозначать терминальные символы строчными, а нетерминальные символы прописными буквами латинского алфавита.
2. Для записи нескольких правил с одинаковыми левыми частями
а®5, а® р2, а®5п часто используют сокращенную запись
а®ЬЛЬ2\к\Ь„.
3. Иногда при описании грамматики словари терминальных и нетерминальных символов не указывают. В таком случае обычно предполагается, что грамматика содержит только те терминальные и нетерминаль-
ные символы, которые встречаются в правилах вывода.
Мы представили грамматику, но не определили язык, который она порождает. Для этого нам потребуется ввести понятие вывода.
Определение
Цепочка ¡е(Ут и У„ )* непосредственно выводима из цепочки ае (УТ иУ„)+ в грамматике О = {УТ, Ум, Р, *} (обозначают а® ¡), если
а = ZJZ2, 5 = е (Ут и Ум )*,
уе( иУы)+
и правило вывода у ® 5 содержится во множестве Р.
Пример 1
Рассмотрим грамматику О1, где множество правил вывода имеет вид:
* ® аЛЪ, аЛ ® ааЛЪ, Л ®е .
Цепочка ааЛЪЪ непосредственно выводима из цепочки аЛЪ применением второго правила.
Определение
Цепочка 5 е (Ут и Уы) выводима из цепочки ае(Ут и Уы)+ в грамматике О = {Ут,УЫ,Р,*} (обозначают а ^ ¡) если существуют последовательность цепочек Уо,У1,к ,у„, такая, что
а = Уо ®у ® - ®У„-1 ®у„ =¡.
Последовательность у0,у1,к,у„ называют выводом длины п.
Пример 2
В грамматике О1 из примера 1 * ^ аааЛЪЪЪ, так как существует вывод
* ® аЛЪ ® ааЛЪЪ ® аааЛЪЪЪ, при этом длина вывода равна 3.
Определение
Языком, порождаемым грамматикой О, называют множество
Ь(О) = {аеУт \ * ^а}, то есть Ь(О) - это все цепочки в алфавите
УТ, которые выводимы из начального символа 5 с помощью правил вывода Р.
Такие цепочки языка называют сентенциальными формами.
Пример 3
Рассмотрим грамматику G2, где множество правил вывода имеет вид: 5 ® аБЬ, Б ® аЬ .
При применении первого правила всегда остается один нетерминальный символ. После второго правила получаем сентенциальную форму. Таким образом, очевиден единственный порядок применения - несколько раз использовать первое правило, а затем один раз применить второе. Тогда
Цв2) = <! аскмЬЬкЪ | п > 0\ = {апЬп | п > 0}
^ п п J
Задача 1
Покажите, что для грамматики G1 из примера 1 Ь(Ох) = Ь(02).
Определение
Грамматики 01 и G2, порождающие один и тот же язык (Ь(01) = Ь(02)), называют эквивалентными.
Приведенные примеры грамматик очень просты: было почти очевидно, какие цепочки в них можно вывести. В общем случае определить, что же порождается грамматикой, бывает очень трудно. Дадим более сложный пример.
Задача 2
Покажите, что грамматика G, определяемая следующими правилами вывода: Б ® аБВС, Б ® аВС, СВ ® ВС, аВ ® аЬ,
ЬВ ® ЬЬ, ЬС ® Ьс, сС ® сс, порождает язык
Ь(в) = {апЬпсп | п > 0}.
3. КЛАССИФИКАЦИЯ ГРАММАТИК
Накладывая различные ограничения на правила вывода, можно выделить классы грамматик. Рассмотрим классификацию, предложенную Н. Хомским.
• Тип G0 (свободные или неограниченные грамматики). Грамматику G называют грамматикой типа 0, если на ее правила вывода не накладывается никаких ограничений.
• Тип Gj (контекстно-зависимые, контекстные или HC-грамматики). Грамматику G называют грамматикой типа 1, если для каждого ее правила
a®b, \P\>\a\.
Часто, вместо термина «контекстно-зависимая грамматика», употребляют сокращение csg (context-sensitive grammar).
Пример 4
Очевидно, что грамматики из примеров 2 и 3, а также задачи 2 являются контекстно-зависимыми, поскольку правые части их правил не короче левых частей. Заметим, что для грамматики из примера 1 этому условию не удовлетворяет последнее правило:
A ®e .
• Тип G2 (контекстно-свободные или КС-грамматики). Грамматику G называют грамматикой типа 2, если каждое ее правило имеет вид:
A ®Р, AeVN, Pe(VN uVT)+.
Вместо термина «контекстно-свободная грамматика» часто используют аббревиатуру cfg (context-free grammar).
Замечание.
Правило вида A ® \ позволяет заменить A на \ независимо от контекста, в котором появляется A.
Пример 5
1. Грамматика G2 из примера 3 является контекстно-свободной грамматикой.
2. Грамматика G, где множество правил имеет вид
S ® aAb | accb, A ® cSc,
является контекстно-свободной грамматикой. Грамматика порождает язык
L(G) = {{ac)) (cb )n | n > 0}.
• Тип G3 (автоматные или регулярные грамматики). Грамматику G называют грам-
Ры1бин С.В.
матикой типа 3, если каждое ее правило имеет вид:
А ® аВ | а, а е ¥Т, А, В е ¥ы.
Пример 6
Грамматика О, где множество правил имеет вид
Б ® аА | ЬВ, А ® аА | а, В ® Ь , является регулярной грамматикой. Грамматика О порождает язык
Ь(0) ={апЬ2|п > 1}.
Классы грамматик типа G0, G1, G2 и 03 образуют иерархию Хомского.
Определение
Язык называют контекстным (контекстно-свободным, регулярным), если он порождается некоторой контекстной (контекстно-свободной, регулярной) грамматикой. Контекстно-свободные языки называют также алгебраическими языками.
Замечание
Двигаясь от грамматики G0 к грамматике G3 можно заметить, что в то время как
Рис. 1
ограничения на правила вывода усиливаются, описательные возможности языков уменьшаются.
Для грамматик справедливо следующее очевидное утверждение (см. рис. 1):
1. Любая регулярная грамматика является контекстно-свободной грамматикой.
2. Любая контекстно-свободная грамматика является контекстно-зависимой грамматикой.
3. Любая контекстно-зависимая грамматика является грамматикой типа 0.
Аналогичными свойствами обладают и языки, описываемые этими грамматиками:
1. Каждый регулярный язык является контекстно-свободным языком, но существуют контекстно-свободные языки, которые не являются регулярными (например,
Ь = {апЬп | п > 0}.
2. Каждый контекстно-свободный язык является контекстно-зависимым языком, но существуют контекстно-зависимые языки, которые не являются контекстно-свободным языками, например
Ь = {апЬпсп | п > 0}.
3. Каждый контекстно-зависимый язык является языком типа 0.
Заметим, что если язык задан грамматикой типа т, то это не значит, что не существует грамматики типа т1 > т, описывающей тот же язык. Поэтому, когда говорят о языке типа т , обычно имеют в виду максимально возможный номер т .
Наши авторы. 2007 ОигаиШоге. 2007
Рысбин Сергей Витальевич, кандидат физико-математических наук, доцент кафедры1 ВМ-2 СПбГЭТУ «ЛЭТИ».