- •Часть 1
- •Лекция №1 Предисловие п.1. Место системного программного обеспечения в компьютерной системе
- •П.2. Структура спо
- •П.3. Хакеры как движущая сила развития спо
- •Лекция №2
- •1. Формальные языки и грамматики в системе программирования
- •1.1. Структура систем программирования
- •1.2. Языки и цепочки символов. Способы задания языков
- •1.2.1. Общие представления о языках
- •1.2.2. Цепочки символов. Операции над цепочками символов
- •1.2.3. Формальное определение языка
- •1.2.4. Способы задания языков
- •Лекция №3
- •1.3. Грамматики и распознаватели
- •1.3.1. Порождающая грамматика
- •1.3.2. Запись правил грамматики с использованием метасимволов
- •Лекция №4
- •1.3.3. Распознаватели
- •1.3.4. Классификация распознавателей
- •1.3.4.1. Классификация распознавателей по компонентам
- •1.3.4.2. Классификация распознавателей по типу языков
- •Лекция №4
- •Лекция №5
- •1.3.5. Примеры классификации языков и грамматик
- •Лекция № 6
- •1.4. Технология формирования предложений языка
- •1.4.1. Выводимость цепочек
- •1.4.2. Сентенциальная форма грамматики
- •1.4.3. Левосторонний и правосторонний выводы
- •1.4.4. Дерево вывода и методы его построения
- •1.4.5. Проблема однозначности грамматик
- •2.1.2. Формальное определение компилятора
- •2.1.3. Интерпретаторы
- •2.2. Общая схема работы компилятора
- •2.3. Варианты построения компиляторов
- •2.3.1. Общие подходы в построении компиляторов
- •2.3.2. Понятие прохода
- •2.3.3. Однопроходные и многопроходные компиляторы
- •2.4. Особенности построения интерпретаторов и их взаимодействие с компиляторами
- •3.1.2. Принципы построения сканеров
- •Лекция 9
- •3.1.3. Сканер как конечный автомат
- •Лекция 10
- •3.2. Взаимодействие сканера с таблицей идентификаторов
- •3.2.1.Назначение и особенности построения таблиц идентификаторов
- •3.2.2. Простейшие методы построения таблиц идентификаторов
- •3.2.3. Построение таблиц идентификаторов по методу бинарного дерева
- •Список литературы
Лекция №4
1.3.3. Распознаватели
Распознаватель (или разборщик) – это специальный автомат, который позволяет определить принадлежность цепочки символов, поступающей на вход автомата, языку, для которого создан автомат, т. е., необходимо по входной цепочке определить ее принадлежность заданному языку.
В общем виде распознаватель можно представить в виде условной схемы, рис. 1.1.
Рис. 1.1. Простейшая условная структура распознавателя
Распознаватель состоит из следующих основных компонентов:
– лента, содержащая входную цепочку символов;
– считывающая головка, обозревающая очередной символ в этой цепочке;
– устройство управления (УУ), которое координирует работу распознавателя, имеет некоторый набор состояний и конечную память для хранения своего состояния и некоторой промежуточной информации;
– внешняя (рабочая) память, которая может хранить некоторую информацию в процессе работы распознавателя и, в отличие от памяти УУ, может иметь неограниченный объем.
Схема условна, потому что реально в компьютере этих компонентов нет, а распознаватель, являющийся частью компьютера, представляет собой часть программного обеспечения компьютера.
Распознаватель работает с символами своего алфавита, который конечен. Он включает в себя все допустимые символы входных цепочек, а также некоторый дополнительный алфавит символов, которые могут обрабатываться УУ и храниться в рабочей памяти.
В процессе работы распознавателя выполняются некоторые элементарные операции:
– чтение очередного символа из входной цепочки;
– сдвиг входной цепочки на заданное количество символов (вправо или влево), что эквивалентно сдвигу считывающей головки влево или вправо;
– доступ к рабочей памяти для чтения или записи информации;
– преобразование информации в памяти УУ, изменение состояния УУ.
Вся работа распознавателя состоит из последовательности тактов. В начале каждого такта состояние распознавателя определяется его конфигурацией, которая в процессе работы меняется и определяется следующими параметрами:
– содержанием входной цепочки символов и положением считывающей головки;
– состоянием УУ;
– содержимым внешней памяти.
Для распознавателя задается определенная начальная конфигурация. В начальной конфигурации считывающая головка обозревает первый символ входной цепочки, УУ находится в заданном начальном состоянии, а рабочая память либо пуста, либо содержит строго определенную информацию.
Кроме начальной конфигурации для распознавателя задается одна или несколько конечных конфигураций.
В конечной конфигурации считывающая головка, как правило, находится за последним символом исходной цепочки. Это положение может обозначаться специальным символом конца входной цепочки.
Считается, что распознаватель допускает входную цепочку символов , если, находясь в начальной конфигурации и получив на вход эту цепочку, он может проделать последовательность шагов, заканчивающуюся одной из его конечных конфигураций.
Рассмотренные свойства распознавателей относятся ко всем без исключения типам распознавателей для всех типов языков.