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

Государственный комитет Российской Федерации по высшему образованию

Санкт-Петербургский государственный электротехнический университет им. В.И.Ульянова (Ленина).

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

Разработка языковых процессоров.

Отчет по курсовой работе.

Преподаватель: Кринкин К.В.

Студенты гр. 2382 Алекперов И.А. Кривенок Д.В.

Савельев Ф. Г.

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

2007

Формулировка задания

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

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

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

Состав операторов языка:

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

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

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

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

  • оператор перехода

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

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

Перегрузка операций – не разрешается.

Краткая формулировка:

Базовый язык – Паскаль.

Базовые типы: целый, булевский, ограниченный.

Структурированный тип – булевская матрица.

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

Оператор цикла – с постусловием.

Перегрузка операций – не разрешается.

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

Класс грамматик – SLR(1)-грамматики.

Промежуточный язык – триады.

Синтаксис и семантика языка Словарь и представление

Для представления терминальных символов предусматривается использование набора знаков ASCII. Пробелы и концы строк не должны встречаться внутри слов (исключая комментарии и пробелы в символьных строках). Пробелы и концы строк игнорируются, если они не существенны для отделения двух последовательных слов. Заглавные и строчные буквы считаются одинаковыми.

  1. Буква - буквы латинского алфавита от A до Z и от a до z. и знак подчеркивания.

A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|

a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z | _

  1. Цифры - арабские цифры от 0 до 9.

0|1|2|3|4|5|6|7|8|9

Шестнадцатеричные цифры - арабские цифры от 0 до 9, буквы от A до F и буквы от a до f.

0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|a|b|c|d|e|f

Целое без знака: для их записи используется обычная десятичная система записи.

3. Разделители - символ пробела (ASCII 32) и все управляющие символы кода ASCII (ASCII 0-31), включая символ конца строки или символ возврата (ASCII 13).

  1. Символы - символы могут быть как прописными, так и строчными буквами латинского и русского алфавита. Пробел так же является символом.

A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|

a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z | _

А|Б|В|Г|Д|Е|Ё|Ж|З|И|Й|К|Л|М|Н|О|П|Р|С|Т|У|Ф|Х|Ц|Ч|Ш|Щ|Ъ|Ы|Ь|Э|Ю|Я|

а|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я

*, /, +, -, <, <=, >, >=, =, , :=, <>, (*, *), , , {, }, :, ; , . , ., ~, !, @, #, $, %, ^, &, *, (, ), _, +, =, -, ? , :, %, ;, №, », \, |, , ’,] ,[ ,> ,? ,: , ”, {, }

5. Специальные символы и зарезервированные слова представляют собой символы, имеющие одно или несколько фиксированных значений.

Специальными символами являются следующие одиночные символы:

+ - * / = < > [ ] . , ( ) : ; { }

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

<= >= := .. (* *) (. .)

Зарезервированные слова языка.

and begin boolmatr const div else end goto if label mod

not or program repeat shl shr then type until var xor

6. Строки - последовательности символов, заключенные в одиночные (') или двойные (") кавычки. Открывающая кавычка должна быть такой же, что и закрывающая и не должна встречаться внутри строки. Число символов в строке называется ее длиной. Строка длины 1 может использоваться везде, где допустима символьная константа и наоборот.

7. Знаки операций: Операции, используемые при построении выражений, делятся на операции типа: сложения, умножения, отношения.

8. Комментарии могут быть вставлены между любыми двумя словами программы. Это произвольные последовательности символов, начинающиеся скобкой (* или { и оканчивающиеся *) или }. Комментарии могут быть вложенными. Они не влияют на смысл программы.