Приложения методов трансляции
Расписание консультаций
- 10.04.2020 09:45
Дистанционное обучение
- Лекционный материал будет публиковаться последовательно в виде презентаций. Следите за обновлениями данной страницы.
- В каждой лекции будет приведен список литературы, на которую можно ориентироваться при изучении материала.
- По готовности лабораторной работы присылать исходный код на электронную почту dimitrov@cs.petrsu.ru.
- Затем на электронную почту, с которой пришел исходный код, будет отправлен список вопросов и комментариев, на которой необходимо будет ответить.
- По любым возникающи вопросам обращаться по электронной почте: dimitrov@cs.petrsu.ru
В курсе "Формальные языки и методы трансляции" были изучены основные теоретические понятия, идеи, методы, модели, алгоритмы, применяемыме при разработке трансляторов. В данном курсе рассматриваются применение теоретических сведений на практике. В частности рассматривается следующее:
- контекстно-свободные грамматики;
- регулярные выражения;
- конечные автоматы;
- системы lex и yacc;
- обработка ошибок трансляции;
- управление типами данных, операциями, памятью.
Пример проекта (lex).
Пример проекта (lex, yacc).
Список задач
-
Используя систему Lex, cкопировать входной текст в стандартный поток, удалив все цифровые символы.
Срок: 26.02.2020 - Разработать транслятор (lex, yacc), который преобразует формат вывода команды cal в столбцовый вариант.
Срок: 12.03.2020
Пример входного потока:February 2017 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Выходной поток:February 2017 Mo 6 13 20 27 Tu 7 14 21 28 We 1 8 15 22 Th 2 9 16 23 Fr 3 10 17 24 Sa 4 11 18 25 Su 5 12 19 26
- Разработать транслятор (lex, yacc), который преобразует HTML таблицу в таблицу на языке LaTex. Поддерживать теги
table, td, tr, th и атрибуты colspan, rowspan. Добавить обработку ошибок: неподдерживаемый HTML тег, неправильная
вложенность HTML тегов, незакрытый HTML тег. Полученный tex файл должен компилироваться с помощью утилиты pdflatex.
Список возможных тестов доступен по ссылке.
Срок: 02.04.2020 -
Добавить в задачу с разбором таблиц поддержку CSS:
- Добавить поддержку тега span.
- Добавить поддержку атрибутов id, name, class, style.
- CSS может быть определен либо в тегах style.
- Для CSS поддерживать свойства: color, background-color.
- Для CSS поддерживать селекторы: класса, идентификатора.
Срок: 16.04.2020 - *
Имеется абстрактный лаконичный язык запросов (АЛЯЗ), который умеет сокращать текст
запроса за счет использования заранее собранной информации. Язык умеет
обрабатывать операции: выборки, проекции, фильтрации, объединения,
присоединения, сортировки, ограничений. Пример файла с информацией можно найти
по ссылкам: 1,
2.
Ключ :names - список сущностей доступный для выборки, ключ полное имя сущности - отображение путей с другими сущностями.
Необходимо разработать транслятор,
преобразующий запросы на языке АЛЯЗ в запросы на языке SQL.
Срок: 07.05.2020Примеры запросов:
- АЛЯЗ: building SQL: select * from building
- АЛЯЗ: building[name, description] SQL: select name, description from building
- АЛЯЗ: building#(name='test') SQL: select * from building where name='test'
- АЛЯЗ: building#(name=('test'||'foo') && desc='test') SQL: select * from building where name='test' or name = 'foo' and desc='test';
- АЛЯЗ: building#(name='test' && description="test description") SQL: select * from building where name='test' and description='test description'
- АЛЯЗ: floor#(number(>2 && <5 || >10)) SQL: select * from floor where (number > 2 and number < 5) or number > 10
- АЛЯЗ: building (room) SQL: select * from building as b join floor as f on b.id = f.building_id join room as r on f.id = r.floor_id
- АЛЯЗ: building#(name='test') (room#(number=215)) SQL: select * from building as b join floor as f on b.id = f.building_id join room as r on f.id = r.floor_id where b.name='test' and r.number='215';
- Индивидуальный проект транслятора. Срок: 21.05.2020
* Пятая задача не обязательна к выполнению. Может быть использована в качестве проекта.
К экзамену
- Чтобы получить допуск необходимо, сдать первые 4 задачи.
- На "удовлетворительно" достаточно первых 4 задач.
- На "хорошо" достаточно первых 4 задач и отчета по проекту.
- На "отлично": первые 4 задачи, отчет и реализация по проекту, собеседование.