# This grammar and its example input demonstrate how the lexer has to
# reset its flush state when a redo is triggered, as the redone input
# may contain another token forcing another proper flush. Which would
# be denied without the reset.

lexeme default =    latm => 1 action => [start,length,value]
:default ::=   	    action => [name,values]

:discard ~ whitespace
whitespace ~ [[:space:]] +

words	::= word +
word	::= LB | <general>
LB    	::= ( '[lb]' )

<general> ::= <general lex>

<general lex>     ~ <general limiter>
<general lex>     ~ <general limiter> <general limiter>
<general lex>     ~ <general limiter> <general middle> <general limiter>
<general limiter> ~ [^\133\135[:space:]]
<general middle>  ~ [^\133\135\n\r\t\f\v] +
