anchor.diff:  (eval-when (:compile-toplevel :load-toplevel :execute)
     (defparameter *symbols-category* (make-hash-table)))
   
  -
   ;;;; utils
  +
  +(defun discard-parse-element ()
  +  (error 'wiki-parser:bad-element-condition))
  +
  +(defun parse-expr-or-discard (expr)
  +  (handler-case
  +      (parse-expression expr)
  +    (error ()
  +      (discard-parse-element))))
   
   (defun parse-arguments/impl (str)
     (let ((args nil))
  
positive.code:                                               (1- (length (second item)))))))
  
  (define-mode namespace (10 :baseonly)
    (:special "{namespace\\s*[\\w\\.\\-]*\\s*}")
    (:post-handler namespace-post-handler))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
negative.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (defun parse-foreach-attributes (str)
    (or (ppcre:register-groups-bind (loop-var list-var) ("^{foreach\\s*([^\\s}]+)\\s*in\\s*([^\\s}]+)\\s*}$" str)
          (list (parse-expr-or-discard loop-var)
                (parse-expr-or-discard list-var))) 
        (discard-parse-element)))
  
  (define-mode foreach (60 :all)
    (:allowed :all)
    (:entry "{foreach\\s+[^}]*}(?=.*{/foreach})")
    (:entry-attribute-parser parse-foreach-attributes)
    (:exit "{/foreach}"))
  
  