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..

Original source