Seed7
Seed7 — язык программирования общего назначения. Главной особенностью языка является его расширяемость. Синтаксис языка определён в одной из библиотек и может быть изменён пользователем. ОсобенностиЯзык синтаксически подобен Паскалю и Аде. В дополнении к стандартному Паскалю и ранним версиям Ады включает механизмы объектно-ориентированного программирования а также механизмы расширения языка: мощный механизм шаблонов для определения новых синтаксических конструкций (который, подобно Camlp4[англ.] включает средства позволяющие задавать ассоциативность и приоритет операций) и нечто вроде стандартных функций, позволяющих задавать семантику таких конструкций. Такие функции, выполняемые на этапе компиляции, принимают в качестве параметров переменные, типы и выражения, включаемые в синтаксические конструкции, и выполняют с ними необходимые преобразования. Если определяемая таким образом грамматика допускает двусмысленное толкование, генерируется ошибка компиляции[2]. ИсторияТомас Мертес начал разрабатывать этот язык обучаясь в Венском техническом университете[3]. Он стал в 1984 темой его дипломной работы[4], а затем, в 1986 — диссертации[5]. Примеры$ include "seed7_05.s7i"; const proc: main is func begin writeln ("hello world"); end func; Здесь определяется процедура (функция без параметров) const func integer: fib (in integer: num1) is func result var integer: fib is 1; begin if num1 <> 1 and num1 <> then fib := fib(pred(num1)) + fib(num1 - 2); end if; end func; Ключевое слово Механизмы расширенияРасширения языка включают в себя два основных этапа: синтаксическое определение, которое задаёт шаблон для новой синтаксической формы и стандартная функция Seed7 для определения семантики[2]. Определение синтаксисаДля определения синтаксиса используется часть языка, называемая Seed7 Structured Syntax Description (S7SSD). Выражения S7SSD вида $ syntax expr: .(). + .() is -> 7; определяет синтаксис операции Определение семантикиОпределение оператора const func complex: (in complex: summand1) + (in complex: summand2) is func result var complex: sum is complex.value; begin sum.re := summand1.re + summand2.re; sum.im := summand1.im + summand2.im; end func; Объектно-ориентированное программированиеВ Seed7 используется модель объектно-ориентированного программирования, основанная не на классах и методах, но на интерфейсах и реализациях. РеализацияДоступен в виде исходных кодов под лицензиями GPL и LGPL или готовых сборок под Windows. В пакет входит интерпретатор (файл См. такжеПримечания
Литература
Ссылки
|
Portal di Ensiklopedia Dunia