Опубликован: 06.08.2007 | Доступ: свободный | Студентов: 1165 / 403 | Оценка: 4.45 / 4.29 | Длительность: 18:50:00
Специальности: Программист
Дополнительный материал 3:

Задачи по разделам курса

< Дополнительный материал 2 || Дополнительный материал 3: 12345678

Элементы теории перевода

Атрибутные грамматики

5.3.1. Дополнить грамматику S \to  0S11;\ S \to  1S00;\ S \to  \varepsilon до атрибутной так, чтобы вычислялась максимальная длина непрерывной последовательности единиц в порожденном слове.

5.3.2. Дополнить грамматику S \to  AA;\ A \to  0A;\ A \to  1A;\ A \to  \varepsilon до атрибутной так, чтобы вычислялась максимальная длина непрерывной последовательности из 1 в порожденном слове.

5.3.3. Дополнить грамматику S \to  AA;\ A \to  A0;\ A \to  A1;\ A \to  \varepsilon до атрибутной так, чтобы вычислялось число сочетаний 01 в порожденном слове.

5.3.4. В грамматике [целое] \to  dC; \ C \to  dC|\varepsilon терминал d имеет атрибут 0 или 1. Определить атрибуты так, чтобы нетерминал [целое] имел атрибут, равный восьмеричному значению выводимого числа.

5.3.5. Построить атрибутные грамматики для следующих переводов:

а) \{ (x, x)|x \in  \{ a, b\} ^{*}\} ; 	 \ \ \ 	б) \{ (x, x^{R})|x \in  \{ a, b\} ^{*}\} ;
\\
в) \{ (x, xx)|x \in  \{ a, b\} ^{*}\} ; 	 \ \ \ 	г) \{ (a^{n}b^{n}; a^{n}b^{n}c^{n})|n \ge  1\} .

5.3.6. Привести пример атрибутной грамматики с некорректно заданными семантическими правилами

5.3.7. Привести пример атрибутной грамматики, вычисление атрибутов для которой нельзя выполнить параллельно с LL(1) -анализом.

5.3.8. Привести пример атрибутной грамматики, вычисление атрибутов для которой нельзя выполнить параллельно с LR(1) -анализом.

Генерация кода

Трансляция арифметических выражений

9.1.1. Для следующих арифметических выражений с помощью алгоритма Сети-Ульмана сгенерировать программу и изобразить атрибутированное дерево:

а) A*B + C*(D + E)*F; 		б) A*(B + C)*(D + E)*F;
в) A + B + C*D + E*F; 		г) A + B*C*D*E + F;
д) A + B*(C*D + E*F).

Трансляция логических выражений

9.2.1. Для следующих логических выражений сгенерировать код на командах перехода и изобразить атрибутированное дерево

а) A and not (B or C) or (D and E);
б) A and B and C or not (D or E);
в) A and (B or not (C and D) and E);
г) not (A and B or C or D) and E;
д) A and B or C or D and not E.

Генерация оптимального кода методами синтаксического анализа

9.3.1. Для следующих операторов присваивания сгенерировать оптимальный код методом сопоставления образцов:

а) a = b[i] + j; 		б) a = b[i+5]; 			в) a = b[i] + c[2];
г) a = b[i+2+j]; 		д) a = b[2+c[1]]; 		е) a = b[i+j];
ж) a = b[i+2] + 3; 		з) a =j+ b[i+3]; 		и) a = b[i+j+1];
к) a = b[i+j] + 1.
< Дополнительный материал 2 || Дополнительный материал 3: 12345678
Дмитрий Романов
Дмитрий Романов
Россия, г. Санкт-Петербург