basic grammar

This commit is contained in:
Micaiah Parker 2018-08-19 14:11:41 -04:00
parent 403e98b87c
commit 3523f8a4ad
4 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1 @@
from .parser import parser

23
rulebook/parser.py Normal file
View File

@ -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')

9
setup.py Normal file
View File

@ -0,0 +1,9 @@
from setuptools import setup
setup(
author="Micaiah Parker",
name="rulebook",
packages=["rulebook"],
requirements=["lark-parser"],
version="0.1"
)

7
tests/test_parser.py Normal file
View File

@ -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]")