class TomlRB::Parser

def initialize(content, symbolize_keys: false)

def initialize(content, symbolize_keys: false)
  @hash = {}
  @visited_keys = []
  @fully_defined_keys = []
  @current = @hash
  @symbolize_keys = symbolize_keys
  begin
    parsed = TomlRB::Document.parse(content)
    parsed.matches.map(&:value).compact.each { |m| m.accept_visitor(self) }
  rescue Citrus::ParseError => e
    raise TomlRB::ParseError.new(e.message)
  end
end

def visit_keyvalue(keyvalue)

def visit_keyvalue(keyvalue)
  keyvalue.assign @current, @fully_defined_keys, @symbolize_keys
end

def visit_table(table)

def visit_table(table)
  @fully_defined_keys = []
  @current = table.navigate_keys @hash, @visited_keys, @symbolize_keys
end

def visit_table_array(table_array)

http://en.wikipedia.org/wiki/Visitor_pattern
Read about the Visitor pattern
def visit_table_array(table_array)
  @fully_defined_keys = []
  table_array_key = table_array.full_key
  @visited_keys.reject! { |k| k.start_with? table_array_key }
  @current = table_array.navigate_keys @hash, @symbolize_keys
end