diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-04-26 07:25:54 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-04-26 07:25:54 -0700 |
commit | 6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957 (patch) | |
tree | b1616d55a3ac13d4c314f007ad4a38cd0b67093f | |
parent | 538323f3a21632f1b8a6443ed79e2305306cee7b (diff) | |
download | txr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.tar.gz txr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.tar.bz2 txr-6aa7f5abfb2e4c396b7f76ded0ef7dbded89c957.zip |
matcher: use match-str instead of sub-str and str=
* share/txr/stdlib/match.tl (expand-quasi-match): Don't
extract substrings with sub-str; use match-str to match
in-place.
-rw-r--r-- | share/txr/stdlib/match.tl | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/share/txr/stdlib/match.tl b/share/txr/stdlib/match.tl index 5586b874..d3d89702 100644 --- a/share/txr/stdlib/match.tl +++ b/share/txr/stdlib/match.tl @@ -848,7 +848,7 @@ (match-case args ;; `text` ((@(stringp @txt)) - (list ^@(require @nil (str= ,txt (sub-str ,str ,pos t))))) + (list ^@(require @nil (match-str ,str ,txt ,pos)))) ;; `txt@...` ((@(stringp @txt) . @rest) (with-gensyms (npos) @@ -857,8 +857,8 @@ (quasi-match vlist rest vars str npos)))) ;; `@var` (existing binding) (((@(eq 'sys:var) @(bound-p vlist vars @sym) . @nil)) - (list ^@(require @nil (str= (sys:quasi ,(car args)) - (sub-str ,str ,pos t))))) + (list ^@(require @nil (match-str ,str (sys:quasi ,(car args)) + ,pos)))) ;; `@var@...` (existing binding) ((@(as avar (@(eq 'sys:var) @(bound-p vlist vars @sym) . @nil)) . @rest) @@ -867,7 +867,7 @@ ^@(with ,len (len ,txt)) ^@(with ,npos (+ ,pos ,len)) ^@(require @nil - (str= ,txt (sub-str ,str ,pos ,npos))) + (match-str ,str ,txt ,pos)) (quasi-match vlist rest vars str npos)))) ;; `@var` (new binding) (((@(eq 'sys:var) @sym)) |