This article will be permanently flagged as inappropriate and made unaccessible to everyone. Are you certain this article is inappropriate? Excessive Violence Sexual Content Political / Social
Email Address:
Article Id: WHEBN0036346048 Reproduction Date:
Seed7 is an extensible general-purpose programming language designed by Thomas Mertes. It is syntactically similar to Pascal and Ada. In addition to many other features it provides an extension mechanism.[1] Seed7 supports the introduction of new syntax and their semantics into the language and it allows new language constructs to be defined using the Seed7 language itself.[2] E.g.: Programmers can introduce syntax and semantic of new statements as well as user defined operator symbols. The implementation of Seed7 differs very much from the implementation of languages with hard-coded syntax and semantic.
Seed7 supports, besides the imperative, object-oriented and generic paradigm, also technologies like call by name, multiple dispatch, function overloading, operator overloading, exception handling and arbitrary-precision arithmetic. Major features include:
Several programming language concepts are generalized:
The Seed7 project includes both an interpreter and a compiler. The interpreter starts programs very quickly. This supports fast program development. The Seed7 compiler uses the parser and reflection interfaces from the run-time library to generate a C program, which is subsequently compiled to machine code. Compiled Seed7 programs can have similar performance as C programs.
Seed7 has many libraries, which cover areas like containers, numeric functions, lexical analysis, file manipulation, networking (sockets, TLS/SSL, HTTP, HTTPS, FTP, etc.), graphics, pixmap and vector fonts, database access (MySQL/MariaDB, SQLite, PostgreSQL, Oracle, ODBC), CGI support, data compression, character encoding, time and date handling, XML processing, message digests and more. This lowers the need to use operating system features and third party libraries 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 necessary, when Seed7 programs are moved between different processors or operating systems.
Seed7 is based on MASTER, an extensible programming language described in the diploma and doctoral theses of Thomas Mertes.[3][4] Most of the original ideas of MASTER, such as user defined statements and operators, can be found in Seed7. A precompiler, to translate MASTER to Pascal, was proposed. But this precompiler was not implemented 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 2013-09-08 the Seed7 project contains more than 300000 lines of code and several hundred pages of documentation.
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.[1]
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. The S7SSD does not distinguish between different nonterminal symbols. Instead it only knows one nonterminal symbol: ().
+
->
7
.(). + .()
.
() + ()
()
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;
Linux kernel, Free software, Debian, Gnu, Unix
Os X, Apple Inc., Steve Jobs, Unix, Operating system
Linux, Gnu, C (programming language), Berkeley Software Distribution, Os X
Java (programming language), C , Compiler, Haskell (programming language), Declarative programming
Linux, Public Domain, Open-source software, Creative Commons, Internet
Python (programming language), Computer graphics, C (programming language), Ada (programming language), Software testing
Open source, Extinction, Simulation, Scientific American, Predation
Proprietary software, Free software, Pascal (programming language), Eth, Oberon (programming language)
C (programming language), Object Pascal, Free Pascal, Algol, Linux
C , Polymorphism (computer science), Java (programming language), Perl 6, Scala (programming language)