"{ Package: 'stx:goodies/petitparser' }"
PPLimitedRepeatingParser subclass:#PPLazyRepeatingParser
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'PetitParser-Parsers'
!
!PPLazyRepeatingParser 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 ].
[ self matchesLimitOn: aStream ] whileFalse: [
elements size < max ifFalse: [
aStream position: start.
^ PPFailure message: 'overflow' at: start ].
element := parser parseOn: aStream.
element isPetitFailure ifTrue: [
aStream position: start.
^ element ].
elements addLast: element ].
^ elements asArray
! !
!PPLazyRepeatingParser class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLazyRepeatingParser.st,v 1.1 2014-03-04 14:32:47 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLazyRepeatingParser.st,v 1.1 2014-03-04 14:32:47 cg Exp $'
! !