class Regexp::Parser

def escape(token)

def escape(token)
  case token.token
  when :backspace
    node << EscapeSequence::Backspace.new(token, active_opts)
  when :escape
    node << EscapeSequence::AsciiEscape.new(token, active_opts)
  when :bell
    node << EscapeSequence::Bell.new(token, active_opts)
  when :form_feed
    node << EscapeSequence::FormFeed.new(token, active_opts)
  when :newline
    node << EscapeSequence::Newline.new(token, active_opts)
  when :carriage
    node << EscapeSequence::Return.new(token, active_opts)
  when :tab
    node << EscapeSequence::Tab.new(token, active_opts)
  when :vertical_tab
    node << EscapeSequence::VerticalTab.new(token, active_opts)
  when :hex
    node << EscapeSequence::Hex.new(token, active_opts)
  when :octal
    node << EscapeSequence::Octal.new(token, active_opts)
  when :codepoint
    node << EscapeSequence::Codepoint.new(token, active_opts)
  when :codepoint_list
    node << EscapeSequence::CodepointList.new(token, active_opts)
  when :control
    if token.text =~ /\A(?:\\C-\\M|\\c\\M)/
      node << EscapeSequence::MetaControl.new(token, active_opts)
    else
      node << EscapeSequence::Control.new(token, active_opts)
    end
  when :meta_sequence
    if token.text =~ /\A\\M-\\[Cc]/
      node << EscapeSequence::MetaControl.new(token, active_opts)
    else
      node << EscapeSequence::Meta.new(token, active_opts)
    end
  else
    # treating everything else as a literal
    node << EscapeSequence::Literal.new(token, active_opts)
  end
end