Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Форм_грамм1.doc
Скачиваний:
4
Добавлен:
11.11.2018
Размер:
79 Кб
Скачать
☆

§ 3. Буквы, связи, оболочки, конструкции

Если мы хотим употреблять термин “язык программ”, а это нам нужно, чтобы считать программы алгоритмами, мы должны допускать возможность очень сложной струк­туры предложений языка. Автор думает, что полезность трактовки программ для ЭВМ как алгоритмов уже не вы­зывает у читателя сомнений и потому не будет второй раз со обосновывать.

Читатель помнит, что программа, размещенная в маши­не, состоит из команд, среди которых присутствуют и ко­манды перехода, причем связь между командами програм­мы установлена с помощью команд перехода и определен­ного размещения команд в оперативной памяти. 13се эти связи можно проследить и в программе, написанной на бу­маге. В последнем случае вместо особого способа размещения команд мы имеем даже более наглядный) способ обозначения их связей с помощью собственных адресов (и, конечно, команд перехода).

Анализируя программы, мы видим, что основным строительным материалом для них являются символы (в теории алгоритмов мы их называли буквами). Из этих букв об­разованы более сложные конструкции (элементы кода программы: адреса и код операций), являющиеся словами. Эти слова объединены в системы, называемые командами. Причем даже в составе команды каждое из указанных слов сохраняет свою индивидуальность. Команды можно считать словами, о разделении которых на более простые

§ 4. Формальные грамматики

Вернемся к описанию языков. Считается, что предложе­ниями языков могут быть любые конструкции, описанные в предыдущем параграфе. Уже одним этим расширяется понятие языка. [ , с.140]. Как уже сказано, синтаксис языка не должен зависеть от его семантики. Термин “предложение” сохраним и для формальных языков. Мы не накладываем запретов ни па какие формы синтаксиса, по для того что­бы всегда быть уверенными в том, что мы располагаем именно формальным языком, потребуем, чтобы существовала (т. е. могла бы быть построена) формальная грамматика, имеющая определенную каноническим форму. Американский лингвист Хомский предложил следующую форму грамматики. Для описания синтаксиса языка-объекта задается алфавит букв этого языка, затем алфавит вспомогательных символов, называемых нетерминальными (буквы первого алфавита при этом называют терми­нальными символами), затем — конечный набор синтаксических правил и, наконец, однобуквенное слово, образованное из нетерминального символа. Условно это пере­дают в виде обозначения

(А, С, И, а),

где А — алфавит языка-объскта, С — нетерминальный ал­фавит, В—набор правил, о—указанная выше нетерминальная буква.

Каждое правило в грамматике Хомского имеет вид подстановки

1^0,

в которой Р и 0—слова в алфавите АС (получающемся соединением алфавитов А и С). Подстановки, применяемые Хомским, не являются марковскими подстановками (см. § 3 главы 4) и вообще но являются однозначными операциями преобразования конструкций. Объектом пре­образования для таких подстановок могут быть только слова, по применение подстановки допускает произвол. Если преобразуемое слово имеет несколько вхождений слова Р, то подстановка допускает замену .любого из этих вхождений правой частью формулы.

Так как, вообще говоря, число вхождений Р в разные слова неограниченно, то можно считать, что каждая подстановка представляет собой бесконечное множество операций замены словом 0: 1) первого вхождения Р;

2) второго вхождения Р; ...; п) га-го вхождения Р и т. д. Выполнение подстановки заключается в выполнении произвольной операции из перечисленных. Однако подстановку можно рассматривать и как коночное множество определенных операции, выполняемых в различных сочетаниях.

Дальнейшее изучение подстановок мы производить по станем, поскольку эта проблема для нас особого интереса не представляет. Разъясним только способ порождения формального языка с помощью грамматики Хомского. Предложение языка получим, если применим к однобуквенному слову о одну из подстановок. Если результат не содержит нетерминальных символов, предложение языка уже получено; если же содержит, то применяем опять одну из подстановок, и т. д". Говорят, что предложение языка выводится из начального слова о с помощью правил, вхо­дящих в состав Я, — набора синтаксических правил грам­матики Хомского. Аналогично выводится другое предложение и т. д. Грамматики Хомского пас не удовлетворяют но двум причинам. Во-первых, их возможности слишком ограничены, так как с их помощью можно построить только язык, предложениями которого являются слова. Во-вторых, способ порождения языка, избранный Хомским, является слишком искусственным и для нас непривычным. Ни одна знакомая нам грамматика ни одного из ес­тественных языков не имеет вида грамматики Хомского. Обычно предложения языка строят из более простых конструкции и в конце концов псе предложения получаются из некоторых элементарных конструкций, называемых морфемами. Остановимся и мы на такой форме порождающих грамматик.

Предположим, что заданы алфавиты букв и связей и знак оболочек, из которых будут построены предложения языка-объекта, т. е. считаем, что известен класс (Л, В, 2) конструкций, с которыми нам придется иметь дело при построении языка. Далее допустим, что задано конечное число простейших конструкций, множество которых назо­вем базой языка, и обозначим буквой Б. Элементы этого множества называются морфемами. Далее предположим, что задан алфавит С символов, с помощью которых запи­сываются синтаксические правила. Эти правила у нас всегда будут иметь вид цепочек из символов, т. е. слов. Поэтому специально оговаривать наличие алфавита свя­зей, нужного для записи правил, мы не станем. Алфавит С должен содержать символы четырех видов, попарно различные между собой и не совпадающие с символами, [ , с. 142], участвующими в конструкциях класса (А, В, 2). Симво­лы первого вида применяются как индивидуальные имена морфем. Символы второго вида будем применять в качест­ве групповых имен получаемых конструкций. Символы третьего вида играют роль функциональных знаков и яв­ляются именами операций. Наконец, символы четвертого вида играют вспомогательную роль: это скобки, запятые, знаки равенства и знаки “точка с запятой” или заменяю­щие их символы.

Каждое синтаксическое правило будет иметь либо вид

1Де г)—имя морфемы, а ^—групповое имя, либо вид

^=/(ё.,^,-,1г),

где 1 — групповое имя, |ц |2,..., 1г — групповые имена или имена морфем, / — функциональный знак, а г — ранг операции, именем которой является /.

Рангом операции называется число величин, которые участвуют в качество исходных данных при выполнении операции. Например, среди известных нам операций |@ х — операция первого ранга, зт х и 1/х — то же; хЛ-у и х: у — операции второго ранга. Можно считать, что выра­жение х+у-г задает некоторую операцию третьего ранга.

Будем считать, что грамматика задана, если заданы все перечисленные алфавиты, база языка и набор синтакси­ческих правил описанного вида, а также выделено одно из групповых имей (буква), играющее роль группового имени всех конструкций, являющихся предложениями языка. Такую грамматику будем называть индуктивной порождающей грамматикой, в отличие от грамматик, подобных грамматикам Хомского, в которых предложения языка выводятся из слова о и которые поэтому можно назвать дедуктивными.

Итак, индуктивная грамматика задана, если указан класс конструкций (Л, В, X), подмножеством которого является определяемый язык, база Б языка, являющаяся конечным подмножеством этого класса, алфавит С для записи синтаксических правил, набор Н синтаксических правил и буква о, являющаяся групповым именем предложений языка. [ , с. 143].

__________________________

Автоматизированные информационные системы (Криницкий и др._

В некоторых случаях требуется более тонкая классификация, чем описанная выше. В таких случаях пользуются в качестве класса символьных конструкций одним из формальных языков (см. §1.5).

Если два алфавита не содержат одинаковых символов, они назы­ваются непересекающимися. При этом говорят, что их пересечение пусто. В противном случае они называются пересекающимися.

Пересечением алфавитов А и В называется третий алфавит, ко­торый получится, если, просматривая Л в порядке его букв, вычер­кнуть все буквы, не являющиеся буквами в В.

Объединением алфавитов А я В называется третий алфавит, ко­торый получится, если к алфавиту А приписать те буквы в В, ко­торые не являются буквами в Л, просматривая для их выявления алфавит В в порядке следования его букв.

Пересечение алфавитов Л и В будем обозначать Л П В, а их объединение Л и В. Эти действия над алфавитами не коммутативны, т. е. зависят от порядка, в котором рассматриваются алфавиты.

Пример 1.27. Даны алфавиты букв Л~а 1 2 б в, и-а 2 1 г, С" 4 г 5. Тогда

А ПЯ-а 1 2, [В[\А=а Ч I, А[_)В=а 1 2 б в г, В{}А=-и 2 1 г б в.

Алфавиты Л и С не пересекаются. При этом пишут апс- 0.

Все сказанное об алфавитах справедливо как для алфавитов букв, так и для алфавитов связей (но отношению к последним составляю­щие их связи —в области теории, а не в области их применения --являются буквами).

3 а м е ч а н и е. Алфавит связей предполагает знание всех характеристик связей.