basic grammar
This commit is contained in:
parent
403e98b87c
commit
3523f8a4ad
|
@ -0,0 +1 @@
|
|||
from .parser import parser
|
|
@ -0,0 +1,23 @@
|
|||
from lark import Lark
|
||||
|
||||
grammar = """
|
||||
|
||||
start: attr+
|
||||
|
||||
attr: key ":" value
|
||||
value: roll -> roll
|
||||
| lookup -> lookup
|
||||
|
||||
key: CNAME [("." CNAME)+]
|
||||
?roll: INT "d" INT
|
||||
lookup: CNAME "[" key "]"
|
||||
|
||||
|
||||
%import common.CNAME
|
||||
%import common.INT
|
||||
%import common.WS
|
||||
%ignore WS
|
||||
|
||||
"""
|
||||
|
||||
parser = Lark(grammar, parser='lalr')
|
|
@ -0,0 +1,9 @@
|
|||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
author="Micaiah Parker",
|
||||
name="rulebook",
|
||||
packages=["rulebook"],
|
||||
requirements=["lark-parser"],
|
||||
version="0.1"
|
||||
)
|
|
@ -0,0 +1,7 @@
|
|||
from rulebook import parser
|
||||
|
||||
def test_grammer_roll():
|
||||
assert parser.parse("test: 1d10")
|
||||
|
||||
def test_grammer_lookup():
|
||||
assert parser.parse("test: test[test.test.test]")
|
Loading…
Reference in New Issue