more ST80 compatibility
authorClaus Gittinger <cg@exept.de>
Thu, 19 Jun 1997 18:38:52 +0200
changeset 542 728300bd8861
parent 541 63f0c6734fb3
child 543 de47f8969fd9
more ST80 compatibility
AssignNd.st
AssignmentNode.st
CascadeNd.st
CascadeNode.st
SelfNode.st
StatNode.st
StatementNode.st
Variable.st
--- 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 $'
 ! !