Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uchebnik.docx
Скачиваний:
1
Добавлен:
10.01.2020
Размер:
557.61 Кб
Скачать

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

Формальный язык представляет собой множество цепочек в некотором конечном алфавите. К формальным языкам можно отнести искусственные языки для общения человека с машиной – языки программирования.

Для задания описания формального языка необходимо, во-первых, указать алфавит, т. е. совокупность объектов, называемых символами (или буквами), каждый из которых можно воспроизводить в неограниченном количестве экземпляров (подобно обычным печатным буквам или цифрам), и, во-вторых, задать формальную грамматику языка, т. е. перечислить правила, по которым из символов строятся их последовательности, принадлежащие определяемому языку, – правильные цепочки [10].

Пусть алфавит символов (непустое конечное множество), из которых строятся цепочки языка L, представляет собой алфавит терминальных символов VT (например, буквы кириллицы или двоичные символы 0 и 1).

Определение формальной грамматики требует наличие ещё одного алфавита VN – непустого конечного множества нетерминальных (состоящих из некоторого множества терминальных) символов, таким образом что алфавиты терминальных и нетерминальных символов являются непересекающимися (например, слова русского языка за исключением различного рода предлогов «а», «и» и т. п. или двухразрядные двоичные числа {00,01,11,10}) множествами. Объединение этих алфавитов называется словарем формального языка L.

Продукция языка представляет собой пару α и β, каждый элемент этой пары является цепочкой символов словаря формального языка L:

Продукция обозначается α β (читается «из α следует β»). Необходимо отметить, что цепочка β является элементом ограниченного использования словаря, поэтому среди продукций не должно быть пар вида α ε, где ε ­пустая цепочка.

Таким образом, формальная грамматика G – это совокупность четырех объектов:

G = (VT, VN, P, S)

где

VT – алфавит терминальных символов

VN – алфавит нетерминальных символов

P – конечное множество продукций формальной грамматики G, являющееся подмножеством множества П

S – начальный символ грамматики

4.1 Типы грамматик

Американский ученый-лингвист Ноам Хомский определил 4 типа грамматик, на основе которых оцениваются возможности других способов описания языков.

Соответствующий тип грамматики по Хомскому определяется ограничениями, которые налагаются на продукцию Р.

В (таблице 30) приводятся типы грамматик, типы языков и автоматы, которые могут быть описаны с помощью грамматики данного типа.

Таблица 28 – Классификация языков по Хомскому

Тип грамматики

Ограничение

Языки

Автоматы

Тип 0

Нет ограничений

рекурсивно-перечислимые языки

машины Тьюринга

Тип 1

Длина цепочки β больше или равна длине цепочки α

Контекстно-зависимые, или грамматики непосредственных составляющих (НС-языки)

Линейно-ограниченные автоматы

Тип 2

Цепочка α состоит из одного символа

Бесконтекстные или контекстно-свободные грамматики (КС-языки)

Автомат с магазинной памятью

Тип 3

Цепочка β состоит либо из одного терминального и одного нетерминального символа, либо из одного терминального символа

Регулярные языки

Конечные автоматы

Тип 0 грамматик — самый общий тип грамматик, к нему относятся все без исключения формальные грамматики.

Тип 1 грамматик предполагает, что при построении предложений заданного ими языка, один и тот же терминальный символ может быть заменен на ту или иную цепочку символов в зависимости от того контекста, в котором он встречается. Т. е. значение одного и того же терминального символа может меняться в зависимости от контекста, в котором он встречается.

В отличии от типа 1, грамматики типа 2 являются контекстно-свободными. КС-языки широко используются для описания синтаксических конструкций языков программирования.

Регулярные языки (грамматики типа 3) используются при описании простейших конструкций языков программирования: идентификаторов, констант, строк, комментариев и т. п.

Одна и та же грамматика, в общем случае, может быть отнесена к нескольким классификационным типам (например, все формальные грамматики относятся к типу 0). Для классификации грамматики всегда выбирают максимально возможный тип, которому она удовлетворяет, поскольку сложность грамматики обратно пропорциональна номеру типа к которому она относится. Так, грамматики типа 0 являются самыми сложными, а грамматики типа 3 — самыми простыми.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]