- •Государственный комитет Российской Федерации по высшему образованию
- •Синтаксис и семантика языка Словарь и представление
- •Описания и области действия
- •Описания констант
- •Описания типов
- •Описания переменных
- •Выражения
- •Операнды
- •Операции
- •Операторы
- •Лексический анализ Типы лекскем
- •Диаграммы переходов
Государственный комитет Российской Федерации по высшему образованию
Санкт-Петербургский государственный электротехнический университет им. В.И.Ульянова (Ленина).
Кафедра МОЭВМ
Разработка языковых процессоров.
Отчет по курсовой работе.
Преподаватель: Кринкин К.В.
Студенты гр. 2382 Алекперов И.А. Кривенок Д.В.
Савельев Ф. Г.
Санкт-Петербург
2007
Формулировка задания
В процессе выполнения курсовой работы необходимо разработать язык программирования, являющийся подмножеством языка Паскальи транслятор с этого языка втриады. Метод синтаксического анализа –LR1 грамматики.
Язык должен обеспечивать операции над переменными и константами заданных базовых типов: целый, булевский, ограниченный; а также над переменными и компонентами производного типа:булевскими матрицами. Перечень операций должен включать как предусмотренные базовым языком, так иоперации над матрицами: определение размеров матрицы, конъюнкция и дизъюнкция матриц, инверсия матрицы. В языке используетсяструктурная эквивалентность типов. В языке должна быть предусмотрена возможность создания пользовательских типов.
Язык должен допускать использование арифметических выражений, в состав которых могут входить константы и простые переменные базовых типов, компоненты структурированного типа, круглые скобки и знаки операций: сложение, вычитания, умножения, деления. Приоритет операций – обычный. Язык должен допускать использование логических выражений, в состав которых могут входить отношения и круглые скобки.
Состав операторов языка:
оператор присваивания
оператор ввода
оператор вывода
составной оператор
оператор перехода
условный оператор, условие в котором задается логическим выражением
оператор цикла – с параметром
Перегрузка операций – не разрешается.
Краткая формулировка:
Базовый язык – Паскаль.
Базовые типы: целый, булевский, ограниченный.
Структурированный тип – булевская матрица.
Операции над булевскими матрицами: определение размеров матрицы, конъюнкция и дизъюнкция матриц, инверсия матрицы.
Оператор цикла – с постусловием.
Перегрузка операций – не разрешается.
Эквивалентность типов – структурная.
Класс грамматик – SLR(1)-грамматики.
Промежуточный язык – триады.
Синтаксис и семантика языка Словарь и представление
Для представления терминальных символов предусматривается использование набора знаков ASCII. Пробелы и концы строк не должны встречаться внутри слов (исключая комментарии и пробелы в символьных строках). Пробелы и концы строк игнорируются, если они не существенны для отделения двух последовательных слов. Заглавные и строчные буквы считаются одинаковыми.
Буква - буквы латинского алфавита от 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 | _
Цифры - арабские цифры от 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).
Символы - символы могут быть как прописными, так и строчными буквами латинского и русского алфавита. Пробел так же является символом.
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. Комментарии могут быть вставлены между любыми двумя словами программы. Это произвольные последовательности символов, начинающиеся скобкой (* или { и оканчивающиеся *) или }. Комментарии могут быть вложенными. Они не влияют на смысл программы.