more compatibility
authorClaus Gittinger <cg@exept.de>
Mon, 07 Aug 2006 12:19:16 +0200
changeset 1785 1994a5b86791
parent 1784 4380f89e1a91
child 1786 59c642a17b3d
more compatibility
ProgramNodeBuilder.st
--- a/ProgramNodeBuilder.st	Mon Aug 07 12:18:54 2006 +0200
+++ b/ProgramNodeBuilder.st	Mon Aug 07 12:19:16 2006 +0200
@@ -10,11 +10,13 @@
  hereby transferred.
 "
 
-Object subclass:#ProgramNodeBuilder 
-       instanceVariableNames:''
-       classVariableNames:''
-       poolDictionaries:''
-       category:'System-Compiler ST-80-compatibility'
+"{ Package: 'stx:libcomp' }"
+
+Object subclass:#ProgramNodeBuilder
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'System-Compiler ST-80-compatibility'
 !
 
 !ProgramNodeBuilder class methodsFor:'documentation'!
@@ -33,10 +35,6 @@
 "
 !
 
-version
-    ^ '$Header: /cvs/stx/stx/libcomp/ProgramNodeBuilder.st,v 1.4 1995-11-11 15:31:29 cg Exp $'
-!
-
 documentation
 "
     This is a pure mimicri class.
@@ -53,10 +51,92 @@
 
 !ProgramNodeBuilder methodsFor:'tree building'!
 
+newBlockBody:statements
+    ^ (BlockNode arguments:#() home:nil variables:#()) statements:statements
+
+    "Created: / 06-08-2006 / 23:25:36 / cg"
+!
+
+newGlobal:name
+    "return a treeNode for a global variable"
+
+    ^ VariableNode globalNamed:name
+
+    "Created: / 06-08-2006 / 01:37:56 / cg"
+!
+
 newLiteralValue:aConstantValue
     "return a treeNode for a literal constant"
 
+(aConstantValue isKindOf:Association) ifTrue:[self halt].
+
     ^ ConstantNode value:aConstantValue
+
+    "Modified: / 06-08-2006 / 15:16:04 / cg"
+!
+
+newMessageReceiver: receiverNode selector: selector
+    ^ self newMessageReceiver: receiverNode selector: selector arguments: #()
+
+    "Created: / 06-08-2006 / 02:59:55 / cg"
+    "Modified: / 06-08-2006 / 13:29:33 / cg"
+!
+
+newMessageReceiver: receiverNode selector: selector arguments: arguments
+    selector isUnarySelector ifTrue:[
+        self assert:(arguments isEmptyOrNil).
+        ^ UnaryNode receiver:receiverNode selector: selector args: arguments
+    ].
+    selector isBinarySelector ifTrue:[
+        self assert:(arguments size == 1).
+        ^ BinaryNode receiver:receiverNode selector: selector args: arguments
+    ].
+    self assert:(arguments notEmptyOrNil).
+    ^ MessageNode receiver:receiverNode selector: selector args: arguments
+
+    "Created: / 06-08-2006 / 03:02:33 / cg"
+    "Modified: / 06-08-2006 / 14:00:47 / cg"
+!
+
+newMethodArgument:name
+    "return a treeNode for a method arg"
+
+    ^ VariableNode methodArgumentNamed:name
+
+    "Created: / 06-08-2006 / 01:15:33 / cg"
+    "Modified: / 06-08-2006 / 13:29:42 / cg"
+!
+
+newMethodLocal:name
+    "return a treeNode for a method local"
+
+    ^ VariableNode methodLocalNamed:name
+
+    "Created: / 06-08-2006 / 02:10:52 / cg"
+    "Modified: / 06-08-2006 / 13:29:46 / cg"
+!
+
+newMethodSelector:sel
+    ^ MethodNode new selector:sel
+
+    "Created: / 06-08-2006 / 01:17:16 / cg"
+    "Modified: / 06-08-2006 / 13:29:56 / cg"
+!
+
+newMethodSelector:sel arguments:argVars temporaries:localVars statements:statementNodes
+    ^ MethodNode new
+        selector:sel 
+        arguments:argVars
+        locals:localVars 
+        statements:statementNodes.
+
+    "Modified: / 06-08-2006 / 13:30:01 / cg"
+!
+
+newParameterVariable:aNode
+    ^ Variable name:(aNode name)
+
+    "Created: / 06-08-2006 / 14:23:25 / cg"
 !
 
 newReturnValue:anExpressionNode
@@ -65,11 +145,14 @@
     ^ ReturnNode expression:anExpressionNode
 !
 
-newMethodSelector:sel arguments:argVars temporaries:localVars statements:statementNodes
-    "mhmh - in ST/X we have no methodNodes ...."
-    ^ MethodNode new
-	selector:sel 
-	arguments:argVars
-	locals:localVars 
-	statements:statementNodes.
+newSelf
+    ^ SelfNode new
+
+    "Created: / 06-08-2006 / 13:51:17 / cg"
 ! !
+
+!ProgramNodeBuilder class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libcomp/ProgramNodeBuilder.st,v 1.5 2006-08-07 10:19:16 cg Exp $'
+! !