anchor.diff:  (define-mode multi-line-comment (20 :all)
     (:entry "/\\*")
     (:exit "\\*/"))
  -
  -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  -;;;; substition
  -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  -
  -(define-mode space-tag (20 :all)
  -  (:single "{sp}"))
  -
  -(define-mode emptry-string (20 :all)
  -  (:single "{nil}"))
  -
  -(define-mode carriage-return (20 :all)
  -  (:single "{\\\r}"))
  -
  -(define-mode line-feed (20 :all)
  -  (:single "{\\\n}"))
  -
  -(define-mode tab (20 :all)
  -  (:single "{\\\t}"))
  -
  -(define-mode left-brace (20 :all)
  -  (:single "{lb}"))
  -
  -(define-mode right-brace (20 :all)
  -  (:single "{rb}"))
  -
  -(define-mode eol (30 :all)
  -  (:single "\\n"))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;; namespace tag
  
positive.code:   expr)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (defun parse-arguments/impl (str)
    (let ((args nil))
      (ppcre:do-matches-as-strings (bind "\\w*=\"\\w*\"" str)
        (let ((eq-pos (position #\= bind)))
          (push (intern (string-upcase (subseq bind 0 eq-pos)) :keyword)
                args)
          (push (subseq bind (+ eq-pos 2) (1- (length bind)))
                args)))
      (nreverse args)))
  
  (defun parse-arguments (str)
    (ppcre:register-groups-bind (args) ("^{\\w*\\s*((?:\\s*\\w*=\"\\w*\")*)\\s*}$" str)
      (parse-arguments/impl args)))
  
  (defun parse-name-and-arguments (str)
    (ppcre:register-groups-bind (name args) ("^{\\w*\\s*([\\w-\\.]*)((?:\\s*\\w*=\"\\w*\")*)\\s*}$" str)
      (cons name
            (parse-arguments/impl args))))
  
  ;;;; closure template syntax
  ;;;; see http://code.google.com/intl/ru/closure/templates/docs/commands.html
  
  (define-mode toplevel (0)
    (:allowed :baseonly eol one-line-comment multi-line-comment))
  
negative.code: ;;;; msg
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  ;; (define-mode msg (30 :all)
  ;;   (:entry "{msg[^}]*}(?=.*{/msg})")
  ;;   (:exit "{/msg}"))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; if
  