The Seed7 Homepage is at https://seed7.net/index.htm
Seed7 is a high level general purpose programming language. The Seed7 project is open-source. There is an interpreter and a compiler. The compiler translates Seed7 programs to C programs which are subsequently compiled to machine code.
- As an extensible programming language it supports user defined statements and operators.
- The whole language is not hard-coded in the compiler but defined via include-libraries (syntactically and semantically).
- Types are first class objects (Templates and generics can be defined easily without special syntax).
- All Seed7 functions can be executed at compile-time or at run-time.
- Object orientation supports interfaces and multiple dispatch.
- Static type checking and the absence of automatic casts help to find errors at compile-time.
- There is an automatic memory management that works without a garbage collection process.
- Seed7 is operating system and architecture independent.
- Seed7 programs are source code portable without any need to change the code.
- Exception handling is supported (e.g. an integer overflow raises OVERFLOW_ERROR).
- Source code debugging is supported.
- The types bigInteger and bigRational support numbers of unlimited size.
- Functions, operators and statements can be overloaded.
- There are various predefined types like array, hash, set, struct, color, time, duration, etc.
- Seed7 runs under Linux, MacOS, various Unix versions and Windows.
- Interpreter, compiler and the example programs use the GPL license, while the runtime library uses the LGPL license.
- The libraries provide the same functionality under all supported operating systems.
- Numerous standard libraries allow writing programs without calling functions from third party libraries.
- There is a database independent API, which can connect to MySQL, MariaDB, SQLLite, PostgreSQL, Oracle, ODBC, Firebird, Interbase, Db2, Informix and SQL Server databases.
- There is a 2-D graphic library which uses X11 under Linux, GDI under Windows and JavaScript in the Browser.
- Parser and interpreter are part of the run-time library.
The Seed7 package contains the Seed7 interpreter in source besides documentation files, include files and program examples. The following sub directories exist:
- src The source of the interpreter
- prg Program examples
- lib Include / library files
- doc Documentation files
- bin Executables and runtime libraries
Using the extension several files can be distinguished:
- *.txt Documentation files
- *.sd7 Program example files
- *.s7i Include / library files
- *.dna Include file for the dna program
- *.c C source file
- *.h C include file
For Linux this is quite simple (to compile under other operating systems see seed7/src/read_me.txt). The makefile is prepared for Linux. First make sure that gcc, make and the development packages for X11 and ncurses are installed. Then go to the seed7/src directory and type:
make depend
make
After the compilation the interpreter is linked to the file seed7/prg/s7. The Seed7 compiler (s7c) is compiled with:
make s7c
The compiler executable is copied to the bin directory. To check interpreter and compiler with a test suite (chk_all.sd7) use the command:
make test
Finally Seed7 can be installed with:
sudo make install
To do several compilation attempts in succession you need to execute the command
make clean
before you do make depend again.
The file seed7/src/read_me.txt contains a detailed explanation of the compilation process.
Seed7 supports several operating systems such as Windows, Mac OS X and various Unix variants. How to compile under these operating systems is explained in the file seed7/src/read_me.txt.
After compiling the interpreter you can make the first test. Switch to the seed7/prg directory and type:
./s7 hello
This executes the hello world program which is in the hello.sd7 file. Every file with the .sd7 extension can be executed with the s7 interpreter.
A list of the program files with a short description can be found in the file: prg/files.txt.
The file seed7/src/read_me.txt discusses the compilation process with more detail.
Just send a pull request to the GitHub repository of Seed7. Participation is always welcome. If you send a pull request, it is assumed that your change is released under the GPL (or LGPL for libraries) license.
Greetings Thomas Mertes