leonrd / lpegj

Port of LPEG 0.10.1 to Java, and bindings for LuaJ.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LPEG/J

This is a straight port of the LPEG compiler and virtual machine to Java. It also includes a binding to LuaJ, so Lua scripts running under LuaJ can use it as if it were LPEG 0.10.1 (with require "lpegj.luaj.lpeg"), with the caveats below.

Caveats

  • LuaJ does not have a 100% faithful implementation of arithmetic metamethods, so things like 1 - p where p is a pattern do not work; use lpeg.P(1) - p. Things like p + 1 work, though. The file test.lua has been adjusted accordingly.

  • Almost no optimizations yet in the generated patterns, just the simplest identities

  • NO VERIFIER, so you may write patterns that hang and the compiler will not detect it

  • A lot of sanity checking that LPEG does to detect erroneous patterns and captures is missing

As a rule of thumb, if it works in LPEG it should work in LPEG/J, and if it does not work in LPEG it may give a spurious result in LPEG/J. Plans are to do the verifier first, then sanity checking, and the funky optimizations last.

License

The license is the same as Lua.

About

Port of LPEG 0.10.1 to Java, and bindings for LuaJ.


Languages

Language:Java 58.5%Language:Lua 41.5%