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

Переменная

<переменная>::= id | <элемент_матрицы> | <элемент_массива>

<элемент_матрицы>::= id [ <ар_выражение>, <ар_выражение> ]

<элемент_массива>::= id <индекс_массива>

<индекс_массива>::= [ <ар_выражение> ] | <индекс_массива> [ <ар_выражение> ]

Индексы матриц и массивов должны быть значения только целого типа.

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

<оператор_присваивания>::= <операция_присвоения> ;

<операция_присвоения>::= <переменная> = <ар_выражение>

В результате выполнения операции присваивания может осуществляться неявное преобразование типа intк типуfloat, но не наоборот.

Объявления переменных, констант и типов

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

<объявление_матриц>

<объявление_переменных_и_массивов>::= <тип> <список_индетификаторов> ; |

<тип> <список_массивов> ;

<список_индентификаторов>::= <список_идентификаторов> , id | id

<список_массивов>::= <список_массивов> , <элемент_массива>

<тип>::= int | float

<объявление_констант>::= const int <список_констант_цел> ;

<объявление_констант>::= const float <список_констант_вещ> ;

<список_констант_цел>::= <список_констант_цел> , id = num | id = num

<список_констант_вещ>::= <список_констант_вещ> , id = fnum | id = fnum

<объявление_матриц>::= fmatr <список_матриц>

<список_матриц>::= <список_матриц> , <элемент_матрицы> | <элемент_матрицы>

Типом в объявлении переменных служит либо int,float. Константы могут быть только целого или вещественного типа. Объявляемые массивы могут быть многомерными. Максимальная размерность массива 10. В объявлении матрицы первое выражение задает количество строк,

второе - количество столбцов (минимальный размер матрицы [1, 1]). Индекс матрицы/массива должен лежать в диапазоне от 1 до 255.

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

Типы языка

Тип

Размерность

Диапазон значений

int

16

[-32768, 32767]

float

32

(3.4 * (10**-38), 3.4 * (10**+38)

fmatr– матрица вещественных чисел.

Приоритеты операций:

Ранг

Операции

Ассоциативность

Пояснение

1

() []

Бинарные операции

2

* /

Мультипликативные бинарные операции

3

+ -

Аддитивные бинарные операции

4

< <= >= >

Операции отношения

5

== !=

Операции отношения

6

=

Операция присваивания

Лексический анализ

Классы входных литер

Вход лексического анализатора: последовательность литер.

Литеры разбиваются на классы:

Класс

Обозначение

Литеры

0

Un

неопознанный символ

1

Ch

Заглавные и строчные буквы лат. алфавита, кроме eиEи символа подчеркивания

2

E

символ Eиe

3

D

Цифра: 0..9

4

R

Разделители: символы с кодами: 9 – табуляция, символы перевода каретки (10, 13), 32 – пробел, EOF- маркер конца файла

5

rs1

‘(’, ‘[’, ‘{’, ‘*’, ‘/’, ‘;’, ‘,’ ‘:’

6

rs2

‘)’, ‘]’, ‘}’

7

rs3

‘>’, ‘<’, ‘!’

8

Eq

‘=’

9

P

‘+’

10

M

‘–‘

11

Pnt

‘.’

Выход лексического анализатора: последовательность лексем.

Разбивка на лексемы и проверка их на корректность осуществляется конечным преобразователем.

Соседние файлы в папке kurs