Function: rx--translate-regexp
rx--translate-regexp is a byte-compiled function defined in rx.el.gz.
Signature
(rx--translate-regexp BODY)
Documentation
Translate the regexp form. Return (REGEXP . PRECEDENCE).
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/rx.el.gz
(defun rx--translate-regexp (body)
"Translate the `regexp' form. Return (REGEXP . PRECEDENCE)."
(unless (and body (null (cdr body)))
(error "rx `regexp' form takes exactly one argument"))
(let ((arg (car body)))
(cond ((stringp arg)
;; Generate the regexp when needed, since rx isn't
;; necessarily present in the byte-compilation environment.
(unless rx--regexp-atomic-regexp
(setq rx--regexp-atomic-regexp
;; Match atomic (precedence t) regexps: may give
;; false negatives but no false positives, assuming
;; the target string is syntactically correct.
(rx-to-string
'(seq
bos
(or (seq "["
(opt "^")
(opt "]")
(* (or (seq "[:" (+ (any "a-z")) ":]")
(not (any "]"))))
"]")
(not (any "*+?^$[\\"))
(seq "\\"
(or anything
(seq (any "sScC_") anything)
(seq "("
(* (or (not (any "\\"))
(seq "\\" (not (any ")")))))
"\\)"))))
eos)
t)))
(cons (list arg)
(if (string-match-p rx--regexp-atomic-regexp arg) t nil)))
(rx--delayed-evaluation
(cons (list arg) nil))
(t (error "rx `regexp' form with non-string argument")))))