Manual:Results:Nested Lists

まんま

>>> from lepl import *
>>> expr   = Delayed()
>>> number = Digit()[1:,...]
>>> with Separator(Drop(Regexp(r'\s*'))):
...     term    = number | (Drop('(') & expr & Drop(')') > list)
...     muldiv  = Any('*/')
...     factor  = (term & (muldiv & term)[:])
...     addsub  = Any('+-')
...     expr   += factor & (addsub & factor)[:]
...     line    = expr & Eos()
...
>>> line.parse_string('1 + 2 * (3 + 4 - 5)')
['1', '+', '2', '*', ['3', '+', '4', '-', '5']]