       "              <keyword> #{keyword_const} </keyword>",
       "            </term>"], [op_token | rest]}    
   end
-    
+
+  # subroutine 1 of 2 (where's #2?)
   def parse_expression([{:identifier, class_or_var_name},
                         {:symbol, "."},
                         {:identifier, subroutine_name},

      "        </letStatement>"]
     ++ statement, rest3}
  end
  
  def parse_statement([{:keyword, "if"},
                       {:symbol, "("} | rest]) do
    {exp, rest1} = parse_e(rest)

     ["          <symbol> ) </symbol>",
      "        </term>"], rest1}
  end

  def parse_expression([{:identifier, var_name},
                        {:symbol, "["}
                        | rest]) do
    {exp, rest1} = parse_e(rest)
    [{:symbol, "]"} | rest2] = rest1
    {["<term>",
      "<identifier> #{var_name} </identifier>",
      "<symbol> [ </symbol>",
      "<expression>"]
     
     ++ exp
     ++
     ["</expression>",
      "<symbol> ] </symbol>",
      "</term>"], rest2}
  end
  
  def parse_expression([{:symbol, s} | _]=all)
  when s in @expression_closing_symbols do
