anchor.diff:  ;;;;; TRE environment
  -;;;;; Copyright (C) 2006-2007 Sven Klose <pixel@copei.de>
  +;;;;; Copyright (C) 2006-2008 Sven Klose <pixel@copei.de>
   ;;;;;
   ;;;;; LML function library
   
  
positive.code:   "Evaluuate LML template element with its attributes assigned to variables
     of the same names. Variable !childs will contain the unevaluated list
     of child elements."
    (when (consp tpl)
      (if (consp (car tpl))
  	(mapcar #'eval-lml-template (car tpl))
  	(with-lml-expr (name attrs childs) tpl
  	  (eval `(let (,@(append (map-attrs-to-vars attrs)
  				 `(!childs (eval-lml-template ,childs))))
  		  ,tpl))))))
  
negative.code:   (or (stringp expr) (consp expr)))
  
  ;;;; LML utilities
  
  (defun lml-get-children (x)
    (when (consp x)
      (if (consp x.)
          x
          (lml-get-children .x))))
  
  (defun lml-get-attribute (x name)
    (when x
      (unless (consp x.)
        (if (eq name x.)
            (second x)
            (lml-get-attribute .x name)))))
  
  (defun lml-child? (expr)
    (string-or-cons? expr))
  