Seed7

редактировать
Seed7
Paradigm multi-paradigm : расширяемый, объектно-ориентированный, императивный, структурированный, универсальный, отражающий
Разработан Томасом Мертесом
Впервые появился2005; 15 лет назад (2005)
Стабильный выпуск 30.08.2020 / 63 дня назад
Дисциплина набора текста статический, сильный, безопасный, именительный падеж, манифест
OS Межплатформенный : BSD, Linux, OS X, Unix, Windows
Лицензия GPL, LGPL (для библиотеки времени выполнения)
Расширения имен файлов .sd7,.s7i
Веб-сайтseed7.sourceforge.net
Основные реализации
с открытым исходным кодом эталонная реализация
Под влиянием
Pascal, Modula-2, Ada, ALGOL 68, C, C ++, Java

Seed7 - это расширяемый язык программирования общего назначения, разработанный Томасом Мертесом. Синтаксически он похож на Pascal и Ada. Наряду со многими другими функциями, он предоставляет механизм расширения. Seed7 поддерживает введение в язык новых элементов синтаксиса и их семантики, а также позволяет определять и записывать новые языковые конструкции в Seed7. Например, программисты могут представить синтаксис и семантику новых операторов и определяемых пользователем символов оператора. Реализация Seed7 существенно отличается от реализации языков с жестко запрограммированным синтаксисом и семантикой .

Содержание
  • 1 Характеристики
  • 2 Библиотеки
    • 2.1 Библиотека TLS
    • 2.2 API абстракции базы данных
  • 3 История
  • 4 Механизм расширения
    • 4.1 Определение синтаксиса
    • 4.2 Семантическое расширение
  • 5 Ссылки
  • 6 Внешние ссылки
Возможности

Seed7 поддерживает парадигмы программирования : императивный, объектно-ориентированный (OO) и общий. Он также поддерживает такие функции, как вызов по имени, множественная отправка, перегрузка функций, перегрузка оператора, обработка исключений и арифметика произвольной точности.

Основные функции включают:

Обобщены несколько концепций языка программирования:

Проект Seed7 включает в себя как интерпретатор, так и компилятор. Интерпретатор очень быстро запускает программы, поддерживая быструю разработку программ. Компилятор использует синтаксический анализатор и интерфейсы отражения из библиотеки времени выполнения для создания программы C, которая впоследствии компилируется в машинный код . Скомпилированные программы Seed7 могут иметь производительность, сопоставимую с программами на C.

Библиотеки

Seed7 имеет множество библиотек, охватывающих области, включая контейнеры, числовые функции, лексический анализ, манипулирование файлами, работа в сети (сокеты, безопасность транспортного уровня (TLS / SSL), протокол передачи гипертекста (HTTP), HTTP Безопасный (HTTPS ), Протокол передачи файлов (FTP), Простой протокол передачи почты (SMTP) и т. Д.), графика, растровое и векторное изображение шрифты, API, независимый от базы данных, Поддержка Common Gateway Interface (CGI), сжатие данных, архивные файлы (tar, zip, cpio, ar, rpm ), кодировка символов, обработка времени и даты, XML обработка, дайджесты сообщений и многое другое. Эти библиотеки уменьшают потребность в использовании непереносимых функций операционной системы и сторонних библиотек (которые могут не всегда присутствовать) напрямую. Библиотеки Seed7 содержат уровни абстракции для оборудования, операционной системы и сторонних библиотек, например графические библиотеки и библиотеки баз данных. Другими словами, никаких изменений не требуется для перемещения программ Seed7 между разными процессорами или операционными системами.

Библиотека TLS

Seed7 имеет собственную реализацию Transport Layer Security.. Библиотека включает AES и криптографию с эллиптической кривой.

API абстракции базы данных

Seed7 предоставляет библиотеку с независимым от базой данных API. Программы могут подключаться к MySQL, MariaDB, SQLite, PostgreSQL, Oracle, Open Database Connectivity (ODBC), Firebird, InterBase, Db2 и SQL Server базы данных. Независимо от базы данных могут быть созданы подготовленные операторы, могут использоваться переменные связывания, операторы могут быть выполнены и могут быть получены наборы результатов.

История

Seed7 основан на MASTER, расширяемом языке программирования, описанном в дипломе и докторских диссертациях Томаса Мертеса. Большинство оригинальных идей MASTER, таких как определяемые пользователем операторы и операторы, можно найти в Seed7. Прекомпилятор для перевода MASTER в Паскаль был предложен, но не реализован в исходном проекте. В 1989 году началась разработка интерпретатора для MASTER, названного HAL. В 2005 году проекты MASTER и HAL были выпущены с открытым исходным кодом под названием проекта Seed7. С тех пор новые версии выпускались каждые две-три недели. По состоянию на 08.09.2013 проект Seed7 содержит более 300 000 строк исходного кода и несколько сотен страниц документации.

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

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

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

В определении синтаксиса используется описание структурированного синтаксиса Seed7 (S7SSD). Оператор S7SSD, например

$ syntax expr:. (). +. () равно ->7;

определяет синтаксис +оператора. Стрелка вправо ->описывает ассоциативность : связывание операндов слева направо. С помощью 7определяется приоритет оператора +. Шаблон синтаксиса . (). +. ()вводится и ограничивается точками (.). Без точек шаблон будет () + (). Символ ()- нетерминальный символ, а +- терминальный символ. S7SSD не различает разные нетерминальные символы. Вместо этого он знает только один нетерминальный символ: ().

Семантическое расширение

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

const func complex: (в комплексе: слагаемое1) + (в комплексе: слагаемое2) является функцией результат var комплекс: сумма является сложным.значение; начало sum.re: = summand1.re + summand2.re; sum.im: = summand1.im + summand2.im; end func;
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 08:45:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте