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)))
;; Produce \w and \W instead of \sw and \Sw, for smaller size.
(cons (list (if (eq syntax ?w)
(string ?\\ (if negated ?W ?w))
(string ?\\ (if negated ?S ?s) syntax)))
t)))