Gobble
Simpler Parsing in Python.
Usage
from gobble import *
Basic parsers:
@parser
def natural():
digits = yield character('0123456789').star
return int(''.join(digits))
Alternatives:
@parser
def literal_null():
yield literal('NULL')
return None
literal = natural / literal_null
Optional elements:
@parser
def natural():
sign = yield character('-+').option('+')
factor = {'-': -1, '+': 1}[sign]
value = yield natural
return value * factor
Sequencing with operators:
whitespace = character(' \n\r\t').star
literal_expr = literal << whitespace
Actually running a parser:
value = literal_expr.execute(input_string)
print(value)