Parser: skip unit suffix when next ident is a comparison keyword (starts, ends, contains, matches, is, does, in, precedes, follows). Fixes "123 starts with '12'" returning "123starts" instead of true. eval-hs: use hs-compile directly instead of hs-to-sx-from-source with "return " prefix, which was causing the parser to consume the comparison as a string suffix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
625 B
Plaintext
20 lines
625 B
Plaintext
(define spec-group-sections
|
|
(fn
|
|
(forms source)
|
|
(let
|
|
((sections (list))
|
|
(current-title "Definitions")
|
|
(current-comment nil)
|
|
(current-defines (list)))
|
|
(for-each
|
|
(fn
|
|
(form)
|
|
(when
|
|
(and (list? form) (> (len form) 1))
|
|
(let
|
|
((name (spec-form-name form)))
|
|
(when name (append! current-defines {:kind (spec-form-kind form) :name name})))))
|
|
forms)
|
|
(when (not (empty? current-defines)) (append! sections {:defines current-defines :title current-title :comment current-comment}))
|
|
sections)))
|