lark-action 0.1.5

Creator: bradpython12

Last updated:

Add to Cart

Description:

larkaction 0.1.5

lark-action
Adding semantic actions to Lark parser frontend.
Features:

semantic action support
inline python code
%mkrepl
Use # for comments instead of //.
Use $1, $2, ... to acccess the i-th intermediate result.
Use @1, @2, ... to access their locations(for token only)
Use *1, *2, ... to access the lexeme of tokens(for token only)

(CONFESS: I develop this because the existing tools are crazily shitty.)
Usage
%mkrepl # generate a repl for you; not necessary

# inline python code into the generated parser
%%
def my_func():
print("call myfunc")
%%



start : ESCAPED_STRING -> $1 # '$1' accesses the 1-st component
| "%" start -> my_func()

%import common.WS
%import common.ESCAPED_STRING
%ignore WS

execute command python -m lark_action <grammar.lark> [-- package=""] [--module="mylang"], with default arguments you get 3 generated files: mylang.lark and mylang_raw.py and mylang.py.
You can directly access the generated parser via from mylang import parser.
If %mkrepl is specified, you get a simple repl to check your parser:
python mylang.py
input 'q' and exit.
> % "asd"
call myfunc
None

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.