Function: ebnf-generate-region
ebnf-generate-region is a byte-compiled function defined in
ebnf2ps.el.gz.
Signature
(ebnf-generate-region FROM TO GEN-FUNC)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf2ps.el.gz
(defun ebnf-generate-region (from to gen-func)
(run-hooks 'ebnf-hook)
(let ((ebnf-limit (max from to))
(error-msg "SYNTAX")
the-point)
(save-excursion
(save-restriction
(save-match-data
(condition-case data
(let ((tree (ebnf-parse-and-sort (min from to))))
(when gen-func
(setq error-msg "EMPTY RULES"
tree (ebnf-eliminate-empty-rules tree))
(setq error-msg "OPTIMIZE"
tree (ebnf-optimize tree))
(setq error-msg "DIMENSIONS"
tree (ebnf-dimensions tree))
(setq error-msg "GENERATION")
(funcall gen-func tree))
(setq error-msg nil)) ; here it's ok
;; handler
((quit error)
(ding)
(setq the-point (max (1- (point)) (point-min))
error-msg (concat error-msg ": "
(error-message-string data)
", "
(and (string= error-msg "SYNTAX")
(format "at position %d "
the-point))
(format "in buffer \"%s\"."
(buffer-name)))))))))
(cond
;; error occurred
(error-msg
(goto-char the-point)
(if ebnf-stop-on-error
(error error-msg)
(message "%s" error-msg)))
;; generated output OK
(gen-func
nil)
;; syntax checked OK
(t
(message "EBNF syntactic analysis: NO ERRORS.")))))