class ActionDispatch::Journey::Scanner

def scan

def scan
  next_byte = @scanner.peek_byte
  case
  when (token = STATIC_TOKENS[next_byte]) && (token != :SYMBOL || next_byte_is_not_a_token?)
    @scanner.pos += 1
    @length = @scanner.skip(/\w+/).to_i + 1 if token == :SYMBOL || token == :STAR
    token
  when @length = @scanner.skip(/(?:[\w%\-~!$&'*+,;=@]|\\[:()])+/)
    :LITERAL
  when @length = @scanner.skip(/./)
    :LITERAL
  end
end