Plaster
New
List
Login
common-lisp
default
anonymous
2022.04.08 12:24:53
(defmacro let-named-registers (regexp target &body body) (let* ((cl-ppcre:*allow-named-registers* t) (parse-tree (cl-ppcre:parse-string regexp)) (named-registers (multiple-value-bind (scanner register-names) (cl-ppcre:create-scanner parse-tree) (declare (ignore scanner)) register-names)) ignored-gensyms) `(cl-ppcre:register-groups-bind ,(loop :for name :in named-registers :collect (if name (intern (string-upcase name)) (car (push (gensym "ANONREGISTER") ignored-gensyms)))) (',parse-tree ,target) (declare (ignore ,@ignored-gensyms)) ,@body)))
Raw
Annotate
Repaste
Edit