def glom(source)
      lines = source.split("\n")
      @parser ||= RubyParser.new
      @chunk = nil
      c = 0
      sexp = nil
      while sexp.nil? && line_index + c < lines.size
        begin
          @chunk = lines[line_index..line_index+c].join("\n")
          capturing(:stderr) do  # new RubyParser is too loud
            sexp = @parser.parse(@chunk)
          end
        rescue Racc::ParseError
          # loop and try again
          c += 1
        end
      end
      sexp
    end
def glom(source)
      lines = source.split("\n")
      @parser ||= RubyParser.new
      @chunk = nil
      c = 0
      sexp = nil
      while sexp.nil? && line_index + c < lines.size
        begin
          @chunk = lines[line_index..line_index+c].join("\n")
          capturing(:stderr) do  # new RubyParser is too loud
            sexp = @parser.parse(@chunk)
          end
        rescue Racc::ParseError
          # loop and try again
          c += 1
        end
      end
      sexp
    end
Algorithm:
 * try to parse the starting line
 * if it parses OK, then we're done!
 * if not, then glom the next line and try again
 * repeat until it parses or we're out of lines