"{ Package: 'stx:libcomp' }"
Object subclass:#ProgramNodeEnumerator
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'System-Compiler'
!
!ProgramNodeEnumerator class methodsFor:'documentation'!
documentation
"
This is a pure mimicri class.
It is not used by ST/X, but provided to support limited
compatibility for applications which walk codetrees,
knowing internals of ST-80's compiler class hierarchy.
This classes protocol is not (not meant to be) fully covering
the corresponding ST-80's classes protocol. It maps ST-80 messages
to corresponding ST/X messages (as far as possible).
This class was added to allow for the PD goody CodeReview to be filed
into ST/X.
NO WARRANTY and GUARANTEE; this class may be removed without notice.
"
! !
!ProgramNodeEnumerator class methodsFor:'instance creation'!
new
^ super new initialize
"Created: 19.6.1997 / 16:52:06 / cg"
! !
!ProgramNodeEnumerator methodsFor:'enumeratiion 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"
!
doBlock:aNode arguments:args body:seq
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:12 / cg"
"Modified: 19.6.1997 / 16:52:16 / cg"
!
doCascade:aNode receiver:rcvr messages:msgs
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:22 / cg"
"Modified: 19.6.1997 / 16:52:24 / cg"
!
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"
!
doMethod:aNode selector:sel primitive:prim block:block
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:45 / cg"
"Modified: 19.6.1997 / 16:52:54 / cg"
!
doParameter:aNode variable:var type:type
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:50 / cg"
"Modified: 19.6.1997 / 16:53:01 / cg"
!
doReturn:aNode value:value
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:54 / cg"
"Modified: 19.6.1997 / 16:53:07 / cg"
!
doSequence:aNode temporaries:temps statements:stats
^ self subclassResponsibility
"Created: 19.6.1997 / 16:50:59 / cg"
"Modified: 19.6.1997 / 16:53:15 / cg"
!
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'!
collectNodes:nodeList
^ nodeList collect:[:node | self doNode:node]
"Created: 19.6.1997 / 16:51:31 / cg"
"Modified: 19.6.1997 / 16:53:32 / cg"
!
doNode:aNode
^ aNode nodeDo:self
"Modified: 19.6.1997 / 16:53:47 / cg"
!
doNodes:nodeList
^ nodeList do:[:node | self doNode:node]
"Created: 19.6.1997 / 16:51:41 / cg"
"Modified: 19.6.1997 / 16:53:55 / cg"
!
doType:aType
^ aType
"Modified: 19.6.1997 / 16:54:05 / cg"
! !
!ProgramNodeEnumerator class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libcomp/ProgramNodeEnumerator.st,v 1.3 2001-02-01 11:33:39 cg Exp $'
! !