# File lib/kwartz/parser.rb, line 766
    def parse_declaration(ruleset)
      assert unless @token == '{''{'
      while true
        scan()
        flag_escape = escape?(@value)
        case @token
        when nil     ;  break
        when '}''}'    ;  break
        when :stag   ;  has_colon?();  ruleset.set_stag    _parse_expr() , flag_escape
        when :cont   ;  has_colon?();  ruleset.set_cont    _parse_expr() , flag_escape
        when :etag   ;  has_colon?();  ruleset.set_etag    _parse_expr() , flag_escape
        when :elem   ;  has_colon?();  ruleset.set_elem    _parse_expr() , flag_escape
        when :value  ;  has_colon?();  ruleset.set_value   _parse_expr() , flag_escape
        when :attrs  ;  has_colon?();  ruleset.set_attrs   _parse_pairs(), flag_escape
        when :append ;  has_colon?();  ruleset.set_append  _parse_exprs(), flag_escape
        when :remove ;  has_colon?();  ruleset.set_remove  _parse_strs()
        when :tagname;  has_colon?();  ruleset.set_tagname _parse_str()
        when :logic  ;  has_colon?();  ruleset.set_logic   _parse_block()
        when :before ;  has_colon?();  ruleset.set_before  _parse_block()
        when :after  ;  has_colon?();  ruleset.set_after   _parse_block()
        when :begin  ;  has_colon?();  ruleset.set_before  _parse_block()
        when :end    ;  has_colon?();  ruleset.set_after   _parse_block()
        else
          raise parse_error("'#{@value}': unexpected token.")  #'
        end
      end
      return ruleset
    end