compiler/PPCCodeBlock.st
changeset 479 6316a98b7150
parent 478 711c8bc1ec04
child 481 34ee0d3c72e7
--- a/compiler/PPCCodeBlock.st	Mon Jun 01 23:15:52 2015 +0100
+++ b/compiler/PPCCodeBlock.st	Tue Jun 02 00:16:55 2015 +0100
@@ -37,14 +37,31 @@
 
 !PPCCodeBlock methodsFor:'code generation'!
 
-code: aStringOrBlock
-    aStringOrBlock isString ifTrue:[ 
-        buffer nextPutAll: aStringOrBlock
-    ] ifFalse:[ 
-        aStringOrBlock value
+code: aStringOrBlockOrRBParseNode
+    aStringOrBlockOrRBParseNode isString ifTrue:[ 
+        buffer nextPutAll: aStringOrBlockOrRBParseNode
+    ] ifFalse:[
+        (aStringOrBlockOrRBParseNode isKindOf: RBProgramNode) ifTrue:[ 
+            aStringOrBlockOrRBParseNode isSequence ifTrue:[
+                aStringOrBlockOrRBParseNode temporaries do:[:e |  
+                    self allocateTemporaryVariableNamed: e name.      
+                ].
+                aStringOrBlockOrRBParseNode statements do:[:e|
+                    buffer nextPutAll: e formattedCode; nextPut: $..  
+                    self nl; codeIndent.
+                ].
+
+            ] ifFalse:[  
+                buffer nextPutAll: aStringOrBlockOrRBParseNode formattedCode.  
+            ].
+
+        ] ifFalse:[  
+            aStringOrBlockOrRBParseNode value
+        ].
     ].
 
     "Created: / 01-06-2015 / 21:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-06-2015 / 00:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 codeIndent