- •Комитет образования рф
- •Отчёт по курсовой работе
- •Языки программирования и методы трансляции
- •1.2. Формализм для описания синтаксиса.
- •1.3.6. Ключевые слова.
- •1.3.7. Строки.
- •1.4. Описания и типы.
- •1.4.1. Целый и булевый типы.
- •1.4.2. Выражения.
- •1.4.3. Описания.
- •3. Описание синтаксического анализатора.
- •3.1. Описание языка
- •Грамматика № 1_3. Метка
Комитет образования рф
Санкт-Петербургский Государственный Электротехнический Университет
кафедра математического обеспечения и применения ЭВМ
Отчёт по курсовой работе
по дисциплине
Языки программирования и методы трансляции
Сдал студент гр.5342 Степанов Д.С.
Преподаватель Семенова О.Н.
Санкт-Петербург, 1997 год
Описание входного языка и постановка задачи.
1.1
ИсходнаЯ постановка задаЧи
Разработать язык программирования, являющийся подмножеством языка ПАСКАЛЬ и транслятор с этого языка в последовательность тетрад.
Язык должен обеспечивать работу с переменными и константами целого и булевского типов и булевскими массивами.
Язык должен допускать использование арифметических выражений, в состав которых могут входить константы и простые переменные целого типа, круглые скобки и знаки операций: сложение, вычитание, умножение и деление, и логических выражений, состоящих из констант, простых переменных и элементов массивов булевского типа, круглых скобок и знаков операций: НЕ, ИЛИ, И. Приоритет операций в арифметических и логических выражениях – обычный.
Состав операторов:
– оператор присваивания;
– оператор вывода;
– оператор ввода;
– составной оператор;
– оператор безусловного перехода;
– условный оператор, условие в котором задается логическим выражением;
– оператор цикла с предусловием, условие в котором задается логическим выражением.
Программа на входном языке может содержать комментарии.
Синтаксический анализ должен быть выполнен с использованием грамматик операторного предшествования.
1.2. Формализм для описания синтаксиса.
Синтаксис языка описан с помощью модифицированных форм Бэкуса-Наура:
- металингвистические переменные состоят из строчных букв русского алфавита и знаков подчеркивания; имя каждой переменной взято в <угловые скобки>;
- зарезервированные слова обозначаются словами английского языка, состоящими из строчных латинских букв;
- в [квадратные скобки] заключаются элементы, которые могут отсутствовать;
- повторяющиеся нуль или более раз элементы заключаются в {фигурные скобки};
1.3. Лексика языка.
1.3.1. Терминальные символы языка.
К терминальным символам языка относятся :
26 букв латинского алфавита, строчные и прописные :
A B C ... Y Z a b c ... y z
33 буквы русского алфавита :
А Б В ... Ю Я а б в ... ю я
10 цифр :
0 1 2 3 4 5 6 7 8 9
20 специальный символ :
[ ] { } , . > < = + - * / " ( ) :
символа пробела
символа конца строки.
1.3.2. Лексемы и соглашения о разделителях.
Текст программы разбивается на лексемы, которыми являются идентификаторы, ключевые слова, целые и вещественные числа, специальные символы
+ - * / ( ) [ ] { } , ; : = > < - однолитерные разделители.
а также комбинации специальных символов(двулитерные разделители)
<= знак оператора меньше или равно.
>= знак оператора больше или равно.
= знак оператора равно.
:= знак оператора присвоить
Комментарии.
Комментарии - любые символы, заключенные в { }.
1.3.4. Идентификаторы.
Идентификаторы используются в качестве имен для обозначения переменных, имен констант и меток.
Синтаксис :
<идентификатор>::=<буква> {<буква>|<цифра>}
<буква>::='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'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'
Строчные и заглавные буквы различаются. Ограничение на длину: длина идентификатора не может быть больше 20 символов.
Константы.
Значение констант определяется лишь единожды и после остается
неизменным
<константа>::=<имя>’=’<значение>
<значение>:=<выражение>