
- •Синтаксис языков программирования. Описание синтаксиса. Нормальная форма Бэкуса-Наура (бнф).
- •Грамматики Хомского.
- •2.Контекстно свободные грамматики –
- •3.Линейные –
- •Описание языка ml посредствам правил кс – грамматики.
- •Синтаксическое дерево.
- •Синтаксический анализ.
- •Нисходящий синтаксический анализатор с возвратом.
- •Нисходящий анализатор без возвратов (ll(1)).
- •Грамматика ml для правила ll(1).
- •Алгоритм рекурсивного спуска.
- •Семантика языков программирования. Понятия:
- •2 Класса:
- •1.Интерпретирующая семантика.
- •2.Компилирующая семантика.
- •Семантика лексических единиц.
- •Формальные системы для внутреннего (промежуточного) представления программ.
- •С истемы перевода формальных языков.
- •Языки характеризующего перевода.
- •Содержание:
Алгоритм рекурсивного спуска.
Методика заключается в том, что у нас есть грамматика. Берем правило грамматики Хомского, группируем их по группам. Для каждой группы пишем программу - обработчик. Каждый нетерминальный символ грамматики порождает специальную программу обработчик.
Тело программы – обработчика строится по правой части и вызывается по средствам вызова обработчика.
Пример:
Обработчик Р
Обработчик S
Если текущий символ = . , то выход
Иначе
Если текущий символ = ; , то Обработчик Р
Иначе ошибка
Условимся, что у нас есть некоторая процедура, которая строит дерево.
Программа «Дерево»
r1
r2 r3 r4 r1=Дерево(r2,r3,r4)
Усовершенствованный вариант обработчика Р, с построением дерева. На выходе будет выходной параметр.
Обр.Р(var r) var-т.к.выходной параметр;
Обр.S(r1) r1-выходной показатель;
Если текущий символ=. то r=Дерево(r1,”.”);
Выход
Иначе, если текущий символ=; то Обр.Р(r2);
r=Дерево(r1,”;”,r2);
Выход
Иначе ОШИБКА
Семантика языков программирования. Понятия:
1.Перевод с одного формата языка на другой.
2.Схема синтаксически управляемого (СУ) перевода.
3.Атрибутная грамматика, как результат обобщения схем синтаксически управляемого (СУ) перевода.
2 Класса:
1.Интерпретирующая семантика.
2.Компилирующая семантика.
Интерпретирующая семантика – это некоторая функция, которая любую программу/набор данных отображает в виде результата:
Компилирующая семантика:
Интерпретирующую семантику задает интерпретатор.
Объектный
код
Исходный
текст
Внутреннее
представление
ПОЛИЗ(польс.инверсная запись)
Триады
Системы внутреннего Ассемблер
представления
Семантика лексических единиц.
Таблица символов.
Лексическая единица |
Тип лекс.един. |
Числовой тип |
Кол-во Измерений |
Размер |
… |
Кол-во байт |
Всего байт |
Адрес |
a |
Ид. |
Int |
0 |
|
|
2 |
2 |
. |
b |
Ид. |
Real |
1 |
10 |
|
4 |
40 |
. |
0,5 |
Const |
real |
0 |
|
|
2 |
2 |
. |
|
|
|
|
|
|
|
Память