- •Московский автомобильно-дорожный государственный технический университет (мади)
- •I.Формальные языки и грамматики
- •I.1. Цепочки символов
- •I.2. Операции над цепочками символов
- •I.3. Понятие языка
- •I.4. Способы задания языка
- •I.5. Синтаксис и семантика языка
- •I.6. Определение грамматики
- •I.7. Пример грамматики
- •I.8. Принцип рекурсии в правилах грамматики
- •I.9. Способы задания грамматик
- •I.9.1. Использование метасимволов
- •I.9.2. Запись правил грамматики в графическом виде
- •I.10. Распознаватель
- •I.10.1. Схема распознавателя
- •I.10.2. Задача разбора
- •I.11. Классификация грамматик
- •I.12. Классификация языков
- •I.13. Примеры классификаций языков и грамматик
- •I.14. Цепочки вывода
- •I.14.1. Понятие о выводе
- •I.14.2. Сентенциальная форма грамматики
- •I.14.3. Левосторонние и правосторонние выводы
- •I.14.4. Дерево вывода и методы его построения
- •I.15. Однозначности и эквивалентности грамматик
- •I.15.1. Однозначные и неоднозначные грамматики
- •I.15.2. Проверка однозначной и эквивалентной грамматик
- •I.15.3. Правила, задающие неоднозначность в грамматиках
- •II. Принципы построения трансляторов
- •II.1. Определения транслятора
- •II.2. Определение компилятора
- •II.3. Определения интерпретатора
- •II.4. Этапы трансляции
- •II.5. Фазы компиляции
- •II.6. Ти ( таблицы идентификаторов)
- •II.6.1. Назначение и особенности построения
- •II.6.2. Простейшие методы
- •II.6.3. Построение ти по методу бинарного дерева
- •II.6.5. Выбор Хэш-функции при построении ти
- •II.6.7. Построение ти по методу цепочек
- •II.7. Лексические анализаторы
- •II.7.1. Назначение ла
- •II.7.2. Определение границ лексем
- •II.7.3. Выполнение действий, связанных с лексемами
- •II.7.4. Применение конечных автоматов (ка) для построения ла
- •II.7.5. Алгоритм построения ка
- •II.7.6. Пример применения ка для построения ла
- •II.8. Принципы построения синтаксических анализаторов (са)
- •II.8.1. Значение са
- •II.8.2. Автоматы с магазинной памятью
- •II.9. Принципы построения семантического анализатора (с-а)
- •II.9.1. Назначение с-а
- •II.9.2. Проверка соблюдения во входной программе семантических соглашений
- •II.9.3. Дополнение внутреннего представления программы
- •II.9.4. Проверка смысловых норм языка программирования
- •II.10. Принципы генерации кода
- •II.11. Оптимизация кода
II.8.2. Автоматы с магазинной памятью
КС называются языки, определенные грамматикой
G(VT,VN,P,S)
правила которых имеют вид
P
A → β, где A ∈ VN и β ∈V*
V=VT ∪VN
В общем виде МП-а. определяется
R( Q, V, Z, δ , q0 , Z0 ,F )
Q – множество состояний автомата
V – алфавит входных символов
Z – специальный коечный алфавит магазинных символов автомата
V≤ Z
δ - функция переходов автомата, которая отображает множество
QX(V ∪{λ})xz
На конечное множество подмножеств
P(QxZ’)
q0 ∈ Q начальное состояние автомата
z∈ Z начальный символ магазина
F ≤ Q множество конечных состояний
МП- а. имеет магазин (стек), в который помещены магазинные символы – это терминальные и нетерминальные символы грамматики языка.
Переход из одного состояния в другое зависит не только от входного символа, но и от символа на верхушке стека. Конфигурация автомата определяется:
состоянием автомата
текущим символом входной цепочки
содержание стека
МП-а. можно представить в виде схемы
Автомат работает по тактам или по переходам. При выполнении такта из стека удаляется верхний символ, соответствующий условию перехода и добавляется цепочка, соответствующая правилу перехода. Первый символ цепочки становится верхушкой стека. Допускаются переходы, где 1ый символ игнорируется, т.е. он будет входным символом при следующем переходе. Такие переходы называются λ – переходы, т.е. простые. Он принимает цепочку символов, если, получив ее на вход, он может перейти в одну из конечных конфигураций. При окончании цепочки автомат находится в одном из конечных состояний, а стек содержит 1 определенную цепочку. Кроме понятия МП-а существует такое понятие, как расширенный
МП-а. Он может заменять цепочку символов конечной длины в верхней части стека на другую цепочку символов конечной длины. В отличии от обычного МП-а, который на каждом такте работы может изымать из стека только один символ, т.е. расширенный МП-а изымает за 1 такт цепочку символов, находящуюся на вершине стека. Существует такое понятие как
ДМП-автомат (детерминированный). Это такой автомат, если из каждой его конфигурации возможно не более 1 перехода в следующую конфигурацию. В противном случае он недетерминированный.
II.9. Принципы построения семантического анализатора (с-а)
II.9.1. Назначение с-а
С-А выполняется на двух этапах компиляции. Это на этапе синтаксического разбора и в начале этапа к подготовке генерации кода. В 1ом случае всякий раз по завершению анализа определенной синтаксической конструкции входного языка выполняется ее синтаксическая проверка на основе имеющих в ТИ данных. Такими конструкциями являются процедуры, функции, блоки операторов входного языка. Во 2ом случае после завершения всей фазы СА выполняется полный С-А программы на основании ТИ (например, поиск неописанных идентификаторов).
С-А выполняет следующие основные действия:
1) проверка соблюдения в входной программе семантических соглашений входного языка
2) дополнение внут. представ. программы в компиляторе операторами и действиями не явно предусмотренной семантикой входного языка
3) проверка элементарных семантических смысловых норм языка программирования на прямую не связанным с входным языком.
