Files
ziffers-python/ziffers/ebnf.py
2022-12-03 01:44:04 +01:00

30 lines
714 B
Python

ebnf = r"""
expr = (number ws?)*
number = factor additive*
additive = ("+"/"-") factor
factor = primary multiplicative*
multiplicative = ("*" / "/") primary
primary = parens / neg / number
parens = "(" number ")"
neg = "-" primary
number = ((~"[0-9]"+ "."? ~"[0-9]"*) / ("." ~"[0-9]"+)) (("e"/"E") ("-"/"+") ~"[0-9]"+)?
ws = ~"\s*"
lpar = "("
rpar = ")"
lbra = "["
rbra = "]"
lcbra = "{"
rcbra = "}"
lt = "<"
gt = ">"
comma = ","
octup = "^"
octdown = "_"
barsign = "|"
plus = "+"
minus = "-"
times = "*"
div = "/"
emptyline = ws+
"""