- •Пояснительная записка к курсовой работе по дисциплине "Теория языков программирования"
- •2005 Отчет по курсовой работе тяп.
- •1 Описание входного языка
- •1.1 Задание
- •1.2 Синтаксис и семантика языка
- •1.2.1 Словарь и представление
- •1.2.2 Описания и области действия
- •1.2.3 Описания констант
- •1.2.4 Описания типов
- •1.2.5 Описания переменных
- •1.2.6 Выражения
- •1.2.6.1 Операнды
- •1.2.6.2 Операции
- •1.2.7 Операторы
- •2. Лексический анализ
- •2.1 Типы лекскем.
- •2.2 Диаграммы переходов
- •2.3 Структуры данных
- •2.4 Тестирование лексического анализатора
- •3 Синтаксический анализ и перевод во внутреннюю форму
- •3.1 Кс-грамматика входного языка
- •3.1.1 Основная грамматика.
- •3.1.2 Грамматика описывающая составной оператор.
- •3.1.3 Грамматика описывающая выражение
- •3.2 Диаграмма переходов
- •3.3 Описание промежуточного языка
- •3.4 Описание перевода
- •3.4.1 Атг для программы
- •3.4.2 Атг для оператора
- •3.4.3 Атг для выражения
- •3.4.4 Описание конструкций языка при помощи триад
- •3.5 Алгоритм работы дмп-процессора
- •3.6 Тестирование синтаксического анализатора
- •4 Генерация кода
1.2.2 Описания и области действия
Каждый идентификатор должен быть описан, причём только один раз.
Запрещается использовать в качестве идентификаторов зарезервированные слова.
1.2.3 Описания констант
Описание константы связывает ее идентификатор с ее значением.
1.2.4 Описания типов
Тип данных определяет набор значений, которые могут принимать переменные, константы этого типа, и набор применимых операций. Описания типа связывает идентификатор с типом.
Стандартные типы:
1) Целые типы.
Тип |
Диапазон |
Формат |
короткое целое (shortint) |
-128..127 |
1 байт |
целое (integer) |
-32768..32767 |
2 байта |
длинное целое (longint) |
-2147483648.. 2147483647 |
4 байта |
длиной в байт (byte) |
0..255 |
1 байта |
длиной в слово (word) |
0..65535 |
2 байта |
Правила преобразования бинарных арифметических операций (операций, использующих два операнда) для целых типов:
- если один из операндов имеет тип longint, то другой операнд всегда преобразуется к типу longint;
- если один из операндов имеет тип integer, а другой – типа shortint, или byte, то оба операнда приводятся к типу integer;
- если один из операндов имеет тип integer, а другой – типа word, то оба операнда приводятся к типу longint;
- если один из операндов типа shortint, а другой – типа byte, то оба операнда приводятся к типу integer;
- если один из операндов типа word, а другой – типа shortint, то он приводится к типу longint;
- если один из операндов типа word, а другой – типа byte, то он приводится к типу word;
- ограниченный тип приводится к стандартному типу, имеющему наименьший диапазон, в который входит данный ограниченный тип.
При выполнении операции присваивания результат приводится к типу переменной слева от знака операции присваивания, при этом возможно преобразование как старшего типа к младшему, так и наоборот.
Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающим значение этой целой константы.
Выражение справа в операторе присваивания вычисляется независимо от размера или типа переменной слева.
2) Булевский тип – boolean, переменная этого типа может принимать значения из множества (false, true). Поскольку логический тип является перечислимым, между этими значениями имеет место следующее отношение: False < True.
3) Тип булевских матриц – boolmatr[N, M], где N, M целые без знака, обозначающие размерность матрицы. Каждый из ее элементов это переменная типа boolean. N – обозначает число столбцов, M – число строк.
Ограниченный тип: при задании указываются наименьшее и наибольшее значение, которое может принимать переменная соответствующего типа. Первое значение должно быть меньше или равно второму значению. Оба значения должны быть одного и того же типа.
1.2.5 Описания переменных
Описания переменных определяют идентификатор и тип данных для них.
1.2.6 Выражения
Выражения - конструкции, задающие правила вычисления по значениям констант и текущим значениям переменных других значений путем применения операций и процедур-функций. Выражения состоят из операндов и операций. Круглые скобки могут использоваться для группировки операций и операндов.