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

1. Описание входного языка.

1.1. Общие сведения.

В курсовой работе описывается разработка компилятора для языка, являющегося подмножеством языка Си. Язык обеспечивает работу с переменными и константами целого и вещественного типов и векторами с вещественными компонентами, а также арифметическими выражениями над данными целого, вещественного и векторного типов.

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

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

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

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

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

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

  • оператор цикла for;

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

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

  • определение длины вектора;

  • сумма векторов;

  • скалярное произведение векторов;

  • умножение константы или простой переменной целого или вещественного типов на вектор;

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

  • 21 специальный символ :

[ ] { } , . > < = ! + - * / " _ ( ) : & |

  • символа пробела

  • символа конца строки.

  • символа горизонтальной табуляции

  • символа вертикальной табуляции

1.3.2. Лексемы и соглашения о разделителях.

Текст программы разбивается на лексемы, которыми являются идентификаторы, ключевые слова, целые и вещественные числа, специальные символы

+ - * / ( ) [ ] { } , ; : = > < ! - однолитерные разделители.

а также комбинации специальных символов(двулитерные разделители)

<= знак оператора меньше или равно.

>= знак оператора больше или равно.

== знак оператора равно.

!= знак оператора не равно.

&& знак оператора and

|| знак оператора or.

  1. Комментарии.

Комментарии - любые символы, заключенные в /* */.

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'

Строчные и заглавные буквы различаются. Ограничение на длину: длина идентификатора не может быть больше 30 символов.

1.3.5. Константы.

Константы подразделяются на целые и вещественые. Значение константы определяется единожды и не может изменяться.

<константа>::=<константа_без_знака>

<знак>::='+'|'-'

<константа_без_знака>::=<имя_константы>|<число_без_знака>

<имя_константы>::=<идентификатор>

<число_без_знака>::=<целое_без_знака>['.'<целое_без_знака>]['E'<знак>

<целое_без_знака>]

<целое_без_знака>::=<цифра>{<цифра>}

1.3.6. Ключевые слова.

Следующие ключевые слова считаются зарезервированными и не могут использоваться в качестве идентификаторов:

int float void main goto length for if else scanf printf vector const

Ключевые слова воспринимаются как единые символы с фиксированным смыслом, который задан в определении языка.

1.3.7. Строки.

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

"кавычки" .

1.4. Описания и типы.

1.4.1. Целый тип.

Целочисленный знаковый тип int : размер 2 байта, диапазон -32768..32767.

Вещественный тип float : размер 4 байта, диапазон +-3.4*10**(+-38)

Тип вектора vector с вещественными компонентами: максимальное число компонент 16383.

Операции:

Оператор

тип оператора

допустимые типы параметров

+

унарный

int, float, vector

-

унарный

int, float, vector

+

бинарный

int, float, vector

-

бинарный

int, float, vector

*

бинарный

int, float, vector

/

бинарный

int, float

[ ]

унарный

vector

Length

унарный

vector

&&

бинарный

int

||

бинарный

int

==, !=, <, >, <=, >=

бинарные

int, float

!

унарный

int

Соседние файлы в папке Курсовая работа2