--- a/PPPossessiveRepeatingParser.st Fri Oct 03 01:59:10 2014 +0100
+++ b/PPPossessiveRepeatingParser.st Fri Oct 03 02:33:08 2014 +0100
@@ -10,17 +10,17 @@
!PPPossessiveRepeatingParser methodsFor:'parsing'!
-parseOn: aStream
- | start element elements |
- start := aStream position.
+parseOn: aPPContext
+ | memento element elements |
+ memento := aPPContext remember.
elements := OrderedCollection new.
[ elements size < min ] whileTrue: [
- (element := parser parseOn: aStream) isPetitFailure ifTrue: [
- aStream position: start.
+ (element := parser parseOn: aPPContext) isPetitFailure ifTrue: [
+ aPPContext restore: memento.
^ element ].
elements addLast: element ].
[ elements size < max ] whileTrue: [
- (element := parser parseOn: aStream) isPetitFailure
+ (element := parser parseOn: aPPContext) isPetitFailure
ifTrue: [ ^ elements asArray ].
elements addLast: element ].
^ elements asArray