anchor.diff:  
   (defun closure-template-parse (symbol text)
     (with-closure-template-rules
  -    (let ((end (length text)))
  -      (esrap::process-parse-result
  -       (let ((esrap::*cache* (esrap::make-cache)))
  -         (esrap::eval-expression symbol text 0 end))
  -       text
  -       end
  -       nil))))
  +    (esrap:parse symbol text)))
   
   (defun parse-expression (text)
     (closure-template-parse 'expression text))
  
positive.code: ;;; null and boolean
  
  (define-rule null "null" (:constant :nil))
  (define-rule all "all" (:constant :all))
  
  (define-rule true "true" (:constant :t))
  (define-rule false "false" (:constant :nil))
  (define-rule boolean (or true false))
  
  ;;; literal
  
  (define-rule expression-literal (or number null boolean all string))
  
  ;;; variable
  
  
negative.code:   (:lambda (list)
      (second list)))
  
  (define-rule call-data-all (and whitespace "data=\"all\"")
    (:constant :all))
  
  (define-rule call-data-expr (and whitespace "data=\"" expression "\"")
    (:destructure (w1 d expr q)
      (declare (ignore w1 d q))
      expr))
  
  (define-rule call-data (or call-data-all call-data-expr))
  
  (define-rule template-name (and alpha-char (*  (or alphanumeric #\_ #\-)))
    (:destructure (first rest)
  