Скачиваний:
15
Добавлен:
01.05.2014
Размер:
381.95 Кб
Скачать

Министерство общего и профессионального образования РФ

Санкт-Петербургский Электротехнический Университет «ЛЭТИ»

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

Дисциплина: РЯП

Пояснительная записка к курсовой работе (вар16)

Выполнили студенты:

Бахвалова Ю.С.

Крупицкий М.В.

Чепас А.С.

Группа: 3305

Преподователь: Самойленко В.П.

Санкт-Петербург

2008 Оглавление

Оглавление 2

Задание 3

Описание синтаксиса языка в форме Бэкуса-Наура 4

Teрминальные символы: 4

Программа 4

Оператор ввода 4

Оператор вывода 5

Оператор безусловного перехода 5

Оператор условного перехода 5

Оператор Цикла 5

Арифметические выражения 5

Переменная 6

Оператор присваивания 7

Объявления переменных, констант и типов 7

Операции входного языка и их приоритет 7

Типы языка 7

Приоритеты операций: 7

Лексический анализ 8

Классы входных литер 8

Перечисление лексем 8

Синтаксический анализ и перевод во внутреннюю форму 9

Таблица идентификаторов (3) 9

Таблица меток (7) 10

Таблица переменных (6) 10

КС-грамматика входного языка 10

Основная грамматика 10

Подграмматика составного оператора 10

Подграмматика оператора 11

Подграмматика оператора_вывода 11

Подграмматика для операторов 11

Подграмматика объявлений 12

Подграмматика объявления констант 12

Подграмматика арифметических выражений 13

Подграмматика переменной 13

Описание промежуточного языка. 13

Спецификация тетрад 14

Описание перевода (постфиксная S – атрибутная транслирующая грамматика) каждой конструкции входного языка 15

Связь между ДМП-процессорами и подграмматиками 25

Пример перехода от основной грамматики к подграмматике составного оператора 25

S – атрибутный ДМП процессор 28

Пример атрибутного перевода для арифметических выражений 29

Реализация компилятора 35

Генерация ассемблерного кода 37

Пример 38

Задание

Разработать язык программирования, являющийся подмножеством языка C, и описать перевод основных конструкций этого языка в последовательность тетрад.

Объектами языка являются переменные, константы и массивы целого и вещественного типов и вещественные матрицы.

Язык должен допускать использование арифметических выражений, в состав которых могут входить константы и простые переменные целого и вещественного типов, элементы матриц, круглые скобки и знаки операций: сложение, вычитание, умножение и деление. Приоритет операций – обычный. Допускается перегрузка операций.

В языке должны быть определены следующие операции над матрицами:

  • вычисление определителя матрицы;

  • транспонирование матрицы;

  • сумма матриц;

  • произведение матриц.

Состав операторов:

  • оператор присваивания;

  • оператор ввода;

  • оператор вывода;

  • составной оператор;

  • оператор безусловного перехода;

  • условный оператор, условие в котором задается отношением:

  • оператор цикла с параметром.

Метод синтаксического анализа – алгоритм «перенос-свертка» для грамматик слабого предшествования.

Эквивалентность типов – структурная.

Описание синтаксиса языка в форме Бэкуса-Наура Teрминальные символы:

id – идентификатор (последовательность из символов латинского алфавита, цифр, знака подчеркивания “_”, начинающаяся с буквы)

<идентификатор> = id

<целое_число> = num

<вещественное число> = fnum

<идентификатор>::= <буква><продолжение>

<продолжение>::= <продолжение><буква> | <продолжение><цифра> | <буква> | <цифра>

<буква>::= A..Z a..z _

<цифра>::= 0..9

Максимальный размер идентификатора 32

<целое_число>::= + <окончание> | - <окончание> | <окончание>

<окончание>::= <окончание> <цифра> | <цифра>

<вещественное_число>::= <целое_число> . <дробная_часть> | . <дробная_часть>

| <целое_число> .

<дробная_часть>::= <окончание> | <окончание> e <целое_число>

| <окончание> E <целое_число>

Соседние файлы в папке kurs