Function: rng-c-parse-primary
rng-c-parse-primary is a byte-compiled function defined in
rng-cmpct.el.gz.
Signature
(rng-c-parse-primary)
Documentation
Parse a primary expression.
The current token must be the first token of the expression. After parsing the current token should be the token following the primary expression.
Source Code
;; Defined in /usr/src/emacs/lisp/nxml/rng-cmpct.el.gz
(defun rng-c-parse-primary ()
"Parse a primary expression.
The current token must be the first token of the expression.
After parsing the current token should be the token following
the primary expression."
(cond ((rng-c-current-token-keyword-p)
(let ((parse-function (get (intern rng-c-current-token)
'rng-c-pattern)))
(or parse-function
(rng-c-error "Keyword %s does not introduce a pattern"
rng-c-current-token))
(rng-c-advance)
(funcall parse-function)))
((rng-c-current-token-ncname-p)
(rng-c-advance-with (rng-c-make-ref rng-c-current-token)))
((string-equal rng-c-current-token "(")
(rng-c-advance)
(let ((p (rng-c-parse-pattern)))
(rng-c-expect ")")
p))
((rng-c-current-token-prefixed-name-p)
(let ((name (rng-c-expand-datatype rng-c-current-token)))
(rng-c-advance)
(rng-c-parse-data name)))
((rng-c-current-token-literal-p)
(rng-make-value rng-token-datatype (rng-c-parse-literal) nil))
((rng-c-current-token-quoted-identifier-p)
(rng-c-advance-with
(rng-c-make-ref (substring rng-c-current-token 1))))
((string-equal rng-c-current-token "[")
(rng-c-parse-lead-annotation)
(rng-c-parse-primary))
(t (rng-c-error "Invalid pattern"))))