Function: rx--translate-syntax
rx--translate-syntax is a byte-compiled function defined in rx.el.gz.
Signature
(rx--translate-syntax NEGATED BODY)
Documentation
Translate the syntax form. Return (REGEXP . PRECEDENCE).
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/rx.el.gz
(defun rx--translate-syntax (negated body)
"Translate the `syntax' form. Return (REGEXP . PRECEDENCE)."
(unless (and body (null (cdr body)))
(error "rx `syntax' form takes exactly one argument"))
(let* ((sym (car body))
(syntax (cdr (assq sym rx--syntax-codes))))
(unless syntax
(cond
;; Syntax character directly (sregex compatibility)
((and (characterp sym) (rassq sym rx--syntax-codes))
(setq syntax sym))
;; Syntax character as symbol (sregex compatibility)
((symbolp sym)
(let ((name (symbol-name sym)))
(when (= (length name) 1)
(let ((char (string-to-char name)))
(when (rassq char rx--syntax-codes)
(setq syntax char)))))))
(unless syntax
(error "Unknown rx syntax name `%s'" sym)))
(cons (list (string ?\\ (if negated ?S ?s) syntax))
t)))