What is Lem
It is nothing more than a hobby. I do it simply for the fun,
which sometime leads me to implement strange things
Lem is an object oriented and modular extension programming
language (Lem stands for "Language d'Extension Modulaire" in
french). It has been designed to support
Scripting : It aims at providing functionalities similar to
Application extension : like tcl or guile, Lem can be
embedded within an application. The hosting application can
invoke functions to execute piece of Lem code.
Alternatively, the application can register builtin
functions written in C or C++ which can be
invoked from Lem applications.
The creation of domain specific language (lemsh is such an
Lem features :
It has a syntax inspired from C and lisp.
It provides operator overloading, in fact operator are
syntax sugar for the methods.
It provides object-orientation thorugh class inheritance.
It is at the moment strongly typed. In some sense the type
system is closer from Java than Lisp .
It allows to create domain specific languages throught the
use of the following features :
One can include multiple lexers (The
portion of code which translates the program input in a
set of lexems (or token). )
One can extend the parser to provide adapted syntax for
It supports modularity through
Lem provides garbage collection.
Lem program are compiled in native code or in a bytecode. In
lemsh is the only shell providing compiled
Lem is fast.
- 26/1/2003 : 0.6.3 released
This version :
Fixes unary operator handling
Implements merge of history
includes many fixes
- 26/11/2003 : 0.6.2 released
Initial public version
How to help
They are many way :
Just try Lemsh and give me some feedback.
Provide some ideas (use the mailing list).
Extending it (for instance pick an item in the
To do list
I use Lemsh in my day to day life without too much trouble.
However it has not all the bells and whistles provided by shells
like Bash or Zsh (especially in term of completion and line
Of course, ultimatly, I 'd like to provide something of a
similar level. Moreover, it is in development so it is not as
reliable as a Bash, Zsh ..
A few years ago, I had to write a test suite to test a
system. This task, consisted of writing code mixing Shell, Perl
script and C program.
I had to learn many languages. This langage sharing common
structure (most of langage have a "while" loop.) but having
different syntaxes. Finally, I would have been very happy a
language which could replace C, Bash and Perl ; so, I thought
"let's try" and Lem was born...