VarNode.st
changeset 140 1ef1d1395146
parent 135 aa4f7b8f121e
child 148 ef0e604209ec
--- a/VarNode.st	Sat Nov 18 17:59:14 1995 +0100
+++ b/VarNode.st	Thu Nov 23 03:15:59 1995 +0100
@@ -11,10 +11,10 @@
 "
 
 PrimaryNode subclass:#VariableNode
-       instanceVariableNames:'name token selfValue selfClass index block'
-       classVariableNames:''
-       poolDictionaries:''
-       category:'System-Compiler-Support'
+	 instanceVariableNames:'name token selfValue selfClass index block'
+	 classVariableNames:''
+	 poolDictionaries:''
+	 category:'System-Compiler-Support'
 !
 
 !VariableNode class methodsFor:'documentation'!
@@ -33,26 +33,18 @@
 "
 !
 
-version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/VarNode.st,v 1.12 1995-11-11 15:31:46 cg Exp $'
-!
-
 documentation
 "
     node for parse-trees, representing variables
 "
+!
+
+version
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/VarNode.st,v 1.13 1995-11-23 02:15:59 cg Exp $'
 ! !
 
 !VariableNode class methodsFor:'instance creation'!
 
-type:t token:tok
-    ^ (self basicNew) type:t token:tok
-!
-
-type:t name:n
-    ^ (self basicNew) type:t name:n
-!
-
 type:t class:class name:n
     ^ (self basicNew) type:t class:class name:n
 !
@@ -61,24 +53,32 @@
     ^ (self basicNew) type:t index:i selfValue:s
 !
 
-type:t name:n value:val
-    ^ (self basicNew) type:t name:n value:val
+type:t name:n
+    ^ (self basicNew) type:t name:n
+!
+
+type:t name:n index:i selfClass:s
+    ^ (self basicNew) type:t name:n index:i selfClass:s
+!
+
+type:t name:n index:i selfValue:s
+    ^ (self basicNew) type:t name:n index:i selfValue:s
 !
 
 type:t name:n token:tok index:i
     ^ (self basicNew) type:t name:n token:tok index:i
 !
 
-type:t name:n index:i selfValue:s
-    ^ (self basicNew) type:t name:n index:i selfValue:s
+type:t name:n token:tok index:i block:b
+    ^ (self basicNew) type:t name:n token:tok index:i block:b
 !
 
-type:t name:n index:i selfClass:s
-    ^ (self basicNew) type:t name:n index:i selfClass:s
+type:t name:n value:val
+    ^ (self basicNew) type:t name:n value:val
 !
 
-type:t name:n token:tok index:i block:b
-    ^ (self basicNew) type:t name:n token:tok index:i block:b
+type:t token:tok
+    ^ (self basicNew) type:t token:tok
 !
 
 type:t token:tok index:i
@@ -89,38 +89,21 @@
     ^ (self basicNew) type:t token:tok index:i block:b
 ! !
 
-!VariableNode methodsFor:'queries'!
-
-isGlobal
-    "return true, if this is a node for a global variable"
-
-    ^ (type == #GlobalVariable) and:[Smalltalk includesKey:name]
-! !
-
 !VariableNode methodsFor:'accessing'!
 
-type:t token:tok
-    type := t.
-    token := tok
+index
+    ^ index
 !
 
-type:t token:tok index:i
-    type := t.
-    index := i.
-    token := tok
+name
+    ^ name
 !
 
-type:t token:tok index:i block:b
-    type := t.
-    index := i.
-    block := b.
-    token := tok
-!
-
-type:t name:n
+type:t class:class name:n
     type := t.
     value := nil.
-    name := n
+    name := n.
+    selfClass := class 
 !
 
 type:t index:i selfValue:s
@@ -130,24 +113,9 @@
     selfValue := s
 !
 
-type:t class:class name:n
+type:t name:n
     type := t.
     value := nil.
-    name := n.
-    selfClass := class 
-!
-
-type:t name:n value:val
-    type := t.
-    name := n.
-    value := val
-!
-
-type:t name:n index:i selfValue:s
-    type := t.
-    value := nil.
-    index := i.
-    selfValue := s.
     name := n
 !
 
@@ -159,6 +127,14 @@
     name := n
 !
 
+type:t name:n index:i selfValue:s
+    type := t.
+    value := nil.
+    index := i.
+    selfValue := s.
+    name := n
+!
+
 type:t name:n token:tok index:i
     type := t.
     index := i.
@@ -174,70 +150,28 @@
     name := n
 !
 
-name
-    ^ name
+type:t name:n value:val
+    type := t.
+    name := n.
+    value := val
+!
+
+type:t token:tok
+    type := t.
+    token := tok
 !
 
-index
-    ^ index
-! !
-
-!VariableNode methodsFor:'evaluating'!
-
-evaluate
-    (type == #MethodVariable
-    or:[type == #BlockArg
-    or:[type == #BlockVariable]]) ifTrue:[
-	^ token variableValue
-    ].
-    (type == #InstanceVariable) ifTrue:[
-	^ selfValue instVarAt:index
-    ].
-    (type == #GlobalVariable) ifTrue:[
-	(Smalltalk includesKey:name) ifTrue:[
-	    ^ Smalltalk at:name
-	].
-"
-	self error:('global ' , name , ' is undefined').
-"
-
-	^ UndefinedVariable name:name.
-	^ nil
-    ].
-    (type == #ClassVariable) ifTrue:[
-	^ Smalltalk at:(selfClass name , ':' , name) asSymbol
-    ].
-    (type == #ClassInstanceVariable) ifTrue:[
-	^ selfClass instVarAt:index
-    ].
-    (type == #ThisContext) ifTrue:[
-	^ thisContext
-    ].
-    "not reached"
-    self halt:'bad type'.
-    ^ value
+type:t token:tok index:i
+    type := t.
+    index := i.
+    token := tok
 !
 
-store:aValue
-    (type == #MethodVariable
-    or:[type == #BlockVariable]) ifTrue:[
-	token value:aValue. ^ aValue
-    ].
-    (type == #InstanceVariable) ifTrue:[
-	^ selfValue instVarAt:index put:aValue
-    ].
-    (type == #GlobalVariable) ifTrue:[
-	^ Smalltalk at:name put:aValue
-    ].
-    (type == #ClassVariable) ifTrue:[
-	^ Smalltalk at:(selfClass name , ':' , name) asSymbol put:aValue
-    ].
-    (type == #ClassInstanceVariable) ifTrue:[
-	^ selfClass instVarAt:index put:aValue
-    ].
-    "not reached"
-    self halt:'bad type'.
-    ^ aValue
+type:t token:tok index:i block:b
+    type := t.
+    index := i.
+    block := b.
+    token := tok
 ! !
 
 !VariableNode methodsFor:'code generation'!
@@ -454,6 +388,64 @@
     ^ self error:'bad assignment'
 ! !
 
+!VariableNode methodsFor:'evaluating'!
+
+evaluate
+    (type == #MethodVariable
+    or:[type == #BlockArg
+    or:[type == #BlockVariable]]) ifTrue:[
+	^ token variableValue
+    ].
+    (type == #InstanceVariable) ifTrue:[
+	^ selfValue instVarAt:index
+    ].
+    (type == #GlobalVariable) ifTrue:[
+	(Smalltalk includesKey:name) ifTrue:[
+	    ^ Smalltalk at:name
+	].
+"
+	self error:('global ' , name , ' is undefined').
+"
+
+	^ UndefinedVariable name:name.
+	^ nil
+    ].
+    (type == #ClassVariable) ifTrue:[
+	^ Smalltalk at:(selfClass name , ':' , name) asSymbol
+    ].
+    (type == #ClassInstanceVariable) ifTrue:[
+	^ selfClass instVarAt:index
+    ].
+    (type == #ThisContext) ifTrue:[
+	^ thisContext
+    ].
+    "not reached"
+    self halt:'bad type'.
+    ^ value
+!
+
+store:aValue
+    (type == #MethodVariable
+    or:[type == #BlockVariable]) ifTrue:[
+	token value:aValue. ^ aValue
+    ].
+    (type == #InstanceVariable) ifTrue:[
+	^ selfValue instVarAt:index put:aValue
+    ].
+    (type == #GlobalVariable) ifTrue:[
+	^ Smalltalk at:name put:aValue
+    ].
+    (type == #ClassVariable) ifTrue:[
+	^ Smalltalk at:(selfClass name , ':' , name) asSymbol put:aValue
+    ].
+    (type == #ClassInstanceVariable) ifTrue:[
+	^ selfClass instVarAt:index put:aValue
+    ].
+    "not reached"
+    self halt:'bad type'.
+    ^ aValue
+! !
+
 !VariableNode methodsFor:'printing'!
 
 displayString
@@ -478,3 +470,12 @@
     "not reached"
     self halt:'bad type'.
 ! !
+
+!VariableNode methodsFor:'queries'!
+
+isGlobal
+    "return true, if this is a node for a global variable"
+
+    ^ (type == #GlobalVariable) and:[Smalltalk includesKey:name]
+! !
+