"
COPYRIGHT (c) 2004 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
"{ Package: 'stx:libcomp' }"
Object subclass:#ProgramNodeEnumerator
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'System-Compiler'
!
!ProgramNodeEnumerator class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2004 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
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"
!
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"
!
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.5 2005-04-19 14:30:56 cg Exp $'
! !