Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик по ТЯПу.doc
Скачиваний:
13
Добавлен:
01.05.2014
Размер:
140.29 Кб
Скачать

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

<класс> ::= class <имя класса> { <набор объявлений> }

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

<набор объявлений> ::= <объявление> | <набор объявлений> <объявление>

<объявление> ::= <объявление атрибута> | <объявление метода>

<объявление атрибута> ::= <уровень доступа> <тип> <имя атрибута>;

<объявление метода> ::= <уровень доступа> <тип> <имя метода> (<формальные параметры>){<блок>}

<имя атрибута> ::= <идентификатор>

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

<уровень доступа> ::= public | private

<тип> ::= <встроенный тип> | <имя класса>

<встроенный тип> ::= int | float | compl | matr | char

<формальные параметры>::= ε |<объявление переменной>|<формальные параметры>,<объявление переменной>

<блок> ::= <элемент блока> | <блок> <элемент блока>

<элемент блока> ::= <объявление переменной> | <цикл с постусловием> | <условный оператор> | <оператор присваивания> | <выражение>;

<объявление переменной>::=<тип> <имя переменной>;

<имя переменной> ::= <идентификатор>

<оператор присваивания> ::= <левое выражение> <знак присваивания> <выражение>

<знак присваивания> ::= += | *= | -= | /= | =

<левое выражение>::= <левое выражение> <вызов атрибута класса> | <имя переменной> | <элемент матрицы>

<вызов атрибута класса> ::= . <имя аттрибута>

<выражение> ::= <выражение> <знак аддитивной операции> <слагаемое> | <слагаемое>

<знак аддитивной операции> ::= + | -

<слагаемое> ::= <слагаемое> <знак мультипликативной операции> <множитель> | <множитель>

<знак мультипликативной операции> ::= / | *

<множитель> ::= <унарная операция> | <унарный операнд>

<унарная операция> ::= <унарный операнд>++ | <унарный операнд>--

<унарный операнд> ::= <конечный унарный операнд> <знак специальной унарной операции> |

<конечный унарный операнд>

<знак специальной унарной операции> ::= .len | .hei | .trans | .re | .im | .mod

<конечный унарный операнд> ::= <конечный унарный операнд><вызов метода класса> | <литерал> | (<выражение>) | <оператор new> | <левое выражение>

<элемент матрицы>::= <имя переменной>[<выражение>, <выражение>]

<вызов метода класса> ::= . <имя метода> ( <фактические параметры> )

<фактические параметры> ::= ε | <выражение> | <фактические параметры>, <выражение>

<оператор new> ::= new <имя класса> ( <фактические параметры> )

<условный оператор>::= if (<логическое выражение>) { <блок> } |

if (<логическое выражение>) { <блок> } else { <блок> }

<цикл с постусловием> ::= do { <блок> } while ( <логическое выражение> )

<логическое выражение> ::= <логическое выражение> || <конъюнкция> | <конъюнкция>

<конъюнкция>::= <конъюнкция> && <логический операнд> | <логический операнд>

<логический операнд>::=!<отношение>|<отношение>

<отношение>::= <выражение> <знак сравнения> <выражение>

<знак сравнения> ::= != | = =| > | >= | < | <=

<ненулевая цифра> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<цифра> ::= 0 | <ненулевая цифра>

<целое ненулевое число без знака> ::= <ненулевая цифра>| <целое ненулевое число без знака><цифра>

<целое ненулевое число>::= - <целое ненулевое число без знака>| + <целое ненулевое число без знака>

| <целое ненулевое число без знака>

<целое число> ::= 0 | <целое ненулевое число>

<нули> ::= 0 | <нули> 0

<вещественное число> ::= <целое число>. <целое число> | <целое число>. <целое ненулевое число без знака>

| <целое число>. <нули> <целое ненулевое число без знака>

<комплексное число> ::= ( <вещественное число> ; < вещественное число > )

| ( < вещественное число > ; ) | ( ; < вещественное число > )

<набор комплексных чисел> ::= <комплексное число> | <набор комплексных чисел> , <комплексное число>

<строка матрицы> ::= { <набор комплексных чисел> }

<набор строк> ::= < строка матрицы > | < набор строк> ; < строка матрицы >

<матрица> ::= { <набор строк> }

<символ> ::= 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

<идентификатор> ::= <символ> | <переменная> <символ> | <переменная> <цифра>

<литерал> ::= <целое число> | <вещественное число> | <комплексное число> | <матрица>

Соседние файлы в предмете Теория языков программирования