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))