Function: ebnf-yac-definitions

ebnf-yac-definitions is a byte-compiled function defined in ebnf-yac.el.gz.

Signature

(ebnf-yac-definitions TOKEN)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/ebnf-yac.el.gz
;;; YACC-Definitions = ( "%token" | "%left" | "%right" | "%nonassoc" )
;;;                    [ "<" Name ">" ] Name-List
;;;                  | "%prec" Name
;;;                  | "any other Yacc definition"
;;;                  .

(defun ebnf-yac-definitions (token)
  (let ((ebnf-yac-skip-char t))
    (while (not (memq token '(yac-separator end-of-input)))
      (setq token
	    (cond
	     ;; ( "%token" | "%left" | "%right" | "%nonassoc" )
	     ;; [ "<" Name ">" ] Name-List
	     ((eq token 'yac-token)
	      (setq token (ebnf-yac-lex))
	      (when (eq token 'open-angle)
		(or (eq (ebnf-yac-lex) 'non-terminal)
		    (error "Missing type name"))
		(or (eq (ebnf-yac-lex) 'close-angle)
		    (error "Missing `>'"))
		(setq token (ebnf-yac-lex)))
	      (setq token               (ebnf-yac-name-list token)
		    ebnf-yac-token-list (nconc (cdr token)
					       ebnf-yac-token-list))
	      (car token))
	     ;;  "%prec" Name
	     ((eq token 'yac-prec)
	      (or (eq (ebnf-yac-lex) 'non-terminal)
		  (error "Missing prec name"))
	      (ebnf-yac-lex))
	     ;;  "any other Yacc definition"
	     (t
	      (ebnf-yac-lex))
	     )))
    token))