anchor.diff:     (=> (many1 (progn indentation (or ordered-list unordered-list paragraph))) `(:li ,@_))
      (decf indent 2))
   
  +  (definition-list
  +   (=> (indented 2 (progn (look-ahead term) (many1 (or term definition)))) `(:dl ,@_)))
  +
  +  (term
  +   (try indentation)
  +   "% "
  +   (=> (many1 (or (text-until (or tag-open " %")) tagged-text)) `(:dt ,@_))
  +   " %"
  +   eol)
  +
  +  (definition
  +   (=> (many1 definition-paragraph) `(:dd ,@_)))
  +
  +  (definition-paragraph
  +   (try (progn indentation (not-followed-by "% ")))
  +   paragraph)
  +
  +  (blockquote
  +   (=> (indented 2 (many1 blockquote-element)) `(:blockquote ,@_)))
  +
  +  (blockquote-element
  +   (try (not-followed-by (progn (counted 3 #\Space) (none-of #\Space))))
  +   element)
  +
  +  (linkdef
  +   (-> (between "[" "]" (text-until "]")) name)
  +   " "
  +   (=> (between "<" ">" (text-until ">")) `(:link_def (:link ,name) (:url ,_)))
  +   blank)
  +
  +  (section-divider whitespace "§" blank `(:section "§"))
  +
  +  (paragraph (=> paragraph-text `(:p ,@_)))
  +
  +  (modeline
  +   (try "-*-")
  +   (many (progn (not-followed-by blank) any-char))
  +   blank
  +   nil)
  +
  +  (paragraph-text
  +   (=> (many1 (or (text-until (or tag-open "[" blank)) tagged-text linkref)))
  +   blank)
  +
  +  (linkref
  +   "["
  +   (-> link-contents contents)
  +   (=> (optional link-key) `(:link ,@contents ,@(if _ (list `(:key ,_)))))
  +   "]")
  +
  +  (link-contents
  +   (many1 (or (text-until (or tag-open "|" "]")) tagged-text)))
  +
  +  (link-key
  +   "|" (text (many1 (none-of "]"))))
  +
  +  (escaped-char
  +   (try (progn "\\" (or #\\ #\{ #\} #\* #\# #\- #\[ #\] #\% #\| #\<))))
  +
  +  ((unescaped p)
  +   (not-followed-by escaped-char) (match p))
  +
  +  (newline
  +   (not-followed-by blank)
  +   newline-char
  +   indentation
  +   (value #\Space))
  +
  +  (newline-char (setf so-far 0) #\Newline)
  +
  +  (plain-char (in-subdoc (! "}") any-char))
  +
  +  (tag-open (unescaped "\\") (=> name) "{")
  +
  +  (tagged-text
  +   (-> tag-open tag)
  +   (=> (if (member tag subdocs) subdoc-contents simple-contents) `(,tag ,@_))
  +   "}")
  +
  +  (subdoc-contents
  +   (incf subdoc-level)
  +   (=> (many element)) eod
  +   (decf subdoc-level))
  +
  +  (simple-contents
  +   (many1 (or (text-until (or tag-open "}")) tagged-text)))
  +
  +  (name (=> (text (many1 (char-if #'alpha-char-p))) (keywordize _)))
  +
     ;; Whitespace and indentation handling
   
     (whitespace (many (or #\Space #\Tab)))
  
positive.code:    (decf indent n))
  
    ((text-until p)
     (=> (many1 (progn (not-followed-by p) (or escaped-char newline plain-char))) (format nil "~{~a~}" _)))
  
    ((in-subdoc p1 p2)
     (if (> subdoc-level 0) (match p1) (match p2)))
  
negative.code: 
    (unordered-list (listy :ul "-"))
  
    ((listy name marker)
     (=> (indented 2 (many1 (list-element marker))) `(,name ,@_)))
  
  