Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО Часть 1.docx
Скачиваний:
25
Добавлен:
25.04.2019
Размер:
133.36 Кб
Скачать
  1. Распознаватели: определение, основные операции, классификация

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

В общем виде распознаватель можно отобразить в виде условной схемы:

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

Типовые операции:

  1. Чтение очередного символа из входной цепочки

  2. Сдвиг входной цепочки на заданное количество символов влево или вправо

  3. Чтение/запись информации в рабочую память или из нее

  4. Преобразование информации в памяти

  5. Изменение состояния УУ

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

Существует несколько рабочих состояний.

Классификация распознавателей:

  1. По виду считывающей головки:

  • Односторонние – СГ движется только в одну сторону

  • Двухсторонние – СГ может двигаться реверсивно

  1. По виду УУ

  • Детерминированные. Каждое новое состояние строго определено предыдущим состоянием

  • Недетерминированные.

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

Распознаватели языков типа 1 – двухсторонние недетерминированные автоматы с линейно ограниченной внешней памятью. Время распознавания экспоненциально зависит от длины цепочки.

Для языков типа 2 – односторонний недетерминированный автомат с магазинной (стековой) памятью (МП-автомат). Время распознавания экспоненциально зависит от длины цепочки.

Для языков типа 3 – односторонний недетерминированный автомат без внешней памяти.

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

В общем виде конечный автомат (КА) представляет пятерку:

M = (K, T, t, k1, F)

K – конечное множество состояний автомата

T – конечный входной алфавит

t – переходная функция, преобразующая совокупность текущего состояния автомата и входного алфавита в состояние автомата на следующем шаге.

t: K*T→K

k1 – начальное состояние автомата (k∈K)

F – множество конечных состояний автомата (F⊆K, F≠∅)

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

В семействе КА выделяют подсемейство детерминированных КА (ДКА), в которых нет вершин с одинаково помеченными дугами, уходящими в другие вершины. Именно таким является и данный КА. Его описание может быть представлено в виде n-ки:

M = ({A, B, C, D, E}, {a, b}, t, A, {D, E})

K T k1 F

Функция переходов:

Текущее состояние

Вход

Следующее состояние

A

a

B

A

b

C

B

a

D

B

b

B

C

a

D

C

b

C

D

b

E

E

a

E


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

Строка не принимается автоматом, если в результате прохождения по соответствующим дугам конечное состояние автомата не достигается.