Function: ebnf-token-optional
ebnf-token-optional is a byte-compiled function defined in
ebnf2ps.el.gz.
Signature
(ebnf-token-optional BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf2ps.el.gz
(defun ebnf-token-optional (body)
(let ((kind (ebnf-node-kind body)))
(cond
;; [ EMPTY ] ==> EMPTY
((eq kind 'ebnf-generate-empty)
nil)
;; [ { A }* ] ==> { A }*
((eq kind 'ebnf-generate-zero-or-more)
body)
;; [ { A }+ ] ==> { A }*
((eq kind 'ebnf-generate-one-or-more)
(ebnf-node-kind body 'ebnf-generate-zero-or-more)
body)
;; [ A | B ] ==> A | B | EMPTY
((eq kind 'ebnf-generate-alternative)
(ebnf-node-list body (nconc (ebnf-node-list body)
(list (ebnf-make-empty))))
body)
;; [ A ]
(t
(ebnf-make-optional body))
)))