Compiler Development Final assignment 1.0 Help

About Final assignment

Задание

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

  • Присваивание (оператор или операция), арифметические и логические операции.

  • Ветвление, включая вариант факультативного else.

  • Цикл while.

  • Поддержка целочисленного и логического типа данных.

  • Многострочные комментарии в стиле Си-подобных языков.

/************************************ **** строки комментариев ************ *************************************/

Это минимальные требования (на 4С). Что добавит баллы:

  • Вместо ветвление if [then] else конструируется оператор if elif [elif]+ else

  • Вместо цикла while (или в дополнение к нему) конструируется цикл for.

  • Реализуется вывод значений.

  • Одно дополнение позволяет получить 4В, любые два 5А.

Содержание работы

  1. Разработка описания языка в терминах КС грамматики. Определение лексического состава языка.

  2. Подготовить файлы *.l для Flex в соответствии с лексическим составом языка, выполнить синтаксическое описание языка в нотации Bison (файл *.y). Учесть приоритеты и ассоциативность бинарных операций.

  3. Разработать функции, реализующие построение и вывод АСТ (AST Abstract syntax tree). Вывод АСТ осуществить в файл.

  4. Получение промежуточного представления программы и генерация кода для него. (ссылка на README в репозитории эмулятора https://github.com/asurkis/risc-emulator

  5. Оформление отчета с описанием выполненных действий, демонстрация работы компилятора для корректных и ошибочных программ.

Last modified: 06 June 2024