Extract pure expression tests from the official _hyperscript test suite and implement parser/compiler/runtime extensions to pass them. Test infrastructure: - 222 fixtures extracted from evalHyperScript calls (no DOM dependency) - SX data format with eval-hs bridge and run-hs-fixture runner - 24 suites covering expressions, comparisons, coercion, logic, etc. Parser extensions (parser.sx): - mod as infix arithmetic operator - English comparison phrases (is less than, is greater than or equal to) - is a/an Type typecheck syntax - === / !== strict equality operators - I as me synonym, am as is for comparisons - does not exist/match/contain postfix - some/every ... with quantifier expressions - undefined keyword → nil Compiler updates (compiler.sx): - + emits hs-add (type-dispatching: string concat or numeric add) - no emits hs-falsy? (HS truthiness: empty string is falsy) - matches? emits hs-matches? (string regex in non-DOM context) - New cases: not-in?, in?, type-check, strict-eq, some, every Runtime additions (runtime.sx): - hs-coerce: Int/Integer truncation via floor - hs-add: string concat when either operand is string - hs-falsy?: HS-compatible truthiness (nil, false, "" are falsy) - hs-matches?: string pattern matching - hs-type-check/hs-type-check!: lenient/strict type checking - hs-strict-eq: type + value equality Tokenizer (tokenizer.sx): - Added keywords: I, am, does, some, mod, equal, equals, really, include, includes, contain, undefined, exist Scorecard: 47/112 test groups passing. 0 non-HS regressions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
16 KiB
16 KiB