Курсовой проект - Компилятор Lisp в промежуточный код RISC-архитектуры

Курсовой проект - Компилятор Lisp в промежуточный код RISC-архитектуры
  • курсовые
  • txt,pdf
  • 264.34 КБ
  • добавлен 02.11.2009
Задача:
Написать программу с нетривиального подмножества произвольного диалекта Лиспа (Lisp) в промежуточный код RISC-архитектуры

Компилятор --- это программа, предназначенная для трансляции высокоуровневого языка в абсолютный (машинный) код или,
иногда, в язык ассемблера. Входной информацией для компилятора (исходный код)
является описание алгоритма или программа на проблемно-ориентированном языке,
а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).

Наш Lisp не совсем похож на Lisp. Это только подмножество языка.
И компилятор~--- тоже, только выдает ассемблерный код несуществующей машины.
Однако, если представить что эта машина существует,
мы получаем вполне реальный компилятор,
который сильно упрощен но по сути делает тоже самое
что и настоящие компиляторы.
Для постоты реализации виртуальной машины необходимо
ввести достаточно простой язык этой машины.
В этом сильно помогает концепция RISC-процессоров.
При выполнении проекта был большой соблазн воспользоваться
стандартной библиотекой работы с регулярными выражениями, но мы
отказались от этой идеи, ибо это протеворичит смыслу задания.

Теория:
* Лексический анализ
* Синтаксический анализ
* Семантический анализ
* Оптимизация
* Регистровая RISC-машина
* Описание грамматики выбранного подмоножества языка Lisp

Работа выполнена на языках
* Lisp (Sheme)
* Python (можно на C++, c "функциональным" использованием шаблонов)
Методичка в формате — PDF
Отчет в формате — PDF
Исходники отчета — LaTeX2e

МАИ.
Факультет прикладной математики.
Кафедра вычислительной математики и программирования.
Преподаватели:
Алексей AVL Лебедев
Илья US-Marine Перетягин

Смотрите также


Halloway S. Programming Clojure

Halloway S. Programming Clojure

  • разное
  • pdf
  • 1.61 МБ
  • добавлен 28.11.2009
Clojure is a dynamic language for the Java Virtual Machine, with a compelling combination of features: Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony.

Clojure is Lisp reloaded. Clojure has the power inherent in...
Лабораторная работа №7

Лабораторная работа №7

  • лабараторные
  • doc
  • 5.43 КБ
  • добавлен 19.11.2008
Отчет по лаб. работе на тему: "Организация итерационных вычислений в LISP. Свойства символов". Задание: Вычислить сумму ряда целых чётных чисел от n до 2n; Определить предикат, проверяющий, обладает ли символ заданным свойством. Отчет содержит листинг программы.
Лабораторная работа №5

Лабораторная работа №5

  • лабараторные
  • doc
  • 7.3 КБ
  • добавлен 19.11.2008
Отчет по лаб. работе на тему: "Арифметика и обработка списков в LISP. Задание функций". Задание: Реализовать средствами Лиспа пользовательские функции: UF1(x)=tn(x/8)+ctn(x/8), UF2(x)=ln^2 (x+4); связать с символом UFR двухэлементный список, элементами которого будут результаты вычисления соответственно первой и второй пользоват...
Нет изображения

Лабораторная работа - Знакомство с языком Lisp. Абстракция вычислений

  • лабараторные
  • zip
  • 166.12 КБ
  • добавлен 02.11.2009
Задача: Реализовать процедуру нахождения неподвижной точки методом итераций в общем виде, то есть параметризованную оператором преобразования процедуру, вычисляющую преобразование Ньютона, и применить её для реализации метода Ньютона в решении уравнения: $e^{x} - e^{-x} - 2 = 0$. Нахождение производной также реализовать в виде п...
Реферат - Общие сведения о функциональном программировании

Реферат - Общие сведения о функциональном программировании

  • рефераты
  • doc
  • 164.8 КБ
  • добавлен 14.11.2009
Реферат.
Общие сведения о функциональном программировании.
Предисловие.
Введение.
Общие сведения о функциональном программировании.
История функционального программирования.
Основы функционального программирования.
Краткость и простота.
Строгая типизация.
Модульность.
Функции — это значени...
Реферат - Программирование на языке CLIPS

Реферат - Программирование на языке CLIPS

  • рефераты
  • pdf
  • 271.2 КБ
  • добавлен 18.12.2009
Название языка CLIPS — аббревиатура от С Language Integrated Production System. Язык был разработан в Центре космических исследований NASA (NASA's Johnson Space Center) в середине 1980-х годов и во многом сходен с языками, созданными на базе LISP, в частности OPS5 и ART.

Содержание

Краткая история CLIPS....
Лабораторная работа на языке Лисп (Lisp) - Списки

Лабораторная работа на языке Лисп (Lisp) - Списки

  • лабараторные
  • doc
  • 40.5 КБ
  • добавлен 24.12.2010
НГТУ
Тема работы: Изучение рекурсивных структур языка на примере списка.
В программе реализованы такие функции, как:
Вывод списка на экран
Вставка элемента по номеру
Удаление элемента по номеру
Интерактивность реализована при помощи меню.
Fogus M., Houser C. The Joy of Clojure: Thinking the Clojure

Fogus M., Houser C. The Joy of Clojure: Thinking the Clojure

  • разное
  • pdf
  • 22.01 МБ
  • добавлен 06.04.2011
Michael Fogus, Chris Houser. The Joy of Clojure: Thinking the Clojure. Manning Publications, 2011. - 360 p. - ISBN: 1935182641

Clojure is a dynamic programming language that targets the Java Virtual Machine. The Joy of Clojure goes beyond the syntax, and shows how to write fluent, idiomatic Clojure code. Readers will le...
Лабораторная работа - Отложенные вычисления и ленивые списки в Лиспе. Нисходящий разбор по заданной LL(1)-грамматике

Лабораторная работа - Отложенные вычисления и ленивые списки в Лиспе. Нисходящий разбор по заданной LL(1)-грамматике

  • лабараторные
  • pdf,txt
  • 776.61 КБ
  • добавлен 02.11.2009
Задача:
Написать программу, эмулирующую поведение детерминированного МП-автомата, составленного по заданной LL(1)-грамматике. Проверку принадлежности
строки языку выполнить в виде поиска допускающего состояния в истории вычислений автомата. Историю вычислений реализовать в виде отложенного списка, то есть
не допуска...
Журнал - Практика Функционального Программирования 2011 № 7

Журнал - Практика Функционального Программирования 2011 № 7

  • разное
  • pdf
  • 4 МБ
  • добавлен 13.04.2011
Седьмой номер был небыстр и нелегок в производстве; долгими студёными зимними вечерами, не покладая рук, трудились авторы и редакторы над его созданием. Но, пожалуй, труды себя оправдали — по разнообразию и качеству содержимого этот номер беспрецедентен; низкий поклон авторам. Мы уверены, что читатели откроют для себя из статей ...