A2_2010 (1119653), страница 2
Текст из файла (страница 2)
Текст
Лексема
Синтаксическая конструкция
Возврат управления
Лексический анализатор
Семантический анализатор, распределитель памяти, генератор команд
Объектный модуль
Лексический и синтаксический анализаторы взаимодействуют как сопрограммы: ЛА формирует лексемы по исходной программе по запросам СА. Работа ведется под управлением СА.
КРИТЕРИИ: (a) За отсутствие схемы или ошибки в ней: -5.
(б) За отсутствие описания способа взаимодействия: -3.
(в) Нет ответа или ошибка: -3.
8. Описать основные подходы, использующие поведенческие и структурные тесты программ. В чем их основные различия?
Ответ: Поведенческое тестирование основано на технических требованиях, спецификациях. Структурное тестирование проверяет правильность исполнения каждого структурного фрагмента программы (ветви условного оператора, использование каждого элемента данных и т. д.). Для проведения поведенческого тестирования не обязательно знать внутреннюю структуру исследуемой программы, структурные тесты требуют полного доступа к структуре программы.
КРИТЕРИИ: За отсутствие описания какого-либо из двух видов: -5 (за каждый пропуск).
За пропуск объяснения различия подходов: -5.
9. Дать определения бесплодных и недостижимых символов алфавита контекстно-свободной грамматики. Преобразовать контекстно-свободную грамматику G к приведённому виду, выписывая результаты применения каждого шага используемого алгоритма.
G: S Ab | Ba
A Ca
B Bb | Da
C Aa | Bb | a | b
D Db | Ba
Ответ: Символ A из алфавита контекстно-свободной грамматики называется бесплодным, если множество цепочек терминальных символов им порождаемых пусто ({ | A , T*} = ). Символ из алфавита контекстно-свободной грамматики называется недостижимым, если он не появляется ни в одной сентенциальной форме этой грамматики.
1. Удаление бесплодных символов. Строится множество N, из элементов которого за некоторое число шагов выводятся терминальные символы:
-
N0 =
-
N1 = {C}, N1 N0
-
N2 = {A, C}, N2 N1
-
N3 = {A, C, S}, N3 N2
-
N4 = {A, C, S}, N4 = N3
Cимволы B и D являются бесплодными в грамматике G, их и правила их содержащие можно удалить из грамматики:
G1: S Ab A Ca C Aa | a | b
2. Удаление недостижимых символов. Строится множество V, в которое помещаются символы, за некоторое число шагов выводимые из символа S:
-
V0 = {A}
-
V1 = {A, C}, V1 V0
-
V2 = {A, С}, V2 = V1
Недостижимых символов в грамматике G не обнаружено.
Gприв: S Ab A Ca C Aa | a | b
КРИТЕРИИ: За отсутствие каждого определения или ошибки в нем: -3.
За ошибку при преобразовании: -7.
10. По приведенной обратной польской записи фрагмента программы, написанной на языке Си++, восстановите этот фрагмент двумя способами: сначала, пользуясь операторами условного и безусловного перехода на метку, а затем (если это возможно), пользуясь только операторами структурного программирования без переходов. Операция ПОЛИЗ '@' соответствует унарной операции изменения знака.
ПОЛИЗ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |||||||||||||||||||||||
&a | x | @ | 11 | * | y | x | @ | / | — | += | ; | &x | #+ | 5 | &y | +# | ||||||||||||||||||||||||
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | |||||||||||||||||||||
— | x | + | 1 | — | <= | 28 | !F | 1 | ! | &y | &x | y | 8 | + | = | 7 | + | = | ; |
|
Ответ: M: a += – x * 11 – y / (– x);
if (! (x ++ <= 5 – ++ y + x – 1)) goto L;
goto M;
L: y = (x = y + 8) + 7;
do a += – x * 11 – y / (– x); while (x ++ <= 5 – ++ y + x – 1); y = (x = y + 8) + 7;
КРИТЕРИИ: за неверный ответ на первый вопрос: -7.
за неверный ответ на второй вопрос, если первый вариант верен: -3, иначе: -10