PPLazyRepeatingParser.st
changeset 377 6112a403a52d
parent 167 f7d5e10c3fe8
--- a/PPLazyRepeatingParser.st	Fri Oct 03 01:59:10 2014 +0100
+++ b/PPLazyRepeatingParser.st	Fri Oct 03 02:33:08 2014 +0100
@@ -10,22 +10,22 @@
 
 !PPLazyRepeatingParser 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 ].
-	[ self matchesLimitOn: aStream ] whileFalse: [
+	[ self matchesLimitOn: aPPContext ] whileFalse: [
 		elements size < max ifFalse: [
-			aStream position: start.
-			^ PPFailure message: 'overflow' at: start ].
-		element := parser parseOn: aStream.
+			aPPContext restore: memento.
+			^ PPFailure message: 'overflow' context: aPPContext at: memento position ].
+		element := parser parseOn: aPPContext.
 		element isPetitFailure ifTrue: [
-			aStream position: start.
+			aPPContext restore: memento.
 			^ element ].
 		elements addLast: element ].
 	^ elements asArray