Информатика и вычислительная техника
Лабораторная
  • формат pdf, txt
  • размер 776.61 КБ
  • добавлен 02 ноября 2009 г.
Лабораторная работа - Отложенные вычисления и ленивые списки в Лиспе. Нисходящий разбор по заданной LL(1)-грамматике
Задача:
Написать программу, эмулирующую поведение детерминированного МП-автомата, составленного по заданной LL(1)-грамматике. Проверку принадлежности
строки языку выполнить в виде поиска допускающего состояния в истории вычислений автомата. Историю вычислений реализовать в виде отложенного списка, то есть
не допускается одновременное хранение в памяти всех промежуточных состояний автомата.

Теория:
Нисходящий синтаксический анализ осуществляется автоматом с магазинной памятью (МП-автоматом). В начале работы МП-автомата в стек помещается стартовый нетерминал.
Далее автомат недетерменировано заменяет нетерминалы в стеке на правые части соответствующих продукций, а терминалы снимает с вершины стека вместе с чтением их из входной строки. Строка допускается, если по окончании чтения строки стек пуст.
Недетерминизм на практике реализуется сложно, поэтому там, где это возможно, грамматики приводятся к специальной форме, позволяющей от него избавиться. Одна из таких форм LL(1). Первая L означаетчтение входной строки слева направо, вторая L получение левого порождения, а 1 использование на каждом шаге препросмотра одного символа для принятия решения о действиях автомата

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

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

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

  • формат pdf
  • размер 1.38 МБ
  • добавлен 18 января 2011 г.
Очередной «профессией» куклы Барби будет инженер-компьютерщик, и длинноногие девушки-хакеры перестанут быть героями голливудских фильмов, а станут частью повседневной реальности. На кофточке Барби изображен компьютер, на экране которого изображена Барби. А на экране ноутбука — двоичный код, который можно преобразовать в последовательность ASCII-символов «BarbieBarbieBarbieBar». Это рекурсивные конструкции и бесконечные списки — понятия, традицио...

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

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

Лабораторная работа - Реализация работы с полиномами на функциональном языке HOPE

Лабораторная
  • формат zip
  • размер 1.5 КБ
  • добавлен 11 мая 2010 г.
Реализованы все задачи из спика заданий: 1) Определить тип данных Polynom – представление полиномов от одной переменной - x. Для представления можно, например, использовать списки. Полином в виде списка можно представить как список коэффициентов или как список пар чисел – (коэффициент, степень). Например, полином 2+x^3 будет иметь представление [2,0,0,1] в первом случае и [(2,0), (1,3)] – во втором. Во втором случае все операции будут реализо...

Лабораторная работа - Рекурсивные функции

Лабораторная
  • формат txt
  • размер 2.03 КБ
  • добавлен 30 мая 2011 г.
A. Функция Позиция(x список) возвращает положение атома x в одноуровневом списке (первый элемент имеет номер 1). Если элемента в списке нет, то функция возвращает 0. (Используется функция MEMBER) b. Функция Сумма-дерева (дерево) возвращает сумму чисел в дереве. Нечисловые символы игнорируются (Сумма-дерева ’((3 Три) (3 Богатыря) (1 Волк))) = 7 (Используется предикат MEMBERP и CAR-CDR)rn

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

Лабораторная
  • формат doc
  • размер 40.5 КБ
  • добавлен 24 декабря 2010 г.
НГТУ Тема работы: Изучение рекурсивных структур языка на примере списка. В программе реализованы такие функции, как: Вывод списка на экран Вставка элемента по номеру Удаление элемента по номеру Интерактивность реализована при помощи меню.

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

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

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

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

Паулсон Л. Основы функционального программирования

  • формат doc
  • размер 764.98 КБ
  • добавлен 26 марта 2010 г.
Компьютерная лаборатория, Университет Кембридж, 1995 - 45 c. Курс связан с ?-вычислениями и близкой к ним наукой – комбинаторной логикой Содержание 1. Вступление 2. Равенство и нормализация 3. Кодирования данных в ?-вычислениях 4. Написание рекурсивных функций в ?-вычислениях 5. ?-вычисления и теория вычислений 6. ISWIM: ?-вычисления как язык программирования 7. Ленивые вычисления, используя комбинаторы 8. Методы компиляции, использующие комбинат...

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

Реферат
  • формат doc
  • размер 164.8 КБ
  • добавлен 14 ноября 2009 г.
Реферат. Общие сведения о функциональном программировании. Предисловие. Введение. Общие сведения о функциональном программировании. История функционального программирования. Основы функционального программирования. Краткость и простота. Строгая типизация. Модульность. Функции — это значения. Чистота (отсутствие побочных эффектов). Отложенные (ленивые) вычисления. Основы работы с HUGS 98. Панель инструментов HUGS 98. Команды консоли HUGS 98. Допол...

Смирнов Роман aka Romul. Практика современного программирования

  • формат doc
  • размер 217 КБ
  • добавлен 11 января 2009 г.
Ты знал, что повторяться свойственно не только моде на одежду, но и на парадигмы программирования? В этой обзорной статье мы поговорим о функциональной парадигме программирования и её роли в мэйнстриме современного программирования. Итак, начнём рассмотрение с исторического ракурса вопроса. Функциональное программирование(далее ФП) не является чем-то новым, скорее наоборот первые функциональные языки появились в конце 50-х годов прошлого века и...