
- •FLIDE
- •Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)
- •Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)
- •Цель, задачи и структура работы
- •Научная новизна и практическая значимость
- •Язык S-FLOGOL (Small FLOGOL)
- •Программа на языке S-FLOGOL
- •Пример программы (модуль “Arithm”)
- •Сетевая интерпретация программ
- •Описания НО
- •Спецификация НО
- •Определение НО
- •График: терм и формула
- •Композиционное программирование
- •Композиционное программирование (продолжение)
- •Операции композиции НО
- •Параметризованные описания НО
- •Условная конструкция IF
- •Индексированные имена
- •Свертка
- •Свертка: моделирование связок
- •Типизация
- •Описание семантики языка
- •Семантика основных конструкций
- •Реализация языка S- FLOGOL
- •Реализация языка S-FLOGOL
- •Стадии компиляции
- •Предварительная стадия компиляции
- •Основная стадия компиляции
- •База описаний НО (SR-правила)
- •Управление компиляцией (AR-правила)
- •Формирование сети
- •Оптимизация получения спецификаторов
- •SimpleNet – язык текстового описания КССГ
- •Заключительная стадия компиляции
- •Интерфейсные
- •Технология дедуктивного ввода программ
- •Основа технологии
- •Специализированный ввод отдельных конструкций
- •Ввод идентификаторов и числовых констант
- •Общий вид окна редактора
- •Результаты работы
- •Спасибо за внимание!

Свертка
Выр (Инф ИдСв = СпЗнач) Выр |
Ограничение |
|
Ид – операторная переменная свертки. |
Нет пользовательских связок |
|
для реляционного выражения. |
||
Инф – инфиксная связка. |
||
|
||
СпЗнач – список значений переменной. |
|
|
Выр – выражение-операнд свертки. |
|
( J=1..10)Выр |
([1/J]Выр, ([2/J]Выр,… ([9/J]Выр,[10/J]Выр)…)) |
[x/J]Выр – результат подстановки x вместо J в выражение Выр.
Примеры: |
|
|
1) |
[3]Nat = Null ( J=1..3)Succ |
[3]Nat = Null Succ Succ Succ |
2) |
[0]Nat = Null; |
[0]Nat = Null; |
( J=1..100)[J]Nat = Null ( K=1..J)Succ; |
[1]Nat = Null Succ; |
|
[2]Nat = Null Succ Succ; |
||
|
||
|
… |
|
|
[100]Nat = Null Succ … Succ; |

Свертка: моделирование связок |
|
|||
Операции над массивами объектов: |
пользовательская связка |
|
||
… |
|
|
||
FLOGOL: |
|
|
|
|
[1,1]Cell= [1]Nat; |
|
|
|
|
SummCells = (ADD I = 1..2)(ADD J = 1..2)[I,J]Cell |
||||
[1,2]Cell= [4]Nat; |
|
|
|
|
[2,1]Cell= [2]Nat; |
комбинирующая форма |
F[[1,1]Cell;Add] |
||
[2,2]Cell= [10]Nat; |
[1,1]Cell |
Add |
||
F = (<<0>># ---) <<1>>; |
|
<<0>> |
||
|
|
|
||
|
|
|
|
|
SummCells = Null ( I = 1..2)( J = 1..2)F[[I,J]Cell;Add]; |
<<1>> |
|
SummCells
F[[2,2]Cell;Add]
Null |
F[[1,1]Cell] |
F[[1,2]Cell] |
F[[2,2]Cell] |
[2,2]Cell Add
после подстановки комб. форм
[1,1]Cell |
Add |
[1,2]Cell |
Add |
[2,2]Cell |
Add |
Null

Типизация
Типовое отношение для типа |
T (t ,...,t |
|
t ,...,t ), |
i i |
||||
|
|
|
n |
где t (t ) – сорта |
||||
|
|
|
1 |
|
n |
1 |
|
|
входных(выходных) данных, определяется как: |
|
|
||||||
TypeT {Gt , ,Gt |
: Gt , ,Gt |
} «0», |
|
|
||||
1 |
n |
1 |
n |
|
|
|
|
где Gt – НО арности (0,1), генерирующее данные сорта t.
Пример (типизация НО сложения):
//Генератор натуральных чисел Nat = Null @ Succ; //Отношение сложения
Add = {Null,x:x};
Add = {Succ(x),y:Succ(@(x,y))}; //Типиовое отношение арности (2,1) (2:1)TypeNat = {Nat,Nat:Nat} <<0>>; //Типизированное отношение сложения TypedAdd = TypeNat[Add];
TypeNat[Add]
Nat |
Nat |
Add |
Nat |
Описание семантики языка
Семантика языка описана с точностью до преобразования в КССГ, индуцированную выделенным в программе запросом к системе.
Принципы описания:
|
|
– интерпретация |
синтаксической конструкции языка при |
|
|
интерпретации |
контекста ее переменных. |
|
, Name – контекст вызова НО, где |
– контекст сверки,
Name – имя вызываемого НО.
v1v2 ...vn , n 0 – значения операторных переменных свертки ( vi ) в области действия которых находится описываемая конструкция.
Name Spec, IndList, Id,Cons, Prms – спецификатор, список индексов, идентификатор, признак НО – конструктора, список параметров вызова.
Контекст и имя вызова записываются в виде списков.
elm(Список, Номер) – выборка элемента списка с указанным номером, append(Список, Список) – конкатенация списков,
[ ] – пустой список.

Семантика основных конструкций
Область интерпретации выражений:
Тип |
Область интерпретации |
Обозначение |
По умолчанию |
Дом |
Множество правил |
R |
|
Рел |
Множество сетей, Множество правил |
S, R |
, |
СпПар |
Список имен НО |
Prms |
[ ] |
Терм |
Множество сетей, Множество правил |
S, R |
{S0(0,0)}, |
Формула |
Множество сетей, Множество правил |
S, R |
{S0(0,0)}, |
Ар |
Множество натуральных чисел |
Nat |
0 |
Лог |
{True, False} |
Bool |
False |
СпИнд |
[ ] |
IntList |
[ ] |
СпЗнач |
[ ] |
ValList |
[ ] |
Семантика определения НО в доменном выражении: |
|
Спец e Ид e |
e |
R , где |
e e(СпИнд), e e(СпПар), e3 e(Рел), |
|||||||||||||
1 |
|
|
|
|
|
2 |
3 |
|
|
|
|
|
1 |
2 |
|
|
Name0 elm( ,2), |
|
|
|
|
|
|
|
имя вызываемого НО |
||||||||
Namecall [elm(Name0 ,1),elm(Name0 ,2),elm(Name0 ,3)], |
имя вызываемого НО без параметров |
|||||||||||||||
Namedom [ |
|
Спец |
, |
|
e |
|
,k(Ид)], |
имя определяемого НО |
||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|||||
Name unify(Namecall , Namedom ), |
|
|
унификация имен вызываемого и определяемого НО |
|||||||||||||
Prms joinPrms(elm( ,5), |
|
|
|
|
подстановка значений по умолчанию в параметры вызова |
|||||||||||
[S, R1 ] |
|
e3 |
|
, [elm( ,1),append(Name, Prms)], |
формирование сети вызываемого НО и |
|||||||||||
индуцированных сетевых определений |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
R2 makeR(Name, S), |
|
|
|
|
|
|
|
формирование сетевого определения |
||||||||
R R1 R2 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
формирование результата |

Реализация языка S- FLOGOL
Компилятор запросов

Реализация языка S-FLOGOL
Смешанная форма = компиляция + интерпретация
Структурно-ориентированный редактор
Исходная |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Результат |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
программа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
символов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
вычисления |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Лексический |
|
|
|
|
Синтаксический |
|
|
|
Семантический |
|
|
|
Компилятор |
|
|
ПСИЗ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
анализатор |
|
|
|
|
анализатор |
|
|
|
|
|
|
|
|
|
анализатор |
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
внутреннее представление |
КССГ запроса |
Компиляция – генерация контекстно-свободной сетевой грамматики (КССГ), эквивалентной сетевой интерпретации S-FLOGOL-программы с выделенным запросом к системе.
Интерпретация – вычисление КССГ подсистемой исполнения запросов (ПСИЗ).
Оригинальная технология ввода позволяет:
исключить лексический и синтаксический анализ,
обеспечить синтаксическую корректность и однозначность разбора,
выполнить первичный семантический анализ.

Стадии компиляции
Предварительная стадия
Завершение формирования и дополнительная обработка внутреннего представления программы
Основная стадия
Формирование и вычисление логической программы-компилятора (ЛПК), результатом которого является КССГ запроса
Заключительная стадия
Обработка полученной КССГ запроса, запись КССГ в сетевой модуль СФЛП и передача в графический редактор
Текстовый
редактор
Дополнение вн. представления
Формирование и вычисление ЛПК
Обработка КССГ запроса
Графический
редактор

Предварительная стадия компиляции
Дополнение не полностью введенных элементов программы соответствующими значениями по умолчанию:
CONSTRUCTOR(Ар) Succ |
CONSTRUCTOR(0) Succ |
СпИнд Add = {Succ(x),y:Succ(@(x,y))} |
Add = {Succ(x),y:Succ(@(x,y))} |
Add = ИмяОтн |
Add = EmptyRel |
Первичный семантический анализ:
-контроль вызова не объявленных НО,
-чистка грамматики (исключение не используемых НО).
Индексирование вхождений операторных переменных сверток:
Программа Дерево Индексированное дерево
… |
[ ] |
|
контекст |
|
|
[ ] |
|
(I=1..10) |
|
|
|
||||
|
|
свертки |
|
|
|
|
|
(J=1..20) |
|
[I] |
|
1 |
|
[1] |
|
|
|
|
|
||||
[I+J]R = [I]P [J]P |
(I=1..10) |
|
[I,J] |
(1..10) 2 |
[1,2] |
||
… |
|
|
|
|
|
||
|
(J=1..20) [I+J]R = [I]P [J]P |
|
|
(1..20) [1+2]R = [1]P [2]P |

Основная стадия компиляции
Формирование КССГ выполняется логической программой-компилятором (ЛПК), база данных которой содержит:
SR |
• SR -правила (SpecialRules) |
- база описаний НО. |
|
|
AR • AR -правила (AdditionalRules) - управляющие и вспомогательные правила компиляции.
Схема выполнения основной стадии:
внутреннее
представление SR -модуля запроса SR -запроса
Транслятор Компоновщик
ЛПК модуля
Компилятор
скомпилированные |
SR |
SR |
AR |
модули |
|
КССГ GR1 |
КССГ |
||||
|
запроса |
|||||
|
|
|
|
|
|
|
|
Пролог- |
|
|
ПСИЗ |
|
|
|
|
|
|
|
||
|
конвертор |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
правила |
|
|
|
|||
компиляции |
|
|
|
Модуль1 Модульn