Manual:Operators:Spaces

かなり、まんま

>>> from lepl import *
>>> with Separator(Literal(' ')[:]):
...     parser = Optional('a') & Optional('b') & 'c' & Eos()
...
>>> parser.parse("a b c")
['a', ' ', 'b', ' ', 'c']
>>> parser.parse(" b c")
[' ', 'b', ' ', 'c']
>>> parser.parse("a b c ")
['a', ' ', 'b', ' ', 'c', ' ']
>>> with Separator(Literal(' ')[:]):
...     parser = And(Optional('a'), Optional('b'), 'c', Eos())
...
>>> parser.parse("a b c")
>>> parser.parse("abc")
['a', 'b', 'c']
>>> with SmartSeparator2(Literal(' ')[:]):
...     parser = Optional('a') & Optional('b') & 'c' & Eos()
...
>>> parser.parse("abc")
['a', 'b', 'c']
>>> parser.parse("a b c")
['a', ' ', 'b', ' ', 'c']
>>> parser.parse("a b c ")
['a', ' ', 'b', ' ', 'c', ' ']
>>> parser.parse(" b c")