compiler/PPCSequenceNode.st
changeset 438 20598d7ce9fa
parent 422 116d2b2af905
child 452 9f4558b3be66
--- a/compiler/PPCSequenceNode.st	Tue Apr 21 17:20:11 2015 +0100
+++ b/compiler/PPCSequenceNode.st	Thu Apr 30 23:43:14 2015 +0200
@@ -79,29 +79,6 @@
 		guard compileGuard: compiler.
 		compiler addOnLine: 'ifFalse: [ ^ self error ].'
 	].
-!
-
-compileWith: compiler effect: effect id: id
-	compiler startMethod: id.
-	compiler addVariable: 'retval'.
-	compiler addVariable: 'element'.
-	compiler addVariable: 'memento'.			
-	compiler add: (compiler smartRemember: self).
-	compiler add: 'retval := Array new: ', children size asString, '.'.
-	self addGuard: compiler id: id.
-
-"	Halt if: [ self name = #qualifiedName ]."
-
-	(1 to: children size) do: [ :idx  | |child|
-		child := children at: idx.
-		compiler add: 'element := '.
-		compiler callOnLine: (child compileWith: compiler).
-	
-		compiler add: 'error ifTrue: [ ', (compiler smartRestore: self) ,' ^ failure ].'.
-		compiler add: 'retval at: ', idx asString, ' put: element.'.
-	].
-	compiler add: '^ retval'.
- ^ compiler stopMethod.
 ! !
 
 !PPCSequenceNode methodsFor:'first follow next'!
@@ -124,13 +101,9 @@
 					reject: [ :each | each isNullable ]) ] ]
 ! !
 
-!PPCSequenceNode methodsFor:'optimizing'!
+!PPCSequenceNode methodsFor:'visiting'!
 
-asFast
-	^ PPCTokenSequenceNode new
-		children: children;
-		name: self name;
-		properties: properties;
-		yourself
+accept: visitor
+	^ visitor visitSequenceNode: self
 ! !