--- a/AssignNd.st Thu Jun 19 18:34:29 1997 +0200
+++ b/AssignNd.st Thu Jun 19 18:38:52 1997 +0200
@@ -72,6 +72,12 @@
"Created: 21.10.1996 / 11:49:01 / cg"
!
+variable
+ ^ variable
+
+ "Created: 19.6.1997 / 17:08:58 / cg"
+!
+
variable:v expression:e
variable := v.
expression := e
@@ -207,5 +213,5 @@
!AssignmentNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Attic/AssignNd.st,v 1.24 1997-06-19 14:57:38 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Attic/AssignNd.st,v 1.25 1997-06-19 16:38:36 cg Exp $'
! !
--- a/AssignmentNode.st Thu Jun 19 18:34:29 1997 +0200
+++ b/AssignmentNode.st Thu Jun 19 18:38:52 1997 +0200
@@ -72,6 +72,12 @@
"Created: 21.10.1996 / 11:49:01 / cg"
!
+variable
+ ^ variable
+
+ "Created: 19.6.1997 / 17:08:58 / cg"
+!
+
variable:v expression:e
variable := v.
expression := e
@@ -207,5 +213,5 @@
!AssignmentNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/AssignmentNode.st,v 1.24 1997-06-19 14:57:38 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/AssignmentNode.st,v 1.25 1997-06-19 16:38:36 cg Exp $'
! !
--- a/CascadeNd.st Thu Jun 19 18:34:29 1997 +0200
+++ b/CascadeNd.st Thu Jun 19 18:38:52 1997 +0200
@@ -61,11 +61,33 @@
nodeDo:anEnumerator
"helper for parse tree walking"
- self halt:'not yet compatible'.
- ^ anEnumerator doCascade:self receiver:receiver messages:argArray
+ "/ sigh; ST/X encodes things differently ...
+
+ |r nd msgs msg|
+
+ msgs := OrderedCollection new.
+
+ r := receiver.
+ [r isKindOf:CascadeNode] whileTrue:[
+ r := r receiver.
+ ].
+ r := r receiver.
+
+ nd := self.
+ [nd isKindOf:CascadeNode] whileTrue:[
+ msg := MessageNode new.
+ msg receiver:r selector:nd selector args:nd args lineno:nd lineNumber.
+ msgs addFirst:msg.
+ nd := nd receiver.
+ ].
+ msg := MessageNode new.
+ msg receiver:r selector:nd selector args:nd args lineno:nd lineNumber.
+ msgs addFirst:msg.
+
+ ^ anEnumerator doCascade:self receiver:r messages:msgs
"Created: 19.6.1997 / 16:39:17 / cg"
- "Modified: 19.6.1997 / 16:40:00 / cg"
+ "Modified: 19.6.1997 / 17:32:47 / cg"
! !
!CascadeNode methodsFor:'evaluating'!
@@ -153,5 +175,5 @@
!CascadeNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Attic/CascadeNd.st,v 1.16 1997-06-19 14:58:12 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Attic/CascadeNd.st,v 1.17 1997-06-19 16:38:48 cg Exp $'
! !
--- a/CascadeNode.st Thu Jun 19 18:34:29 1997 +0200
+++ b/CascadeNode.st Thu Jun 19 18:38:52 1997 +0200
@@ -61,11 +61,33 @@
nodeDo:anEnumerator
"helper for parse tree walking"
- self halt:'not yet compatible'.
- ^ anEnumerator doCascade:self receiver:receiver messages:argArray
+ "/ sigh; ST/X encodes things differently ...
+
+ |r nd msgs msg|
+
+ msgs := OrderedCollection new.
+
+ r := receiver.
+ [r isKindOf:CascadeNode] whileTrue:[
+ r := r receiver.
+ ].
+ r := r receiver.
+
+ nd := self.
+ [nd isKindOf:CascadeNode] whileTrue:[
+ msg := MessageNode new.
+ msg receiver:r selector:nd selector args:nd args lineno:nd lineNumber.
+ msgs addFirst:msg.
+ nd := nd receiver.
+ ].
+ msg := MessageNode new.
+ msg receiver:r selector:nd selector args:nd args lineno:nd lineNumber.
+ msgs addFirst:msg.
+
+ ^ anEnumerator doCascade:self receiver:r messages:msgs
"Created: 19.6.1997 / 16:39:17 / cg"
- "Modified: 19.6.1997 / 16:40:00 / cg"
+ "Modified: 19.6.1997 / 17:32:47 / cg"
! !
!CascadeNode methodsFor:'evaluating'!
@@ -153,5 +175,5 @@
!CascadeNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.16 1997-06-19 14:58:12 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.17 1997-06-19 16:38:48 cg Exp $'
! !
--- a/SelfNode.st Thu Jun 19 18:34:29 1997 +0200
+++ b/SelfNode.st Thu Jun 19 18:38:52 1997 +0200
@@ -51,6 +51,12 @@
!SelfNode methodsFor:'accessing'!
+name
+ ^ 'self'
+
+ "Created: 19.6.1997 / 17:20:22 / cg"
+!
+
value:val
type := #Self.
value := val.
@@ -68,6 +74,16 @@
^ self error:'store into self - cannot happen'
! !
+!SelfNode methodsFor:'enumeration'!
+
+nodeDo:anEnumerator
+ "helper for parse tree walking"
+
+ ^ anEnumerator doVariable:self name:'self'
+
+ "Created: 19.6.1997 / 17:20:02 / cg"
+! !
+
!SelfNode methodsFor:'evaluating'!
evaluate
@@ -93,5 +109,5 @@
!SelfNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/SelfNode.st,v 1.11 1996-04-25 17:08:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/SelfNode.st,v 1.12 1997-06-19 16:38:32 cg Exp $'
! !
--- a/StatNode.st Thu Jun 19 18:34:29 1997 +0200
+++ b/StatNode.st Thu Jun 19 18:38:52 1997 +0200
@@ -124,12 +124,13 @@
stats := OrderedCollection new.
this := self.
[this notNil] whileTrue:[
- stats add:this.
+ stats add:this expression.
this := this nextStatement
].
^ anEnumerator doSequence:self temporaries:#() statements:stats
"Created: 19.6.1997 / 16:45:34 / cg"
+ "Modified: 19.6.1997 / 17:06:47 / cg"
! !
!StatementNode methodsFor:'evaluating'!
@@ -215,5 +216,5 @@
!StatementNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Attic/StatNode.st,v 1.19 1997-06-19 14:57:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Attic/StatNode.st,v 1.20 1997-06-19 16:38:28 cg Exp $'
! !
--- a/StatementNode.st Thu Jun 19 18:34:29 1997 +0200
+++ b/StatementNode.st Thu Jun 19 18:38:52 1997 +0200
@@ -124,12 +124,13 @@
stats := OrderedCollection new.
this := self.
[this notNil] whileTrue:[
- stats add:this.
+ stats add:this expression.
this := this nextStatement
].
^ anEnumerator doSequence:self temporaries:#() statements:stats
"Created: 19.6.1997 / 16:45:34 / cg"
+ "Modified: 19.6.1997 / 17:06:47 / cg"
! !
!StatementNode methodsFor:'evaluating'!
@@ -215,5 +216,5 @@
!StatementNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/StatementNode.st,v 1.19 1997-06-19 14:57:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/StatementNode.st,v 1.20 1997-06-19 16:38:28 cg Exp $'
! !
--- a/Variable.st Thu Jun 19 18:34:29 1997 +0200
+++ b/Variable.st Thu Jun 19 18:38:52 1997 +0200
@@ -94,8 +94,18 @@
^ value
! !
+!Variable methodsFor:'enumeration'!
+
+nodeDo:anEnumerator
+ "helper for parse tree walking"
+
+ ^ anEnumerator doVariable:self name:name
+
+ "Created: 19.6.1997 / 17:11:48 / cg"
+! !
+
!Variable class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Variable.st,v 1.13 1996-04-25 17:09:30 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Variable.st,v 1.14 1997-06-19 16:38:52 cg Exp $'
! !