Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик по ТЯП.DOC
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
240.13 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

Кафедра: МО ЭВМ.

Дисциплина: ТВП и С.

Пояснительная записка

к курсовой работе

вариант 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.

Соседние файлы в предмете Теория языков программирования