read_escape (RubyLexer)

    # File lib/ruby_lexer.rb, line 384
      def read_escape # 51 lines
        case
        when src.scan(/\\/) then                  # Backslash
          '\\'
        when src.scan(/n/) then                   # newline
          "\n"
        when src.scan(/t/) then                   # horizontal tab
          "\t"
        when src.scan(/r/) then                   # carriage-return
          "\r"
        when src.scan(/f/) then                   # form-feed
          "\f"
        when src.scan(/v/) then                   # vertical tab
          "\13"
        when src.scan(/a/) then                   # alarm(bell)
          "\007"
        when src.scan(/e/) then                   # escape
          "\033"
        when src.scan(/b/) then                   # backspace
          "\010"
        when src.scan(/s/) then                   # space
          " "
        when src.scan(/[0-7]{1,3}/) then          # octal constant
          src.matched.to_i(8).chr
        when src.scan(/x([0-9a-fA-F]{1,2})/) then # hex constant
          src[1].to_i(16).chr
        when src.check(/M-\\[\\MCc]/) then
          src.scan(/M-\\/) # eat it
          c = self.read_escape
          c[0] = (c[0].ord | 0x80).chr
          c
        when src.scan(/M-(.)/) then
          c = src[1]
          c[0] = (c[0].ord | 0x80).chr
          c
        when src.check(/(C-|c)\\[\\MCc]/) then
          src.scan(/(C-|c)\\/) # eat it
          c = self.read_escape
          c[0] = (c[0].ord & 0x9f).chr
          c
        when src.scan(/C-\?|c\?/) then
          127.chr
        when src.scan(/(C-|c)(.)/) then
          c = src[2]
          c[0] = (c[0].ord & 0x9f).chr
          c
        when src.scan(/[McCx0-9]/) || src.eos? then
          rb_compile_error("Invalid escape character syntax")
        else
          src.getch
        end
      end