initial checkin
authorClaus Gittinger <cg@exept.de>
Tue, 04 Mar 2014 15:32:55 +0100
changeset 168 9fa394e40830
parent 167 f7d5e10c3fe8
child 169 cba3a51b9704
initial checkin
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 $'
+! !
+