§ 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 а м е ч а н и е. Алфавит связей предполагает знание всех характеристик связей.
