anchor.diff:            (values end value))))))
   
   
  -;; Output control
  +;;; Output control
   
   
   (defmacro grammar-func (x f)
  
positive.code:       (values end (,f value)))))
  
  
  ;; Helper macros
  
  
  (defmacro grammar-rule (name &rest body)
    "defun wrapper to simplify rule production"
    `(defun ,name (string &key (start 0))
      ,@body))
  
negative.code: ;; A simple top-down, backtracking parser
  ;; Modelled after EBNF notation
  
  (defpackage "EBNF-PARSER"
      (:nicknames "EBNF" "PARSER")
      (:use "COMMON-LISP")
      (:export "GRAMMAR-CHAR"
               "GRAMMAR-CHARTABLE"
               "GRAMMAR-STRING"
               "GRAMMAR-AND"
               "GRAMMAR-OR"
               "GRAMMAR-N"
               "GRAMMAR-*"
               "GRAMMAR-EXCEPTION"
               "GRAMMAR-FUNC"
               "GRAMMAR-RULE"))
      
  (in-package "EBNF-PARSER")  
  
  
  ;;; Internal utilities
  
  
  (defmacro grammar-call (x)
  