Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы_2 / Спецификации / Лабораторная работа 3

.doc
Скачиваний:
19
Добавлен:
28.06.2014
Размер:
50.18 Кб
Скачать

Лабораторная работа № 3.

«Синтаксический анализатор»

Вариант 10.

Захаров Антон

группа А–13–08

  1. Условие задачи.

Провести синтаксический контроль конструкции <блок>.

  1. Входные данные.

Состав: лит ch – входной символ.

Входная форма:

fin

<ch><ch>…<ch>


конец файла

  1. Выходные данные.

Выходная форма:

output


  1. Метод.

<блок> ::= begin <последовательность операторов присваивания> end

<последовательность операторов присваивания> ::= <оператор присваивания>|

<последовательность операторов присваивания>;<оператор присваивания>

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

<простая переменная> ::= <имя переменной>

<имя переменной> ::= <имя>

<вещественное число> ::= <число>.<число>|-<число>.<число>

<число> ::= <цифра>|<число><цифра>

<имя> ::= <буква>|<имя><буква>|<имя><цифра>

<буква>::=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

  1. Аномалии.

  1. Последовательность операторов присваивания отделяются одним пробелом от операторных скобок begin и end;

  2. Операторы присваивания внутри последовательности операторов отделяются друг от друга с помощью « ; »

  1. Функциональные тесты.

Исходные данные

Ожидаемые результаты

1

begin a:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибок нет

2

begina:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибка в последовательности операторов (отсутствие пробела после «begin»)

3

a:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибка в последовательности операторов (отсутствие слова «begin»)

4

begin 1a:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибка в имени переменной

(имя начинается не с буквы)

5

begin a*b:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибка в имени переменной

(имя состоит не только из букв и цифр)

6

begin a=2.01;b2:=-0.02;Summa:=2.03 end;

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

begin a:=2.01;b2:0.02;Summa:=2.03 end;

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

7

begin a:=2.;b2:=-0.02;Summa:=2.03 end;

Ошибка в вещественном числе

(отсутствие цифр после «точки»)

8

begin a:=a.23;b2:=-0.02;Summa:=2.03 end;

Ошибка в вещественном числе

(вещ. число состоит не только из цифр)

9

begin a:=2.01;b2:=-2;Summa:=2.03 end;

Ошибка в вещественном числе

(отсутствие «точки» в вещ. числе)

10

begin a:=-.01;b2:=-2.23;Summa:=2.03 end;

Ошибка в вещественном числе

(«точка» стоит сразу после знака «минус»)

11

begin a:=2.01;b2:=-0.02;Summa:=2.03 end;

Ошибка в последовательности операторов (отсутствие «;» разделяющей операторы)

12

begin a:=2.01;b2:=-0.02;Summa:=2.03 ;

Ошибка в последовательности операторов (отсутствие слова «end»)

13

begin a:=2.01;b2:=-0.02;Summa:=2.03 end

Ошибка в последовательности операторов (отсутствие «;» после слова «end»)