
Лабораторные работы_2 / Спецификации / Лабораторная работа 3
.docЛабораторная работа № 3.
«Синтаксический анализатор»
Вариант 10.
Захаров Антон
группа А–13–08
-
Условие задачи.
Провести синтаксический контроль конструкции <блок>.
-
Входные данные.
Состав: лит ch – входной символ.
Входная форма:
fin
<ch><ch>…<ch> |
конец файла
-
Выходные данные.
Выходная форма:
output
|
-
Метод.
<блок> ::= 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
-
Аномалии.
-
Последовательность операторов присваивания отделяются одним пробелом от операторных скобок begin и end;
-
Операторы присваивания внутри последовательности операторов отделяются друг от друга с помощью « ; »
-
Функциональные тесты.
№ |
Исходные данные |
Ожидаемые результаты |
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») |