Non-greedy matching in Treetop/PEG?
peg, regex, treetop
Solution
PEGs are greedy and blind by default, that means they eat as much input as they can and they do not consider what comes afterwards:
`S <- P1* P2` (greedy, blind)
That can be considerably easy fixed though by making use of the ordered choice (and without using lookaheads):
`S <- P1 S / P2` (greedy, non-blind)
`S <- P2 / P1 S` (lazy, non-blind)
Problem
How would I do something like this in Treetop? ``` /.+?;/ ``` It seems like the only way is to do: ``` [^;]+ ';' ``` Which is kind of ugly.. any other way? `.+?` doesn't seem to work..