class Syntax::XML

def scan_string( delim )

delimiter character.
Scan the string starting at the current position, with the given
def scan_string( delim )
  start_group :punct, delim
  match = /(?=[&\\]|#{delim})/
  loop do
    break unless ( text = scan_until( match ) )
    start_group :string, text unless text.empty?
    case peek(1)
      when "&"
        if scan( /&\S{1,10};/ )
          start_group :entity, matched
        else
          start_group :string, getch
        end
      when "\\"
        start_group :string, getch
        append getch || ""
      when delim
        start_group :punct, getch
        break
    end
  end
end