--- a/StatNode.st Sat Nov 18 17:59:14 1995 +0100
+++ b/StatNode.st Thu Nov 23 03:15:59 1995 +0100
@@ -11,10 +11,10 @@
"
ParseNode subclass:#StatementNode
- instanceVariableNames:'expression nextStatement'
- classVariableNames:''
- poolDictionaries:''
- category:'System-Compiler-Support'
+ instanceVariableNames:'expression nextStatement'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'System-Compiler-Support'
!
!StatementNode class methodsFor:'documentation'!
@@ -33,14 +33,14 @@
"
!
-version
- ^ '$Header: /cvs/stx/stx/libcomp/Attic/StatNode.st,v 1.11 1995-11-11 15:31:39 cg Exp $'
-!
-
documentation
"
node for parse-trees, representing statements
"
+!
+
+version
+ ^ '$Header: /cvs/stx/stx/libcomp/Attic/StatNode.st,v 1.12 1995-11-23 02:14:55 cg Exp $'
! !
!StatementNode class methodsFor:'instance creation'!
@@ -49,40 +49,16 @@
^ (self basicNew) expression:e
! !
-!StatementNode methodsFor:'evaluating'!
+!StatementNode methodsFor:'accessing'!
-evaluateExpression
- ^ expression evaluate
+expression
+ ^ expression
!
-evaluate
- |lastValue thisStatement|
-
- "this could be done more elegant - but with lots of recursion"
- thisStatement := self.
- [thisStatement notNil] whileTrue:[
- lastValue := thisStatement evaluateExpression.
- thisStatement := thisStatement nextStatement
- ].
- ^ lastValue
-! !
-
-!StatementNode methodsFor:'code generation'!
-
-codeOn:aStream inBlock:b for:aCompiler
- "generate code for this statement"
-
- expression codeOn:aStream inBlock:b for:aCompiler
+expression:e
+ expression := e
!
-codeForSideEffectOn:aStream inBlock:b for:aCompiler
- "generate code for this statement - value not needed"
-
- expression codeForSideEffectOn:aStream inBlock:b for:aCompiler
-! !
-
-!StatementNode methodsFor:'accessing'!
-
last
"return the last statement in a list"
@@ -98,35 +74,48 @@
^ last
!
-nextStatement:s
- nextStatement := s
-!
-
nextStatement
^ nextStatement
!
-expression:e
- expression := e
+nextStatement:s
+ nextStatement := s
+! !
+
+!StatementNode methodsFor:'code generation'!
+
+codeForSideEffectOn:aStream inBlock:b for:aCompiler
+ "generate code for this statement - value not needed"
+
+ expression codeForSideEffectOn:aStream inBlock:b for:aCompiler
!
-expression
- ^ expression
+codeOn:aStream inBlock:b for:aCompiler
+ "generate code for this statement"
+
+ expression codeOn:aStream inBlock:b for:aCompiler
! !
-!StatementNode methodsFor:'queries'!
+!StatementNode methodsFor:'evaluating'!
+
+evaluate
+ |lastValue thisStatement|
-isConstant
- nextStatement notNil ifTrue:[^ false].
- ^ expression isConstant
+ "this could be done more elegant - but with lots of recursion"
+ thisStatement := self.
+ [thisStatement notNil] whileTrue:[
+ lastValue := thisStatement evaluateExpression.
+ thisStatement := thisStatement nextStatement
+ ].
+ ^ lastValue
+!
+
+evaluateExpression
+ ^ expression evaluate
! !
!StatementNode methodsFor:'printing'!
-printOn:aStream indent:i
- expression printOn:aStream indent:i.
-!
-
printAllOn:aStream
self printAllOn:aStream indent:4
!
@@ -144,4 +133,16 @@
].
thisStatement := thisStatement nextStatement
]
+!
+
+printOn:aStream indent:i
+ expression printOn:aStream indent:i.
! !
+
+!StatementNode methodsFor:'queries'!
+
+isConstant
+ nextStatement notNil ifTrue:[^ false].
+ ^ expression isConstant
+! !
+