Function: semantic-bovinate-nonterminal-check

semantic-bovinate-nonterminal-check is a byte-compiled function defined in bovine.el.gz.

Signature

(semantic-bovinate-nonterminal-check STREAM NONTERMINAL)

Documentation

Check if STREAM not already parsed for NONTERMINAL.

If so abort because an infinite recursive parse is suspected.

Source Code

;; Defined in /usr/src/emacs/lisp/cedet/semantic/bovine.el.gz
(defun semantic-bovinate-nonterminal-check (stream nonterminal)
  "Check if STREAM not already parsed for NONTERMINAL.
If so abort because an infinite recursive parse is suspected."
  (or (hash-table-p semantic-bovinate-nonterminal-check-map)
      (setq semantic-bovinate-nonterminal-check-map
            (make-hash-table :test #'eq)))
  (let* ((vs (gethash nonterminal semantic-bovinate-nonterminal-check-map)))
    (if (memq stream vs)
        ;; Always enter debugger to see the backtrace
        (let ((debug-on-signal t)
              (debug-on-error  t))
          (setq semantic-bovinate-nonterminal-check-map nil)
          (error "Infinite recursive parse suspected on %s" nonterminal))
      (push stream
            (gethash nonterminal semantic-bovinate-nonterminal-check-map)))))