Interested Article - Seed7

Seed7 — язык программирования общего назначения.

Главной особенностью языка является его расширяемость. Синтаксис языка определён в одной из библиотек и может быть изменён пользователем.

Особенности

Язык синтаксически подобен Паскалю и Аде . В дополнении к стандартному Паскалю и ранним версиям Ады включает механизмы объектно-ориентированного программирования а также механизмы расширения языка: мощный механизм шаблонов для определения новых синтаксических конструкций (который, подобно (англ.) включает средства позволяющие задавать ассоциативность и приоритет операций ) и нечто вроде стандартных функций, позволяющих задавать семантику таких конструкций. Такие функции, выполняемые на этапе компиляции , принимают в качестве параметров переменные , типы и выражения, включаемые в синтаксические конструкции, и выполняют с ними необходимые преобразования. Если определяемая таким образом грамматика допускает двусмысленное толкование, генерируется ошибка компиляции .

История

Томас Мертес начал разрабатывать этот язык обучаясь в Венском техническом университете . Он стал в 1984 темой его дипломной работы , а затем, в 1986 — диссертации .

Примеры

Hello World
$ include "seed7_05.s7i";
const proc: main is
func
begin
  writeln ("hello world");
end func;

Здесь определяется процедура (функция без параметров) main (играющая ту же роль, что и в языке Си ).

Числа Фибоначчи
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;

Ключевое слово in перед объявлением параметра функции означает что это параметр константный , он не может изменятся в ходе выполнения функции, для объявления изменяемых параметров сложит слово inout . После слова result объявляется переменная, значение которой будет возвращаться функцией. Для объявления локальных переменных служит слово local .

Механизмы расширения

Расширения языка включают в себя два основных этапа: синтаксическое определение, которое задаёт шаблон для новой синтаксической формы и стандартная функция Seed7 для определения семантики .

Определение синтаксиса

Для определения синтаксиса используется часть языка, называемая Seed7 Structured Syntax Description (S7SSD). Выражения S7SSD вида

$ syntax expr: .(). + .()  is -> 7;

определяет синтаксис операции + Стрелочка вправо -> описывает ассоциативность : связывание операндов слева направо. Число 7 задаёт приоритет операции + . Синтаксический шаблон: .(). + .() отделяется символами точки ( . ). Если их опустить, он будет выглядеть как () + () Символ () — нетерминальный, а + — терминальный. В S7SSD не делается различий между разными нетерминальными символами , вместо этого используется только один нетерминальный символ: () .

Определение семантики

Определение оператора + для комплексных чисел это просто определение функции:

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 . В пакет входит интерпретатор (файл s7 ) и компилятор ( s7c ), генерирующий промежуточный код на языке Си .

См. также

Примечания

  1. Daniel Zingaro. . — Hamilton, Ontario, Canada: McMaster University, April 11, 2007. — С. 16 . 1 марта 2012 года.
  2. 5 февраля 2012 года. (нем.) , Thomas Mertes, 1984, Diplomarbeit, Institut für Computersprachen Programmiersprachen und Übersetzer
  3. 9 мая 2013 года. (нем.) , Thomas Mertes, 1986, Dissertation, Institut für Computersprachen Programmiersprachen und Übersetzer

Литература

  • Пётр Семилетов. Таинственный незнакомец: язык программирования Seed7 // Open Source (приложение к журналу «Системный администратор»). — 16 ноября 2011. — Вып. 95 . — С. 5-7 .

Ссылки

  • — официальный сайт Seed7
Источник —

Same as Seed7