anchor.diff:     int
      (|(| expression |)| #'k-2-3)))
   
  +(define-parser *ambiguous-expression-parser*
  +  (:start-symbol expression)
  +  (:terminals (int id + - * / |(| |)|))
  +  (:muffle-conflicts (16 0))
  +
  +  (expression
  +   (expression + expression)
  +   (expression - expression)
  +   (expression * expression)
  +   (expression / expression)
  +   id
  +   int
  +   (|(| expression |)| #'k-2-3)))
  +
   (define-parser *precedence-left-expression-parser*
     (:start-symbol expression)
     (:terminals (int id + - * / |(| |)|))
  
positive.code: (in-package #:yacc-tests)
  
  (defmacro expect (form expected)
    (let ((value (gensym "VALUE")))
      `(let ((,value ,form))
        (unless (equal ,value ,expected)
          (error "Test failed: ~S yielded ~S, expected ~S"
                 ',form ,value ,expected)))))
  
  (defmacro expect-condition (class &body body)
    (let ((name (gensym "EXPECT-CONDITION")))
  
negative.code:     (handler-case (progn ,@body)
        (,class () (return-from ,name nil)))
      (error "~S didn't signal a ~S" ',body ',class))))
  
  ;;;; Tests of the low-level interface, which is not meant for human beings.
  ;;;; See the high-level interface below if you are looking for examples.
  
  ;;; A trivial lexer
  
  