Function: syntax-propertize--shift-groups-and-backrefs
syntax-propertize--shift-groups-and-backrefs is a byte-compiled
function defined in syntax.el.gz.
Signature
(syntax-propertize--shift-groups-and-backrefs RE N)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/syntax.el.gz
(defun syntax-propertize--shift-groups-and-backrefs (re n)
(let ((new-re (replace-regexp-in-string
"\\\\(\\?\\([0-9]+\\):"
(lambda (s)
(replace-match
(number-to-string
(+ n (string-to-number (match-string 1 s))))
t t s 1))
re t t))
(pos 0))
(while (string-match "\\\\\\([0-9]+\\)" new-re pos)
(setq pos (+ 1 (match-beginning 1)))
(when (save-match-data
;; With \N, the \ must be in a subregexp context, i.e.,
;; not in a character class or in a \{\} repetition.
(subregexp-context-p new-re (match-beginning 0)))
(let ((shifted (+ n (string-to-number (match-string 1 new-re)))))
(when (> shifted 9)
(error "There may be at most nine back-references"))
(setq new-re (replace-match (number-to-string shifted)
t t new-re 1)))))
new-re))