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

1.4.2. Выражения.

Арифметические выражения.

<арифметическое_выражение>::=[<знак>]<терм>|<арифметическое_

выражение><знак><терм>

<терм>::=<множитель>|<терм><*_или_/><множитель>

<*_или_/>::='*'|'/'

<множитель>::='('<арифметическое_выражение> )'|<константа>|<оператор_длина_вектора>|<переменная>

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

<оператор_длина_вектора>::='length('<арифметическое_выражение>')'

<оператор_элемента_вектора>::=<идентификатор>'['

<константа_без_знака>']'

Логические выражения.

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

<конъюнкция>

<конъюнкция>::=<конъюнкция>'&&'<выражение>|<выражение>

<выражение>::='!'<выражение>|'('<условное_выражение>')'|<выражение>

<логическая_операция><условное_выражение>|<условное_выражение>

<логическая_операция>::='>'|'<'|'=='|'!='|'>='|'<='

1.4.3. Описания.

Любое описание сопоставляет с описываемым понятием некоторый идентификатор - имя переменной.

1.5. Операторы.

1.5.1. Пустой оператор.

Синтаксис :

<пустой_оператор> ::= ;

Пустой оператор не производит никаких действий, однако он необходим в некоторых языковых конструкциях (например, для реализации бесконечного цикла).

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

Синтаксис :

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

<оператор_присваивания>::=<переменная>{'='<переменная>}

'='<арифметическое_выражение>';'

Порядок выполнения оператора присваивания :

Вычисляется значение выражения в правой части, затем, справа налево, оно присваивается переменным в левой части, если тип значения и переменной совпадают. В противном случае присваивание не выполняется и пользователю выдается сообщение об ошибке.

1.5.3. Оператор перехода.

Синтаксис :

<оператор_безусловного_перехода>::='goto' <метка>';'

Оператор осуществляет безусловный переход к оператору, помеченому меткой. При отсутствии такового выдается сообщение об ошибке. Метка должна быть уникальной в пределах программы.

1.5.4. Оператор вывода.

Синтаксис :

<оператор_вывода>::='printf('<сообщение>| {','<сообщение>} ');'

<сообщение>::={<строка>|<арифметическое_выражение>}

<строка>::=' " '{<символ>}' " '

<символ>::=<любой_символ>

Оператор осуществляет вывод в стандартный поток вывода, связаный обычно с экраном дисплея, значения переменной <переменная>.

1.5.5. Оператор ввода.

Синтаксис :

<оператор_ввода>::='scanf(' <идентификатор> {','<идентификатор>} ');'

Оператор ввода осуществляет чтение из стандартного потока ввода (клавиатуры) значения.

1.5.6. Составной оператор.

Синтаксис :

<составной_оператор> ::= '{' {<оператор>} '}'

Операторы, входящие в состав составного оператора, выполняются в порядке их написания.

1.5.7. Условный оператор.

Синтаксис :

<условный_оператор>::='if('<условное_выражение>')'<оператор>

['else'<оператор>]

Вначале вычисляется <условное_выражение>. Если оно истинно, то выполняется первый <оператор> иначе второй оператор, если он присутствует.

1.5.8. Оператор цикла for.

Синтаксис :

<оператор_цикла>::='for(' [<оператор_присваивания> {','<оператор_присваивания>} ] ';' [<условное_выражение> {',<условное_выражение>' } ] ';' [<оператор_присваивания> {','<оператор_присваивания>} ] ')' <оператор>';'

Выполняется оператор <оператор>, пока истинны все условные выражения.

1.6. Программа.

Синтаксис :

<программа>::=[<глобальное_описание>] 'void main(){'[<локальное_описание>] <оператор> '}'

Полный синтаксис языка в модифицированной форме Бэкуса-Наура приведен в приложении 1.

Пример программы на входном языке приведен ниже.

/*глобальные описания*/

int i=10+15/2, j;

float f, f1=12+14.5e-2;

vector V[10], Vec[5]={1, 2, 3};

void main()

{

/*локальные описания*/

int key,flag=0;

float r;

label:

scanf(key,V[0]);

for (j=0;j<i;j=j+1) ;

if ( (!(j>=7)) && ((i==8)||(!j)) )

{

printf("i=",15*i);

flag=1;/* изменение флага*/

}

if (a===0) goto label;

if (flag) printf("Ok");

}

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