Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
L3: experiments in aggressive Garbage-collection and interpreter implementation based on the Pratt parser. Uses protocol buffers for serialization, and Judy arrays for fast, sparse arrays/hashtables. Linux and OSX.
branch: master
Failed to load latest commit information.
dmalloc-5.5.2 cleanup
judy-1.0.5 add judy array component
Judy.h add judy array component
JudySort.c add judy array component
Makefile.linux force protoc run before terp building
Makefile.mac transfer to viewable
README latest
addalias.h transfer to viewable
autotag.h transfer to public repos
bool.h transfer to viewable
codepoints.h transfer to public repos
common.Makefile transfer to viewable
compiler.cpp transfer to public repos
compiler.h transfer to public repos
dstaq.cpp transfer to public repos
dstaq.h transfer to public repos
dv.h transfer to public repos
dynamicscope.cpp
dynamicscope.h transfer to public repos
ioprim.cpp transfer to public repos
ioprim.h transfer to public repos
jlmap.cpp transfer to public repos
jlmap.h transfer to public repos
jmemlogger.cpp transfer to public repos
jmemlogger.h transfer to public repos
jtdd.h transfer to public repos
judydup.cpp transfer to public repos
judydup.h transfer to viewable
l3dd.cpp transfer to public repos
l3dd.h transfer to public repos
l3dstaq.cpp transfer to public repos
l3dstaq.h
l3header.h transfer to viewable
l3link.cpp transfer to public repos
l3link.h transfer to public repos
l3matrix.cpp transfer to public repos
l3matrix.h transfer to public repos
l3mq.cpp transfer to public repos
l3mq.h
l3munch.cpp transfer to public repos
l3obj.cpp transfer to public repos
l3obj.h transfer to public repos
l3path.h transfer to public repos
l3pratt.cpp transfer to public repos
l3pratt.h transfer to public repos
l3sexpobj.cpp transfer to public repos
l3sexpobj.h transfer to viewable
l3string.cpp transfer to public repos
l3string.h transfer to public repos
l3throw.h transfer to viewable
l3ts.proto transfer to public repos
l3ts_client.cpp transfer to public repos
l3ts_common.cpp transfer to public repos
l3ts_common.h transfer to viewable
l3ts_server.cpp transfer to public repos
l3ts_server.h transfer to viewable
l3xcep.cpp transfer to public repos
l3xcep.h transfer to public repos
lex_twopointer.cpp transfer to public repos
lex_twopointer.h transfer to public repos
llref.cpp transfer to public repos
llref.h transfer to public repos
loops.cpp transfer to public repos
loops.h transfer to public repos
memcheck memcheck checks a memory log for memory sanity
memscan.h transfer to public repos
merlin.proto transfer to public repos
mq.cpp transfer to public repos
mq.h transfer to public repos
newpassing.l3 latest
objects.cpp transfer to public repos
objects.h transfer to public repos
ostate.h transfer to viewable
qexp.cpp transfer to public repos
qexp.h transfer to public repos
quicktype.cpp transfer to public repos
quicktype.h transfer to public repos
rmkdir.cpp transfer to public repos
rmkdir.h transfer to viewable
serialfac.cpp transfer to public repos
serialfac.h
sermon.cpp transfer to viewable
sermon.h transfer to public repos
symvec.cpp transfer to public repos
symvec.h transfer to public repos
terp.cpp transfer to public repos
terp.h transfer to public repos
test_src_A.l3 test files
test_src_B.l3 test files
test_src_C.l3 test files
tostring.cpp transfer to public repos
tostring.h transfer to public repos
tyse.h transfer to viewable
tyse_tracker.cpp transfer to public repos
tyse_tracker.h transfer to public repos
user_xcep.h transfer to viewable
ut.cpp transfer to public repos
ut.h transfer to public repos
xcep.c transfer to public repos
xcep.h transfer to viewable

README

L3: experiments in aggressive and efficient garbage collection; and in Pratt-parser based interpreter implementation.


Infix notation is parsed by default, using a Pratt parser. See the file newpassing.l3 for the currently working unit tests.  

Prefix notation (Lisp/Scheme style) is also available using the ($functionname arg1 arg2 ...) syntax of starting forms with '($'.

; To run the interpreter: ./terp 
; To start the unit tests within terp: uu




compilation/build notes:

 Originally prototyped the LLVM links with llvm-2.8; later versions of LLVM (2.9, 3.0, etc) probably won't work.
 The LLVM stuff in compiler.cpp can be omitted (it is commented out of the Makefile.mac at the moment).



Something went wrong with that request. Please try again.