      ++
      exp_list
      ++
-     ["          <symbol> ) </symbol>",
-      "          <symbol> ; </symbol>"], rest1}
+     ["          <symbol> ) </symbol>"], rest1}
   end
 
   def parse_subroutine_call([{:identifier, class_or_var_name},

      "        </letStatement>"] ++ statement, rest1}
  end

  def parse_statement([{:keyword, "if"} | rest]) do
    []
  end

  def parse_statement([{:keyword, "while"} | rest]) do
    []
  end

  def parse_statement([{:keyword, "do"} | rest]) do
    {subroutine_call, rest1} = parse_subroutine_call(rest)
    {statement, rest2} = parse_statement(rest1)
    {["        <doStatement>",
      "          <keyword> do </keyword>"]
     ++
     subroutine_call
     ++
     ["        </doStatement>"] ++ statement, rest2}
  end

  def parse_statement([{:keyword, "return"},

      "        <identifier> #{var_name} </identifier>"]
     ++ var, rest1}
  end

  def parse_var_dec(all), do: {[], all}
  
  def parse_var_dec_end([{:symbol, ","},
                         {:identifier, var_name}
