anchor.diff:  ;; http://www.it.kau.se/cs/education/courses/dvgc02/08p4/labs/asn1_bnf.txt
   (yacc:define-parser *asn1-parser*
     (:start-symbol module-definition)
  -  (:terminals (|::=| |,| |.| |{| |}| |(| |)| |..| |[| |]|
  +  (:terminals (|::=| |,| |.| |{| |}| |(| |)| |..| |[| |]| pipe
   	       integer boolean bit octet string any null objid
   	       object identifier
   	       implicit explicit begin end definitions
  
positive.code:   (:export #:parse-definition))
  
  (in-package #:asinine.parser)
  
  (cl-lex:define-string-lexer asn1-lexer 
    ("SEQUENCE" (return (values 'sequence 'sequence)))
  
negative.code:   ("\\)" (return (values '|)| '|)|)))
    ("\\[" (return (values '|[| '|[|)))
    ("\\]" (return (values '|]| '|]|)))
    ("\\|" (return (values 'pipe 'pipe)))
    "--(.*?)--" ;; inline comment
    "--(.*)\\\n"  ;; single line comments
    ("0x([0-9a-fA-F]+)" (return (values 'constant (parse-integer (or $1 "") :radix 16))))
    ("[-]?[0-9]+" (return (values 'constant (parse-integer $@))))
    ("\\\"([0-9a-fA-F]+)\\\"" (return (values 'constant (parse-integer (or $1 "") :radix 16))))
    ("[\\w-]+" (return (values 'name (alexandria:symbolicate (lisp-name $@))))) ;;substitute #\- #\_ (string-upcase $@))))))
    )
  
  (defun test-lexer (string)
  