Function: rng-ipattern-possible-start-tags

rng-ipattern-possible-start-tags is a byte-compiled function defined in rng-match.el.gz.

Signature

(rng-ipattern-possible-start-tags IPATTERN ACCUM)

Source Code

;; Defined in /usr/src/emacs/lisp/nxml/rng-match.el.gz
(defun rng-ipattern-possible-start-tags (ipattern accum)
  (let ((type (rng--ipattern-type ipattern)))
    (cond ((eq type 'after)
	   (rng-ipattern-possible-start-tags
	    (rng--ipattern-child ipattern)
	    accum))
	  ((memq type '(choice interleave))
	   (let ((members (rng--ipattern-child ipattern)))
	     (while members
	       (setq accum
		     (rng-ipattern-possible-start-tags (car members)
						       accum))
	       (setq members (cdr members))))
	   accum)
	  ((eq type 'group)
	   (let ((members (rng--ipattern-child ipattern)))
	     (while members
	       (setq accum
		     (rng-ipattern-possible-start-tags (car members)
						       accum))
	       (setq members
		     (and (rng--ipattern-nullable (car members))
			  (cdr members)))))
	   accum)
	  ((eq type 'element)
	   (if (eq (rng-element-get-child ipattern) rng-not-allowed-ipattern)
	       accum
	     (rng-name-class-possible-names
	      (rng--ipattern-name-class ipattern)
	      accum)))
	  ((eq type 'one-or-more)
	   (rng-ipattern-possible-start-tags
	    (rng--ipattern-child ipattern)
	    accum))
	  (t accum))))