Giter Site home page Giter Site logo

minc-translator's Introduction

Методы трансляции. Построение компилятора (транслятора)

###Cуть - был построен синтаксический анализатор языка MINC

Задание

Разработать транслятор с заданного по варианту языка программирования на язык Python. Сгенерированный код должен выполняться без ошибок интерпретатором Python версии 3.8 или выше.

Транслятор должен находить все виды лексических и синтаксических ошибок в исходном коде, а также некоторые виды семантических ошибок, таких как несоответствие типов (для статически типизированных языков), использование необъявленных переменных, некорректное использование зарезервированного ключевого слова, повторное объявление переменной и др.

Язык программирования, на котором ведется разработка транслятора, выбирается студентами самостоятельно и согласовывается с преподавателем. Рекомендуется использовать утилиты Flex, Bison или их аналоги для автоматической генерации кода лексического и синтаксического анализаторов.

По согласованию с преподавателем задание может быть упрощено с соответствующим снижением оценки.

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

  1. Выбор задания (входной и выходной языки), языка и среды разработки, формирование групп
  2. Описание грамматики входного языка
  3. Подготовка тестов
  4. Разработка лексического анализатора
  5. Разработка синтаксического анализатора (парсинг, построение дерева разбора)
  6. Разработка семантического анализатора
  7. Генерация кода, отладка
  8. Подготовка документации и защита проекта

Сроки выполнения этапов приведены в журнале учета успеваемости, доступном по ссылке в личном кабинете студента.

Входные языки (варианты заданий)

  1. Tiny BASIC: https://en.wikipedia.org/wiki/Tiny_BASIC#Formal_grammar
  2. COOL: http://theory.stanford.edu/~aiken/software/cool/cool-manual.pdf (page 16)
  3. MINC: https://web.archive.org/web/20050214051942/http://www.music.princeton.edu/winham/man/minc.html
  4. TIGER: http://www.cs.columbia.edu/~sedwards/classes/2002/w4115/tiger.pdf
  5. PCAT: http://web.cecs.pdx.edu/~apt/cs302_1999/pcat99/pcat99.html
  6. LUA: http://www.lua.org/manual/5.1/manual.html (в самом низу)
  7. Component Pascal: https://en.wikipedia.org/wiki/Component_Pascal
  8. Oberon-2: https://en.wikipedia.org/wiki/Oberon-2
  9. Ada/CS: https://ecommons.cornell.edu/handle/1813/7509
  10. C--: https://www2.cs.arizona.edu/~debray/Teaching/CSc453/DOCS/cminusminusspec.html
  11. µOCCAM: http://homepages.inf.ed.ac.uk/stark/ipp/manuals/moccam.pdf (Chapter 1, page 4)
  12. MLPolyR: https://people.cs.uchicago.edu/~blume/classes/spr2005/cmsc22620/docs/langspec.pdf (page 2)
  13. Decaf: https://parasol.tamu.edu/courses/decaf/students/decafOverview.pdf (page 3)
  14. TinyJava: http://cobweb.cs.uga.edu/~kochut/teaching/x570/tinyjava/tinyjava.html
  15. MiniJava: http://www.cambridge.org/resources/052182060X/MCIIJ2e/grammar.htm

Требования к наполнению репозитория

Структура репозитория:

grammar - директория с описанием грамматики входного языка
tests - директория с тестами, каждый тест должен включать два файла: файл с кодом на исходном языке и файл с кодом на Python, который ожидается на выходе разрабатываемого транслятора
lexer - директория с исходным кодом лексического анализатора, включая файлы для утилиты FLEX и подобных, если они используются
parser - директория с исходным кодом синтаксического анализатора, включая файлы для утилиты BISON и подобных, если они используются
seman - директория с исходным кодом семантического анализа
... - другие директории и файлы, при необходимости

В каждой директории должен содержаться файл README.md с краткой информацией об имеющихся в ней файлах

В начале файла README.md в корне репозитория (данный файл) необходимо указать информацию о: номерах групп и ФИО студентов, выполняющих задание, а также наименование выбранного по варианту входного языка.

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

Участие каждого студента в выполнении проекта будет оцениваться в том числе по количеству коммитов, сделанных данным студентом, а также по распределению данных коммитов во времени в течение семестра.

Содержание отчета

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

  • Введение
  • Постановка задачи
  • Описание исходного языка
  • Описание лексического и синтаксического анализатора
  • Структура разработанной программы
  • Результаты тестирования
  • Руководство пользователя
  • Заключение
  • Библиографический список
  • Приложение

Перечисленные разделы должны содержать информацию:

  • Введение – описание задач, которые возлагаются на синтаксический и семантический анализ в работе транслятора, а также общую характеристику исходного языка, выбранного по варианту задания, и области его применения;
  • Постановка задачи – текст задания, конкретизированный указанием исходного языка и словесным описанием выбранного подмножества этого языка;
  • Описание исходного языка – регулярную грамматику, описывающую лексемы языка, и КС-грамматику, описывающую синтаксис языка;
  • Описание лексического и синтаксического анализатора – описание автоматных или иных моделей, выбранных для реализации лексического и синтаксического анализов;
  • Структура разработанной программы – обобщенное описание спроектированной программы с указанием ее основных блоков, функций и их взаимосвязей;
  • Результаты тестирования – несколько тестов, на которых была проверена работа спроектированной программы, в виде входных текстов, предъявленных программе, и текстов ее ответных реакций;
  • Руководство пользователя – инструкцию по подготовке исходных данных, запуску программы и интерпретации ее сообщений;
  • Заключение – критический анализ проделанной работы с указанием ее достоинств и, возможно, недостатков;
  • Библиографический список – список использованной литературы (на которую в основном тексте полагается делать ссылки);
  • Приложение – исходный текст спроектированной программы.

Оценивание

Оценка за курсовую работу может быть снижена по следующим причинам:

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

Данный список причин не является полным.

Мовчан Максим Игоревич 4831 MINC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.