Gene is an experimental programming language based on
EBNF (such
as COCO/L) and procedural languages (like C++). It
is
therefor ideally suited for applications that process a lot of
sequential input and output such as scanners, LL(1) parsers and data generators.
Gene also supports container objects (objects that
manage a list of other objects such as arrays, linked lists, queues,
relation tables,...) and cursors which can be compared to SQL cursors,
except they do not point to a record set, but to a container.
Cursors, like in sql, also have positional information.
For a more detailled overview of what gene is, please read
this
or go to the
homepage
of gene.
Current goals are:
- Move to the .net environment
- Make it stable for general
use
Gene is currently fully working, as such it is able to compile itself.
Gene is therefor written in itself. A C++ compiler
is still
needed to compile the generated code. The currently stable version requires a Borland compiler.
A lot of work is currently being done. The compiler is being
moved to the .net platform. Because of this, some features have
been changed, extended or removed. For instance, Gene now
supports generics, which overlapped with the 'container' principle
and was therefor removed. Cursors however are still available.
Automations have also been removed because of code complexity
(the current implementation was somewhat unstable and was a nightmare
for error handling). This technique will probably be moved into a
real preprocessor. The include system has also been changed in
order to better fit into the visual studio environment. New features
include delegates and namespaces. A visual studio language
package is also in the pipe line.
To get started, you need to get the source, libraries and compiler,
which can be found in the
dowload
section. For the latest sources, please use subversion.
Here,
you can find an explanation for getting started.
Note: To compile Gene, you will need to have the gene common library
which can be found
here.
This is a seperate project cause it is distributed under a different
licence (the Lesser GNU GPL).