# HG changeset patch # User Claus Gittinger # Date 1393943599 -3600 # Node ID 3affa13c455322dd1ce60f63b8fdf71e5253ffb4 # Parent e8984d5abf0f940baf701c93106ea2b1b1ffb7ed initial checkin diff -r e8984d5abf0f -r 3affa13c4553 PPPossessiveRepeatingParser.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PPPossessiveRepeatingParser.st Tue Mar 04 15:33:19 2014 +0100 @@ -0,0 +1,38 @@ +"{ Package: 'stx:goodies/petitparser' }" + +PPRepeatingParser subclass:#PPPossessiveRepeatingParser + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'PetitParser-Parsers' +! + + +!PPPossessiveRepeatingParser methodsFor:'parsing'! + +parseOn: aStream + | start element elements | + start := aStream position. + elements := OrderedCollection new. + [ elements size < min ] whileTrue: [ + (element := parser parseOn: aStream) isPetitFailure ifTrue: [ + aStream position: start. + ^ element ]. + elements addLast: element ]. + [ elements size < max ] whileTrue: [ + (element := parser parseOn: aStream) isPetitFailure + ifTrue: [ ^ elements asArray ]. + elements addLast: element ]. + ^ elements asArray +! ! + +!PPPossessiveRepeatingParser class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPossessiveRepeatingParser.st,v 1.1 2014-03-04 14:33:19 cg Exp $' +! + +version_CVS + ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPossessiveRepeatingParser.st,v 1.1 2014-03-04 14:33:19 cg Exp $' +! ! +