Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МТ_ВАРИАНТЫ_2011.doc
Скачиваний:
2
Добавлен:
03.11.2018
Размер:
257.54 Кб
Скачать

II.2. Описания

Первый вариант описания по стилю близок к языку программирования Паскаль, второй напоминает описания Си, а третий ‑ Бейсик.

Варианты:

II.2.1.

$ описание = идентификатор { "," идентификатор } ":" [ vector "[" целое "]" of ] тип.

$ тип = integer | real.

II.2.2.

$ описание = тип идентификатор [ "[" целое "]" ] { "," идентификатор [ "[" целое "]" ] }.

$ тип = integer | real.

II.2.3.

$ описание = dim идентификатор "(" целое ")" { "," идентификатор "(" целое ")" }.

II.3. Синтаксис операторов

Два варианта набора операторов. Различия наблюдаются при описании их синтаксиса. Одинаковым для всех является синтаксис таких операторов, как пустой и перехода. Следует также отметить, что пустой оператор ‑ это отсутствие каких бы то ни было конструкций, а не точка, которая в данном случае является компонентой метаязыка, завершающей правило. Кроме операторов здесь же приведен еще ряд конструкций языка, являющихся общими для всех вариантов.

Варианты:

II.3.1.

$ оператор = [метка] непомеченный.

$ непомеченный = составной | присваивания | перехода

условный | цикла | пустой | ввода | вывода.

$ пустой = .

$ перехода = goto имя_метки.

$ ввода = read переменная { "," переменная }.

$ вывода = write ( выражение | спецификатор )

{ "," ( выражение | спецификатор ) }.

$ переменная = идентификатор [ "[" индекс "]" ].

$ индекс = идентификатор | целое.

$ спецификатор = skip | space | tab.

II.3.2.

$ оператор = метка непомеченный.

$ непомеченный = присваивания | перехода

условный | цикла | пустой | ввода | вывода.

$ пустой = .

$ перехода = goto имя_метки.

$ ввода = input переменная { "," переменная }.

$ вывода = print ( выражение | спецификатор )

{ "," ( выражение | спецификатор ) }.

$ переменная = идентификатор [ "(" индекс ")" ].

$ индекс = идентификатор | целое.

$ спецификатор = skip | space | tab.

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

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

Варианты:

II.4.1. Инфиксная форма.

$ присваивание = переменная ASG выражение.

$ выражение = слагаемое { (EQ | NE | LT | GT | LE | GE) слагаемое }.

$ слагаемое = множитель { (ADD | MIN) множитель }.

$ множитель = унарное { (MUL | DIV | MOD) унарное }.

$ унарное = [ MIN ] терм.

$ терм = переменная | число | "(" выражение")".

$ число = целое | действительное.

II.4.2. Префиксная форма

$ присваивание = ASG переменная "," выражение.

$ выражение = простое_выражение | операнд.

$ простое_выражение = операция выражение выражение | "( " MIN выражение ")".

$ операнд = переменная | целое | действительное.

$ операция = MUL | DIV | MOD | ADD |MIN | EQ | NE | LT | GT | LE | GE.

II.4.3. Постфиксная форма

$ присваивание = выражение переменная ASG .

$ выражение = простое_выражение | операнд.

$ простое_выражение = "(" выражение выражение операция ")" | "(" выражение MIN ")".

$ операнд = переменная | целое | действительное.

$ операция = MUL | DIV | MOD | ADD | MIN | EQ | NE | LT | GT | LE | GE.