- •Задание
- •Описание языка
- •Описания и типы
- •Способы описания собственных типов:
- •Описание констант:
- •Описание переменных:
- •Имена и выражения Выражения:
- •Переменные:
- •Операторы
- •Оператор присваивания
- •Структуры данных
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
- •Описание промежуточного языка
- •Описание перевода (таг) каждой конструкции входного языка Основная грамматика:
- •Подграмматика для выражения:
- •Подграмматика для описания типов:
- •Подграмматика для переменных:
- •Подграмматика для операторов:
Санкт-Петербургский государственный электротехнический университет
Кафедра: МО ЭВМ.
Дисциплина: ТВП и С.
Пояснительная записка
к курсовой работе
вариант 5
Выполнил: Стяжкин А.А.
группа 7304
Преподаватель: Самойленко В.П.
Санкт-Петербург
1999
Содержание:
Задание 3
Описание языка 4
Лексика 4
Набор символов: 4
Разделители: 4
Лексемы: 4
Описания и типы 5
Способы описания собственных типов: 5
Описание констант: 5
Описание переменных: 5
Имена и выражения 6
Выражения: 6
Переменные: 7
Операторы 8
Оператор присваивания 8
Оператор ввода 8
Оператор вывода 8
Составной оператор 9
Оператор безусловного перехода 9
Условный оператор 9
Цикл с предусловием 9
Описание меток 11
Программа 11
Лексический анализ 12
Перечисление лексем 12
Структуры данных 13
Синтаксический анализ и перевод во внутреннюю форму 13
КС-грамматика входного языка 13
Разбиение грамматики на подграмматики 13
Основная грамматика: 13
Подграмматика для выражения: 15
Подграмматика для описания типов: 16
Подграмматика для переменных: 16
Подграмматика для операторов: 17
Описание промежуточного языка 17
Описание перевода (ТАГ) каждой конструкции входного языка 20
Основная грамматика: 20
Подграмматика для выражения: 22
Подграмматика для описания типов: 25
Подграмматика для переменных: 28
Подграмматика для операторов: 29
Задание
Разработать язык программирования, являющийся подмножеством языка ПАСКАЛЬ, и описать перевод основных конструкций этого языка в последовательность триад.
Объектами языка являются переменные, константы и массивы целого, вещественного и комплексного типов, записи и массивы записей. Кроме заданных предопределенных типов разрешается определять собственные типы и подтипы.
Язык должен допускать использование арифметических выражений над данными целого типа и арифметических выражений над комплексными данными. В арифметические выражения могут входить константы и простые переменные, круглые скобки и знаки арифметических операций: сложение, вычитание, умножение и деление (приоритет операций - обычный). Допускается перегрузка операций,
Состав операторов:
- оператор присваивания;
- оператор ввода;
- оператор вывода;
- составной оператор;
- оператор безусловного перехода;
- условный оператор, условие в котором задается отношением;
- оператор цикла с предусловием, условие в котором задается отношением.
Метод синтаксического анализа - алгоритм синтаксического анализа для LL(1)-грамматик.
Эквивалентность типов - именная.
Описание языка
Лексика
Набор символов:
латинские буквы: от a до z и от A до Z;
русские буквы: от а до я и от А до Я;
цифры: от 0 до 9;
символы (+), (-), (*), (/), (.), (,), (:), (=), (>), (<), ((), ()), ([), (]), ({), (}), (‘).
Разделители:
пробелы, концы строк и комментарии.
Комментарий начинается с символа { или (* и заканчивается } или *), может содержать любые символы кроме } и *). Последовательность символов { *) и (* } не является верным комментарием.
Лексемы:
Идентификатор начинается с буквы, за которой могут следовать в любой комбинации не более 7 букв и цифр. Соответствующие строчные и прописные буквы считаются эквивалентными.
Ключевое слово - воспринимается как единый символ с фиксированным смыслом. Использовать эти слова в каком-либо другом значении кроме того, которое зафиксировано при определении языка нельзя.
Список ключевых слов: array, begin, const, do, else, end, goto, if, label, of, program, record, then, type, var, while.
Специальный символ - символ, состоящий из одного или двух знаков, имеющий предопределенный смысл.
Список специальных символов: (+), (-), (*), (/), (.), (,), (:), (=), (>), (<), (:=), ((), ()), ([), (]), (..), (‘).
Число обозначает целое, вещественное или комплексное значение. Используется десятичная система обозначений. В числе не допускается запятых. Перед любым числом может стоять знак (+) или (-). При его отсутствии подразумевается (+). Целые числа записываются в виде последовательности цифр. Вещественное число записывается с десятичной точкой, пред и после которой стоит последовательность цифр (как минимум, одна цифра).
Комплексное число записывается в виде:
Таким образом комплексное число может обозначать значения с целой реальной и целой мнимой частью. Вместо буквы i может быть I.
Строка символов - это заключенная в апострофы (‘) последовательность символов, кроме символа апострофа.
Метка представляет целое без знака и употребляется для маркировки операторов языка. Их «значения» должны лежать в диапазоне от 0 до 9999.