Function: ebnf-eliminate-empty-rules
ebnf-eliminate-empty-rules is an autoloaded and byte-compiled function
defined in ebnf-otz.el.gz.
Signature
(ebnf-eliminate-empty-rules SYNTAX-LIST)
Documentation
Eliminate empty rules.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf-otz.el.gz
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Eliminate empty rules
(defun ebnf-eliminate-empty-rules (syntax-list)
"Eliminate empty rules."
(while ebnf-empty-rule-list
(let ((ebnf-total (length syntax-list))
(ebnf-nprod 0)
(prod-list syntax-list)
new-list before)
(while prod-list
(ebnf-message-info "Eliminating empty rules")
(let ((rule (car prod-list)))
;; if any non-terminal pertains to ebnf-empty-rule-list
;; then eliminate non-terminal from rule
(if (ebnf-eliminate-empty rule)
(setq before prod-list)
;; eliminate empty rule from syntax-list
(setq new-list (cons (ebnf-node-name rule) new-list))
(if before
(setcdr before (cdr prod-list))
(setq syntax-list (cdr syntax-list)))))
(setq prod-list (cdr prod-list)))
(setq ebnf-empty-rule-list new-list)))
syntax-list)