Задача:
Написать программу с нетривиального подмножества произвольного диалекта Лиспа (Lisp) в промежуточный код RISC-архитектуры
Компилятор --- это программа, предназначенная для трансляции высокоуровневого языка в абсолютный (машинный) код или,
иногда, в язык ассемблера. Входной информацией для компилятора (исходный код)
является описание алгоритма или программа на проблемно-ориентированном языке,
а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
Наш Lisp не совсем похож на Lisp. Это только подмножество языка.
И компилятор~--- тоже, только выдает ассемблерный код несуществующей машины.
Однако, если представить что эта машина существует,
мы получаем вполне реальный компилятор,
который сильно упрощен но по сути делает тоже самое
что и настоящие компиляторы.
Для постоты реализации виртуальной машины необходимо
ввести достаточно простой язык этой машины.
В этом сильно помогает концепция RISC-процессоров.
При выполнении проекта был большой соблазн воспользоваться
стандартной библиотекой работы с регулярными выражениями, но мы
отказались от этой идеи, ибо это протеворичит смыслу задания.
Теория:
* Лексический анализ
* Синтаксический анализ
* Семантический анализ
* Оптимизация
* Регистровая RISC-машина
* Описание грамматики выбранного подмоножества языка Lisp
Работа выполнена на языках
* Lisp (Sheme)
* Python (можно на C++, c "функциональным" использованием шаблонов)
Методичка в формате — PDF
Отчет в формате — PDF
Исходники отчета — LaTeX2e
МАИ.
Факультет прикладной математики.
Кафедра вычислительной математики и программирования.
Преподаватели:
Алексей AVL Лебедев
Илья US-Marine Перетягин
Написать программу с нетривиального подмножества произвольного диалекта Лиспа (Lisp) в промежуточный код RISC-архитектуры
Компилятор --- это программа, предназначенная для трансляции высокоуровневого языка в абсолютный (машинный) код или,
иногда, в язык ассемблера. Входной информацией для компилятора (исходный код)
является описание алгоритма или программа на проблемно-ориентированном языке,
а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
Наш Lisp не совсем похож на Lisp. Это только подмножество языка.
И компилятор~--- тоже, только выдает ассемблерный код несуществующей машины.
Однако, если представить что эта машина существует,
мы получаем вполне реальный компилятор,
который сильно упрощен но по сути делает тоже самое
что и настоящие компиляторы.
Для постоты реализации виртуальной машины необходимо
ввести достаточно простой язык этой машины.
В этом сильно помогает концепция RISC-процессоров.
При выполнении проекта был большой соблазн воспользоваться
стандартной библиотекой работы с регулярными выражениями, но мы
отказались от этой идеи, ибо это протеворичит смыслу задания.
Теория:
* Лексический анализ
* Синтаксический анализ
* Семантический анализ
* Оптимизация
* Регистровая RISC-машина
* Описание грамматики выбранного подмоножества языка Lisp
Работа выполнена на языках
* Lisp (Sheme)
* Python (можно на C++, c "функциональным" использованием шаблонов)
Методичка в формате — PDF
Отчет в формате — PDF
Исходники отчета — LaTeX2e
МАИ.
Факультет прикладной математики.
Кафедра вычислительной математики и программирования.
Преподаватели:
Алексей AVL Лебедев
Илья US-Marine Перетягин