Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ПЗ_ТЯП_2012.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
72 Кб
Скачать
☆

Практическое занятие 11. Построение ll(1)-грамматик и мп-автоматов для обработки языков, порождаемых этими грамматиками.

Цель: освоить навык построения LL(1)-грамматик и МП-автоматов для обработки языков, порождаемых этими грамматиками.

Задание 1.

Для следующей грамматики с начальным символом <S> определить является ли она LL(1)-грамматикой:

<S> → a <A> <B> b <C> <D> <S> → 

<A> → <A> <S> d <A> → 

<B> → <S> <A> c <B> → e <C>

<B> →  <C> → <S> f

<C> → <C> g <C> → 

<D> → a <B> <D> <D> → 

Рекомендуемая литература: [2], [3], конспект лекций.

Этапы выполнения.

  1. Найти множество СЛЕД для каждого нетерминала.

  2. Найти множество ВЫБОР для каждого правила.

  3. Сделать вывод, является ли эта грамматика LL(1)-грамматикой.

Тема. Формальные методы описания перевода.

СУ-схемы перевода. Транслирующие грамматики. Понятие атрибута. Синтезированные и унаследованные атрибуты. Атрибутные транслирующие грамматики и перевод.

Практическое занятие 12. Определение атрибутов и работа с атрибутными транслирующими грамматиками.

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

Задание 1.

Постройте транслирующую грамматику, допускающую в качестве входа произвольную цепочку, состоящую из нулей и единиц, и порождающую в качестве выхода:

  1. обращение входной цепочки,

  2. пустую цепочку,

  3. саму входную цепочку,

  4. цепочку 0n 1m , где n – число нулей, а m – число единиц во входной цепочке.

Рекомендуемая литература: [3], конспект лекций.

Этапы выполнения.

Для каждого варианта:

  1. Определить множество нетерминальных символов и символов действий.

  2. Определить начальный нетерминал.

  3. Записать правила транслирующей грамматики.

  4. Продемонстрировать требуемый перевод построением соответствующей последовательности актов.

Задание 2.

Постройте транслирующую грамматику для следующих переводов:

  1. {1n 0m} в {1n 22n}, где n>0, m>0;

  2. {1n 0m 1m 0n} в {1m 0n+m}, где m>0, n>0.

Рекомендуемая литература: [3], конспект лекций.

Этапы выполнения.

Для каждого перевода:

  1. Определить множество входных и выходных символов.

  2. Определить множество нетерминальных символов и символов действий.

  3. Определить начальный нетерминал.

  4. Записать правила транслирующей грамматики.

  5. Продемонстрировать требуемый перевод построением соответствующей последовательности актов.

Задание 3.

Для следующей атрибутной транслирующей грамматики:

<S>i,s НАСЛЕДУЕМЫЙ i СИНТЕЗИРУЕМЫЙ s

Начальное значение i=3.

Атрибуты символов действия – НАСЛЕДУЕМЫЕ.

<S>i,s → ax {fy } {gz }

y x+ i

z y+ x

s z

<S>i,s → bx {fy } {gz }

y z

z s

s y

<S>i,s → cx {fy } {gz }

y z + 1

z s + 1

s y +1

<S>i,s → dx <S>j,t {fy }

y i+ t

j i

s t

<S>i,s → ex {hy } <S>j,t

y x

j t

s t

построить атрибутное дерево вывода и последовательность актов (если они существуют) для каждой из следующих входных цепочек:

а).a6 б). a1 a2 в). d3 a2

г). b4 д). c9 е). d1 d1 d3 d4 a5

ж). e2 d1 d2 d3 d4 a5

Рекомендуемая литература: [3], конспект лекций.

Этапы выполнения.

  1. Записать по заданной атрибутной транслирующей грамматике соответствующую ей транслирующую грамматику.

Для каждой входной цепочки:

  1. Построить дерево вывода в соответствии с полученной транслирующей грамматикой.

  2. Подписать к каждой вершине дерева соответствующие атрибуты.

  3. Присвоить синтезируемым атрибутам листьев начальное значение.

  4. Передать снизу в верх значения синтезируемых атрибутов всем внутренним вершинам дерева, которые ими обладают, в соответствии с правилами для вычисления этих атрибутов, указанными в исходной грамматике.

  5. Передать с верху вниз значения синтезируемых атрибутов всем вершинам дерева, которые ими обладают, в соответствии с правилами для вычисления этих атрибутов, указанными в исходной грамматике.

  6. Определить последовательность актов.