- •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.2.5.2. Асинхронный s-триггер
Основные типы асинхронных триггеров строятся, как правило, на основе триггера типа R-S. Метод их построения рассмотрим на примере S-триггера. Обозначим буквами S и R входы создаваемого S-триггера, а функции возбуждения R-S-триггера, используемого в качестве элемента памяти, обозначим символами q’R и q’S. Вначале построим таблицу переходов S-триггера, исходя из его реакции на входные сигналы (рис. 11,а ). Затем построим таблицы функций возбуждения q’R и q’S триггера R-S, который используется в качестве основного элемента памяти (рис. 11,б ).

Особенностью рассмотренных триггеров является то, что изменение их состояния начинается одновременно с подачей входного сигнала, поэтому реализация асинхронных триггеров типа T и J-K оказывается невозможной.
9.2.5.3. Триггеры с синхронизацией
В реальных схемах в результате действия
паразитных задержек сигналы, подаваемые
на различные входы триггера, могут
приходить одновременно. Если, например,
сигнал на вход R триггера типа S,
находящегося в состоянии 1, придет раньше
сигнала на входе S, то триггер может
успеть перейти в состояние 0 на время
задержки сигнала, подаваемого на вход
S. Чтобы избежать таких ложных срабатываний,
обусловленных задержками входных
сигналов, используют синхронизирующие
или, как их называют, тактирующие сигналы.
При этом длительность синхронизирующих
сигналов выбирается меньшей, чем
длительность сигналов, подаваемых на
управляющие входы. Временная диаграмма,
поясняющая использование синхронизирующий
сигналов, приведена на рис. 12.
Триггеры
с синхронизацией должны иметь
дополнительный вход С, на который
подаются тактирующие сигналы. Работу
такого триггера можно описать следующим
образом. При отсутствии сигнала на входе
С, триггер не изменяет своего состояния.
Если же сигнал на входе С равен 1, то он
работает как соответствующий триггер
без синхронизации. Триггеры рассматриваемого
типа строятся обычно на основе асинхронного
R-S-триггера. Пример построения S-триггера
с синхронизцией приведен на рис.13.



9.2.6. Триггеры с задержкой
Для того чтобы устранить состязания в схемах асинронных автоматов, используют специального вида триггеры с задержой. Выходной сигна q такого триггера изменятся в момент окончания действия входного сигнала, как показано на рис. 14. В схема, построенных на триггера с задержкой, сигналы обратной связи остаются неизменными во время действия входных сигналов, поэтому состязания в таких схемах, так же, как и схемах с двойной памятью, должны отсутствовать. Задержка выходного сигнала может быть реализована за счет увеличения числа внутренних состояний триггера. При этом необходимо ввести по крайней мере два дополнительных состояния: одно для запоминания новых входных сигналов при переходе из 0 в 1, а другое - для запоминания входных сигналов при переходе из 1 в 0. Следовательно, триггер с задержкой должен иметь не менее четырех состояний.

В зависимости от того, как закодировать эти состояния, можно получить различные виды триггеров. Например, если выполнить кодирование с помощью трех переменных, то можно получить триггер с задержкой на основе трех R-S-триггеров. Если же кодирование производить с использоваием двух внутренних переменных, то можно получить триггеры, построенные по M-S-схеме (сокращение от английский слов Master - Slave). При построении по M-S-схеме используют два асинхронных R-S-триггера, один из которых является главным, а второй вспомогательным.
9.2.6.1. T - ТРИГГЕР С ЗАДЕРЖКОЙ
В качестве примера рассмотрим построение асинхронного Т-триггера с задержкой по М-S-схеме. Диаграмма переходов такого триггера изображена на рис. 15,а. Состояния на диаграмме закодированы таким образом, чтобы при каждом переходе изменялась только одна переменная. Таблица переходов, соответствующая этой диаграмме, приведена на рис. 15,б. Функции возбуждения триггеров типа R-S, построенные по этой таблице, приведены на рис. 15,в, а схема Т-триггера - на рис. 16.


