Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 15.02.docx
Скачиваний:
2
Добавлен:
07.05.2019
Размер:
240.61 Кб
Скачать

Задачи и упражнения

Модифицируйте программу «SimpleTranslator» (см. пример), чтобы выполнялись следующие функции:

  1. Добавьте в транслятор возможность разбора многострочных арифметических выражений.

  2. Расширьте систему диагностики ошибок. Сообщение об ошибке должно включать: номер строки, где ошибка была диагностирована и её описание.

  3. Предусмотрите какой-либо протокол восстановления после ошибок.

Порядок выполнения задания

  1. В соответствие с заданием разработайте грамматику, пригодную для LL(1) анализатора.

  2. Постройте таблицу разбора.

  3. Реализуйте транслятор.

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

Таблица 10. Задания по вариантам.

Задания по вариантам

Предусмотрите операцию возведения в заданную степень.

Предусмотрите битовые операции AND| OR | NOT над целыми числами.

Предусмотрите вычисление тригонометрических функций sin(x), cos(x), tan(x).

Предусмотрите в трансляторе условный оператор вида: <условие> ? <выражение> : <выражение>.

Предусмотрите в трансляторе условный оператор вида if <условие> then <выражение> else <выражение>.

Предусмотрите в трансляторе оператор безусловного перехода к метке.

Создайте транслятор символьного дифференцирования (Карпов, 2005), стр. 129

Создайте транслятор вычисления логических функций.

Предусмотрите в трансляторе оператор цикла вида while <условие> do <выражение>.

Предусмотрите в трансляторе оператор цикла вида for <id>:=<выражение> to <выражение> do <выражение>

Предусмотрите в трансляторе оператор цикла вида repeat <выражение> until <условие>

Предусмотрите операцию получения корня любой степени.

Предусмотрите в трансляторе операторы ввода/вывода вида ReadLine(<id>) и WriteLine(<выражение>) соответственно.

Контрольные вопросы

  1. Какая грамматика называется леворекурсивной?

  2. Для чего требуется устранение левой рекурсии?

  3. Какие методы разбора вам известны?