generate selector symbols late (when compiling or evaluating)
authorClaus Gittinger <cg@exept.de>
Thu, 24 Jun 1999 00:17:55 +0200
changeset 861 ccaa0ba5e7af
parent 860 bd24ce0568d9
child 862 2e3aefb24308
generate selector symbols late (when compiling or evaluating) to avoid generating by parsing alone (syntaxHighlighter)
CascadeNd.st
CascadeNode.st
MessageNd.st
MessageNode.st
UnaryNd.st
UnaryNode.st
--- a/CascadeNd.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/CascadeNd.st	Thu Jun 24 00:17:55 1999 +0200
@@ -95,14 +95,16 @@
 evaluate
     |t argValueArray|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	^ super evaluate
+        ^ super evaluate
     ].
 
     t := receiver evaluateForCascade.
     argArray isNil ifTrue:[
-	t perform:selector.
-	^ t
+        t perform:selector.
+        ^ t
     ].
     argValueArray := argArray collect:[:arg | arg evaluate].
     ^ t perform:selector withArguments:argValueArray
@@ -111,14 +113,15 @@
 evaluateForCascade
     |t argValueArray|
 
+    selector := selector asSymbol.
     receiver isSuper ifTrue:[
-	^ super evaluateForCascade
+        ^ super evaluateForCascade
     ].
 
     t := receiver evaluateForCascade.
     argArray isNil ifTrue:[
-	t perform:selector.
-	^ t
+        t perform:selector.
+        ^ t
     ].
     argValueArray := argArray collect:[:arg | arg evaluate]. 
     t perform:selector withArguments:argValueArray.
@@ -183,5 +186,5 @@
 !CascadeNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/CascadeNd.st,v 1.19 1999-02-26 12:13:31 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/CascadeNd.st,v 1.20 1999-06-23 22:17:55 cg Exp $'
 ! !
--- a/CascadeNode.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/CascadeNode.st	Thu Jun 24 00:17:55 1999 +0200
@@ -95,14 +95,16 @@
 evaluate
     |t argValueArray|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	^ super evaluate
+        ^ super evaluate
     ].
 
     t := receiver evaluateForCascade.
     argArray isNil ifTrue:[
-	t perform:selector.
-	^ t
+        t perform:selector.
+        ^ t
     ].
     argValueArray := argArray collect:[:arg | arg evaluate].
     ^ t perform:selector withArguments:argValueArray
@@ -111,14 +113,15 @@
 evaluateForCascade
     |t argValueArray|
 
+    selector := selector asSymbol.
     receiver isSuper ifTrue:[
-	^ super evaluateForCascade
+        ^ super evaluateForCascade
     ].
 
     t := receiver evaluateForCascade.
     argArray isNil ifTrue:[
-	t perform:selector.
-	^ t
+        t perform:selector.
+        ^ t
     ].
     argValueArray := argArray collect:[:arg | arg evaluate]. 
     t perform:selector withArguments:argValueArray.
@@ -183,5 +186,5 @@
 !CascadeNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.19 1999-02-26 12:13:31 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.20 1999-06-23 22:17:55 cg Exp $'
 ! !
--- a/MessageNd.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/MessageNd.st	Thu Jun 24 00:17:55 1999 +0200
@@ -296,12 +296,16 @@
 
 receiver:r selector:s args:a lineno:l
     receiver := r.
-    selector := s asSymbol.
+    selector := s asSymbolIfInterned ? s.
     argArray := a.
     lineNr := l.
     self checkInlinability.
 
     "Modified: 2.7.1997 / 17:01:24 / cg"
+
+
+
+
 !
 
 selector
@@ -1559,6 +1563,8 @@
 
     |nargs isBuiltIn code codeL litIndex cls clsLitIndex isSuper realReceiver|
 
+    selector := selector asSymbol.
+
     realReceiver := self realReceiver.
     isSuper := realReceiver isSuper.
 
@@ -2374,39 +2380,41 @@
 evaluate
     |r nargs argValueArray class|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	r := receiver value.
-	receiver isHere ifTrue:[
-	    class := receiver definingClass.
-	] ifFalse:[
-	    class := receiver definingClass superclass.
-	].
-	argArray notNil ifTrue:[
-	    argValueArray := argArray collect:[:arg | arg evaluate].
-	] ifFalse:[
-	    argValueArray := #()
-	].
-	^ r perform:selector inClass:class withArguments:argValueArray
+        r := receiver value.
+        receiver isHere ifTrue:[
+            class := receiver definingClass.
+        ] ifFalse:[
+            class := receiver definingClass superclass.
+        ].
+        argArray notNil ifTrue:[
+            argValueArray := argArray collect:[:arg | arg evaluate].
+        ] ifFalse:[
+            argValueArray := #()
+        ].
+        ^ r perform:selector inClass:class withArguments:argValueArray
     ].
 
 
     argArray isNil ifTrue:[
-	^ (receiver evaluate) perform:selector
+        ^ (receiver evaluate) perform:selector
     ].
     nargs := argArray size.
     (nargs == 1) ifTrue:[
-	^ (receiver evaluate) perform:selector with:(argArray at:1) evaluate
+        ^ (receiver evaluate) perform:selector with:(argArray at:1) evaluate
     ].
     (nargs == 2) ifTrue:[
-	^ (receiver evaluate) perform:selector
-				 with:(argArray at:1) evaluate
-				 with:(argArray at:2) evaluate
+        ^ (receiver evaluate) perform:selector
+                                 with:(argArray at:1) evaluate
+                                 with:(argArray at:2) evaluate
     ].
     (nargs == 3) ifTrue:[
-	^ (receiver evaluate) perform:selector
-				 with:(argArray at:1) evaluate
-				 with:(argArray at:2) evaluate
-				 with:(argArray at:3) evaluate
+        ^ (receiver evaluate) perform:selector
+                                 with:(argArray at:1) evaluate
+                                 with:(argArray at:2) evaluate
+                                 with:(argArray at:3) evaluate
     ].
     r := receiver evaluate.
     argValueArray := argArray collect:[:arg | arg evaluate].
@@ -2416,41 +2424,43 @@
 evaluateForCascade
     |r nargs argValueArray class|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	r := receiver value.
-	class := receiver definingClass.
-	receiver isHere ifFalse:[
-	    class := class superclass.
-	].
-	argArray notNil ifTrue:[
-	    argValueArray := argArray collect:[:arg | arg evaluate].
-	] ifFalse:[
-	    argValueArray := #()
-	].
-	r perform:selector inClass:class withArguments:argValueArray.
-	^ r
+        r := receiver value.
+        class := receiver definingClass.
+        receiver isHere ifFalse:[
+            class := class superclass.
+        ].
+        argArray notNil ifTrue:[
+            argValueArray := argArray collect:[:arg | arg evaluate].
+        ] ifFalse:[
+            argValueArray := #()
+        ].
+        r perform:selector inClass:class withArguments:argValueArray.
+        ^ r
     ].
 
     r := receiver evaluate.
     argArray isNil ifTrue:[
-	r perform:selector.
-	^ r
+        r perform:selector.
+        ^ r
     ].
     nargs := argArray size.
     (nargs == 1) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate.
+        ^ r
     ].
     (nargs == 2) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate
-			   with:(argArray at:2) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate
+                           with:(argArray at:2) evaluate.
+        ^ r
     ].
     (nargs == 3) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate
-			   with:(argArray at:2) evaluate
-			   with:(argArray at:3) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate
+                           with:(argArray at:2) evaluate
+                           with:(argArray at:3) evaluate.
+        ^ r
     ].
     argValueArray := argArray collect:[:arg | arg evaluate].
     r perform:selector withArguments:argValueArray.
@@ -2585,5 +2595,5 @@
 !MessageNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.93 1999-06-17 17:13:46 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.94 1999-06-23 22:17:01 cg Exp $'
 ! !
--- a/MessageNode.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/MessageNode.st	Thu Jun 24 00:17:55 1999 +0200
@@ -296,12 +296,16 @@
 
 receiver:r selector:s args:a lineno:l
     receiver := r.
-    selector := s asSymbol.
+    selector := s asSymbolIfInterned ? s.
     argArray := a.
     lineNr := l.
     self checkInlinability.
 
     "Modified: 2.7.1997 / 17:01:24 / cg"
+
+
+
+
 !
 
 selector
@@ -1559,6 +1563,8 @@
 
     |nargs isBuiltIn code codeL litIndex cls clsLitIndex isSuper realReceiver|
 
+    selector := selector asSymbol.
+
     realReceiver := self realReceiver.
     isSuper := realReceiver isSuper.
 
@@ -2374,39 +2380,41 @@
 evaluate
     |r nargs argValueArray class|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	r := receiver value.
-	receiver isHere ifTrue:[
-	    class := receiver definingClass.
-	] ifFalse:[
-	    class := receiver definingClass superclass.
-	].
-	argArray notNil ifTrue:[
-	    argValueArray := argArray collect:[:arg | arg evaluate].
-	] ifFalse:[
-	    argValueArray := #()
-	].
-	^ r perform:selector inClass:class withArguments:argValueArray
+        r := receiver value.
+        receiver isHere ifTrue:[
+            class := receiver definingClass.
+        ] ifFalse:[
+            class := receiver definingClass superclass.
+        ].
+        argArray notNil ifTrue:[
+            argValueArray := argArray collect:[:arg | arg evaluate].
+        ] ifFalse:[
+            argValueArray := #()
+        ].
+        ^ r perform:selector inClass:class withArguments:argValueArray
     ].
 
 
     argArray isNil ifTrue:[
-	^ (receiver evaluate) perform:selector
+        ^ (receiver evaluate) perform:selector
     ].
     nargs := argArray size.
     (nargs == 1) ifTrue:[
-	^ (receiver evaluate) perform:selector with:(argArray at:1) evaluate
+        ^ (receiver evaluate) perform:selector with:(argArray at:1) evaluate
     ].
     (nargs == 2) ifTrue:[
-	^ (receiver evaluate) perform:selector
-				 with:(argArray at:1) evaluate
-				 with:(argArray at:2) evaluate
+        ^ (receiver evaluate) perform:selector
+                                 with:(argArray at:1) evaluate
+                                 with:(argArray at:2) evaluate
     ].
     (nargs == 3) ifTrue:[
-	^ (receiver evaluate) perform:selector
-				 with:(argArray at:1) evaluate
-				 with:(argArray at:2) evaluate
-				 with:(argArray at:3) evaluate
+        ^ (receiver evaluate) perform:selector
+                                 with:(argArray at:1) evaluate
+                                 with:(argArray at:2) evaluate
+                                 with:(argArray at:3) evaluate
     ].
     r := receiver evaluate.
     argValueArray := argArray collect:[:arg | arg evaluate].
@@ -2416,41 +2424,43 @@
 evaluateForCascade
     |r nargs argValueArray class|
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	r := receiver value.
-	class := receiver definingClass.
-	receiver isHere ifFalse:[
-	    class := class superclass.
-	].
-	argArray notNil ifTrue:[
-	    argValueArray := argArray collect:[:arg | arg evaluate].
-	] ifFalse:[
-	    argValueArray := #()
-	].
-	r perform:selector inClass:class withArguments:argValueArray.
-	^ r
+        r := receiver value.
+        class := receiver definingClass.
+        receiver isHere ifFalse:[
+            class := class superclass.
+        ].
+        argArray notNil ifTrue:[
+            argValueArray := argArray collect:[:arg | arg evaluate].
+        ] ifFalse:[
+            argValueArray := #()
+        ].
+        r perform:selector inClass:class withArguments:argValueArray.
+        ^ r
     ].
 
     r := receiver evaluate.
     argArray isNil ifTrue:[
-	r perform:selector.
-	^ r
+        r perform:selector.
+        ^ r
     ].
     nargs := argArray size.
     (nargs == 1) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate.
+        ^ r
     ].
     (nargs == 2) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate
-			   with:(argArray at:2) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate
+                           with:(argArray at:2) evaluate.
+        ^ r
     ].
     (nargs == 3) ifTrue:[
-	r perform:selector with:(argArray at:1) evaluate
-			   with:(argArray at:2) evaluate
-			   with:(argArray at:3) evaluate.
-	^ r
+        r perform:selector with:(argArray at:1) evaluate
+                           with:(argArray at:2) evaluate
+                           with:(argArray at:3) evaluate.
+        ^ r
     ].
     argValueArray := argArray collect:[:arg | arg evaluate].
     r perform:selector withArguments:argValueArray.
@@ -2585,5 +2595,5 @@
 !MessageNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.93 1999-06-17 17:13:46 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.94 1999-06-23 22:17:01 cg Exp $'
 ! !
--- a/UnaryNd.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/UnaryNd.st	Thu Jun 24 00:17:55 1999 +0200
@@ -238,8 +238,10 @@
 evaluate
     "evaluate the expression represented by the receiver"
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	^ super evaluate
+        ^ super evaluate
     ].
     ^ (receiver evaluate) perform:selector
 ! !
@@ -282,5 +284,5 @@
 !UnaryNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.26 1999-02-03 11:57:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.27 1999-06-23 22:16:51 cg Exp $'
 ! !
--- a/UnaryNode.st	Thu Jun 24 00:16:33 1999 +0200
+++ b/UnaryNode.st	Thu Jun 24 00:17:55 1999 +0200
@@ -238,8 +238,10 @@
 evaluate
     "evaluate the expression represented by the receiver"
 
+    selector := selector asSymbol.
+
     receiver isSuper ifTrue:[
-	^ super evaluate
+        ^ super evaluate
     ].
     ^ (receiver evaluate) perform:selector
 ! !
@@ -282,5 +284,5 @@
 !UnaryNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.26 1999-02-03 11:57:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.27 1999-06-23 22:16:51 cg Exp $'
 ! !