Non-greedy matching in Treetop/PEG?
问题 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.. 回答1: 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