the elj project

Open Source Eiffel Libraries and Applications

(SmartEiffel and ISE Eiffel)


elj Lua: elj Lua interface

Introduction

elj Lua (v 5.0) is an Eiffel interface to the Lua embeddable scripting language library.

Details

From http://www.lua.org/about.html ..

Lua is a powerful light-weight programming language designed for extending applications. Lua is also frequently used as a general-purpose, stand-alone language. Lua is free software.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, interpreted from bytecodes, and has automatic memory management with garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua.

Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, Lua has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, Lua can be regarded as a language framework for building domain- specific languages.

Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

Documentation for the moment is limited to the source code:

and some examples:

Note: lua lib/dll files:

For win32 users, Lua seems relatively tedious to install. A process has been developed for to generate static libraries (lua.lib and lualib.lib) for lcc-win32 .. the upcoming elj 0.8 release will provide geant scripts to automate the lua lib/dll process for commonly available win32 C/C++ compilers. In the meantime, please post a message to elj-users list or contact Geoff for lua install details.

For Linux users, just install the lua library (v 5.0) and install .. it should work out of the box.

elj Project Quick Links
Project Status/Warning (25 July 2003)
Official Downloads:
0.7 Release (20 Jun 03) (announce getting started docs)
Docs: Tutorial (pdf), Style (pdf) Syntax etl3
wxEiffel: wxWindows (ver:2.4.1) (cvs, wxWindows, lists: users dev, news *, wx-c)
Common Classes (cvs)
elj-db: elj database interface
elj FireBird interface (cvs, lists)
elj sqlite (cvs, home, list, news, SQL)
elj SleepyCat interface (cvs, news)
elj mysql interface) (cvs)
elj Postgres interface (cvs, news)
elj btrieve (cvs news)
compression: zlib bzip2/bzlib
elj Lua interface (cvs home list news)
elj libxml2 interface (cvs eg list news)
os: elj win32api interface
Related/Interesting
Eiffel Struggle 2003 (NICE cetus-links ceug)
ewg (Eiffel<->C) (home cvs news)
ePDF (PDF) (home cvs news)
yaesockets (home cvs news)
nenie Eiffel (xml,networking,snmp,DES,..) - (homepage cvs)
Goanna (web services) - (cvs)
mico/E (open source Eiffel CORBA services )
ePosix: posix interface (news)
EiffelOpenGL (sf cvs)
elj-girls: our first application
diuturnal: multiplayer turn-based strategy game (home cvs)
elj Perlish -(cvs examples Perl)
elj Reg Exp -(cvs PCRE)

elj Dependency Links
SmartEiffel (GNU Eiffel Compiler FAQ) - (beta bugs list news *)
ISE Eiffel (downloads) - (list cle faqs)
GOBO Project (lists: dev user commits cvs geant * gexace)
elj Mailing List: (elj-devel elj-users elj-commits)

elj hosted and supported by SourceForge

``.. in open source, software lives on if there are enough believers to keep it alive ..'' (WSJ - 20 Jul 2003)

http://elj.sourceforge.net/projects/other/lua
Dec 04, 2003, 00:26 UTC