anchor.diff:  
   ;; input = dialogue / action
   (defun input ()
  -  (=or (dialogue)
  -       #+nil(action)))
  +  (=or (action)
  +       (dialogue)))
   
   ;; ws = zero or more whitespace
   (defun ws ()
  
positive.code: (cl:defpackage #:sykosomatic.parser
    (:use :cl :alexandria :smug)
    (:export :parse-input))
  (cl:in-package #:sykosomatic.parser)
  
  (defun parse-input (actor input)
    (let ((result (car (invoke-parser (maybe (dialogue) 'error) input))))
      (cond ((typep result 'error)
             (sykosomatic::send-msg actor (list "parse-error" (princ-to-string result))))
            (t
  
negative.code: 
  ;; action-delimiter = "*"
  (defun action-delimiter ()
    (=or (=char #\*)
         (=string "/me ")
         (=string "/em ")
         (=string "/act ")))
  
  ;; sentence = [adverb ws] verb [ws noun-clause] [ws noun-clause] [ws adverb]
  (defun sentence ()
    (=let* ((verb (verb))
            (_ (maybe (=char #\.))))
      (result `(:sentence
                (:verb . ,verb)))))
  
  #+nil(defun sentence ()
    (=let* ((adverb1 (maybe (=prog1 (adverb) (ws)) 'error))
            (verb (verb))
            (noun-clause-1 (maybe (=and (ws) (noun-clause)) 'error))
            (noun-clause-2 (maybe (=and (ws) (noun-clause)) 'error))
            (adverb2 (maybe (=and (ws) (adverb)) 'error)))
      (result `(:sentence
                (:adverb1 . ,adverb1)
                (:verb . ,verb)
  