Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЛО.DOC
Скачиваний:
39
Добавлен:
23.03.2016
Размер:
534.53 Кб
Скачать

2.Теория формальных языков.

Для изучения принципов построения и анализа входных языков используется теория формальных языков. В данном разделе коротко рассматриваются основные положения этой теории.

2.1. Порождающие грамматики

Теория формальных языков занимается множествами последовательностей символов, которые можно построить из некоторого конечного множества символов.

Пусть А – конечное множество символов, называемое алфавитом;

А* – множество всех цепочек символов с элементами из А;

А*{} – пустую цепочку.

Язык L над множеством А – это подмножество А*. LА*.

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

Порождающая грамматика задается четверкой объектов G = (VARa), где, R конечный набор правил подстановки вида

uv,

А – алфавит грамматики

Vконечное множество символов, содержащее алфавит А.

V*-множество цепочек символов, u,  V*.

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

Определение: Элементы из множества А называются терминальными (основными) символами, а элементы из множества (VA) – нетерминальными (метасимволами).

Пусть V*.

Рассмотрим цепочку символов , которая порождается из цепочки символов 

 u

vи существует правило uv

Определение: Порождаемый грамматикой язык L(G) состоит из тех последовательностей символов, которые в общем случае за несколько шагов могут быть порождены из начального символа и которые не содержат ни одного метасимвола.

Пусть a начальный метасимвол грамматики G = (VARa), тогда порождаемый этой грамматикой язык :

L(G)= {X: aXX A *}.

Последовательно ограничивая вид правил, можно построить 4-х ступенчатую иерархию грамматик из соответствующих им языков ( иерархия Хомского):

Тип 0 (неограниченный). Разрешаются произвольные правила u  v, где uV*\A*, vV*

Тип 1 (Контекстно-зависимый). Разрешаются лишь правила, имеющие вид u1 b u2  u1 v u2 , где u1, u2V*, b  V\A, v  V*, v  

Тип 2 (контекстно-свободный). Разрешаются правила вида b v где bV\A, vV*, v

Тип 3 (регулярные). Разрешаются лишь правила вида b  c или b  cd, где b, dV\A, c  A

Для распознавания принадлежности той или иной цепочки языку, порождаемому грамматикой, строятся автоматы, называемые акцепторами или распознавателями. Каждой грамматике соответствует свой порождаемый ею язык, каждому языку – свой распознающий его автомат.

2.2. Иерархия распознающих автоматов

  • тип 0 (машина Тьюринга): вспомогательная память представляет собой бесконечную ленту, разделенную на ячейки. В каждую из ячеек может быть записан один символ из заданного конечного множества символов (рабочего алфавита). У автомата имеется головка чтения-записи, которая всегда указывает на одну из ячеек. На каждом шаге можно произвести запись или прочитать, что записано, после чего головка перемещается на одну ячейку вправо или влево, или остается на месте. Говорят, что последовательность символов xA* допускается, если машина Тьюринга может быть переведена из некоторого начального состояния в некоторое конечное, причем x последовательными шагами считывается на ввод.

Машину Тьюринга можно рассматривать как механическое устройство, состоящее из следующих основных частей.

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

  2. Помимо рабочей ленты в машине Тьюринга имеется еще и другое запоминающее устройство. Это регистр состояний – особая память, рассчитанная на хранение одного символа. Символ, который запоминается в регистре, выбирается из конечного множества, определяющего множество состояний машины.

  3. В каждый момент времени машина Тьюринга анализирует не всю информацию, хранящуюся на рабочей ленте, а содержимое лишь одной ячейки этой ленты. Для определения этой ячейки служит управляющая головка, которая всегда указывает на некоторую ячейку рабочей ленты.

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

  1. Машина изменяет состояние в регистре и содержимое ячейки, на которую указывает управляющая головка.

  2. Машина изменяет состояние и продвигает управляющую головку на одну ячейку влево.

  3. Машина изменяет состояние и продвигает управляющую головку на одну ячейку вправо.

Машина Тьюринга может использоваться для вычисления функций, аргументы и значение которых представляются цепочками символов конечных алфавитов. При этом машина начинает работу в так называемой начальной ситуации, которая характеризуется следующим образом:

  • на рабочей ленте записан аргумент вычисляемой функции;

  • управляющая головка указывает на ячейку, в которой записан самый левый символ аргумента;

  • машина находится в некотором заранее выбранном состоянии, которое называется начальным.

Начиная работу с начальной ситуации, машина работает до тех пор, пока не окажется в некотором особом состоянии, называемом заключительным. Значением вычисляемой функции считается цепочка непустых символов, выписанных слева направо из рабочей ленты после окончания работы машины.

Элементарные действия машины Тьюринга определяются функцией

AZГPf ( ZГ(–1,0,+1))

где А – принятый символ с вода;

Z – состояние;

Г – символ во вспомогательной памяти, на который указывает головка чтения-записи;

Pf – множество конечных подмножеств;

Z – новое состояние ;

Г – новый символ во вспомогательной памяти;

–1 – сдвиг влево головки чтения-записи;

0 – нет сдвига;

+1 – сдвиг вправо.

  • тип 1 (линейно-ограниченный автомат): сохраняется схема машины Тьюринга и вводится следующие ограничения: при восприятии цепочки символов длины n могут использоваться не более n ячеек вспомогательной памяти.

  • тип 2 (магазинный автомат): сохраняется схема машины Тьюринга , но при каждом сдвиге влево происходит стирание содержимого ячейки, над которой находилась головка чтения-записи. В результате все ячейки вспомогательной памяти справа от головки затираются.

  • тип 3 (конечный автомат): вспомогательной памяти нет, так что функция отображения имеет следующий вид : A Z. Таким образом, функция отображения автомата определяет, в какое состояние должен быть осуществлен переход исключительно в зависимости от текущего состояния автомата и содержащегося на вводе символа.

В следующих разделах теория формальных языков представлена более полно и распространена на любой язык программирования.