--- a/ProgramNodeEnumerator.st Wed Apr 20 16:45:21 2005 +0200
+++ b/ProgramNodeEnumerator.st Wed Apr 20 21:47:05 2005 +0200
@@ -61,40 +61,32 @@
"Created: 19.6.1997 / 16:52:06 / cg"
! !
-!ProgramNodeEnumerator methodsFor:'enumeratiion callbacks'!
+!ProgramNodeEnumerator methodsFor:'enumeration callbacks'!
doAssignment:aNode variable:var value:val
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:49:48 / cg"
- "Modified: 19.6.1997 / 16:52:12 / cg"
+ self doNode:val.
!
doBlock:aNode arguments:args body:seq
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:50:12 / cg"
- "Modified: 19.6.1997 / 16:52:16 / cg"
+ seq notNil ifTrue:[
+ self doNode:seq.
+ ]
!
doCascade:aNode receiver:rcvr messages:msgs
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:50:22 / cg"
- "Modified: 19.6.1997 / 16:52:24 / cg"
+ msgs do:[:eachMessage |
+ self doNode:eachMessage
+ ].
!
doLiteral:aNode value:lit
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:50:34 / cg"
- "Modified: 19.6.1997 / 16:52:31 / cg"
!
doMessage:aNode receiver:rcvr selector:sel arguments:args
- ^ self subclassResponsibility
-
- "Modified: 19.6.1997 / 16:52:42 / cg"
+ self doNode:rcvr.
+ args do:[:eachArg |
+ self doNode:eachArg
+ ].
!
doMethod:aNode selector:sel primitive:prim block:block
@@ -112,28 +104,17 @@
!
doPrimitive:aNode code:code primitiveIndex:primNumber
- ^ self subclassResponsibility
!
doReturn:aNode value:value
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:50:54 / cg"
- "Modified: 19.6.1997 / 16:53:07 / cg"
+ self doNode:value
!
doSequence:aNode temporaries:temps statements:stats
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:50:59 / cg"
- "Modified: 19.6.1997 / 16:53:15 / cg"
+ stats do:[:each | self doNode:each ].
!
doVariable:aNode name:nameString
- ^ self subclassResponsibility
-
- "Created: 19.6.1997 / 16:51:06 / cg"
- "Modified: 19.6.1997 / 16:53:21 / cg"
! !
!ProgramNodeEnumerator methodsFor:'private'!
@@ -151,6 +132,16 @@
"Modified: 19.6.1997 / 16:53:47 / cg"
!
+doNodeList:firstNode
+ |node|
+
+ node := firstNode.
+ [ node notNil ] whileTrue:[
+ self doNode:node.
+ node := node nextStatement.
+ ]
+!
+
doNodes:nodeList
^ nodeList do:[:node | self doNode:node]
@@ -167,5 +158,5 @@
!ProgramNodeEnumerator class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ProgramNodeEnumerator.st,v 1.5 2005-04-19 14:30:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ProgramNodeEnumerator.st,v 1.6 2005-04-20 19:47:05 cg Exp $'
! !