Содержание
- 2. Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ) Разработка и исследование структурно-ориентированного редактора и компилятора запросов
- 3. Разработка и исследование структурно-ориентированного редактора и компилятора запросов системы функционально-логического программирования Бебчик Алексей Михайлович Специальность 05.13.11
- 4. Цель, задачи и структура работы Основные задачи: ∙ исследование языка FLOGOL и формальное описание его семантики;
- 5. Научная новизна и практическая значимость Научная новизна: 1. Предложена система ограничений языка FLOGOL, позволяющая выполнить компиляцию
- 6. Язык S-FLOGOL (Small FLOGOL) ∙ Основан на теории направленных отношений (НО). ∙ Поддерживает аппликативный и композиционный
- 7. Программа на языке S-FLOGOL Программный модуль: MODULE Имя (Имя1, …, Имяn) = WHERE END Программа: Модуль1
- 8. MODULE Arithm = //Конструкторы (+0+:+1)Null; (+1+:+1)Succ; //Аппликативные определения Nat0={:Null}; Nat1={:Succ(Null)}; Add={Null,x:x}; Add={Succ(x),y:Succ(@(x,y))}; //Композиционные определения --- =
- 9. Сетевая интерпретация программ OBJECT Null; CONSTRUCTOR(1)Succ; Nat1=Null∙Succ; Nat2=Null∙Succ∙Succ; Add={Null,x:x}; Add={Succ(x),y:Succ(@(x,y))}; QUERY=(Nat1#Nat2)∙Add Nat1 → Nat2 → Add
- 10. Описания НО Описания НО задаются доменными выражениями (Дом): ∙ Объявление НО: ∙ Определение НО: ∙ Объединение
- 11. Спецификация НО Общая форма: входная арность (+0+:+1)Null (+1+:+1)Succ выходную арность функциональность Спец →( + Ар +
- 12. Определение НО Определение НО задается реляционным выражением (Рел): ∙ Вызов по имени: ∙ График (аппликативная форма):
- 13. График: терм и формула Пример: Имя(Терм) Переменная Succ(Add(x,y)) Терм , Терм Терм | Терм ∙ Терм:
- 14. Пример. Определение НО «Del» Del = {x,Cons(x,y):y} Del = {x,Cons(y,ys):Cons(y,Del(x,ys))?x y}
- 15. Композиционное программирование ∙ Комбинаторные константы: --- = {x:x} --> = {x:} -- >-- = {x,x:x} -/-
- 16. Композиционное программирование (продолжение) Net=(N1# N2)∙N3∙N4 N2= --- N3=Add N4=Succ N1=(N11# N12)∙(N13# N14# N14)∙(N16# N17) Преобразование сети:
- 17. Последовательная: Операции композиции НО Параллельная: Инверсия: Пересечение: Объединение: R1∪R2 R1∙ R2 ~R1 R1# R2 R1∩R2 Унификация:
- 18. СпПар → Имя полное имя НО СпПар → @ собственные параметры СпПар → _ пропуск параметра
- 19. Условная конструкция IF Map[---] = IF ► > 1 OR >► 1 THEN --- ELSE {Cons(x,y):
- 20. Индексированные имена Имя → Спец [ CпИнд ] Ид СпПар Переменная → [ CпИнд ] Ид
- 21. Свертка Выр → (Инф ИдСв = СпЗнач) Выр СпЗнач – список значений переменной. (⊗ J=1..10)Выр ⊗([1/J]Выр,
- 22. Свертка: моделирование связок … [1,2]Cell= [4]Nat; [2,1]Cell= [2]Nat; [2,2]Cell= [10]Nat; SummCells = (ADD I = 1..2)(ADD
- 23. входных(выходных) данных, определяется как: Типизация Типовое отношение для типа где – НО арности (0,1), генерирующее данные
- 24. Описание семантики языка Семантика языка описана с точностью до преобразования в КССГ, индуцированную выделенным в программе
- 25. Семантика основных конструкций Область интерпретации выражений: , где Семантика определения НО в доменном выражении: имя вызываемого
- 26. Реализация языка S-FLOGOL Компилятор запросов
- 27. Реализация языка S-FLOGOL Смешанная форма = компиляция + интерпретация Компиляция – генерация контекстно-свободной сетевой грамматики (КССГ),
- 28. Стадии компиляции ∙ Основная стадия ∙ Предварительная стадия Завершение формирования и дополнительная обработка внутреннего представления программы
- 29. Предварительная стадия компиляции ∙ Дополнение не полностью введенных элементов программы соответствующими значениями по умолчанию: ∙ Индексирование
- 30. Основная стадия компиляции • SR -правила (SpecialRules) - база описаний НО. • AR -правила (AdditionalRules) -
- 31. База описаний НО (SR-правила) Спец3 Имя4 Спец5 Рел7 Дом1 Дом2 ; # Рел8 Рел9 OBJECT Null
- 32. Управление компиляцией (AR-правила) Конструктивное построение КССГ: получить сетевое определения НО с указанным именем, выполнить шаг 1)
- 33. Формирование сети ∙ Формирование вызова НО ∙ Формирование графика Пример: {x, y: Add(x,y)?x y} Входной терм
- 34. Оптимизация получения спецификаторов Add={Succ(x),y:Succ(Add(x,y))} Add={Null,x:x} Add={Null,x,x:} Add={Succ(x),y,Succ(Add(x,y)):} ∙ Исключение дублирующих спецификаторов. Вызов НО Add: ∙ Частичное
- 35. SimpleNet – язык текстового описания КССГ Причина создания языка: чрезвычайно сложный для конструктивного построения формат внутреннего
- 36. Заключительная стадия компиляции ∙ Редукция имен – исключение не значимых для КССГ элементов имени. ∙ Установка
- 37. Интерфейсные средства Структурно-ориентированный текстовый редкатор
- 38. Технология дедуктивного ввода программ Технология позволяет: ∙ Минимизировать ручной ввод (идентификаторы, константы). ∙ Исключить лексический и
- 39. Основа технологии Текст программы Альтернатива Правила грамматики Определение Конструктор Дом→Спец [СпИнд] Ид [СпПар]=Рел Дом→ Спец [СпИнд]
- 40. Специализированный ввод отдельных конструкций Операция: … [1]Nat=Null∙Рел Правила грамматики: РелИнф→{ ∙ , *, ∇, → ,#,
- 41. Ввод идентификаторов и числовых констант Текст программы Альтернатива Правила грамматики Раскрыть 1) …Спец Ид=Рел Дом→Спец [СпИнд]
- 42. Общий вид окна редактора
- 43. Результаты работы 1. Предложена система ограничений языка FLOGOL, позволяющая выполнять компиляцию в конечную КССГ и значительно
- 45. Скачать презентацию