;; defun
;;  defun name lambda-list [[ {declaration}* | doc-string ]] {form}*
;; ({var}*
;;  [&optional {var | (var [initform [svar]])}*]
;;  [&rest var]
;;  [&key {var | ({var | (keyword var)} [initform [svar]])}* [&allow-other-keys]]
;;  [&aux {var | (var [initform])}*])

lambda-list = ({~var}*
               [&optional {~var | (~var [#initform [~svar]])}*]
	       [&rest ~var]
	       [&key {~var | ~var ({~var | (_keyword ~var)} [#initform [~svar]])}* [&allow-other-keys]]
	       [&aux {~var | (~var [#initform])}])

(defun _name lambda-list {(declare {_declaration}*) | "string"}* @ {#forms}*)

	   