HS parser: is/is-not ignoring case, eq-ignore-case runtime — 423→425

- Parse `is X ignoring case` → (eq-ignore-case left right)
- Parse `is not X ignoring case` → (not (eq-ignore-case left right))
- Compiler: eq-ignore-case → hs-eq-ignore-case
- Runtime: hs-eq-ignore-case using downcase/str

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 09:38:12 +00:00
parent eaf3c88a36
commit c05d8788c7
5 changed files with 50 additions and 17 deletions

View File

@@ -410,7 +410,14 @@
(true
(let
((right (parse-expr)))
(list (quote not) (list (quote =) left right))))))
(if
(match-kw "ignoring")
(do
(match-kw "case")
(list
(quote not)
(list (quote eq-ignore-case) left right)))
(list (quote not) (list (quote =) left right)))))))
((match-kw "empty") (list (quote empty?) left))
((match-kw "less")
(do
@@ -474,7 +481,12 @@
(do (adv!) (list (quote prop-is) left prop-name)))
(let
((right (parse-expr)))
(list (quote =) left right)))))))
(if
(match-kw "ignoring")
(do
(match-kw "case")
(list (quote eq-ignore-case) left right))
(list (quote =) left right))))))))
((and (= typ "keyword") (= val "am"))
(do
(adv!)