Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 4. Язык функционально-логического программирования FLOGOL

.pdf
Скачиваний:
21
Добавлен:
28.06.2014
Размер:
971.45 Кб
Скачать

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

прямоугольные блоки для представления вызовов формальных па-

раметров определяемого синтаксического понятия с указанием имени соответствующего параметра в виде « i », где i – номер параметра,

специальный блок с символом @ , обозначающий рекурсивный вы-

зов самого определяемого параметризованного синтаксического понятия (с его формальными параметрами в качестве фактиче-

ских значений).

На рис. 4.2 представлены обобщенные диаграммы Вирта, определяю-

щие синтаксис исходных текстов модулей FLOGOL -программы. При описании синтаксиса, как правило, используются сокращенные имена син-

таксических понятий, расшифровка которых приведена ниже.

Ид – идентификаторы доменов, отношений, параметров сверток и библиотечных арифметических функций; начинаются с заглавной буквы и не содержат подряд двух и более заглавных букв. Вариант Ид, начинаю-

щийся с символа сцепления, используется только в реляционных выраже-

ниях и только для объявляемых имен.

Ид1 – идентификаторы свободных переменных, используемых при определении отношений как графиков; строятся из строчных букв и цифр,

в качестве разделителя может использоваться знак сцепления; локализова-

ны внутри определения графика.

Звено – компоненты вводимых программистом связок; строятся из не менее чем двух заглавных букв (как ключевые слова) или из спецзнаков,

исключая основные разделители и скобки.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 21

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

Связка – чередующаяся последовательность звеньев и операндных мест, обозначаемых знаком сцепления; для всех связок, кроме закрытых,

перед определением самой связки указывается ее приоритет.

Модуль

MODULE Ид 7. Ид 6.

4.

5. Домен

Домен

ДомВыр WHERE ДомВыр 8. EN

ДомВыр=Выр[ЭлемОпис,,{;}]

Импорт

WITH ИмяДом

,

ИмяДом = КвИмя

Рис. 4.2 . Синтаксис языка FLOGOL.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 22

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

Цифра={0,1,2,3,4,5,6,7,8,9,0}

НатЧис

Цифра Ид

_ ЗаглБуква

СтрБуква

Цифра

Ид1

СтрБуква

Цифра

_

Звено

ЗаглБуква ЗаглБуква

СпецЗнак

Связка

Звено _

Приор

_ Звено

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 1).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 23

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

Приор

+

[ НатЧис ]

-

Выр

 

 

 

 

 

IF

ЛогВыр

THEN

@

ELSE

@

 

 

«2»

 

 

 

«1»

 

 

 

 

«3»

(

«2»

Ид

=

СписЗнач

)

«0»

(

@

)

CASE АрВыр OF

МножЗнач

:

@

ELSE

@

END

 

;

 

 

 

 

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 2).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 24

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

АрВыр=Выр[ПервАр,, { ,DIV,MOD,+,- }]

ПервАр

Ид ( АрВыр )

,

ИмяОтн

ИмяОтн

НатЧис

ЛогВыр=Выр[ПервЛог,{NOT},{AND,XOR,OR}]

ПервЛог

АрВыр ОпСрав АрВыр

ОпСрав ={<,>,=, , , }

МножЗнач = Выр[ПервМнСп,,{ ,\, , }]

СписЗнач = Выр[ПервМнСп,,{,}]

ПервМнСп

АрВыр .. АрВыр

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 3).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 25

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

ИмяОтн

@

КвИмя

« НатЧис . АрВыр »

КвИмя

 

 

 

Имя

 

 

.

 

Имя

 

 

СпИнд

Ид

СпПарам

СпИнд

 

 

[

Выр[АрВыр,,{,}]

]

СпПар

[

Выр[ЭлемСпПар,,{;}]

]

ЭлемСпПарам

ГрупПар = РелВыр Спец ГрупПар

ГрупПар = « СпЗнач » РелВыр=Выр[ПервРел, { ~ , } ,РелОп2 ,{ }]

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 4).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 26

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

ПервРел

График

ИмяОтн

РелОп2={ , , , , # , , }

График

{

Терм

:

Терм

? Формула }

Терм=Выр[ПервТерм,,{, , | }]

ПервТерм

 

Вызов

 

СпИнд

Ид1

Формула=Выр[ПервФорм,,{ & , }]

 

ПервФорм

 

Вызов

 

=

Терм

Терм

Вызов

ИмяОтн

(

Терм

)

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 5).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 27

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

ОпрРел

Импорт РелОп2 = РелВыр

==

ОпрДом

Импорт = DOMAIN Домен

==

ЭлемОпис

СпИнд EMPTY

Имя = Связка ОпрРел

ОпрДом

СпПар = Связка ОпрРел

Спец СпИнд Ид

EXT

,

Рис. 4.2 . Синтаксис языка FLOGOL (продолжение 6).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 28

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

Спец

TUPLE

TUPLE_SET

PREDICATE

TUPLE_TRANSITION

TUPLE_OPERATOR

TUPLE_FUNCTOR

TUPLE_SUBSTITUTION

TUPLE_TRANSPOSITION

REFLECTION

FUNCTION

CONSTRUCTOR

SUPERCONSTRUCTOR

RELATION

TUPLE_REFLECTION

TUPLE_FUNCTION

RECONSTRUCTOR

ASSERTION

OBJECT

SET

PROPERTY

TRANSITION

OPERATOR

FUNCTOR

SUBSTITUTION

TRANSPOSITION

(

SUPER_RECONSTRUCTOR ( АрВыр : АрВыр )

( + АрВыр + : + АрВыр + )

Рис. 4.2. Синтаксис языка FLOGOL (продолжение 7).

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 29

4. ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ FLOGOL

Приор – приоритет связки (может быть опущен – для закрытых свя-

зок); представляет собой заключенное в квадратные скобки целое число k 0.., при сравнении приоритетов рассматриваемое как правильная дробь

0.k , что позволяет включать новые значения в любое место имеющейся шкалы приоритетов. Для открытых связок не ассоциативных операций должен указываться знак «-», если для цепочки связок одинакового прио-

ритета скобки по умолчанию расставляются по ассоциации налево, и знак

«+», если для цепочки связок одинакового приоритета скобки по умолча-

нию расставляются по ассоциации направо. Если знак не указан, порядок выполнения операций выбирается системой.

Выр – общая схема построения различных выражений в языке

FLOGOL . Параметр «0» задает первичную форму соответствующего вы-

ражения, параметр «1» представляет множество звеньев-префиксов, «2»

инфиксов, а «3» – суффиксов. Заключение выражения в круглые скобки позволяет его синтаксически использовать как первичное выражение лю-

бой сложности; то же можно сказать и о CASE-конструкции, синтаксис которой заимствован из языка PASCAL: в качестве ключа используется значение арифметического выражения (АрВыр), а множество значений ключа (МножЗнач) тоже описано в виде специального выражения. В каче-

стве префиксов и суффиксов к указанным выше первичным формам выра-

жений могут быть присоединены символы унарных операций для опреде-

ляемого типа выражений (параметры «1» и «3») и конструкция оператора свертки по любой из бинарных операций, заданных параметром «2», а для реляционных выражений – и для бинарных операций композиции, опреде-

ленных в программе. Если для конкретного типа выражений используется символ единственной бинарной операции, то в конструкции оператора свертки он может быть опущен. Оператор свертки предполагает задание имени операторной переменной и списка ее возможных значений

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 30