diff -r f7d5e10c3fe8 -r 9fa394e40830 PPLimitedRepeatingParser.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PPLimitedRepeatingParser.st Tue Mar 04 15:32:55 2014 +0100 @@ -0,0 +1,54 @@ +"{ Package: 'stx:goodies/petitparser' }" + +PPRepeatingParser subclass:#PPLimitedRepeatingParser + instanceVariableNames:'limit' + classVariableNames:'' + poolDictionaries:'' + category:'PetitParser-Parsers' +! + + +!PPLimitedRepeatingParser class methodsFor:'instance creation'! + +on: aParser limit: aLimitParser + ^ (self on: aParser) setLimit: aLimitParser +! ! + +!PPLimitedRepeatingParser methodsFor:'accessing'! + +children + ^ Array with: parser with: limit +! + +limit + "Answer the parser that limits (or ends) this repetition." + + ^ limit +! ! + +!PPLimitedRepeatingParser methodsFor:'initialization'! + +setLimit: aParser + limit := aParser +! ! + +!PPLimitedRepeatingParser methodsFor:'private'! + +matchesLimitOn: aStream + | element position | + position := aStream position. + element := limit parseOn: aStream. + aStream position: position. + ^ element isPetitFailure not +! ! + +!PPLimitedRepeatingParser class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLimitedRepeatingParser.st,v 1.1 2014-03-04 14:32:55 cg Exp $' +! + +version_CVS + ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPLimitedRepeatingParser.st,v 1.1 2014-03-04 14:32:55 cg Exp $' +! ! +