Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вар_1_Ответы_2011.doc
Скачиваний:
1
Добавлен:
12.09.2019
Размер:
146.94 Кб
Скачать

Решение

Критерий применимости метода рекурсивного спуска.

Пусть — КС-грамматика. Метод рекурсивного спуска применим к G, если и только если для любой пары альтернатив →  |  выполняются следующие условия:

  1. first()  first ()   ;

  2. справедливо не более чем одно из двух соотношений:   ,    ;

  3. если   , то first()  follow)  .

Для данной грамматики first(AC)  firstbB ) {b} . То есть, для пары правил  AC и S  bB не выполняется пункт (1) критерия. Других пар, нарушающих критерий, нет.

КРИТЕРИИ:

Есть ошибки в формулировке критерия: -5

Есть ошибки в обосновании: -5

­ 5. Дан автомат A в виде ДС с действиями. С помощью действий он допускает цепочки языка L1 и переводит их в цепочки языка L2. Определить языки L1 и L2. Построить КС-грамматику, анализируемую методом рекурсивного спуска, с действиями только вида cout<<’символ’, задающую тот же перевод цепочек L1 в цепочки L2.

A:

Решение

Автомат A с действиями допускает цепочки вида abx1abx2axn-1adbn, где n≥1, xi{b}* для i = 1,…, n-1, и каждую такую цепочку переводит соответственно в цепочку an-1bсn. Грамматика с действиями такова ( запись вида a означает cout<<’a ):

SaAbc

AbBaaAbc |db ( или AbaBaAbc |db )

BbB | 

Возможен и такой вариант ответа:

SaAbc

AbBaAbc |db

BbB |  a

КРИТЕРИИ: -- есть ошибки в описаниях языков L1 , L2 : -3

-- грамматика для L1 ошибочна: -4

-- метод рекурсивного спуска неприменим: -2

-- есть действие не вида cout<<’символ’ : -10

-- конечное число цепочек переводятся неправильно: -3

-- бесконечно много цепочек переводятся неправильно: -6

6. Привести три примера контекстных условий, выполнение которых контролируется в современных языках программирования.

Ответ: (какие-нибудь три подходящих примера:)

  1. Имя, используемое в программе, должно быть описано.

  2. Не допускаются два описания одного и того же имени в одной области видимости.

  3. В операторе присваивания типы переменной и выражения должны быть совместимыми (совпадать).

  4. В условном операторе и в операторе цикла в качестве условия возможно только

логическое выражение (Паскаль, Оберон, Ада).

  1. Операнды операции отношения должны быть определенного типа (например, одного из перечислимых типов в Паскале).

  2. Количество фактических параметров в вызове подпрограммы должно соответствовать количеству формальных параметров в описании подпрограммы, а типы фактических параметров должны быть совместимы по присваиванию с типами соответствующих формальных параметров.

Возможны другие условия.

КРИТЕРИИ: за каждый пропущенный (или ошибочный) пункт: -4.

7 . На клетчатой поверхности размера 3x3 в левой нижней клетке расположен робот-шар. Он умеет выполнять команды перехода в соседнюю клетку: ’a’ – переместиться на одну клетку вправо, ’b’ – влево, ’c’ – вверх, ’d’ – вниз. С помощью последовательности команд можно задавать траекторию движения шара. Например, последовательность aaccbbdaba перемещает шар в центральную клетку. Последовательность команд является цепочкой в алфавите {a,b,c,d}. Если цепочка пуста, шар остается на месте. Опишите регулярную грамматику с терминальным алфавитом {a,b,c,d}, задающую все возможные траектории шара, удовлетворяющие условиям: шар начинает движение из левой нижней клетки, может двигаться только вокруг центральной клетки против часовой стрелки, не покидая поверхности; остановиться может только в левой нижней клетке.

В грамматике должно быть не более 9 правил, считая альтернативы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]