Seed7

Source: Wikipedia, the free encyclopedia.
Seed7
Designed byThomas Mertes
First appeared2005; 19 years ago (2005)
Stable release
2023-05-29 / 316 days ago[1]
OS X, Unix, Windows
LicenseGPL, LGPL (for the runtime library)
Filename extensions.sd7, .s7i
Websiteseed7.sourceforge.net
Major implementations
open source reference implementation
Influenced by
Pascal, Modula-2, Ada, ALGOL 68, C, C++, Java

Seed7 is an

operator symbols. The implementation of Seed7 differs significantly from that of languages with hard-coded
syntax and semantics.

Features

Seed7 supports the

.

Major features include:

Several programming language concepts are generalized:

The Seed7 project includes both an

reflection interfaces from the run-time library to generate a C program, which is subsequently compiled to machine code. Compiled Seed7 programs can have comparable performance to C programs.[4]

Libraries

Seed7 has many libraries, covering areas including

zip, cpio, ar, rpm), character encoding, time and date handling, XML processing, message digests and more.[5] These libraries reduce the need to use unportable operating system features and third-party libraries (which might not always be present) directly. Seed7 libraries contain abstraction layers for hardware, operating system and third-party libraries, e.g. graphic and database libraries. In other words, no changes are needed to move Seed7 programs between different processors or operating systems
.

TLS library

Seed7 has its own implementation of Transport Layer Security.[6] The library includes AES and elliptic-curve cryptography.

Database abstraction API

Seed7 provides a library with a database independent API.[7] Programs can connect to MySQL, MariaDB, SQLite, PostgreSQL, Oracle, Open Database Connectivity (ODBC), Firebird, InterBase, IBM Db2 and SQL Server databases. Independent from the database prepared statements can be created, bind variables can be used, the statements can be executed and result sets can be fetched.

History

Seed7 is based on MASTER, an extensible programming language described in the diploma and doctoral theses of Thomas Mertes.

precompiler, to translate MASTER to Pascal, was proposed, but unimplemented, in the original project. In 1989, development began on an interpreter for MASTER, named HAL. In 2005, the MASTER and HAL projects were released as open source under the Seed7 project name. Since then new versions have been released every two or three weeks. As of version 2021-04-25 the Seed7 project contains more than 500,000 source lines of code
and several hundred pages of documentation.

Extension mechanism

An extension includes two parts: a syntax definition, giving a template for the new syntactic form, and a standard Seed7 function, used to define the semantics.[2]

Syntax definition

The syntax definition uses the Seed7 Structured Syntax Description (S7SSD). A S7SSD statement like

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

specifies the syntax of the +

operator. The right arrow -> describes the associativity: Binding of operands from left to right. With 7 the priority of the + operator is defined. The syntax pattern .(). + .() is introduced and delimited with dots (.). Without dots the pattern is () + (). The symbol () is a nonterminal symbol and + is a terminal symbol.[10] The S7SSD does not distinguish between different nonterminal symbols
. Instead it only knows one nonterminal symbol: ().

Semantic extension

The definition of the + operator for complex numbers is just a function definition:

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;

References

  1. ^ Mertes, Thomas (29 May 2023). "New Seed7 Release 2023-05-29". Retrieved 29 May 2023 – via SourceForge.
  2. ^ a b Daniel Zingaro, "Modern Extensible Languages", SQRL Report 47 McMaster University (October 2007), page 16 (alternate link).
  3. , Springer, 2010, page 166.
  4. ^ Stadfeld, Paul (1 April 2010). "The Quest for the Ultimate Cycle (includes a performance comparison between Python, Seed7 and C)". Archived from the original on 25 October 2013. Retrieved 19 August 2019.
  5. ^ Seed7 libraries
  6. ^ A Transport Layer Security (TLS) library written in Seed7
  7. ^ Database abstraction API
  8. ^ Mertes, Thomas, "Entwurf einer erweiterbaren höheren Programmiersprache", Diploma thesis Vienna University of Technology (1984).(Abstract)
  9. ^ Mertes, Thomas, "Definition einer erweiterbaren höheren Programmiersprache", Doctoral thesis Vienna University of Technology (1986).(Abstract)
  10. ^ David Gudeman (March 26, 2015), "The Seed7 Programming Language" (In Seed7 you can specify a syntax like this)

External links

This page is based on the copyrighted Wikipedia article: Seed7. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy