Function: ebnf-dtd-choice-seq
ebnf-dtd-choice-seq is a byte-compiled function defined in
ebnf-dtd.el.gz.
Signature
(ebnf-dtd-choice-seq TOKEN)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf-dtd.el.gz
;;; choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'
;;;
;;; seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
(defun ebnf-dtd-choice-seq (token)
(setq token (ebnf-dtd-cp token))
(let (elist)
(cond
;; choice
((eq (car token) 'alternative)
(while (eq (car token) 'alternative)
(setq elist (cons (cdr token) elist)
token (ebnf-dtd-cp (ebnf-dtd-lex))))
(setq elist (ebnf-token-alternative elist token)))
;; seq
((eq (car token) 'comma)
(while (eq (car token) 'comma)
(setq elist (cons (cdr token) elist)
token (ebnf-dtd-cp (ebnf-dtd-lex))))
(setq elist (ebnf-token-sequence (cons (cdr token) elist))))
;; only one element
(t
(setq elist (cdr token))))
(or (eq (car token) 'end-group)
(error "Missing `)' in ELEMENT content"))
elist))