- •1. Формальные языки и грамматики
- •1.1. Введение
- •1.1.1. Трансляторы , интерпретаторы и компиляторы
- •1.1.2. Стадии работы компилятора
- •1.1.3. Построение компилятора
- •1.2.2. Примеры, иллюстрирующие первичные понятия
- •1.2.3. Пустой язык
- •1.2.4. Резюме
- •1.3. Типы формальных языков и грамматик
- •1.3.1. Грамматики типа 0
- •1.3.2. Грамматики типа 1
- •1.3.3. Грамматики типа 2
- •1.3.4. Грамматики типа 3
- •1.3.5. Вывод в кс-грамматиках и правила построения дерева вывода
- •1.3.6. Синтаксический разбор
- •1.3.7. Левый и правый выводы
- •1.3.8. Неоднозначные и эквивалентные грамматики
- •1.3.9. Резюме
- •1.4. Способы задания схем грамматик
- •1.4.1. Форма Наура-Бэкуса
- •1.4.2. Итерационная форма
- •1.4.3. Синтаксические диаграммы
- •1.4.4. Резюме
- •1.5. Построение грамматик и грамматики, описывающие основные конструкции языков программирования
- •1.5.1. Рекомендации по построению грамматик
- •1.5.2. Описание списков
- •1.5.3. Пример построения грамматик
- •1.5.4. Грамматики, описывающие целые числа без знака и идентификаторы
- •1.5.5. Грамматики для арифметических выражений
- •1.5.6. Грамматика для описаний
- •1.5.7. Грамматика, задающая последовательность операторов присваивания
- •1.5.8. Грамматики, описывающие условные операторы и операторы цикла
- •1.5.9. Резюме
- •2. Контекстно-свободные грамматики и автоматы.
- •2.1 Приведенные грамматики.
- •2.2 Определение непроизводящих символов.
- •2.3 Определения недостижимых символов.
- •2.5 Исключение леворекурсивных правил.
- •2.6 Исключение цепных правил.
- •2.7 Преобразование неукорачивающих грамматик.
- •2.8 Магазинные автоматы.
- •2.9 Работа магазинного автомата.
- •2.10. Язык, допускаемый магазинным автоматом.
- •2.11 Построение магазинного автомата.
- •2.12 Пример построения автомата.
- •2.13 Резюме.
- •3. Нисходящие распознаватели.
- •3.1 Распознаватели и ll(k) - грамматики
- •3.3 Построение детерминированного нисходящего распознавателя.
- •3.4 Множество выбора.
- •3.4.1 Функции перв, след и множество выбор.
- •3.4.4 Построение множества выбор.
- •3.5 Слаборазделенные грамматики
- •3.6 Ll(1) - грамматики.
- •3.7 Построение магазинного автомата.
- •3.8 Преобразование грамматик к виду ll(1).
- •3.8.1 Исключение леворекурсивных правил.
- •3.8.2 Выделение общих частей.
- •3.9. Резюме.
- •3.11. Восходящие распознаватели.
- •3.11.1. Расширенный магазинный автомат
- •3.11.2. Пример работы расширенного магазинный автомат
- •3.12. Lr(k)-грамматики
- •3.12.1. Построение таблиц распознавателя. Алгоритм работы распознавателя.
- •3.12.2. Пример построения lr(0)-распознавателя
- •3.13. Построение slr(1)-распознавателя
- •3.14. Восходящие распознаватели для грамматик с аннулирующими правилами
- •3.15. Резюме.
- •4.3. Магазинные Преобразователи.
- •4.3.1. Определение магазинного преобразователя.
- •4.3.2. Описание работы магазинного преобразователя.
- •4.3.3. Перевод определяемый преобразователем.
- •4.3.4. Построение преобразователя.
- •4.3.5. Пример построения преобразователя.
- •4.3.6. Порядок построения детерминированного магазинного преобразователя.
- •5. Атрибутные транслирующие грамматики
- •5.1. Атрибутные транслирующие грамматики.
- •5.1.1. Атрибутные транслирующие грамматики.
- •5.1.2. Определение ат-грамматик
- •5.1.3. Пример ат-грамматики
- •5.1.4. Демонстрация вычисления значений атрибутов с левым выводом
- •5.1.5. Пример использования ат-грамматики
- •5.2. Cинтаксический анализ, с использованием ат-грамматики
- •5.2.1. Процесс синтаксического анализа
- •5.2.2. Пример использования ат-грамматики.
- •5.3.2. Форма простого присваивания ат-грамматик
- •5.3.3. Преобразование lат-грамматики в lат-грамматику в форме простого присваивания.
- •5.3.4. Расширенный вывод для ат-грамматики
- •5.4. Атрибутные преобразователи ( ап )
- •5.4.1. Представление правил lat-грамматики в магазине.
- •5.4.2. Построение инструкций ап.
- •5.4.3. Описание работы ап
- •5.4.4. Порядок построения ап
- •5.4.5. Пример построения ап
- •5.4.6. Демонстрация работы ап
- •5.4.7. Построение восходящих атрибутных преобразователей
- •9.1 Структурный синтез синхронных автоматов .
- •9.1.1.1 Обобщенная структурная схема автомата.
- •9.1.1.3 Структурная схема на элементах импульсного типа.
- •9.1.2 Основные этапы структурного синтеза.
- •9.1.3 Типы элементов памяти.
- •9.1.4 Построение функций возбуждения.
- •9.1.5 Примеры структурного синтеза.
- •9.1.5.1 Пример 1
- •9.1.6 Кодрование состояний с использованием соседей первого и второго рода.
- •9.1.7 Кодирование с числом элементов памяти, равным числу состояний .
- •9.1.8 Структурные схемы с дешифратором.
- •9.1.10 Структурные схемы, использующие типовые блоки цифровых устройств.
- •9.1.10.1 Структурная схема с запоминанием входного слова.
- •9.1.10.2 Структурная схема на основе счетчика.
- •9.1.10.3 Структурная схема на основе регистра со сдвигом.
- •9. Асинхронные автоматы
- •9.2 Общие положения.
- •9.2.1. Описание работы асинхронного автомата
- •9.2.2. Состязание элементов памяти
- •9.2.3.1 Универсальный способ кодирования
- •9.2.3.2. Эвристический способ кодирования
- •9.2.4. Связь асинхронного автомата с внешней средой
- •9.2.5. Построение элементов памяти
- •9.2.5.1. Асинхронный триггер
- •9.2.5.2. Асинхронный s-триггер
- •9.2.5.3. Триггеры с синхронизацией
- •9.2.6. Триггеры с задержкой
- •9.2.6.2 Асинхронный триггер j-k с задержкой
- •9.2.6.3. Триггер j-k с задержкой и синхронизацией
- •9.2.6.4. Триггер d-V с задержкой и синхронизацией
- •9.2.7. Резюме
9.1.4 Построение функций возбуждения.
Вначале остановимся на построении функций возбуждения и выходов для автомата, заданного в виде графа. Согласно последовательности структурного синтеза, описанного в п. 2, этапу построения функции возбуждения должен предшествовать этап кодирования состояний, поэтому полагаем, что каждому узлу автомата приписан код состояния. Фрагмент такого графа приведен на рис. 11.Автомат, задаваемый этим фрагментом, переходит из состояния1 , ...,i , ...,h под действием входного набора 1 , 2 , ...,n в состояние1 ', ...,i ' , ...,h '. При этом i-й элемент памяти переходит из состоянияi в состояниеi '. Для элемента памяти с одним входом по матрице переходов нетрудно определить какой сигналнужно подать на вход, чтобы он совершил переходi i '. Полученная величинаявляется искомым значением переключательной функцииi на наборе 1 , 2 , ...,n ,1 , ...,i , ...,h : yi ' = i (1 , 2 , ...,n ,1 , ...,i , ...,h ) = .Если= 1, то в ДСНФ переключательной функцииi войдет элементарная конъюнкция х11 х22... хnn y11... yii... yhh.Просматривая описанным образом все переходы автомата, нетрудно определить все значения переключательной функции уi'. Если используется элемент памяти с k входами, то для него необходимо строить k функций перехода. В этом случае для переходаi i '. по матрице переходов определяется не один, а k входных сигналов1 , 2 , ...,к . Каждый из этих сигналовj является значением соответствующей переключательной функцииijна наборе1 , 2 , ...,n ,1 , ...,i , ...,h .
9.1.5 Примеры структурного синтеза.
9.1.5.1 Пример 1
Построить схему автомата, заданного табл. 1, используя импульсные элементы “И”, “ИЛИ” с двумя входами, элемент “НЕ” и триггер типа Т с потенциальным выходным сигналом.
1. Воспользуемся структурной схемой автомата, изображенной на рис. 4, поскольку задана импульсная система логических элементов. 2. Выполним кодирование входных и выходных сигналов автомата. Результаты кодирования приведены в табл. 2 и 3. 3. Закодируем состояния автомата, используя два элемента памяти - две внутренних переменных у1, у2. Выбранный вариант кодирования приведен в табл. 4. Построим кодированную таблицу переходов в форме диаграммы Вейча. Эта таблица приведена на рис. 13.
9.1.5.1 Пример 2Построить схему для автомата, описанного в примере 1, используя в качестве элемента памяти триггер R-S.
Если оставить кодирование входных сигналов и состояний таким же как и в предыдущем примере, то функции выхода в новой схеме не изменятся. Диаграммы для функций возбуждения триггера R-S изображены на рис. 16. На этом же рисунке приведены дизъюнктивные нормальные формы функций: y'1R, y'1S, y'2R, y'2S. Полная схема автомата изображена на рис. 17.
9.1.6 Кодрование состояний с использованием соседей первого и второго рода.
Метод кодирования состояний, основанный на применении соседей, не имеет строгого обоснования. С его помощью, как правило, удается получить некоторое уменьшение сложности блока комбинационной схемы, реализующего функции возбуждения. При изложении основ этого метода мы будем предполагать, что в качестве элемента памяти используется триггер Д. Однако на практике его применяют и для элементов памяти других типов.
Определение. Если два состояния skиsjпод действием одного и того же входного сигнала х переходят в одно и то же состояние s1, то они называютсясоседями первого рода. |
На рис. 18 приведен фрагмент графа автомата. иллюстрирующий это определение. Закодируем соседей первого рода показано на рис. 18. Тогда элементарные соседними кодами 1, 2, ..., h-1, hи1, 2, ..., h-1, h, как это конъюнкции, определяющие состояния skи sj, войдут во все функции возбуждения yi', для которых соответствующий компонентi= 1. Найдем аналитическое выражение для части функций возбуждения, содержащей эти элементарные конъюнкции