<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>test/test_compiler_opcodes.rb</filename>
    </added>
    <added>
      <filename>test/test_compiler_phase1.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -16,57 +16,49 @@ module Moo
         return @phase1 if (@phase1)
 
         @phase1 = []
-        phase1_statement(k,@phase1);
+        phase1_statements(@parsed);
 
         @phase1 &lt;&lt; OpcodeSimple.new(110);
         @phase1
       end
       
       private
-      def phase1_statements(op,into)
+      def phase1_statements(op)
         op.each do |k|
-          phase1_statement(k,into)
+          @phase1.concat(phase1_statement(k))
         end
       end
         
-      def phase1_statement(op,into)
+      def phase1_statement(k)
         cmd = k[0]
         if (cmd == :return)
-          ops = ops + phase1_expr(k[1])
-          ops &lt;&lt; OpcodeSimple.new(109)
+          phase1_expr(k[1]) + [OpcodeSimple.new(109)]
         else
-          ops = ops + phase1_expr(k)
-          ops &lt;&lt; OpcodeSimple.new(111)
+          phase1_expr(k[1]) + [OpcodeSimple.new(111)]
         end
       end
       
-      def phase1_expr(k,into)
-        if (k.class == Fixnum)
-          ops &lt;&lt; OpcodeLiteral.new(k)
+      def phase1_expr(k)
+        if (k == nil)
+            []
+        elsif (k.class == Fixnum)
+          [OpcodeLiteral.new(k)]
         elsif (k.class == Float)
-          ops &lt;&lt; OpcodeLiteral.new(k)
+          [OpcodeLiteral.new(k)]
         elsif (k.class == String)
-          ops &lt;&lt; OpcodeLiteral.new(k)
+          [OpcodeLiteral.new(k)]
         elsif (k.class == Array)
           op = k[0]
           if (op == :error)
-            ops &lt;&lt; OpcodeLiteral.new(k)
+            [OpcodeLiteral.new(k)]
           elsif (op == :plus)
-            into.concat(phase1_expr[k[1]])
-            into.concat(phase1_expr[k[2]])
-            ops &lt;&lt; OpcodeSimple.new(21)
+            phase1_expr(k[1]) + phase1_expr(k[2]) + [OpcodeSimple.new(21)]
           elsif (op == :minus)
-            into.concat(phase1_expr[k[1]])
-            into.concat(phase1_expr[k[2]])
-            ops &lt;&lt; OpcodeSimple.new(22)
+            phase1_expr(k[1]) + phase1_expr(k[2]) + [OpcodeSimple.new(22)]
           elsif (op == :divide)
-            into.concat(phase1_expr[k[1]])
-            into.concat(phase1_expr[k[2]])
-            ops &lt;&lt; OpcodeSimple.new(19)
+            phase1_expr(k[1]) + phase1_expr(k[2]) + [OpcodeSimple.new(19)]
           elsif (op == :multiply)
-            into.concat(phase1_expr[k[1]])
-            into.concat(phase1_expr[k[2]])
-            ops &lt;&lt; OpcodeSimple.new(18)
+            phase1_expr(k[1]) + phase1_expr(k[2]) + [OpcodeSimple.new(18)]
           end
         end
       end</diff>
      <filename>lib/moo/language/compiler.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 require 'moo/language/compiler/opcode'
 
 module Moo
-  class Language
+  module Language
     class Compiler
       class OpcodeSimple &lt; Opcode
         def initialize(op)</diff>
      <filename>lib/moo/language/compiler/opcode_simple.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>test/test_compiler.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>28c7e0069067d9cf7897bccffead1610441f4e77</id>
    </parent>
  </parents>
  <author>
    <name>Andrea Nall</name>
    <email>anall@andreanall.com</email>
  </author>
  <url>http://github.com/anall/ruby-moo/commit/86f613eae179f8f1dba1a089f0121825b5d891d3</url>
  <id>86f613eae179f8f1dba1a089f0121825b5d891d3</id>
  <committed-date>2009-06-01T02:37:24-07:00</committed-date>
  <authored-date>2009-06-01T02:37:24-07:00</authored-date>
  <message>Get the compiler (phase1) working as far as it's written.</message>
  <tree>113faf8cb9395476b4bb79ce3e582cbe1f651526</tree>
  <committer>
    <name>Andrea Nall</name>
    <email>anall@andreanall.com</email>
  </committer>
</commit>
