ProgramNodeEnumerator.st
author Claus Gittinger <cg@exept.de>
Tue, 19 Apr 2005 16:31:12 +0200
changeset 1585 63f4b846bf3d
parent 1570 8ce7594e9b55
child 1591 dd892bb6efa6
permissions -rw-r--r--
*** empty log message ***

"
 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 $'
! !