Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FLIDE / PRESENT / MPEI_AL.ppt
Скачиваний:
12
Добавлен:
28.06.2014
Размер:
739.84 Кб
Скачать

Свертка

Выр (Инф ИдСв = СпЗнач) Выр

Ограничение

Ид – операторная переменная свертки.

Нет пользовательских связок

для реляционного выражения.

Инф – инфиксная связка.

 

СпЗнач – список значений переменной.

 

Выр – выражение-операнд свертки.

 

( 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

Соседние файлы в папке PRESENT