# File lib/kwartz/parser.rb, line 541
    def parse_element_ruleset
      assert unless @token == :element
      scan()
      @token == :string   or raise parse_error("'#{@value}': element name required in string.")
      name = @value
      name =~ /\A\w+\z/   or raise parse_error("'#{@value}': invalid element name.")
      scan()
      @token == '{''{'      or raise parse_error("'#{@value}': '{' required.")
      ruleset = ElementRuleset.new(name)
      while true
        scan()
        flag_escape = escape?(@value)
        break unless @token
        #if @token.is_a?(Symbol) && (@ch != ?\  && @ch != ?\t)
        #  raise parse_error("'#{@value}': following spaces are required but got '#{@ch.chr}'.")
        #end
        case @token
        when :stag    ;  has_space? ;  ruleset.set_stag     _parse_item()   , flag_escape
        when :cont    ;  has_space? ;  ruleset.set_cont     _parse_item()   , flag_escape
        when :etag    ;  has_space? ;  ruleset.set_etag     _parse_item()   , flag_escape
        when :elem    ;  has_space? ;  ruleset.set_elem     _parse_item()   , flag_escape
        when :value   ;  has_space? ;  ruleset.set_value    _parse_item()   , flag_escape
        when :attrs   ;  has_space? ;  ruleset.set_attrs    _parse_tuples() , flag_escape
        when :append  ;  has_space? ;  ruleset.set_append   _parse_list()   , flag_escape
        when :remove  ;  has_space? ;  ruleset.set_remove   _parse_strs()
        when :tagname ;  has_space? ;  ruleset.set_tagname  _parse_str()
        when :logic   ;  has_space? ;  ruleset.set_logic    _parse_block()
        when '}''}'     ;  break
        else          ;  raise parse_error("'#{@value}': invalid token.")
        end
      end
      assert unless token == '}''}'
      scan()
      return ruleset
    end