Vikort / compilers

Home Page:https://danilyanich.github.io/compilers/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ЯПИС

Успеваемость

Группа Таблица
821701 1t8kRUQatlshEuxhlcuhZAjuuOgNpzeISJ_bPKj_TReA
821702 1afe_WAlHAOvvN7jmXVpCf5MojG1CGLK4-PN7y4FbN0s
821703 13AqvZYdqu70mtUCshHq8i-OqoPsfc7FFjLaD1nBX2xc
821704 17jW-mHsWfB79iuo4DJeN4g19SMBiLb_AMiRTWwD74Y8

Контрольные точки

<iframe src="https://calendar.google.com/calendar/embed?height=700&wkst=2&bgcolor=%23ffffff&ctz=Europe%2FMinsk&src=NzYxN3JhaWFiZ2RwbTBkc29oNjJxYzBxdm9AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ&color=%23D81B60&showTitle=0&showTz=0&showCalendars=0&showTabs=0&showPrint=0&showDate=0&showNav=0&hl=ru&mode=AGENDA" style="border-width:0" width="100%" height="700" frameborder="0" scrolling="no"></iframe>

Лабораторные работы

Условия: 11gVMTmYfsWA3t7hHfLAeAperfacvMM5i

Условия работы в семестре:

  • Работы выполняются строго по порядку
  • Работа оценивается от 0 до 10
  • Итоговая оценка это среднее арифметическое промежуточных оценок
  • Итоговая оценка может быть округлена вниз или вверх
  • При пропуске каждого дедлайна отнимается 1 балл
  • Для допуска к экзамену итоговая оценка должна быть не менее 4

Процесс сдачи:

  1. Выполнить условие работы
  2. Удостовериться что выполнены все пункты условия
  3. Сделать pull-request в репозиторий
  4. Показать результат работы лично на паре
  5. Удостовериться что pull-request был принят

Что оценивается:

  • Непосредственное качество работы
  • Культура ведения git-репозитория

Важно: Рull-request необходимо делать в ветку со своим именем.

Требования к каждой части лабы

Будет пополнятся в процессе

Лабораторная работа 1 - разработка компилятора:

  • 1.1 Примеры исходного кода
    • Определится с предметной областью языка, языком написания компилятора, целевым кодом
    • Написать 3 примера реализации аглоритмов на придуманном языке. Алгоритмы берём из выбранной предметной области.
  • 1.2 Полный синтаксис и грамматика
    • Полностью доработать синтаксис и грамматику языка
    • Написать файл грамматики языка
  • 1.3 Лексический и синтаксический анализатор
    • На основе написанной грамматики сгенерировать анализаторы
    • Тестирование на написанных ранее примерах
  • 1.4 Семантический анализатор
    • Реализовать построение абстрактного синтаксического дерева
    • Реализовать таблицы символов и проверку на использование идентификаторов
    • Тестирование генерации и валидации дерева на написанных ранее примерах
  • 1.5 Обработка семантических ошибок
    • Реализовать проверки совместимости типов
    • Другие проверки в зависимости от предметной области
    • Тестирование валидации дерева на написанных ранее примерах
  • 1.6 Генерация целевого кода
    • Транслировать компилируемый код в целевой код
    • Сгенерировать исполняемый файл

Лабораторная работа 2 - документация по разработанному языку:

  • Описание синтаксиса языка
    • Ключевые слова
    • Объявление переменных
    • Выражения
    • Утверждения
    • Условные переходы
    • Циклы
  • Описания базовых возможностей языка
    • Стандартные функции
    • Специфические выражения или утверждения
    • Примеры кода
  • Описания принципов работы языка
    • Процесс компиляции
    • Особенности скомпилированного кода

Практические задачи

Условия: 1oPJMqrZIVkvh4sPHNqJ1VasMcTiFYlph

Условия работы в семестре:

  • Всего даётся 3 попытки
  • Попытки начинают считаться за неделю до дедлайна
  • При пропуске каждого дедлайна отнимается 1 попытка
  • Решение несданных задач выносится на экзамен

Процесс сдачи:

  1. Выполнить условие задачи
  2. Оформить отчёт в гугл-док
  3. Удостовериться что выполнены и описаны все пункты условия
  4. Показать отчёт лично на паре
  5. Удостовериться что ссылка на гугл-док добавлена в общую таблицу

Важно: Для отчета титульный лист делать не нужно, хватит простого заголовка в одну сточку с вашей группой, ФИО и вариантом.

About

https://danilyanich.github.io/compilers/


Languages

Language:Shell 100.0%