- •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.10 Структурные схемы, использующие типовые блоки цифровых устройств.
Если работа автомата задается оператором неавтоматного вида, то его необходимо преобразовать таким образом, чтобы он стал автоматным. Напомним, что такое преобразование выполняется путем применения операций выравнивания и пополнения. В результате применения этих операций длина перерабатываемых слов, состоящих из n букв, может увеличиться на (n - 1) пустую букву. Такое увеличение длины эквивалентно внесению задержки между последовательностью входных и выходных сигналов.
9.1.10.1 Структурная схема с запоминанием входного слова.
Если по условию работы автомата допустима задержка в n тактов, то можно использовать универсальную схему для реализации операторов как автоматного, так и неавтоматного вида. Принцип работы такой схемы основан на том, что в течение первых n тактов входное слово х1, х2, ..., хnзапоминается, а в следующие n тактов осуществляется последовательное считывание букв выходного словаz1, z2, ..., zn. При этом буквы выходного слова вырабатываются одновременно комбинационной схемой, на вход которой, начиная с n-го такта, в виде параллельного кода подаются буквы входного слова. Структурная схема автомата, реализующего предложенный принцип, приведена на рис. 25. Схема состоит: из ряда схем “И”, разрешающих запись букв входного слова на элементы памяти ЭП1 - ЭПh; второго ряда схем “И”, используемых для образования выходного слова; комбинационной схемы и распределителя, который построен на основе счетчика (С) с дешифратором (ДС).
9.1.10.2 Структурная схема на основе счетчика.
Структурная схема автомата, память которого выполнена в виде двоичного счетчика и шифратора, изображена на рис. 26.
Счетчик, используемый в схеме, должен иметь один счетный вход и несколько установочных входов, на которые подаются сигналы y1', y2', ..., yh'. Сигнал, подаваемый на счетный вход, изменяет состояние счетчика таким образом, что двоичное число, соответствующее новому состоянию, получается всегда путем увеличения на единицу двоичного числа, соответствующего старому состоянию. Установочные входы позволяют заносить в счетчик произвольный код. Сигналы на установочные входы подаются с выходов шифратора. Обычно на входе шифратора либо все сигналы равны нулю, либо имеется только один сигнал, отличный от нуля. Каждый такой сигнал преобразуется шифратором в совокупность выходных сигналовy1', y2', ..., yh' , определяющих новое состояние счетчика. Практически схема шифратора в большинстве случаев представляет собой совокупность схем “ИЛИ”, с выходов которых снимаются сигналыy1', y2', ..., yh'. Каждый входной сигнал шифратора rjподается на входы всех тех схем “ИЛИ”, на выходе которых должен быть получен сигнал, равный единице. Для того чтобы осуществить задержку перехода в новое состояние, в приведенной схеме либо используют счетчик с удвоенным числом элементов памяти, либо включают в схему дополнительный регистр, в котором сохраняется старое состояние.
9.1.10.3 Структурная схема на основе регистра со сдвигом.
Перейдем к описанию схем, блок памяти в которой и функции переходов выполнены на сдвигающем регистре . Рассмотрим вначале возможность построения такой схемы для автомата с одним входом и двоичным входным алфавитом. Допустим, что автомат задан полным размеченным деревом входных последовательностей. Закодируем состояния этого автомата следующим образом. Начальному состоянию припишем код 00 ... 01. Состояния остальных ярусов дерева кодируются последовательно в порядке увеличения номера яруса. Если состоянию siуже приписан код1,2, ...,h-1 ,hи если под действием входного сигналаиз этого состояния автомат переходит в состояние sj, то состоянию sjприпишем код2, ...,h-1 ,h . Согласно этому правилу, код каждого следующего состояния получается из кода предыдущего состояния путем сдвига последнего влево на один разряд и записи входного сигнала в освободившийся последний разряд. При таком способе кодирования требуемое число двоичных разрядов h определяется числом ярусов дерева входных последовательностей. В качестве иллюстрации описанного способа на рис. 27 показано кодирование графа автомата, полученного из дерева входных последовательностей добавлением дуг, ведущих из узлов последнего яруса в начальный узел.