• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

bin/H25-Dec-2021-1210

doc/H03-May-2022-19,67818,315

lib/H25-Dec-2021-169,409153,782

prg/H03-May-2022-208,190197,348

src/H03-May-2022-192,016140,597

COPYINGH A D07-Aug-200717.6 KiB340281

LGPLH A D21-Jul-201225.8 KiB503418

README.mdH A D02-Aug-20206.3 KiB9459

README.md

1## Welcome to the world of Seed7
2
3Seed7 is a general purpose programming language described at the [Seed7 Homepage](http://seed7.sourceforge.net/index.htm).
4
5Seed7 is a higher level language compared to Ada, C++ and Java. The Seed7 [interpreter](http://seed7.sourceforge.net/faq.htm#interpreter) and the [example programs](http://seed7.sourceforge.net/scrshots/index.htm) are open-source software. There is also an open-source Seed7 [compiler](http://seed7.sourceforge.net/scrshots/s7c.htm). The compiler translates Seed7 programs to C programs which are subsequently compiled to machine code.
6
7## Features of Seed7
8
9* As an [extensible programming language](http://seed7.sourceforge.net/faq.htm#extensible_programming) it supports user defined [statements](http://seed7.sourceforge.net/examples/declstat.htm) and [operators](http://seed7.sourceforge.net/examples/operator.htm).
10* Types are first class objects ([Templates and generics](http://seed7.sourceforge.net/examples/for_decl.htm) can be defined easily without special syntax).
11* Predefined constructs like arrays or [for-loops](http://seed7.sourceforge.net/examples/declstat.htm) are defined in libraries.
12* [Object orientation](http://seed7.sourceforge.net/manual/objects.htm) supports interfaces and [multiple dispatch](http://seed7.sourceforge.net/faq.htm#multiple_dispatch).
13* [Static type checking](http://seed7.sourceforge.net/faq.htm#static_type_checking) and the absence of [automatic casts](http://seed7.sourceforge.net/faq.htm#automatic_casts) help to find errors at compile-time.
14* There is an [automatic memory management](http://seed7.sourceforge.net/faq.htm#garbage_collection) that works without a garbage collection process.
15* [Exception handling](http://seed7.sourceforge.net/manual/errors.htm#Exceptions) and [source code debugging](http://seed7.sourceforge.net/manual/errors.htm#Stack_trace) are supported.
16* If an integer computation [overflows](http://seed7.sourceforge.net/faq.htm#integer_overflow) the exception [OVERFLOW\_ERROR](http://seed7.sourceforge.net/manual/errors.htm#OVERFLOW_ERROR) is raised.
17* Numbers which have unlimited size are provided with the types [bigInteger](http://seed7.sourceforge.net/manual/types.htm#bigInteger) and [bigRational](http://seed7.sourceforge.net/manual/types.htm#bigRational).
18* Functions, operators and statements can be [overloaded](http://seed7.sourceforge.net/faq.htm#overloading).
19* There are various [predefined types](http://seed7.sourceforge.net/manual/types.htm) like [array](http://seed7.sourceforge.net/manual/types.htm#array), [hash](http://seed7.sourceforge.net/manual/types.htm#hash), [set](http://seed7.sourceforge.net/manual/types.htm#set), [struct](http://seed7.sourceforge.net/manual/types.htm#struct), [color](http://seed7.sourceforge.net/manual/types.htm#color), [time](http://seed7.sourceforge.net/manual/types.htm#time), [duration](http://seed7.sourceforge.net/manual/types.htm#duration), etc.
20* Seed7 programs are [source code portable](http://seed7.sourceforge.net/faq.htm#portable) without any need to change the code.
21* Seed7 provides a [database independent API](http://seed7.sourceforge.net/faq.htm#database_access), which can connect to MySQL, MariaDB, SQLLite, PostgreSQL, Oracle, ODBC, Firebird, Interbase, Db2 and SQL Server databases databases.
22* Seed7 runs under Linux, various Unix versions and Windows.
23* The interpreter and the example programs use the GPL license, while the runtime library uses the LGPL license.
24
25## What is contained in this package
26
27The Seed7 package contains the Seed7 interpreter in source besides documentation files, include files and program examples. The following sub directories exist:
28
29* src     The source of the interpreter
30* prg    Program examples
31* lib      Include / library files
32* doc    Documentation files
33* bin     Executables and runtime libraries
34
35Using the extension several files can be distinguished:
36
37* \*.txt      Documentation files
38* \*.sd7    Program example files
39* \*.s7i     Include / library files
40* \*.dna   Include file for the dna program
41* \*.c        C source file
42* \*.h       C include file
43
44## How to compile the interpreter
45
46For Linux this is quite simple (to compile under other operating systems see [seed7/src/read\_me.txt](https://github.com/ThomasMertes/seed7/blob/master/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:
47
48    make depend
49    make
50
51After the compilation the interpreter is linked to the file seed7/prg/s7. The Seed7 compiler (s7c) is compiled with:
52
53    make s7c
54
55The compiler executable is copied to the bin directory. To check interpreter and compiler with a test suite (chk\_all.sd7) use the command:
56
57    make test
58
59Finally Seed7 can be installed with:
60
61    sudo make install
62
63To do several compilation attempts in succession you need to execute the command
64
65    make clean
66
67before you do `make depend` again.
68
69The file [seed7/src/read\_me.txt](https://github.com/ThomasMertes/seed7/blob/master/src/read_me.txt) contains a detailed explanation of the compilation process.
70
71## How to compile under other operating systems
72
73Seed7 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](https://github.com/ThomasMertes/seed7/blob/master/src/read_me.txt).
74
75## How to execute a program
76
77After compiling the interpreter you can make the first test. Switch to the seed7/prg directory and type:
78
79    ./s7 hello
80
81This 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.
82
83A list of the program files with a short description can be found in the file: [prg/files.txt](https://github.com/ThomasMertes/seed7/blob/master/prg/files.txt).
84
85## What to do when there are problems with the compilation
86
87The file [seed7/src/read\_me.txt](https://github.com/ThomasMertes/seed7/blob/master/src/read_me.txt) discusses the compilation process with more detail.
88
89## How to send a patch
90
91Just 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.
92
93Greetings Thomas Mertes
94