PPSequenceParser.st
changeset 377 6112a403a52d
parent 180 48a6757d5f01
child 421 7e08b31e0dae
--- a/PPSequenceParser.st	Fri Oct 03 01:59:10 2014 +0100
+++ b/PPSequenceParser.st	Fri Oct 03 02:33:08 2014 +0100
@@ -8,46 +8,6 @@
 !
 
 
-!PPSequenceParser methodsFor:'*petitanalyzer-private'!
-
-cycleSet: aDictionary
-	| firstSet |
-	1 to: parsers size do: [ :index |
-		firstSet := aDictionary at: (parsers at: index).
-		(firstSet anySatisfy: [ :each | each isNullable ])
-			ifFalse: [ ^ parsers copyFrom: 1 to: index ] ].
-	^ parsers
-!
-
-firstSets: aFirstDictionary into: aSet
-	| nullable |
-	parsers do: [ :parser |
-		nullable := false.
-		(aFirstDictionary at: parser) do: [ :each |
-			each isNullable
-				ifTrue: [ nullable := true ]
-				ifFalse: [ aSet add: each ] ].
-		nullable
-			ifFalse: [ ^ self ] ].
-	aSet add: PPSentinel instance
-!
-
-followSets: aFollowDictionary firstSets: aFirstDictionary into: aSet
-	parsers keysAndValuesDo: [ :index :parser |
-		| followSet firstSet |
-		followSet := aFollowDictionary at: parser.
-		index = parsers size
-			ifTrue: [ followSet addAll: aSet ]
-			ifFalse: [
-				(self class withAll: (parsers 
-					copyFrom: index + 1 to: parsers size))
-						firstSets: aFirstDictionary
-						into: (firstSet := IdentitySet new).
-				(firstSet anySatisfy: [ :each | each isNullable ])
-					ifTrue: [ followSet addAll: aSet ].
-				followSet addAll: (firstSet 
-					reject: [ :each | each isNullable ]) ] ]
-! !
 
 !PPSequenceParser methodsFor:'operations'!
 
@@ -74,17 +34,17 @@
 
 !PPSequenceParser methodsFor:'parsing'!
 
-parseOn: aStream
+parseOn: aPPContext
 	"This is optimized code that avoids unnecessary block activations, do not change."
 	
-	| start elements element |
-	start := aStream position.
+	| memento elements element |
+	memento := aPPContext remember.
 	elements := Array new: parsers size.
 	1 to: parsers size do: [ :index |
 		element := (parsers at: index) 
-			parseOn: aStream.
+			parseOn: aPPContext.
 		element isPetitFailure ifTrue: [
-			aStream position: start.
+			aPPContext restore: memento.
 			^ element ].
 		elements at: index put: element ].
 	^ elements