[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: haxe -> lua compiler
- From: David Manura <dm.lua@...>
- Date: Fri, 2 Oct 2009 23:14:26 -0400
Just want to bring this to attention. caffeine-hx [1] contains what
appears to be an experimental version of haXe [2] supporting compiling
haXe sources to Lua. It is under /trunk/projects/compiler . In
particular, the translator for Lua is implemented in genhllua.ml [3],
an OCaml file. There's some brief notes by the author [4] stating
that he resorted to patching [5] Lua 5.1.3 (a.k.a. "halelua") to
support bitwise opcodes. On examination, the patch also contains a
try/catch/finally extension [6]. (Sidenote: there have been serious
proposals for similar functionality in Lua 5.2.)
Although halelua builds fine, I didn't get their customized haXe to
compile here. There was some error about common.ml being missing.
That file does exist in the haXe mainline, but even after adding it, I
then get an error about File "parser.ml", line 302, characters 27-28:
Parse error: [stream_patt_comp_err_list] expected after ";" (in
[stream_patt]). As said [3], the project is currently dormant unless
others have interest in it.
I brought this up due to some of the recent discussions of porting Lua
to other languages (e.g. C# and Java). Machine translating the Lua C
sources to other languages is likely not practical without introducing
a lot of cruft due to the explicitness of C (e.g. what does this void
pointer represent?). However, I think it's more achievable if one
first manually translates to some intermediate form X that is more
amenable to machine translation. Something like haXe might be that
intermediate form. One one occasion, I used m4 for X, so that, for
example, METHOD_CALL(object, name) would expand to object.name() when
generating C++ and $object->name() when generating Perl. Lisp may
have been more suitable.
[1] http://code.google.com/p/caffeine-hx
[2] http://haxe.org/doc/intro
[3] http://code.google.com/p/caffeine-hx/source/browse/trunk/projects/compiler/haxe/genhllua.ml
[4] http://lists.motion-twin.com/pipermail/haxe/2009-March/023386.html
[5] http://code.google.com/p/caffeine-hx/source/browse/#svn/trunk/projects/halelua
[6] http://code.google.com/p/caffeine-hx/source/browse/trunk/projects/halelua/stdlib/HLLString.lua#81