functionalscript 0.43.1 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -21
- package/fjs/asn.1/module.f.d.mts +123 -0
- package/fjs/asn.1/module.f.mjs +459 -0
- package/fjs/asn.1/proof.f.mjs +309 -0
- package/fjs/asn.1/types.d.ts +37 -0
- package/fjs/asn.1/types.js +6 -0
- package/fjs/asserts/module.f.d.mts +37 -0
- package/fjs/asserts/module.f.mjs +49 -0
- package/fjs/asserts/proof.f.mjs +19 -0
- package/fjs/asserts/types.d.ts +11 -0
- package/fjs/asserts/types.js +6 -0
- package/fjs/basen/base128/module.f.d.mts +22 -0
- package/fjs/basen/base128/module.f.mjs +51 -0
- package/fjs/basen/base128/proof.f.d.mts +2 -0
- package/fjs/basen/base128/proof.f.mjs +30 -0
- package/fjs/basen/base64/module.f.d.mts +14 -0
- package/fjs/basen/base64/module.f.mjs +71 -0
- package/fjs/basen/base64/proof.f.d.mts +17 -0
- package/fjs/basen/base64/proof.f.mjs +147 -0
- package/fjs/basen/cbase32/module.f.d.mts +18 -0
- package/fjs/basen/cbase32/module.f.mjs +61 -0
- package/fjs/basen/cbase32/proof.f.d.mts +8 -0
- package/fjs/basen/cbase32/proof.f.mjs +77 -0
- package/fjs/basen/module.f.d.mts +30 -0
- package/fjs/basen/module.f.mjs +88 -0
- package/fjs/basen/proof.f.mjs +69 -0
- package/fjs/basen/types.d.ts +14 -0
- package/fjs/basen/types.js +6 -0
- package/fjs/bnf/data/module.f.d.mts +47 -0
- package/fjs/bnf/data/module.f.mjs +188 -0
- package/fjs/bnf/data/proof.f.d.mts +13 -0
- package/fjs/bnf/data/proof.f.mjs +160 -0
- package/fjs/bnf/data/types.d.ts +35 -0
- package/fjs/bnf/data/types.js +6 -0
- package/fjs/bnf/descent/module.f.d.mts +33 -0
- package/fjs/bnf/descent/module.f.mjs +212 -0
- package/fjs/bnf/descent/proof.f.d.mts +13 -0
- package/fjs/bnf/descent/proof.f.mjs +351 -0
- package/fjs/bnf/descent/types.d.ts +71 -0
- package/fjs/bnf/descent/types.js +6 -0
- package/fjs/bnf/ll1/module.f.d.mts +41 -0
- package/fjs/bnf/ll1/module.f.mjs +199 -0
- package/fjs/bnf/ll1/proof.f.d.mts +16 -0
- package/fjs/bnf/ll1/proof.f.mjs +352 -0
- package/fjs/bnf/ll1/types.d.ts +59 -0
- package/fjs/bnf/ll1/types.js +6 -0
- package/fjs/bnf/module.f.d.mts +164 -0
- package/fjs/bnf/module.f.mjs +298 -0
- package/fjs/bnf/proof.f.d.mts +17 -0
- package/fjs/bnf/proof.f.mjs +89 -0
- package/fjs/bnf/testlib.f.d.mts +10 -0
- package/fjs/bnf/testlib.f.mjs +196 -0
- package/fjs/bnf/token_symbol/module.f.d.mts +35 -0
- package/fjs/bnf/token_symbol/module.f.mjs +62 -0
- package/fjs/bnf/token_symbol/proof.f.mjs +43 -0
- package/fjs/bnf/token_symbol/types.d.ts +27 -0
- package/fjs/bnf/token_symbol/types.js +6 -0
- package/fjs/bnf/types.d.ts +67 -0
- package/fjs/bnf/types.js +6 -0
- package/fjs/cas/cli/module.f.d.mts +17 -0
- package/fjs/cas/cli/module.f.mjs +73 -0
- package/fjs/cas/cli/proof.f.d.mts +18 -0
- package/fjs/cas/cli/proof.f.mjs +118 -0
- package/fjs/cas/evo/module.f.d.mts +163 -0
- package/fjs/cas/evo/module.f.mjs +556 -0
- package/fjs/cas/evo/proof.f.d.mts +55 -0
- package/fjs/cas/evo/proof.f.mjs +749 -0
- package/fjs/cas/evo/types.d.ts +111 -0
- package/fjs/cas/evo/types.js +7 -0
- package/fjs/cas/module.f.d.mts +68 -0
- package/fjs/cas/module.f.mjs +363 -0
- package/fjs/cas/proof.f.d.mts +29 -0
- package/fjs/cas/proof.f.mjs +371 -0
- package/fjs/cas/types.d.ts +35 -0
- package/fjs/cas/types.js +6 -0
- package/fjs/ci/bun/module.f.d.mts +11 -0
- package/fjs/ci/bun/module.f.mjs +20 -0
- package/fjs/ci/common/module.f.d.mts +80 -0
- package/fjs/ci/common/module.f.mjs +87 -0
- package/fjs/ci/common/types.d.ts +27 -0
- package/fjs/ci/config/module.f.d.mts +45 -0
- package/fjs/ci/config/module.f.mjs +89 -0
- package/fjs/ci/deno/module.f.d.mts +16 -0
- package/fjs/ci/deno/module.f.mjs +29 -0
- package/fjs/ci/deno/proof.f.d.mts +4 -0
- package/fjs/ci/deno/proof.f.mjs +26 -0
- package/fjs/ci/module.f.d.mts +19 -0
- package/fjs/ci/module.f.mjs +89 -0
- package/fjs/ci/nix/module.f.d.mts +69 -0
- package/fjs/ci/nix/module.f.mjs +136 -0
- package/fjs/ci/nix/proof.f.d.mts +28 -0
- package/fjs/ci/nix/proof.f.mjs +146 -0
- package/fjs/ci/nix/types.d.ts +16 -0
- package/fjs/ci/nix/types.js +6 -0
- package/fjs/ci/node/module.f.d.mts +48 -0
- package/fjs/ci/node/module.f.mjs +139 -0
- package/fjs/ci/node/proof.f.mjs +18 -0
- package/fjs/ci/proof.f.d.mts +20 -0
- package/fjs/ci/proof.f.mjs +219 -0
- package/fjs/ci/rust/module.f.d.mts +15 -0
- package/fjs/ci/rust/module.f.mjs +108 -0
- package/fjs/ci/types.d.ts +9 -0
- package/fjs/ci/types.js +6 -0
- package/fjs/cli/module.f.d.mts +16 -0
- package/fjs/cli/module.f.mjs +51 -0
- package/fjs/cli/proof.f.d.mts +16 -0
- package/fjs/cli/proof.f.mjs +130 -0
- package/fjs/cli/types.d.ts +15 -0
- package/fjs/cli/types.js +6 -0
- package/fjs/common/monoid/module.f.d.mts +87 -0
- package/fjs/common/monoid/module.f.mjs +104 -0
- package/fjs/common/monoid/proof.f.d.mts +10 -0
- package/fjs/common/monoid/proof.f.mjs +58 -0
- package/fjs/common/monoid/types.d.ts +50 -0
- package/fjs/common/monoid/types.js +6 -0
- package/fjs/crypto/hmac/module.f.d.mts +32 -0
- package/fjs/crypto/hmac/module.f.mjs +65 -0
- package/fjs/crypto/hmac/proof.f.mjs +34 -0
- package/fjs/crypto/pow/module.f.d.mts +43 -0
- package/fjs/crypto/pow/module.f.mjs +93 -0
- package/fjs/crypto/pow/proof.f.mjs +121 -0
- package/fjs/crypto/pow/types.d.ts +19 -0
- package/fjs/crypto/pow/types.js +6 -0
- package/fjs/crypto/secp/module.f.d.mts +61 -0
- package/fjs/crypto/secp/module.f.mjs +204 -0
- package/fjs/crypto/secp/proof.f.d.mts +9 -0
- package/fjs/crypto/secp/proof.f.mjs +137 -0
- package/fjs/crypto/secp/types.d.ts +36 -0
- package/fjs/crypto/secp/types.js +6 -0
- package/fjs/crypto/sha2/module.f.d.mts +80 -0
- package/fjs/crypto/sha2/module.f.mjs +431 -0
- package/fjs/crypto/sha2/proof.f.d.mts +32 -0
- package/fjs/crypto/sha2/proof.f.mjs +144 -0
- package/fjs/crypto/sha2/types.d.ts +57 -0
- package/fjs/crypto/sha2/types.js +6 -0
- package/fjs/crypto/sign/module.f.d.mts +46 -0
- package/fjs/crypto/sign/module.f.mjs +189 -0
- package/fjs/crypto/sign/proof.f.d.mts +17 -0
- package/fjs/crypto/sign/proof.f.mjs +604 -0
- package/fjs/crypto/sign/types.d.ts +13 -0
- package/fjs/crypto/sign/types.js +6 -0
- package/fjs/crypto/vdf/module.f.d.mts +15 -0
- package/fjs/crypto/vdf/module.f.mjs +84 -0
- package/fjs/crypto/vdf/proof.f.mjs +106 -0
- package/fjs/crypto/vdf/types.d.ts +18 -0
- package/fjs/crypto/vdf/types.js +6 -0
- package/fjs/dev/module.f.d.mts +56 -0
- package/fjs/dev/module.f.mjs +170 -0
- package/fjs/dev/package_json/module.f.d.mts +32 -0
- package/fjs/dev/package_json/module.f.mjs +37 -0
- package/fjs/dev/package_json/proof.f.mjs +32 -0
- package/fjs/dev/proof.f.d.mts +13 -0
- package/fjs/dev/proof.f.mjs +78 -0
- package/fjs/dev/types.d.ts +14 -0
- package/fjs/dev/types.js +6 -0
- package/fjs/dev/update/module.f.d.mts +19 -0
- package/fjs/dev/update/module.f.mjs +36 -0
- package/fjs/dev/update/proof.f.d.mts +7 -0
- package/fjs/dev/update/proof.f.mjs +36 -0
- package/fjs/djs/ast/module.f.d.mts +35 -0
- package/fjs/djs/ast/module.f.mjs +82 -0
- package/fjs/djs/ast/proof.f.mjs +48 -0
- package/fjs/djs/ast/types.d.ts +54 -0
- package/fjs/djs/ast/types.js +8 -0
- package/fjs/djs/examples/input.f.mjs +4 -0
- package/fjs/djs/examples/m.f.mjs +1 -0
- package/fjs/djs/module.f.d.mts +17 -0
- package/fjs/djs/module.f.mjs +47 -0
- package/fjs/djs/parser/module.f.d.mts +75 -0
- package/fjs/djs/parser/module.f.mjs +547 -0
- package/fjs/djs/parser/proof.f.mjs +543 -0
- package/fjs/djs/parser/types.d.ts +11 -0
- package/fjs/djs/parser/types.js +7 -0
- package/fjs/djs/proof.f.mjs +52 -0
- package/fjs/djs/serializer/module.f.d.mts +30 -0
- package/fjs/djs/serializer/module.f.mjs +206 -0
- package/fjs/djs/serializer/proof.f.mjs +116 -0
- package/fjs/djs/tokenizer/module.f.d.mts +65 -0
- package/fjs/djs/tokenizer/module.f.mjs +624 -0
- package/fjs/djs/tokenizer/proof.f.mjs +980 -0
- package/fjs/djs/tokenizer/types.d.ts +20 -0
- package/fjs/djs/tokenizer/types.js +7 -0
- package/fjs/djs/transpiler/module.f.d.mts +44 -0
- package/fjs/djs/transpiler/module.f.mjs +141 -0
- package/fjs/djs/transpiler/proof.f.mjs +76 -0
- package/fjs/djs/types.d.ts +13 -0
- package/fjs/djs/types.js +7 -0
- package/fjs/effects/eff/module.f.d.mts +10 -0
- package/fjs/effects/eff/module.f.mjs +68 -0
- package/fjs/effects/eff/proof.f.d.mts +12 -0
- package/fjs/effects/eff/proof.f.mjs +66 -0
- package/fjs/effects/eff/types.d.ts +71 -0
- package/fjs/effects/eff/types.js +6 -0
- package/fjs/effects/list/module.f.d.mts +24 -0
- package/fjs/effects/list/module.f.mjs +34 -0
- package/fjs/effects/list/types.d.ts +26 -0
- package/fjs/effects/list/types.js +6 -0
- package/fjs/effects/memory/module.f.d.mts +32 -0
- package/fjs/effects/memory/module.f.mjs +44 -0
- package/fjs/effects/memory/proof.f.d.mts +12 -0
- package/fjs/effects/memory/proof.f.mjs +83 -0
- package/fjs/effects/memory/types.d.ts +18 -0
- package/fjs/effects/memory/types.js +6 -0
- package/fjs/effects/mock/module.f.d.mts +6 -0
- package/fjs/effects/mock/module.f.mjs +26 -0
- package/fjs/effects/mock/types.d.ts +15 -0
- package/fjs/effects/mock/types.js +6 -0
- package/fjs/effects/module.d.mts +7 -0
- package/fjs/effects/module.f.d.mts +350 -0
- package/fjs/effects/module.f.mjs +382 -0
- package/fjs/effects/module.mjs +18 -0
- package/fjs/effects/node/memory/module.d.mts +24 -0
- package/fjs/effects/node/memory/module.mjs +59 -0
- package/fjs/effects/node/memory/proof.mjs +43 -0
- package/fjs/effects/node/module.d.mts +54 -0
- package/fjs/effects/node/module.f.d.mts +172 -0
- package/fjs/effects/node/module.f.mjs +354 -0
- package/fjs/effects/node/module.mjs +393 -0
- package/fjs/effects/node/proof.f.d.mts +76 -0
- package/fjs/effects/node/proof.f.mjs +444 -0
- package/fjs/effects/node/types.d.ts +203 -0
- package/fjs/effects/node/types.js +6 -0
- package/fjs/effects/node/virtual/module.f.d.mts +31 -0
- package/fjs/effects/node/virtual/module.f.mjs +434 -0
- package/fjs/effects/node/virtual/proof.f.d.mts +35 -0
- package/fjs/effects/node/virtual/proof.f.mjs +226 -0
- package/fjs/effects/node/virtual/types.d.ts +39 -0
- package/fjs/effects/node/virtual/types.js +7 -0
- package/fjs/effects/proof.f.d.mts +62 -0
- package/fjs/effects/proof.f.mjs +231 -0
- package/fjs/effects/types.d.ts +115 -0
- package/fjs/effects/types.js +6 -0
- package/fjs/emergent_testing/all.test.js +2 -2
- package/fjs/emergent_testing/example.f.d.mts +16 -0
- package/fjs/emergent_testing/example.f.mjs +34 -0
- package/fjs/emergent_testing/module.f.d.mts +150 -0
- package/fjs/emergent_testing/module.f.mjs +414 -0
- package/fjs/emergent_testing/proof.f.d.mts +97 -0
- package/fjs/emergent_testing/proof.f.mjs +518 -0
- package/fjs/emergent_testing/types.d.ts +53 -0
- package/fjs/emergent_testing/types.js +6 -0
- package/fjs/fsc/bnf.f.d.mts +3 -0
- package/fjs/fsc/bnf.f.mjs +77 -0
- package/fjs/fsc/json.f.d.mts +13 -0
- package/fjs/fsc/json.f.mjs +124 -0
- package/fjs/fsc/module.f.d.mts +14 -0
- package/fjs/fsc/module.f.mjs +138 -0
- package/fjs/fsc/proof.f.mjs +119 -0
- package/fjs/fsm/module.f.d.mts +27 -0
- package/fjs/fsm/module.f.mjs +99 -0
- package/fjs/fsm/proof.f.mjs +146 -0
- package/fjs/js/tokenizer/module.f.d.mts +19 -0
- package/fjs/js/tokenizer/module.f.mjs +795 -0
- package/fjs/js/tokenizer/proof.f.d.mts +12 -0
- package/fjs/js/tokenizer/proof.f.mjs +681 -0
- package/fjs/js/tokenizer/types.d.ts +193 -0
- package/fjs/js/tokenizer/types.js +6 -0
- package/fjs/mcp/cas/module.f.d.mts +156 -0
- package/fjs/mcp/cas/module.f.mjs +302 -0
- package/fjs/mcp/evo/module.f.d.mts +88 -0
- package/fjs/mcp/evo/module.f.mjs +153 -0
- package/fjs/mcp/evo/proof.f.d.mts +17 -0
- package/fjs/mcp/evo/proof.f.mjs +166 -0
- package/fjs/mcp/module.f.d.mts +32 -0
- package/fjs/mcp/module.f.mjs +96 -0
- package/fjs/mcp/proof.f.d.mts +46 -0
- package/fjs/mcp/proof.f.mjs +725 -0
- package/fjs/media/html/module.f.d.mts +43 -0
- package/fjs/media/html/module.f.mjs +167 -0
- package/fjs/media/html/proof.f.mjs +77 -0
- package/fjs/media/html/types.d.ts +19 -0
- package/fjs/media/html/types.js +6 -0
- package/fjs/media/json/module.f.d.mts +48 -0
- package/fjs/media/json/module.f.mjs +104 -0
- package/fjs/media/json/parser/module.f.d.mts +30 -0
- package/fjs/media/json/parser/module.f.mjs +219 -0
- package/fjs/media/json/parser/proof.f.d.mts +8 -0
- package/fjs/media/json/parser/proof.f.mjs +314 -0
- package/fjs/media/json/parser/types.d.ts +34 -0
- package/fjs/media/json/parser/types.js +6 -0
- package/fjs/media/json/proof.f.mjs +79 -0
- package/fjs/media/json/rtti/module.f.d.mts +38 -0
- package/fjs/media/json/rtti/module.f.mjs +51 -0
- package/fjs/media/json/rtti/proof.f.d.mts +26 -0
- package/fjs/media/json/rtti/proof.f.mjs +86 -0
- package/fjs/media/json/schema/module.f.d.mts +79 -0
- package/fjs/media/json/schema/module.f.mjs +144 -0
- package/fjs/media/json/schema/proof.f.d.mts +40 -0
- package/fjs/media/json/schema/proof.f.mjs +93 -0
- package/fjs/media/json/serializer/module.f.d.mts +27 -0
- package/fjs/media/json/serializer/module.f.mjs +131 -0
- package/fjs/media/json/serializer/proof.f.mjs +92 -0
- package/fjs/media/json/tokenizer/module.f.d.mts +17 -0
- package/fjs/media/json/tokenizer/module.f.mjs +77 -0
- package/fjs/media/json/tokenizer/proof.f.d.mts +8 -0
- package/fjs/media/json/tokenizer/proof.f.mjs +291 -0
- package/fjs/media/json/tokenizer/types.d.ts +17 -0
- package/fjs/media/json/tokenizer/types.js +6 -0
- package/fjs/media/json/types.d.ts +25 -0
- package/fjs/media/json/types.js +13 -0
- package/fjs/media/module.f.d.mts +116 -0
- package/fjs/media/module.f.mjs +152 -0
- package/fjs/media/nix/module.f.d.mts +14 -0
- package/fjs/media/nix/module.f.mjs +261 -0
- package/fjs/media/nix/proof.f.mjs +181 -0
- package/fjs/media/nix/types.d.ts +22 -0
- package/fjs/media/nix/types.js +6 -0
- package/fjs/media/proof.f.d.mts +19 -0
- package/fjs/media/proof.f.mjs +159 -0
- package/fjs/media/revision/module.f.d.mts +119 -0
- package/fjs/media/revision/module.f.mjs +166 -0
- package/fjs/media/revision/proof.f.mjs +228 -0
- package/fjs/media/revision/types.d.ts +16 -0
- package/fjs/media/revision/types.js +8 -0
- package/fjs/media/rust/module.f.d.mts +61 -0
- package/fjs/media/rust/module.f.mjs +93 -0
- package/fjs/media/rust/proof.f.d.mts +17 -0
- package/fjs/media/rust/proof.f.mjs +50 -0
- package/fjs/media/type/module.f.d.mts +97 -0
- package/fjs/media/type/module.f.mjs +281 -0
- package/fjs/media/type/proof.f.mjs +285 -0
- package/fjs/media/type/types.d.ts +67 -0
- package/fjs/media/type/types.js +6 -0
- package/fjs/media/types.d.ts +26 -0
- package/fjs/media/types.js +7 -0
- package/fjs/module.f.d.mts +3 -0
- package/fjs/module.f.mjs +60 -0
- package/fjs/module.mjs +6 -0
- package/fjs/nanvm/module.f.d.mts +54 -0
- package/fjs/nanvm/module.f.mjs +240 -0
- package/fjs/nanvm/proof.f.d.mts +41 -0
- package/fjs/nanvm/proof.f.mjs +173 -0
- package/fjs/nanvm/rust/module.f.d.mts +54 -0
- package/fjs/nanvm/rust/module.f.mjs +166 -0
- package/fjs/nanvm/rust/proof.f.d.mts +21 -0
- package/fjs/nanvm/rust/proof.f.mjs +119 -0
- package/fjs/nanvm/types.d.ts +105 -0
- package/fjs/nanvm/types.js +11 -0
- package/fjs/nanvm/update/module.f.d.mts +23 -0
- package/fjs/nanvm/update/module.f.mjs +33 -0
- package/fjs/nanvm/update/proof.f.d.mts +9 -0
- package/fjs/nanvm/update/proof.f.mjs +32 -0
- package/fjs/path/module.f.d.mts +55 -0
- package/fjs/path/module.f.mjs +96 -0
- package/fjs/path/proof.f.mjs +125 -0
- package/fjs/proof.f.mjs +48 -0
- package/fjs/protocol/json_rpc/module.f.d.mts +127 -0
- package/fjs/protocol/json_rpc/module.f.mjs +112 -0
- package/fjs/protocol/json_rpc/proof.f.mjs +84 -0
- package/fjs/protocol/json_rpc/types.d.ts +30 -0
- package/fjs/protocol/json_rpc/types.js +8 -0
- package/fjs/protocol/mcp/module.f.d.mts +227 -0
- package/fjs/protocol/mcp/module.f.mjs +369 -0
- package/fjs/protocol/mcp/proof.f.d.mts +53 -0
- package/fjs/protocol/mcp/proof.f.mjs +312 -0
- package/fjs/protocol/mcp/stdio/module.f.d.mts +52 -0
- package/fjs/protocol/mcp/stdio/module.f.mjs +132 -0
- package/fjs/protocol/mcp/stdio/proof.f.d.mts +20 -0
- package/fjs/protocol/mcp/stdio/proof.f.mjs +190 -0
- package/fjs/protocol/mcp/types.d.ts +59 -0
- package/fjs/protocol/mcp/types.js +8 -0
- package/fjs/sul/id/module.f.d.mts +37 -0
- package/fjs/sul/id/module.f.mjs +143 -0
- package/fjs/sul/id/proof.f.mjs +72 -0
- package/fjs/sul/id/types.d.ts +8 -0
- package/fjs/sul/id/types.js +6 -0
- package/fjs/sul/level/hash/module.f.d.mts +37 -0
- package/fjs/sul/level/hash/module.f.mjs +61 -0
- package/fjs/sul/level/hash/proof.f.d.mts +15 -0
- package/fjs/sul/level/hash/proof.f.mjs +131 -0
- package/fjs/sul/level/hash/types.d.ts +20 -0
- package/fjs/sul/level/hash/types.js +6 -0
- package/fjs/sul/level/literal/module.f.d.mts +54 -0
- package/fjs/sul/level/literal/module.f.mjs +120 -0
- package/fjs/sul/level/literal/proof.f.mjs +788 -0
- package/fjs/sul/level/literal/types.d.ts +31 -0
- package/fjs/sul/level/literal/types.js +6 -0
- package/fjs/sul/module.f.d.mts +25 -0
- package/fjs/sul/module.f.mjs +69 -0
- package/fjs/sul/proof.f.d.mts +11 -0
- package/fjs/sul/proof.f.mjs +62 -0
- package/fjs/sul/types.d.ts +19 -0
- package/fjs/sul/types.js +6 -0
- package/fjs/text/ascii/module.f.d.mts +136 -0
- package/fjs/text/ascii/module.f.mjs +224 -0
- package/fjs/text/ascii/proof.f.mjs +16 -0
- package/fjs/text/code_point/module.f.d.mts +74 -0
- package/fjs/text/code_point/module.f.mjs +139 -0
- package/fjs/text/code_point/proof.f.mjs +80 -0
- package/fjs/text/module.f.d.mts +39 -0
- package/fjs/text/module.f.mjs +61 -0
- package/fjs/text/proof.f.mjs +48 -0
- package/fjs/text/sgr/module.f.d.mts +58 -0
- package/fjs/text/sgr/module.f.mjs +99 -0
- package/fjs/text/sgr/proof.f.mjs +39 -0
- package/fjs/text/sgr/types.d.ts +12 -0
- package/fjs/text/sgr/types.js +6 -0
- package/fjs/text/types.d.ts +13 -0
- package/fjs/text/types.js +6 -0
- package/fjs/text/utf16/module.f.d.mts +147 -0
- package/fjs/text/utf16/module.f.mjs +350 -0
- package/fjs/text/utf16/proof.f.d.mts +11 -0
- package/fjs/text/utf16/proof.f.mjs +158 -0
- package/fjs/text/utf16/types.d.ts +19 -0
- package/fjs/text/utf16/types.js +6 -0
- package/fjs/text/utf8/module.f.d.mts +69 -0
- package/fjs/text/utf8/module.f.mjs +280 -0
- package/fjs/text/utf8/proof.f.mjs +217 -0
- package/fjs/text/utf8/types.d.ts +26 -0
- package/fjs/text/utf8/types.js +6 -0
- package/fjs/types/array/module.f.d.mts +68 -0
- package/fjs/types/array/module.f.mjs +101 -0
- package/fjs/types/array/proof.f.mjs +98 -0
- package/fjs/types/array/types.d.ts +13 -0
- package/fjs/types/array/types.js +6 -0
- package/fjs/types/bigfloat/module.f.d.mts +14 -0
- package/fjs/types/bigfloat/module.f.mjs +99 -0
- package/fjs/types/bigfloat/proof.f.mjs +218 -0
- package/fjs/types/bigfloat/types.d.ts +6 -0
- package/fjs/types/bigfloat/types.js +6 -0
- package/fjs/types/bigint/benchmark.d.mts +1 -0
- package/fjs/types/bigint/benchmark.mjs +205 -0
- package/fjs/types/bigint/module.f.d.mts +176 -0
- package/fjs/types/bigint/module.f.mjs +289 -0
- package/fjs/types/bigint/proof.f.d.mts +39 -0
- package/fjs/types/bigint/proof.f.mjs +443 -0
- package/fjs/types/bigint/types.d.ts +14 -0
- package/fjs/types/bigint/types.js +6 -0
- package/fjs/types/bit_vec/module.f.d.mts +199 -0
- package/fjs/types/bit_vec/module.f.mjs +485 -0
- package/fjs/types/bit_vec/proof.f.mjs +495 -0
- package/fjs/types/bit_vec/types.d.ts +51 -0
- package/fjs/types/bit_vec/types.js +6 -0
- package/fjs/types/btree/find/module.f.d.mts +15 -0
- package/fjs/types/btree/find/module.f.mjs +80 -0
- package/fjs/types/btree/find/proof.f.d.mts +4 -0
- package/fjs/types/btree/find/proof.f.mjs +121 -0
- package/fjs/types/btree/find/types.d.ts +22 -0
- package/fjs/types/btree/find/types.js +6 -0
- package/fjs/types/btree/module.f.d.mts +10 -0
- package/fjs/types/btree/module.f.mjs +39 -0
- package/fjs/types/btree/proof.f.d.mts +14 -0
- package/fjs/types/btree/proof.f.mjs +85 -0
- package/fjs/types/btree/remove/module.f.d.mts +21 -0
- package/fjs/types/btree/remove/module.f.mjs +187 -0
- package/fjs/types/btree/remove/proof.f.mjs +472 -0
- package/fjs/types/btree/set/module.f.d.mts +5 -0
- package/fjs/types/btree/set/module.f.mjs +117 -0
- package/fjs/types/btree/set/proof.f.mjs +427 -0
- package/fjs/types/btree/types/module.f.d.mts +19 -0
- package/fjs/types/btree/types/module.f.mjs +19 -0
- package/fjs/types/btree/types/types.d.ts +14 -0
- package/fjs/types/btree/types/types.js +6 -0
- package/fjs/types/byte_set/module.f.d.mts +26 -0
- package/fjs/types/byte_set/module.f.mjs +66 -0
- package/fjs/types/byte_set/proof.f.d.mts +12 -0
- package/fjs/types/byte_set/proof.f.mjs +84 -0
- package/fjs/types/byte_set/types.d.ts +6 -0
- package/fjs/types/byte_set/types.js +6 -0
- package/fjs/types/function/compare/module.f.d.mts +44 -0
- package/fjs/types/function/compare/module.f.mjs +71 -0
- package/fjs/types/function/compare/proof.f.mjs +50 -0
- package/fjs/types/function/compare/types.d.ts +22 -0
- package/fjs/types/function/compare/types.js +6 -0
- package/fjs/types/function/module.f.d.mts +26 -0
- package/fjs/types/function/module.f.mjs +32 -0
- package/fjs/types/function/operator/module.f.d.mts +37 -0
- package/fjs/types/function/operator/module.f.mjs +55 -0
- package/fjs/types/function/operator/proof.f.mjs +76 -0
- package/fjs/types/function/operator/types.d.ts +39 -0
- package/fjs/types/function/operator/types.js +6 -0
- package/fjs/types/function/proof.f.mjs +16 -0
- package/fjs/types/function/types.d.ts +16 -0
- package/fjs/types/function/types.js +6 -0
- package/fjs/types/list/module.f.d.mts +88 -0
- package/fjs/types/list/module.f.mjs +309 -0
- package/fjs/types/list/proof.f.d.mts +32 -0
- package/fjs/types/list/proof.f.mjs +363 -0
- package/fjs/types/list/types.d.ts +36 -0
- package/fjs/types/list/types.js +6 -0
- package/fjs/types/map/module.f.d.mts +13 -0
- package/fjs/types/map/module.f.mjs +42 -0
- package/fjs/types/map/proof.f.mjs +25 -0
- package/fjs/types/nibble_set/module.f.d.mts +30 -0
- package/fjs/types/nibble_set/module.f.mjs +43 -0
- package/fjs/types/nibble_set/proof.f.mjs +59 -0
- package/fjs/types/nibble_set/types.d.ts +9 -0
- package/fjs/types/nibble_set/types.js +6 -0
- package/fjs/types/nominal/module.f.d.mts +9 -0
- package/fjs/types/nominal/module.f.mjs +16 -0
- package/fjs/types/nominal/proof.f.d.mts +7 -0
- package/fjs/types/nominal/proof.f.mjs +79 -0
- package/fjs/types/nominal/types.d.ts +25 -0
- package/fjs/types/nominal/types.js +6 -0
- package/fjs/types/nullable/module.f.d.mts +38 -0
- package/fjs/types/nullable/module.f.mjs +53 -0
- package/fjs/types/nullable/proof.f.mjs +34 -0
- package/fjs/types/nullable/types.d.ts +6 -0
- package/fjs/types/nullable/types.js +6 -0
- package/fjs/types/number/module.f.d.mts +23 -0
- package/fjs/types/number/module.f.mjs +55 -0
- package/fjs/types/number/proof.f.mjs +204 -0
- package/fjs/types/object/module.f.d.mts +33 -0
- package/fjs/types/object/module.f.mjs +58 -0
- package/fjs/types/object/proof.f.d.mts +25 -0
- package/fjs/types/object/proof.f.mjs +26 -0
- package/fjs/types/object/types.d.ts +50 -0
- package/fjs/types/object/types.js +8 -0
- package/fjs/types/ordered_map/module.f.d.mts +21 -0
- package/fjs/types/ordered_map/module.f.mjs +54 -0
- package/fjs/types/ordered_map/proof.f.mjs +88 -0
- package/fjs/types/ordered_map/types.d.ts +8 -0
- package/fjs/types/ordered_map/types.js +6 -0
- package/fjs/types/patricia_trie/module.f.d.mts +19 -0
- package/fjs/types/patricia_trie/module.f.mjs +43 -0
- package/fjs/types/patricia_trie/proof.f.d.mts +14 -0
- package/fjs/types/patricia_trie/proof.f.mjs +148 -0
- package/fjs/types/patricia_trie/types.d.ts +34 -0
- package/fjs/types/patricia_trie/types.js +6 -0
- package/fjs/types/prime_field/module.f.d.mts +42 -0
- package/fjs/types/prime_field/module.f.mjs +136 -0
- package/fjs/types/prime_field/proof.f.mjs +131 -0
- package/fjs/types/prime_field/types.d.ts +38 -0
- package/fjs/types/prime_field/types.js +6 -0
- package/fjs/types/range/module.f.d.mts +11 -0
- package/fjs/types/range/module.f.mjs +13 -0
- package/fjs/types/range/proof.f.mjs +10 -0
- package/fjs/types/range/types.d.ts +6 -0
- package/fjs/types/range/types.js +6 -0
- package/fjs/types/range_map/module.f.d.mts +72 -0
- package/fjs/types/range_map/module.f.mjs +130 -0
- package/fjs/types/range_map/proof.f.d.mts +7 -0
- package/fjs/types/range_map/proof.f.mjs +186 -0
- package/fjs/types/range_map/types.d.ts +56 -0
- package/fjs/types/range_map/types.js +6 -0
- package/fjs/types/range_set/module.f.d.mts +5 -0
- package/fjs/types/range_set/module.f.mjs +19 -0
- package/fjs/types/range_set/proof.f.mjs +26 -0
- package/fjs/types/result/module.d.mts +5 -0
- package/fjs/types/result/module.f.d.mts +59 -0
- package/fjs/types/result/module.f.mjs +67 -0
- package/fjs/types/result/module.mjs +22 -0
- package/fjs/types/result/proof.f.mjs +41 -0
- package/fjs/types/result/types.d.ts +17 -0
- package/fjs/types/result/types.js +6 -0
- package/fjs/types/rtti/common/module.f.d.mts +86 -0
- package/fjs/types/rtti/common/module.f.mjs +183 -0
- package/fjs/types/rtti/common/proof.f.d.mts +9 -0
- package/fjs/types/rtti/common/proof.f.mjs +64 -0
- package/fjs/types/rtti/common/types.d.ts +43 -0
- package/fjs/types/rtti/common/types.js +1 -0
- package/fjs/types/rtti/module.f.d.mts +76 -0
- package/fjs/types/rtti/module.f.mjs +110 -0
- package/fjs/types/rtti/parse/module.f.d.mts +9 -0
- package/fjs/types/rtti/parse/module.f.mjs +196 -0
- package/fjs/types/rtti/parse/proof.f.d.mts +122 -0
- package/fjs/types/rtti/parse/proof.f.mjs +363 -0
- package/fjs/types/rtti/parse/types.d.ts +12 -0
- package/fjs/types/rtti/parse/types.js +1 -0
- package/fjs/types/rtti/proof.f.d.mts +8 -0
- package/fjs/types/rtti/proof.f.mjs +20 -0
- package/fjs/types/rtti/ts/module.f.d.mts +34 -0
- package/fjs/types/rtti/ts/module.f.mjs +64 -0
- package/fjs/types/rtti/ts/proof.f.mjs +88 -0
- package/fjs/types/rtti/ts/types.d.ts +88 -0
- package/fjs/types/rtti/ts/types.js +1 -0
- package/fjs/types/rtti/types.d.ts +43 -0
- package/fjs/types/rtti/types.js +1 -0
- package/fjs/types/rtti/validate/module.f.d.mts +6 -0
- package/fjs/types/rtti/validate/module.f.mjs +169 -0
- package/fjs/types/rtti/validate/proof.f.d.mts +125 -0
- package/fjs/types/rtti/validate/proof.f.mjs +437 -0
- package/fjs/types/rtti/validate/types.d.ts +6 -0
- package/fjs/types/rtti/validate/types.js +1 -0
- package/fjs/types/sorted_list/module.f.d.mts +43 -0
- package/fjs/types/sorted_list/module.f.mjs +110 -0
- package/fjs/types/sorted_list/proof.f.d.mts +5 -0
- package/fjs/types/sorted_list/proof.f.mjs +52 -0
- package/fjs/types/sorted_list/types.d.ts +15 -0
- package/fjs/types/sorted_list/types.js +6 -0
- package/fjs/types/sorted_set/module.f.d.mts +24 -0
- package/fjs/types/sorted_set/module.f.mjs +56 -0
- package/fjs/types/sorted_set/proof.f.d.mts +7 -0
- package/fjs/types/sorted_set/proof.f.mjs +77 -0
- package/fjs/types/sorted_set/types.d.ts +6 -0
- package/fjs/types/sorted_set/types.js +6 -0
- package/fjs/types/string/module.f.d.mts +36 -0
- package/fjs/types/string/module.f.mjs +58 -0
- package/fjs/types/string/proof.f.mjs +76 -0
- package/fjs/types/string_set/module.f.d.mts +37 -0
- package/fjs/types/string_set/module.f.mjs +53 -0
- package/fjs/types/string_set/proof.f.mjs +46 -0
- package/fjs/types/string_set/types.d.ts +7 -0
- package/fjs/types/string_set/types.js +6 -0
- package/fjs/types/ts/module.f.d.mts +20 -0
- package/fjs/types/ts/module.f.mjs +51 -0
- package/fjs/types/ts/proof.f.mjs +97 -0
- package/fjs/types/ts/types.d.ts +16 -0
- package/fjs/types/ts/types.js +8 -0
- package/fjs/types/uint8array/module.f.d.mts +31 -0
- package/fjs/types/uint8array/module.f.mjs +53 -0
- package/fjs/types/uint8array/proof.f.d.mts +17 -0
- package/fjs/types/uint8array/proof.f.mjs +73 -0
- package/fjs/website/module.f.d.mts +8 -0
- package/fjs/website/module.f.mjs +24 -0
- package/fjs/website/proof.f.mjs +14 -0
- package/package.json +12 -10
- package/todo/proof.f.d.mts +22 -0
- package/todo/proof.f.mjs +59 -0
- package/fjs/asn.1/module.f.d.ts +0 -62
- package/fjs/asn.1/module.f.js +0 -278
- package/fjs/asn.1/proof.f.js +0 -285
- package/fjs/asserts/module.f.d.ts +0 -36
- package/fjs/asserts/module.f.js +0 -39
- package/fjs/asserts/proof.f.js +0 -18
- package/fjs/base_n/module.f.d.ts +0 -45
- package/fjs/base_n/module.f.js +0 -72
- package/fjs/base_n/proof.f.js +0 -73
- package/fjs/basen/base128/module.f.d.ts +0 -20
- package/fjs/basen/base128/module.f.js +0 -43
- package/fjs/basen/base128/proof.f.js +0 -26
- package/fjs/basen/base64/module.f.d.ts +0 -9
- package/fjs/basen/base64/module.f.js +0 -71
- package/fjs/basen/base64/proof.f.d.ts +0 -16
- package/fjs/basen/base64/proof.f.js +0 -139
- package/fjs/basen/cbase32/module.f.d.ts +0 -11
- package/fjs/basen/cbase32/module.f.js +0 -55
- package/fjs/basen/cbase32/proof.f.d.ts +0 -7
- package/fjs/basen/cbase32/proof.f.js +0 -62
- package/fjs/bnf/data/module.f.d.ts +0 -52
- package/fjs/bnf/data/module.f.js +0 -143
- package/fjs/bnf/data/proof.f.d.ts +0 -8
- package/fjs/bnf/data/proof.f.js +0 -169
- package/fjs/bnf/descent/module.f.d.ts +0 -87
- package/fjs/bnf/descent/module.f.js +0 -149
- package/fjs/bnf/descent/proof.f.d.ts +0 -7
- package/fjs/bnf/descent/proof.f.js +0 -368
- package/fjs/bnf/ll1/module.f.d.ts +0 -72
- package/fjs/bnf/ll1/module.f.js +0 -155
- package/fjs/bnf/ll1/proof.f.d.ts +0 -10
- package/fjs/bnf/ll1/proof.f.js +0 -375
- package/fjs/bnf/module.f.d.ts +0 -165
- package/fjs/bnf/module.f.js +0 -174
- package/fjs/bnf/proof.f.d.ts +0 -12
- package/fjs/bnf/proof.f.js +0 -69
- package/fjs/bnf/testlib.f.d.ts +0 -3
- package/fjs/bnf/testlib.f.js +0 -138
- package/fjs/bnf/token_symbol/module.f.d.ts +0 -38
- package/fjs/bnf/token_symbol/module.f.js +0 -48
- package/fjs/bnf/token_symbol/proof.f.js +0 -37
- package/fjs/cas/cli/module.f.d.ts +0 -6
- package/fjs/cas/cli/module.f.js +0 -53
- package/fjs/cas/cli/proof.f.d.ts +0 -17
- package/fjs/cas/cli/proof.f.js +0 -112
- package/fjs/cas/evo/module.f.d.ts +0 -223
- package/fjs/cas/evo/module.f.js +0 -455
- package/fjs/cas/evo/proof.f.d.ts +0 -47
- package/fjs/cas/evo/proof.f.js +0 -707
- package/fjs/cas/module.f.d.ts +0 -64
- package/fjs/cas/module.f.js +0 -255
- package/fjs/cas/proof.f.d.ts +0 -18
- package/fjs/cas/proof.f.js +0 -305
- package/fjs/ci/bun/module.f.d.ts +0 -2
- package/fjs/ci/bun/module.f.js +0 -15
- package/fjs/ci/common/module.f.d.ts +0 -88
- package/fjs/ci/common/module.f.js +0 -63
- package/fjs/ci/config/module.f.d.ts +0 -45
- package/fjs/ci/config/module.f.js +0 -80
- package/fjs/ci/deno/module.f.d.ts +0 -10
- package/fjs/ci/deno/module.f.js +0 -28
- package/fjs/ci/deno/proof.f.d.ts +0 -5
- package/fjs/ci/deno/proof.f.js +0 -26
- package/fjs/ci/module.f.d.ts +0 -13
- package/fjs/ci/module.f.js +0 -58
- package/fjs/ci/nix/module.f.d.ts +0 -61
- package/fjs/ci/nix/module.f.js +0 -92
- package/fjs/ci/nix/proof.f.d.ts +0 -23
- package/fjs/ci/nix/proof.f.js +0 -109
- package/fjs/ci/node/module.f.d.ts +0 -28
- package/fjs/ci/node/module.f.js +0 -92
- package/fjs/ci/node/proof.f.js +0 -17
- package/fjs/ci/proof.f.d.ts +0 -18
- package/fjs/ci/proof.f.js +0 -182
- package/fjs/ci/rust/module.f.d.ts +0 -3
- package/fjs/ci/rust/module.f.js +0 -75
- package/fjs/cli/module.f.d.ts +0 -11
- package/fjs/cli/module.f.js +0 -34
- package/fjs/cli/proof.f.d.ts +0 -14
- package/fjs/cli/proof.f.js +0 -111
- package/fjs/common/monoid/module.f.d.ts +0 -126
- package/fjs/common/monoid/module.f.js +0 -88
- package/fjs/common/monoid/proof.f.d.ts +0 -9
- package/fjs/common/monoid/proof.f.js +0 -48
- package/fjs/crypto/hmac/module.f.d.ts +0 -29
- package/fjs/crypto/hmac/module.f.js +0 -56
- package/fjs/crypto/hmac/proof.f.js +0 -32
- package/fjs/crypto/pow/module.f.d.ts +0 -37
- package/fjs/crypto/pow/module.f.js +0 -72
- package/fjs/crypto/pow/proof.f.js +0 -111
- package/fjs/crypto/secp/module.f.d.ts +0 -85
- package/fjs/crypto/secp/module.f.js +0 -176
- package/fjs/crypto/secp/proof.f.d.ts +0 -8
- package/fjs/crypto/secp/proof.f.js +0 -124
- package/fjs/crypto/sha2/module.f.d.ts +0 -102
- package/fjs/crypto/sha2/module.f.js +0 -266
- package/fjs/crypto/sha2/proof.f.d.ts +0 -31
- package/fjs/crypto/sha2/proof.f.js +0 -139
- package/fjs/crypto/sign/module.f.d.ts +0 -33
- package/fjs/crypto/sign/module.f.js +0 -163
- package/fjs/crypto/sign/proof.f.d.ts +0 -11
- package/fjs/crypto/sign/proof.f.js +0 -562
- package/fjs/crypto/vdf/module.f.d.ts +0 -21
- package/fjs/crypto/vdf/module.f.js +0 -57
- package/fjs/crypto/vdf/proof.f.js +0 -94
- package/fjs/dev/module.f.d.ts +0 -57
- package/fjs/dev/module.f.js +0 -135
- package/fjs/dev/package_json/module.f.d.ts +0 -16
- package/fjs/dev/package_json/module.f.js +0 -24
- package/fjs/dev/package_json/proof.f.js +0 -28
- package/fjs/dev/proof.f.d.ts +0 -13
- package/fjs/dev/proof.f.js +0 -77
- package/fjs/dev/update/module.f.d.ts +0 -11
- package/fjs/dev/update/module.f.js +0 -20
- package/fjs/dev/update/proof.f.d.ts +0 -7
- package/fjs/dev/update/proof.f.js +0 -35
- package/fjs/djs/ast/module.f.d.ts +0 -62
- package/fjs/djs/ast/module.f.js +0 -61
- package/fjs/djs/ast/proof.f.js +0 -49
- package/fjs/djs/examples/input.f.js +0 -4
- package/fjs/djs/examples/m.f.js +0 -1
- package/fjs/djs/module.f.d.ts +0 -17
- package/fjs/djs/module.f.js +0 -22
- package/fjs/djs/parser/module.f.d.ts +0 -23
- package/fjs/djs/parser/module.f.js +0 -410
- package/fjs/djs/parser/proof.f.js +0 -556
- package/fjs/djs/proof.f.js +0 -50
- package/fjs/djs/serializer/module.f.d.ts +0 -17
- package/fjs/djs/serializer/module.f.js +0 -173
- package/fjs/djs/serializer/proof.f.js +0 -133
- package/fjs/djs/tokenizer/module.f.d.ts +0 -24
- package/fjs/djs/tokenizer/module.f.js +0 -472
- package/fjs/djs/tokenizer/proof.f.js +0 -1211
- package/fjs/djs/transpiler/module.f.d.ts +0 -41
- package/fjs/djs/transpiler/module.f.js +0 -88
- package/fjs/djs/transpiler/proof.f.js +0 -67
- package/fjs/effects/eff/module.f.d.ts +0 -72
- package/fjs/effects/eff/module.f.js +0 -46
- package/fjs/effects/eff/proof.f.d.ts +0 -11
- package/fjs/effects/eff/proof.f.js +0 -58
- package/fjs/effects/list/module.f.d.ts +0 -37
- package/fjs/effects/list/module.f.js +0 -17
- package/fjs/effects/memory/module.f.d.ts +0 -37
- package/fjs/effects/memory/module.f.js +0 -24
- package/fjs/effects/memory/proof.f.d.ts +0 -6
- package/fjs/effects/memory/proof.f.js +0 -50
- package/fjs/effects/mock/module.f.d.ts +0 -16
- package/fjs/effects/mock/module.f.js +0 -20
- package/fjs/effects/module.d.ts +0 -2
- package/fjs/effects/module.f.d.ts +0 -408
- package/fjs/effects/module.f.js +0 -312
- package/fjs/effects/module.js +0 -11
- package/fjs/effects/node/memory/module.d.ts +0 -20
- package/fjs/effects/node/memory/module.js +0 -44
- package/fjs/effects/node/memory/proof.js +0 -29
- package/fjs/effects/node/module.d.ts +0 -20
- package/fjs/effects/node/module.f.d.ts +0 -300
- package/fjs/effects/node/module.f.js +0 -171
- package/fjs/effects/node/module.js +0 -305
- package/fjs/effects/node/proof.f.d.ts +0 -69
- package/fjs/effects/node/proof.f.js +0 -409
- package/fjs/effects/node/virtual/module.f.d.ts +0 -49
- package/fjs/effects/node/virtual/module.f.js +0 -440
- package/fjs/effects/node/virtual/proof.f.d.ts +0 -33
- package/fjs/effects/node/virtual/proof.f.js +0 -186
- package/fjs/effects/proof.f.d.ts +0 -56
- package/fjs/effects/proof.f.js +0 -200
- package/fjs/emergent_testing/example.f.d.ts +0 -13
- package/fjs/emergent_testing/example.f.js +0 -31
- package/fjs/emergent_testing/module.f.d.ts +0 -140
- package/fjs/emergent_testing/module.f.js +0 -289
- package/fjs/emergent_testing/proof.f.d.ts +0 -67
- package/fjs/emergent_testing/proof.f.js +0 -416
- package/fjs/fsc/bnf.f.d.ts +0 -2
- package/fjs/fsc/bnf.f.js +0 -42
- package/fjs/fsc/json.f.d.ts +0 -7
- package/fjs/fsc/json.f.js +0 -64
- package/fjs/fsc/module.f.d.ts +0 -11
- package/fjs/fsc/module.f.js +0 -73
- package/fjs/fsc/proof.f.js +0 -104
- package/fjs/fsm/module.f.d.ts +0 -17
- package/fjs/fsm/module.f.js +0 -55
- package/fjs/fsm/proof.f.js +0 -126
- package/fjs/js/tokenizer/module.f.d.ts +0 -104
- package/fjs/js/tokenizer/module.f.js +0 -547
- package/fjs/js/tokenizer/proof.f.d.ts +0 -9
- package/fjs/js/tokenizer/proof.f.js +0 -986
- package/fjs/mcp/cas/module.f.d.ts +0 -27
- package/fjs/mcp/cas/module.f.js +0 -232
- package/fjs/mcp/evo/module.f.d.ts +0 -32
- package/fjs/mcp/evo/module.f.js +0 -99
- package/fjs/mcp/evo/proof.f.d.ts +0 -12
- package/fjs/mcp/evo/proof.f.js +0 -147
- package/fjs/mcp/module.f.d.ts +0 -56
- package/fjs/mcp/module.f.js +0 -69
- package/fjs/mcp/proof.f.d.ts +0 -45
- package/fjs/mcp/proof.f.js +0 -535
- package/fjs/media/html/module.f.d.ts +0 -52
- package/fjs/media/html/module.f.js +0 -117
- package/fjs/media/html/proof.f.js +0 -65
- package/fjs/media/json/module.f.d.ts +0 -64
- package/fjs/media/json/module.f.js +0 -109
- package/fjs/media/json/parser/module.f.d.ts +0 -21
- package/fjs/media/json/parser/module.f.js +0 -194
- package/fjs/media/json/parser/proof.f.d.ts +0 -5
- package/fjs/media/json/parser/proof.f.js +0 -314
- package/fjs/media/json/proof.f.js +0 -98
- package/fjs/media/json/schema/module.f.d.ts +0 -78
- package/fjs/media/json/schema/module.f.js +0 -96
- package/fjs/media/json/schema/proof.f.d.ts +0 -36
- package/fjs/media/json/schema/proof.f.js +0 -83
- package/fjs/media/json/serializer/module.f.d.ts +0 -28
- package/fjs/media/json/serializer/module.f.js +0 -73
- package/fjs/media/json/serializer/proof.f.js +0 -94
- package/fjs/media/json/tokenizer/module.f.d.ts +0 -15
- package/fjs/media/json/tokenizer/module.f.js +0 -63
- package/fjs/media/json/tokenizer/proof.f.d.ts +0 -5
- package/fjs/media/json/tokenizer/proof.f.js +0 -417
- package/fjs/media/module.f.d.ts +0 -119
- package/fjs/media/module.f.js +0 -88
- package/fjs/media/nix/module.f.d.ts +0 -30
- package/fjs/media/nix/module.f.js +0 -166
- package/fjs/media/nix/proof.f.js +0 -127
- package/fjs/media/proof.f.d.ts +0 -19
- package/fjs/media/proof.f.js +0 -127
- package/fjs/media/revision/module.f.d.ts +0 -94
- package/fjs/media/revision/module.f.js +0 -143
- package/fjs/media/revision/proof.f.js +0 -190
- package/fjs/media/type/module.f.d.ts +0 -135
- package/fjs/media/type/module.f.js +0 -231
- package/fjs/media/type/proof.f.js +0 -213
- package/fjs/module.f.d.ts +0 -2
- package/fjs/module.f.js +0 -50
- package/fjs/module.js +0 -4
- package/fjs/path/module.f.d.ts +0 -46
- package/fjs/path/module.f.js +0 -71
- package/fjs/path/proof.f.js +0 -119
- package/fjs/proof.f.js +0 -38
- package/fjs/protocol/json_rpc/module.f.d.ts +0 -114
- package/fjs/protocol/json_rpc/module.f.js +0 -89
- package/fjs/protocol/json_rpc/proof.f.js +0 -68
- package/fjs/protocol/mcp/module.f.d.ts +0 -239
- package/fjs/protocol/mcp/module.f.js +0 -272
- package/fjs/protocol/mcp/proof.f.d.ts +0 -34
- package/fjs/protocol/mcp/proof.f.js +0 -208
- package/fjs/protocol/mcp/stdio/module.f.d.ts +0 -47
- package/fjs/protocol/mcp/stdio/module.f.js +0 -78
- package/fjs/protocol/mcp/stdio/proof.f.d.ts +0 -13
- package/fjs/protocol/mcp/stdio/proof.f.js +0 -143
- package/fjs/sul/id/module.f.d.ts +0 -33
- package/fjs/sul/id/module.f.js +0 -93
- package/fjs/sul/id/proof.f.js +0 -61
- package/fjs/sul/level/hash/module.f.d.ts +0 -38
- package/fjs/sul/level/hash/module.f.js +0 -43
- package/fjs/sul/level/hash/proof.f.d.ts +0 -13
- package/fjs/sul/level/hash/proof.f.js +0 -112
- package/fjs/sul/level/literal/module.f.d.ts +0 -64
- package/fjs/sul/level/literal/module.f.js +0 -88
- package/fjs/sul/level/literal/proof.f.js +0 -714
- package/fjs/sul/module.f.d.ts +0 -23
- package/fjs/sul/module.f.js +0 -46
- package/fjs/sul/proof.f.d.ts +0 -9
- package/fjs/sul/proof.f.js +0 -47
- package/fjs/text/ascii/module.f.d.ts +0 -136
- package/fjs/text/ascii/module.f.js +0 -154
- package/fjs/text/ascii/proof.f.js +0 -14
- package/fjs/text/code_point/module.f.d.ts +0 -65
- package/fjs/text/code_point/module.f.js +0 -103
- package/fjs/text/code_point/proof.f.js +0 -72
- package/fjs/text/module.f.d.ts +0 -40
- package/fjs/text/module.f.js +0 -43
- package/fjs/text/proof.f.js +0 -44
- package/fjs/text/sgr/module.f.d.ts +0 -53
- package/fjs/text/sgr/module.f.js +0 -63
- package/fjs/text/sgr/proof.f.js +0 -33
- package/fjs/text/utf16/module.f.d.ts +0 -161
- package/fjs/text/utf16/module.f.js +0 -311
- package/fjs/text/utf16/proof.f.d.ts +0 -10
- package/fjs/text/utf16/proof.f.js +0 -144
- package/fjs/text/utf8/module.f.d.ts +0 -83
- package/fjs/text/utf8/module.f.js +0 -247
- package/fjs/text/utf8/proof.f.js +0 -217
- package/fjs/types/array/module.f.d.ts +0 -49
- package/fjs/types/array/module.f.js +0 -42
- package/fjs/types/array/proof.f.js +0 -92
- package/fjs/types/bigfloat/module.f.d.ts +0 -6
- package/fjs/types/bigfloat/module.f.js +0 -69
- package/fjs/types/bigfloat/proof.f.js +0 -217
- package/fjs/types/bigint/module.f.d.ts +0 -172
- package/fjs/types/bigint/module.f.js +0 -251
- package/fjs/types/bigint/proof.f.d.ts +0 -37
- package/fjs/types/bigint/proof.f.js +0 -400
- package/fjs/types/bit_vec/module.f.d.ts +0 -302
- package/fjs/types/bit_vec/module.f.js +0 -375
- package/fjs/types/bit_vec/proof.f.js +0 -465
- package/fjs/types/btree/find/module.f.d.ts +0 -25
- package/fjs/types/btree/find/module.f.js +0 -80
- package/fjs/types/btree/find/proof.f.d.ts +0 -3
- package/fjs/types/btree/find/proof.f.js +0 -108
- package/fjs/types/btree/module.f.d.ts +0 -9
- package/fjs/types/btree/module.f.js +0 -33
- package/fjs/types/btree/proof.f.d.ts +0 -13
- package/fjs/types/btree/proof.f.js +0 -64
- package/fjs/types/btree/remove/module.f.d.ts +0 -14
- package/fjs/types/btree/remove/module.f.js +0 -186
- package/fjs/types/btree/remove/proof.f.js +0 -484
- package/fjs/types/btree/set/module.f.d.ts +0 -8
- package/fjs/types/btree/set/module.f.js +0 -128
- package/fjs/types/btree/set/proof.f.js +0 -368
- package/fjs/types/btree/types/module.f.d.ts +0 -23
- package/fjs/types/btree/types/module.f.js +0 -9
- package/fjs/types/byte_set/module.f.d.ts +0 -16
- package/fjs/types/byte_set/module.f.js +0 -30
- package/fjs/types/byte_set/proof.f.d.ts +0 -11
- package/fjs/types/byte_set/proof.f.js +0 -79
- package/fjs/types/function/compare/module.f.d.ts +0 -49
- package/fjs/types/function/compare/module.f.js +0 -51
- package/fjs/types/function/compare/proof.f.js +0 -47
- package/fjs/types/function/module.f.d.ts +0 -28
- package/fjs/types/function/module.f.js +0 -19
- package/fjs/types/function/operator/module.f.d.ts +0 -48
- package/fjs/types/function/operator/module.f.js +0 -16
- package/fjs/types/function/operator/proof.f.js +0 -53
- package/fjs/types/function/proof.f.js +0 -10
- package/fjs/types/list/module.f.d.ts +0 -75
- package/fjs/types/list/module.f.js +0 -190
- package/fjs/types/list/proof.f.d.ts +0 -31
- package/fjs/types/list/proof.f.js +0 -330
- package/fjs/types/map/module.f.d.ts +0 -2
- package/fjs/types/map/module.f.js +0 -22
- package/fjs/types/map/proof.f.js +0 -22
- package/fjs/types/nibble_set/module.f.d.ts +0 -27
- package/fjs/types/nibble_set/module.f.js +0 -25
- package/fjs/types/nibble_set/proof.f.js +0 -60
- package/fjs/types/nominal/module.f.d.ts +0 -22
- package/fjs/types/nominal/module.f.js +0 -13
- package/fjs/types/nominal/proof.f.d.ts +0 -4
- package/fjs/types/nominal/proof.f.js +0 -48
- package/fjs/types/nullable/module.f.d.ts +0 -21
- package/fjs/types/nullable/module.f.js +0 -29
- package/fjs/types/nullable/proof.f.js +0 -29
- package/fjs/types/number/module.f.d.ts +0 -16
- package/fjs/types/number/module.f.js +0 -30
- package/fjs/types/number/proof.f.js +0 -124
- package/fjs/types/object/module.f.d.ts +0 -54
- package/fjs/types/object/module.f.js +0 -25
- package/fjs/types/object/proof.f.d.ts +0 -4
- package/fjs/types/object/proof.f.js +0 -14
- package/fjs/types/ordered_map/module.f.d.ts +0 -17
- package/fjs/types/ordered_map/module.f.js +0 -22
- package/fjs/types/ordered_map/proof.f.js +0 -73
- package/fjs/types/patricia_trie/module.f.d.ts +0 -25
- package/fjs/types/patricia_trie/module.f.js +0 -35
- package/fjs/types/patricia_trie/proof.f.d.ts +0 -13
- package/fjs/types/patricia_trie/proof.f.js +0 -121
- package/fjs/types/prime_field/module.f.d.ts +0 -62
- package/fjs/types/prime_field/module.f.js +0 -112
- package/fjs/types/prime_field/proof.f.js +0 -128
- package/fjs/types/range/module.f.d.ts +0 -8
- package/fjs/types/range/module.f.js +0 -2
- package/fjs/types/range/proof.f.js +0 -9
- package/fjs/types/range_map/module.f.d.ts +0 -92
- package/fjs/types/range_map/module.f.js +0 -82
- package/fjs/types/range_map/proof.f.d.ts +0 -6
- package/fjs/types/range_map/proof.f.js +0 -151
- package/fjs/types/range_set/module.f.d.ts +0 -5
- package/fjs/types/range_set/module.f.js +0 -16
- package/fjs/types/range_set/proof.f.d.ts +0 -1
- package/fjs/types/range_set/proof.f.js +0 -19
- package/fjs/types/result/module.d.ts +0 -3
- package/fjs/types/result/module.f.d.ts +0 -61
- package/fjs/types/result/module.f.js +0 -54
- package/fjs/types/result/module.js +0 -19
- package/fjs/types/result/proof.f.js +0 -31
- package/fjs/types/rtti/common/module.f.d.ts +0 -121
- package/fjs/types/rtti/common/module.f.js +0 -94
- package/fjs/types/rtti/common/proof.f.d.ts +0 -8
- package/fjs/types/rtti/common/proof.f.js +0 -51
- package/fjs/types/rtti/module.f.d.ts +0 -75
- package/fjs/types/rtti/module.f.js +0 -34
- package/fjs/types/rtti/parse/module.f.d.ts +0 -36
- package/fjs/types/rtti/parse/module.f.js +0 -114
- package/fjs/types/rtti/parse/proof.f.d.ts +0 -115
- package/fjs/types/rtti/parse/proof.f.js +0 -334
- package/fjs/types/rtti/proof.f.d.ts +0 -5
- package/fjs/types/rtti/proof.f.js +0 -16
- package/fjs/types/rtti/ts/module.f.d.ts +0 -118
- package/fjs/types/rtti/ts/module.f.js +0 -59
- package/fjs/types/rtti/ts/proof.f.js +0 -75
- package/fjs/types/rtti/validate/module.f.d.ts +0 -4
- package/fjs/types/rtti/validate/module.f.js +0 -74
- package/fjs/types/rtti/validate/proof.f.d.ts +0 -118
- package/fjs/types/rtti/validate/proof.f.js +0 -349
- package/fjs/types/sorted_list/module.f.d.ts +0 -26
- package/fjs/types/sorted_list/module.f.js +0 -51
- package/fjs/types/sorted_list/proof.f.d.ts +0 -4
- package/fjs/types/sorted_list/proof.f.js +0 -46
- package/fjs/types/sorted_set/module.f.d.ts +0 -33
- package/fjs/types/sorted_set/module.f.js +0 -5
- package/fjs/types/sorted_set/proof.f.d.ts +0 -6
- package/fjs/types/sorted_set/proof.f.js +0 -67
- package/fjs/types/string/module.f.d.ts +0 -24
- package/fjs/types/string/module.f.js +0 -35
- package/fjs/types/string/proof.f.js +0 -77
- package/fjs/types/string_set/module.f.d.ts +0 -30
- package/fjs/types/string_set/module.f.js +0 -37
- package/fjs/types/string_set/proof.f.js +0 -43
- package/fjs/types/ts/module.f.d.ts +0 -23
- package/fjs/types/ts/module.f.js +0 -27
- package/fjs/types/ts/proof.f.js +0 -86
- package/fjs/types/uint8array/module.f.d.ts +0 -13
- package/fjs/types/uint8array/module.f.js +0 -34
- package/fjs/types/uint8array/proof.f.d.ts +0 -17
- package/fjs/types/uint8array/proof.f.js +0 -64
- package/fjs/website/module.f.d.ts +0 -3
- package/fjs/website/module.f.js +0 -14
- package/fjs/website/proof.f.js +0 -13
- package/nanvm-lib/tests/proof.f.d.ts +0 -122
- package/nanvm-lib/tests/proof.f.js +0 -330
- package/todo/031-json.f.js +0 -241
- package/todo/proof.f.d.ts +0 -20
- package/todo/proof.f.js +0 -62
- /package/fjs/asn.1/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/asserts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{base_n/proof.f.d.ts → basen/proof.f.d.mts} +0 -0
- /package/fjs/bnf/token_symbol/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/{todo/031-json.f.d.ts → fjs/ci/common/types.js} +0 -0
- /package/fjs/ci/node/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/hmac/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/pow/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/crypto/vdf/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/dev/package_json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/ast/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/examples/{input.f.d.ts → input.f.d.mts} +0 -0
- /package/fjs/djs/examples/{m.f.d.ts → m.f.d.mts} +0 -0
- /package/fjs/djs/parser/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/tokenizer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/djs/transpiler/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/effects/node/memory/{proof.d.ts → proof.d.mts} +0 -0
- /package/fjs/fsc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/fsm/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/html/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/json/serializer/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/nix/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/revision/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/media/type/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{module.d.ts → module.d.mts} +0 -0
- /package/fjs/path/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/protocol/json_rpc/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/id/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/sul/level/literal/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/ascii/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/code_point/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/sgr/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/text/utf8/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/array/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bigfloat/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/bit_vec/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/remove/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/btree/set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/{basen/base128/proof.f.d.ts → types/function/compare/proof.f.d.mts} +0 -0
- /package/fjs/types/function/operator/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/function/{compare/proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nibble_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/nullable/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/number/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/option/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/option/{module.f.js → types.js} +0 -0
- /package/fjs/types/ordered_map/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/phantom/{module.f.d.ts → types.d.ts} +0 -0
- /package/fjs/types/phantom/{module.f.js → types.js} +0 -0
- /package/fjs/types/prime_field/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/{function/proof.f.d.ts → range/proof.f.d.mts} +0 -0
- /package/fjs/types/{range/proof.f.d.ts → range_set/proof.f.d.mts} +0 -0
- /package/fjs/types/result/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/rtti/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/string_set/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/types/ts/{proof.f.d.ts → proof.f.d.mts} +0 -0
- /package/fjs/website/{proof.f.d.ts → proof.f.d.mts} +0 -0
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { type Rule as FRule } from '../module.f.ts';
|
|
2
|
-
import { type StringMap } from '../../types/object/module.f.ts';
|
|
3
|
-
/**
|
|
4
|
-
* Encoded terminal range value used by BNF data rules.
|
|
5
|
-
*
|
|
6
|
-
* The same as the functional TerminalRange.
|
|
7
|
-
*/
|
|
8
|
-
export type TerminalRange = number;
|
|
9
|
-
/**
|
|
10
|
-
* Ordered list of grammar rule names.
|
|
11
|
-
*/
|
|
12
|
-
export type Sequence = readonly string[];
|
|
13
|
-
/** A variant of rule names. */
|
|
14
|
-
export type Variant = StringMap<string>;
|
|
15
|
-
/**
|
|
16
|
-
* Grammar rule definition.
|
|
17
|
-
*
|
|
18
|
-
* It can be one of:
|
|
19
|
-
* - a tagged variant map,
|
|
20
|
-
* - a sequence of referenced rule names,
|
|
21
|
-
* - an encoded terminal range.
|
|
22
|
-
*/
|
|
23
|
-
export type Rule = Variant | Sequence | TerminalRange;
|
|
24
|
-
/** The full grammar */
|
|
25
|
-
export type RuleSet = Readonly<Record<string, Rule>>;
|
|
26
|
-
/**
|
|
27
|
-
* Whether a rule can match empty input: `undefined` if it never can, `true`
|
|
28
|
-
* if it can with no tag (a nullable sequence), or the tag of the nullable
|
|
29
|
-
* variant branch.
|
|
30
|
-
*/
|
|
31
|
-
export type EmptyTag = string | true | undefined;
|
|
32
|
-
type EmptyTagMap = StringMap<EmptyTag>;
|
|
33
|
-
/**
|
|
34
|
-
* Computes, for every rule in the set, whether it can match empty input, by
|
|
35
|
-
* the standard nullable-set fixpoint: a sequence is nullable iff all of its
|
|
36
|
-
* items are (AND semantics), a variant iff at least one branch is (its tag is
|
|
37
|
-
* that branch's). Rules may reference each other cyclically (e.g. a `repeat`
|
|
38
|
-
* rule referring to itself), so this starts every rule as non-nullable and
|
|
39
|
-
* relaxes every rule, one round at a time, until a full round changes
|
|
40
|
-
* nothing. A round only ever grows the nullable set or moves a variant's
|
|
41
|
-
* chosen tag to a later (still-nullable) branch, both bounded, so this always
|
|
42
|
-
* terminates — but a rule's tag can still change for rounds *after* its own
|
|
43
|
-
* nullable/non-nullable status has already settled, while a cyclic
|
|
44
|
-
* dependency's tag catches up, so a fixed round count isn't enough.
|
|
45
|
-
*/
|
|
46
|
-
export declare const emptyTagMap: (ruleSet: RuleSet) => EmptyTagMap;
|
|
47
|
-
/**
|
|
48
|
-
* Converts a functional grammar rule into serializable BNF data and returns
|
|
49
|
-
* the generated rule set with the entry rule identifier.
|
|
50
|
-
*/
|
|
51
|
-
export declare const toData: (fr: FRule) => readonly [RuleSet, string];
|
|
52
|
-
export {};
|
package/fjs/bnf/data/module.f.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The serializable BNF intermediate representation (IR) and the
|
|
3
|
-
* {@link toData} conversion from the functional grammar.
|
|
4
|
-
*
|
|
5
|
-
* This module is the pure, parser-agnostic substrate: it defines the
|
|
6
|
-
* {@link RuleSet} data form (`Rule = Variant | Sequence | TerminalRange`) and
|
|
7
|
-
* converts a functional grammar into it. The automaton builders that consume a
|
|
8
|
-
* {@link RuleSet} live in their own sibling modules (`fjs/bnf/ll1`,
|
|
9
|
-
* `fjs/bnf/descent`, …), so the IR stays free of any one parser's machinery.
|
|
10
|
-
*
|
|
11
|
-
* @module
|
|
12
|
-
*/
|
|
13
|
-
import { stringToCodePointList } from '../../text/utf16/module.f.js';
|
|
14
|
-
import { map, toArray } from '../../types/list/module.f.js';
|
|
15
|
-
import { oneEncode, } from '../module.f.js';
|
|
16
|
-
import { definedEntries } from '../../types/object/module.f.js';
|
|
17
|
-
const emptyTagOf = (map) => (rule) => {
|
|
18
|
-
if (typeof rule === 'number') {
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
else if (rule instanceof Array) {
|
|
22
|
-
return rule.every(item => map[item] !== undefined) ? true : undefined;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
let tag = undefined;
|
|
26
|
-
for (const [k, item] of definedEntries(rule)) {
|
|
27
|
-
if (map[item] !== undefined) {
|
|
28
|
-
tag = k;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return tag;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const emptyTagStep = (ruleSet) => (map) => {
|
|
35
|
-
let next = map;
|
|
36
|
-
let changed = false;
|
|
37
|
-
for (const name in ruleSet) {
|
|
38
|
-
const tag = emptyTagOf(map)(ruleSet[name]);
|
|
39
|
-
if (tag !== next[name]) {
|
|
40
|
-
changed = true;
|
|
41
|
-
}
|
|
42
|
-
next = { ...next, [name]: tag };
|
|
43
|
-
}
|
|
44
|
-
return [next, changed];
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Computes, for every rule in the set, whether it can match empty input, by
|
|
48
|
-
* the standard nullable-set fixpoint: a sequence is nullable iff all of its
|
|
49
|
-
* items are (AND semantics), a variant iff at least one branch is (its tag is
|
|
50
|
-
* that branch's). Rules may reference each other cyclically (e.g. a `repeat`
|
|
51
|
-
* rule referring to itself), so this starts every rule as non-nullable and
|
|
52
|
-
* relaxes every rule, one round at a time, until a full round changes
|
|
53
|
-
* nothing. A round only ever grows the nullable set or moves a variant's
|
|
54
|
-
* chosen tag to a later (still-nullable) branch, both bounded, so this always
|
|
55
|
-
* terminates — but a rule's tag can still change for rounds *after* its own
|
|
56
|
-
* nullable/non-nullable status has already settled, while a cyclic
|
|
57
|
-
* dependency's tag catches up, so a fixed round count isn't enough.
|
|
58
|
-
*/
|
|
59
|
-
export const emptyTagMap = (ruleSet) => {
|
|
60
|
-
const step = emptyTagStep(ruleSet);
|
|
61
|
-
const relax = (map) => {
|
|
62
|
-
const [next, changed] = step(map);
|
|
63
|
-
return changed ? relax(next) : next;
|
|
64
|
-
};
|
|
65
|
-
return relax({});
|
|
66
|
-
};
|
|
67
|
-
const { entries } = Object;
|
|
68
|
-
const find = (map) => (fr) => {
|
|
69
|
-
for (const [k, v] of entries(map)) {
|
|
70
|
-
if (v === fr) {
|
|
71
|
-
return k;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return undefined;
|
|
75
|
-
};
|
|
76
|
-
const newName = (map, name) => {
|
|
77
|
-
let i = 0;
|
|
78
|
-
let result = name;
|
|
79
|
-
while (result in map) {
|
|
80
|
-
result = name + i;
|
|
81
|
-
++i;
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
};
|
|
85
|
-
const sequence = (list) => map => {
|
|
86
|
-
let result = [];
|
|
87
|
-
let set = {};
|
|
88
|
-
for (const fr of list) {
|
|
89
|
-
const [map1, set1, id] = toDataAdd(map)(fr);
|
|
90
|
-
map = map1;
|
|
91
|
-
set = { ...set, ...set1 };
|
|
92
|
-
result = [...result, id];
|
|
93
|
-
}
|
|
94
|
-
return [map, set, result];
|
|
95
|
-
};
|
|
96
|
-
const variant = (fr) => map => {
|
|
97
|
-
let set = {};
|
|
98
|
-
let rule = {};
|
|
99
|
-
for (const [k, v] of entries(fr)) {
|
|
100
|
-
const [m1, s, id] = toDataAdd(map)(v);
|
|
101
|
-
map = m1;
|
|
102
|
-
set = { ...set, ...s };
|
|
103
|
-
rule = { ...rule, [k]: id };
|
|
104
|
-
}
|
|
105
|
-
return [map, set, rule];
|
|
106
|
-
};
|
|
107
|
-
const mapOneEncode = map(oneEncode);
|
|
108
|
-
const data = (dr) => {
|
|
109
|
-
switch (typeof dr) {
|
|
110
|
-
case 'string': {
|
|
111
|
-
return sequence(toArray(mapOneEncode(stringToCodePointList(dr))));
|
|
112
|
-
}
|
|
113
|
-
case 'number':
|
|
114
|
-
return m => [m, {}, dr];
|
|
115
|
-
default:
|
|
116
|
-
if (dr instanceof Array) {
|
|
117
|
-
return sequence(dr);
|
|
118
|
-
}
|
|
119
|
-
return variant(dr);
|
|
120
|
-
}
|
|
121
|
-
};
|
|
122
|
-
const toDataAdd = (map) => (fr) => {
|
|
123
|
-
{
|
|
124
|
-
const id = find(map)(fr);
|
|
125
|
-
if (id !== undefined) {
|
|
126
|
-
return [map, {}, id];
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const [dr, tmpId] = typeof fr === 'function' ? [fr(), fr.name] : [fr, ''];
|
|
130
|
-
const newRule = data(dr);
|
|
131
|
-
const id = newName(map, tmpId);
|
|
132
|
-
const map1 = { ...map, [id]: fr };
|
|
133
|
-
const [map2, set, rule] = newRule(map1);
|
|
134
|
-
return [map2, { ...set, [id]: rule }, id];
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* Converts a functional grammar rule into serializable BNF data and returns
|
|
138
|
-
* the generated rule set with the entry rule identifier.
|
|
139
|
-
*/
|
|
140
|
-
export const toData = (fr) => {
|
|
141
|
-
const [, ruleSet, id] = toDataAdd({})(fr);
|
|
142
|
-
return [ruleSet, id];
|
|
143
|
-
};
|
package/fjs/bnf/data/proof.f.js
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { stringify } from '../../media/json/module.f.js';
|
|
2
|
-
import { identity } from '../../types/function/module.f.js';
|
|
3
|
-
import { sort } from '../../types/object/module.f.js';
|
|
4
|
-
import { oneEncode, option, range, rangeDecode, repeat0Plus, set } from '../module.f.js';
|
|
5
|
-
import { classic, deterministic } from '../testlib.f.js';
|
|
6
|
-
import { emptyTagMap, toData } from './module.f.js';
|
|
7
|
-
import { assertEq } from '../../asserts/module.f.js';
|
|
8
|
-
export const proof = {
|
|
9
|
-
rangeDecode: () => {
|
|
10
|
-
const decoded1 = stringify(sort)(rangeDecode(0x000079_000087));
|
|
11
|
-
assertEq(decoded1, '[121,135]');
|
|
12
|
-
const decoded2 = stringify(sort)(rangeDecode(0x000080_000087));
|
|
13
|
-
assertEq(decoded2, '[128,135]');
|
|
14
|
-
const decoded3 = stringify(sort)(rangeDecode(0x10FFFF_10FFFF));
|
|
15
|
-
assertEq(decoded3, '[1114111,1114111]');
|
|
16
|
-
},
|
|
17
|
-
rangeEncode: () => {
|
|
18
|
-
const encoded1 = oneEncode(0x79);
|
|
19
|
-
if (encoded1 !== 0x000079_000079) {
|
|
20
|
-
throw encoded1;
|
|
21
|
-
}
|
|
22
|
-
const encoded2 = oneEncode(0x80);
|
|
23
|
-
if (encoded2 !== 0x000080_000080) {
|
|
24
|
-
throw encoded2;
|
|
25
|
-
}
|
|
26
|
-
const encoded3 = oneEncode(0x10FFFF);
|
|
27
|
-
if (encoded3 !== 0x10FFFF_10FFFF) {
|
|
28
|
-
throw encoded3;
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
toData: [
|
|
32
|
-
() => {
|
|
33
|
-
const c = toData(classic());
|
|
34
|
-
const d = toData(deterministic());
|
|
35
|
-
},
|
|
36
|
-
() => {
|
|
37
|
-
const stringRule = 'true';
|
|
38
|
-
const result = stringify(sort)(toData(stringRule));
|
|
39
|
-
if (result !== '[{"":["0","1","2","3"],"0":1946157172,"1":1912602738,"2":1962934389,"3":1694498917},""]') {
|
|
40
|
-
throw result;
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
() => {
|
|
44
|
-
const terminalRangeRule = range('AF');
|
|
45
|
-
const result = stringify(sort)(toData(terminalRangeRule));
|
|
46
|
-
if (result !== '[{"":1090519110},""]') {
|
|
47
|
-
throw result;
|
|
48
|
-
} //1090519110 = 65 * 2^24 + 70
|
|
49
|
-
},
|
|
50
|
-
() => {
|
|
51
|
-
const sequenceRangeRule = [range('AF'), range('af')];
|
|
52
|
-
const result = stringify(sort)(toData(sequenceRangeRule));
|
|
53
|
-
if (result !== '[{"":["0","1"],"0":1090519110,"1":1627390054},""]') {
|
|
54
|
-
throw result;
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
() => {
|
|
58
|
-
const lazyRule = () => 'true';
|
|
59
|
-
const result = stringify(sort)(toData(lazyRule));
|
|
60
|
-
if (result !== '[{"":1946157172,"0":1912602738,"1":1962934389,"2":1694498917,"lazyRule":["","0","1","2"]},"lazyRule"]') {
|
|
61
|
-
throw result;
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
() => {
|
|
65
|
-
const varintRule = { true: 'true', false: 'false' };
|
|
66
|
-
const result = stringify(sort)(toData(varintRule));
|
|
67
|
-
const expected = '[{"":{"false":"5","true":"0"},"0":["1","2","3","4"],"1":1946157172,"2":1912602738,"3":1962934389,"4":1694498917,"5":["6","7","8","9","4"],"6":1711276134,"7":1627390049,"8":1811939436,"9":1929379955},""]';
|
|
68
|
-
assertEq(result, expected, [result, expected]);
|
|
69
|
-
},
|
|
70
|
-
() => {
|
|
71
|
-
const lazyRule = () => 'true';
|
|
72
|
-
const lazyRule0 = () => 'false';
|
|
73
|
-
const result = stringify(sort)(toData([lazyRule, lazyRule0]));
|
|
74
|
-
const expected = '[{"":["lazyRule","lazyRule0"],"0":1946157172,"1":1912602738,"2":1962934389,"3":1694498917,"4":1711276134,"5":1627390049,"6":1811939436,"7":1929379955,"lazyRule":["0","1","2","3"],"lazyRule0":["4","5","6","7","3"]},""]';
|
|
75
|
-
assertEq(result, expected, [result, expected]);
|
|
76
|
-
},
|
|
77
|
-
() => {
|
|
78
|
-
const emptyRule = '';
|
|
79
|
-
const result = stringify(sort)(toData(emptyRule));
|
|
80
|
-
const expected = '[{"":[]},""]';
|
|
81
|
-
assertEq(result, expected, [result, expected]);
|
|
82
|
-
},
|
|
83
|
-
() => {
|
|
84
|
-
const optionRule = option('a');
|
|
85
|
-
const result = stringify(identity)(toData(optionRule));
|
|
86
|
-
if (result !== '[{"0":["1"],"1":1627390049,"2":[],"":{"some":"0","none":"2"}},""]') {
|
|
87
|
-
throw result;
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
() => {
|
|
91
|
-
const repeatRule = repeat0Plus(option('a'));
|
|
92
|
-
const result = stringify(identity)(toData(repeatRule));
|
|
93
|
-
if (result !== '[{"0":{"some":"1","none":"3"},"1":["2"],"2":1627390049,"3":[],"":["0","r"],"r":{"some":"","none":"3"}},"r"]') {
|
|
94
|
-
throw result;
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
() => {
|
|
98
|
-
const repeatRule = repeat0Plus(set(' \n\r\t'));
|
|
99
|
-
const result = stringify(identity)(toData(repeatRule));
|
|
100
|
-
if (result !== '[{"0":{" ":"1","\\n":"2","\\r":"3","\\t":"4"},"1":536870944,"2":167772170,"3":218103821,"4":150994953,"5":[],"":["0","r"],"r":{"some":"","none":"5"}},"r"]') {
|
|
101
|
-
throw result;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
],
|
|
105
|
-
variantTest: () => {
|
|
106
|
-
const varintRule = { a: 'a', b: 'b' };
|
|
107
|
-
const result = stringify(sort)(toData(varintRule));
|
|
108
|
-
if (result !== '[{"":{"a":"0","b":"2"},"0":["1"],"1":1627390049,"2":["3"],"3":1644167266},""]') {
|
|
109
|
-
throw result;
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
emptyTagMap: [
|
|
113
|
-
() => {
|
|
114
|
-
const stringRule = 'true';
|
|
115
|
-
const result = JSON.stringify(emptyTagMap(toData(stringRule)[0]));
|
|
116
|
-
assertEq(result, '{}');
|
|
117
|
-
},
|
|
118
|
-
() => {
|
|
119
|
-
const emptyRule = '';
|
|
120
|
-
const result = JSON.stringify(emptyTagMap(toData(emptyRule)[0]));
|
|
121
|
-
assertEq(result, '{"":true}');
|
|
122
|
-
},
|
|
123
|
-
() => {
|
|
124
|
-
const emptyRule = '';
|
|
125
|
-
const varintRule = { true: 'true', e: emptyRule };
|
|
126
|
-
const result = JSON.stringify(emptyTagMap(toData(varintRule)[0]));
|
|
127
|
-
assertEq(result, '{"5":true,"":"e"}');
|
|
128
|
-
},
|
|
129
|
-
() => {
|
|
130
|
-
const repeatRule = repeat0Plus(option('a'));
|
|
131
|
-
const result = JSON.stringify(emptyTagMap(toData(repeatRule)[0]));
|
|
132
|
-
assertEq(result, '{"0":"none","3":true,"":true,"r":"none"}');
|
|
133
|
-
},
|
|
134
|
-
() => {
|
|
135
|
-
// Regression for the sequence case: a sequence is nullable iff
|
|
136
|
-
// *all* of its items are, not just the first one. The old
|
|
137
|
-
// descent-only implementation pinned the result to nullable as
|
|
138
|
-
// soon as it saw the leading empty item, and reported this
|
|
139
|
-
// 2-item sequence as nullable even though its second item is a
|
|
140
|
-
// mandatory terminal.
|
|
141
|
-
const data = toData(['', range('AA')]);
|
|
142
|
-
const emptyTags = emptyTagMap(data[0]);
|
|
143
|
-
assertEq(emptyTags[data[1]], undefined, emptyTags);
|
|
144
|
-
},
|
|
145
|
-
() => {
|
|
146
|
-
// Regression: a fixed round count (one round per rule) settles
|
|
147
|
-
// the nullable/non-nullable *set* — a standard result — but a
|
|
148
|
-
// variant's chosen *tag* can still change for rounds after that,
|
|
149
|
-
// while a cyclic dependency's own tag catches up. Here A is
|
|
150
|
-
// nullable via 'x' (A -> E, both settle in 2 rounds), but B (a
|
|
151
|
-
// 1-item sequence over A) only becomes nullable once A does, and
|
|
152
|
-
// once B is nullable, A's true winning branch is 'y' (A -> B) —
|
|
153
|
-
// reachable only by iterating to an actual fixpoint.
|
|
154
|
-
const rs = { A: { x: 'E', y: 'B' }, B: ['A'], E: [] };
|
|
155
|
-
assertEq(emptyTagMap(rs).A, 'y');
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
example: () => {
|
|
159
|
-
const grammar = {
|
|
160
|
-
space: 0x000020_000020,
|
|
161
|
-
digit: 0x000030_000039,
|
|
162
|
-
sequence: ['space', 'digit'],
|
|
163
|
-
spaceOrDigit: {
|
|
164
|
-
'whiteSpace': 'space',
|
|
165
|
-
'digit': 'digit',
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
},
|
|
169
|
-
};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursive descent matcher backend over the BNF data {@link RuleSet}.
|
|
3
|
-
*
|
|
4
|
-
* Built from the serializable IR in `fjs/bnf/data`, this is a sibling of the
|
|
5
|
-
* LL(1) dispatch builder (`fjs/bnf/ll1`). It walks the grammar by recursive
|
|
6
|
-
* descent and preserves per-code-point metadata, producing a metadata-aware
|
|
7
|
-
* AST ({@link AstRuleMeta}). Nullability (which rule can match empty input) is
|
|
8
|
-
* computed once by {@link emptyTagMap} in `fjs/bnf/data`.
|
|
9
|
-
*
|
|
10
|
-
* A failed result also carries a {@link DescentFailure}: the furthest position a
|
|
11
|
-
* terminal was rejected at, which — unlike the result's own index — never
|
|
12
|
-
* rewinds and is what diagnostics should be built from.
|
|
13
|
-
*
|
|
14
|
-
* @module
|
|
15
|
-
*/
|
|
16
|
-
import { type CodePoint } from '../../text/utf16/module.f.ts';
|
|
17
|
-
import { type TerminalRange } from '../module.f.ts';
|
|
18
|
-
import { type Rule as FRule } from '../module.f.ts';
|
|
19
|
-
export type AstTag = string | true | undefined;
|
|
20
|
-
/**
|
|
21
|
-
* Recursive descent matcher for a single named rule.
|
|
22
|
-
*/
|
|
23
|
-
export type DescentMatchRule<T> = (name: string, tag: AstTag, s: readonly CodePointMeta<T>[], idx: number) => DescentMatchResult<T>;
|
|
24
|
-
/**
|
|
25
|
-
* Where a match ran out of road, for diagnostics.
|
|
26
|
-
*
|
|
27
|
-
* `idx` is the furthest position any terminal was tried at and rejected, and
|
|
28
|
-
* `expected` holds the terminals that would have allowed progress there, in the
|
|
29
|
-
* order the grammar tried them and without repeats.
|
|
30
|
-
*
|
|
31
|
-
* Unlike a failed result's own index, this never rewinds: a failing sequence
|
|
32
|
-
* item rewinds the result to the sequence's start, while the furthest failure is
|
|
33
|
-
* a high-water mark over the whole match — including branches the grammar
|
|
34
|
-
* backtracked out of. That is what makes "expected X or Y at N" possible.
|
|
35
|
-
*
|
|
36
|
-
* `idx` is `0` with an empty `expected` when the match failed without ever
|
|
37
|
-
* rejecting a terminal, as an empty variant does.
|
|
38
|
-
*/
|
|
39
|
-
export type DescentFailure = {
|
|
40
|
-
readonly idx: number;
|
|
41
|
-
readonly expected: readonly TerminalRange[];
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Result of a descent match operation.
|
|
45
|
-
*
|
|
46
|
-
* `failure` is present exactly when `success` is `false`: a successful match has
|
|
47
|
-
* nothing to diagnose, and its `idx` already says where matching stopped. Note
|
|
48
|
-
* the consequence for a match that succeeds *without consuming all input* —
|
|
49
|
-
* `idx` still locates the position it stopped at, but the terminals that would
|
|
50
|
-
* have let it continue are not reported.
|
|
51
|
-
*
|
|
52
|
-
* On failure `idx` has rewound to the start of the enclosing sequence and
|
|
53
|
-
* locates nothing; read `failure.idx` instead.
|
|
54
|
-
*
|
|
55
|
-
* The same type describes a match in progress, where `failure` is likewise
|
|
56
|
-
* absent until the match ends.
|
|
57
|
-
*/
|
|
58
|
-
export type DescentMatchResult<T> = {
|
|
59
|
-
readonly ast: AstRuleMeta<T>;
|
|
60
|
-
readonly success: boolean;
|
|
61
|
-
readonly idx: number;
|
|
62
|
-
readonly failure?: DescentFailure;
|
|
63
|
-
};
|
|
64
|
-
/**
|
|
65
|
-
* Entry-point recursive descent matcher.
|
|
66
|
-
*/
|
|
67
|
-
export type DescentMatch<T> = (name: string, s: readonly CodePointMeta<T>[]) => DescentMatchResult<T>;
|
|
68
|
-
/**
|
|
69
|
-
* Code point value paired with metadata.
|
|
70
|
-
*/
|
|
71
|
-
export type CodePointMeta<T> = readonly [CodePoint, T];
|
|
72
|
-
/**
|
|
73
|
-
* AST sequence for the metadata-aware parser.
|
|
74
|
-
*/
|
|
75
|
-
export type AstSequenceMeta<T> = readonly (AstRuleMeta<T> | CodePointMeta<T>)[];
|
|
76
|
-
/**
|
|
77
|
-
* Metadata-aware AST node.
|
|
78
|
-
*/
|
|
79
|
-
export type AstRuleMeta<T> = {
|
|
80
|
-
readonly tag: AstTag;
|
|
81
|
-
readonly sequence: AstSequenceMeta<T>;
|
|
82
|
-
};
|
|
83
|
-
/**
|
|
84
|
-
* Creates a recursive descent parser that preserves metadata for each consumed
|
|
85
|
-
* code point.
|
|
86
|
-
*/
|
|
87
|
-
export declare const descentParser: <T>(fr: FRule) => DescentMatch<T>;
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recursive descent matcher backend over the BNF data {@link RuleSet}.
|
|
3
|
-
*
|
|
4
|
-
* Built from the serializable IR in `fjs/bnf/data`, this is a sibling of the
|
|
5
|
-
* LL(1) dispatch builder (`fjs/bnf/ll1`). It walks the grammar by recursive
|
|
6
|
-
* descent and preserves per-code-point metadata, producing a metadata-aware
|
|
7
|
-
* AST ({@link AstRuleMeta}). Nullability (which rule can match empty input) is
|
|
8
|
-
* computed once by {@link emptyTagMap} in `fjs/bnf/data`.
|
|
9
|
-
*
|
|
10
|
-
* A failed result also carries a {@link DescentFailure}: the furthest position a
|
|
11
|
-
* terminal was rejected at, which — unlike the result's own index — never
|
|
12
|
-
* rewinds and is what diagnostics should be built from.
|
|
13
|
-
*
|
|
14
|
-
* @module
|
|
15
|
-
*/
|
|
16
|
-
import {} from '../../text/utf16/module.f.js';
|
|
17
|
-
import { rangeDecode } from '../module.f.js';
|
|
18
|
-
import { contains as rangeContains } from '../../types/range/module.f.js';
|
|
19
|
-
import { definedEntries } from '../../types/object/module.f.js';
|
|
20
|
-
import { emptyTagMap, toData } from '../data/module.f.js';
|
|
21
|
-
import {} from '../module.f.js';
|
|
22
|
-
/**
|
|
23
|
-
* Folds one rejected terminal into the furthest-failure record: further along
|
|
24
|
-
* replaces, the same position accumulates (ignoring repeats), earlier is
|
|
25
|
-
* discarded.
|
|
26
|
-
*/
|
|
27
|
-
const recordFailure = (failure, idx, terminal) => {
|
|
28
|
-
if (idx > failure.idx) {
|
|
29
|
-
return { idx, expected: [terminal] };
|
|
30
|
-
}
|
|
31
|
-
if (idx < failure.idx || failure.expected.includes(terminal)) {
|
|
32
|
-
return failure;
|
|
33
|
-
}
|
|
34
|
-
return { idx, expected: [...failure.expected, terminal] };
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Creates a recursive descent parser that preserves metadata for each consumed
|
|
38
|
-
* code point.
|
|
39
|
-
*/
|
|
40
|
-
export const descentParser = (fr) => {
|
|
41
|
-
const data = toData(fr);
|
|
42
|
-
const emptyTags = emptyTagMap(data[0]);
|
|
43
|
-
// The recursive-descent matcher as an explicit-stack machine: each iteration either
|
|
44
|
-
// starts the current task (pushing a frame for a sequence/variant and descending into
|
|
45
|
-
// its first child) or feeds the pending result into the innermost frame. Semantics are
|
|
46
|
-
// identical to the former recursive `f`, but the JS call stack stays O(1) regardless of
|
|
47
|
-
// grammar recursion depth — right-recursive rules (e.g. repeat0Plus chains) no longer
|
|
48
|
-
// overflow on long input (see the longInput proof group).
|
|
49
|
-
const f = (name, tag, cp, idx) => {
|
|
50
|
-
const mrSuccess = (tag, sequence, idx) => ({ ast: { tag, sequence }, success: true, idx });
|
|
51
|
-
const mrFail = (tag, sequence, idx) => ({ ast: { tag, sequence }, success: false, idx });
|
|
52
|
-
let stack = null;
|
|
53
|
-
let task = { name, tag, idx };
|
|
54
|
-
let result = mrFail(undefined, [], idx);
|
|
55
|
-
// High-water mark across the whole match, so it survives the rewinds a
|
|
56
|
-
// failing sequence item does to `result`.
|
|
57
|
-
let furthest = { idx: 0, expected: [] };
|
|
58
|
-
while (true) {
|
|
59
|
-
if (task !== null) {
|
|
60
|
-
const { name, tag, idx } = task;
|
|
61
|
-
task = null;
|
|
62
|
-
// The explicit annotation cuts a control-flow inference cycle (TS7022):
|
|
63
|
-
// `name`'s narrowed type feeds `rule`, whose type would otherwise feed the
|
|
64
|
-
// later `task` assignments that `name`'s narrowing depends on.
|
|
65
|
-
const rule = data[0][name];
|
|
66
|
-
if (typeof rule === 'number') {
|
|
67
|
-
// No nullable case: `emptyTagOf` in `bnf/data` returns `undefined`
|
|
68
|
-
// for every terminal, so `emptyTags[name]` here is always
|
|
69
|
-
// `undefined` and a terminal either consumes one symbol or fails.
|
|
70
|
-
if (idx < cp.length && rangeContains(...rangeDecode(rule))(cp[idx][0])) {
|
|
71
|
-
result = mrSuccess(tag, [cp[idx]], idx + 1);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// The only place a terminal is rejected, so the only place
|
|
75
|
-
// the furthest failure can advance.
|
|
76
|
-
furthest = recordFailure(furthest, idx, rule);
|
|
77
|
-
result = mrFail(undefined, [], idx);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else if (rule instanceof Array) {
|
|
81
|
-
if (rule.length === 0) {
|
|
82
|
-
result = mrSuccess(tag, [], idx);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
stack = { top: { kind: 'seq', tag, items: rule, itemIndex: 0, startIdx: idx, seq: [] }, rest: stack };
|
|
86
|
-
task = { name: rule[0], tag: undefined, idx };
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
const entries = definedEntries(rule);
|
|
91
|
-
const emptyTag = emptyTags[name];
|
|
92
|
-
const emptyResult = mrFail(emptyTag, [], idx);
|
|
93
|
-
if (entries.length === 0) {
|
|
94
|
-
result = emptyResult;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
stack = { top: { kind: 'variant', entries, entryIndex: 0, idx, emptyResult }, rest: stack };
|
|
98
|
-
const [entryTag, entryName] = entries[0];
|
|
99
|
-
task = { name: entryName, tag: entryTag, idx };
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
if (stack === null) {
|
|
105
|
-
// A success has nothing to diagnose; only a failure carries it.
|
|
106
|
-
return result.success ? result : { ...result, failure: furthest };
|
|
107
|
-
}
|
|
108
|
-
const frame = stack.top;
|
|
109
|
-
stack = stack.rest;
|
|
110
|
-
if (frame.kind === 'seq') {
|
|
111
|
-
const { ast: astRule, success, idx: nidx } = result;
|
|
112
|
-
if (success === false) {
|
|
113
|
-
result = mrFail(frame.tag, [], frame.startIdx);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
const seq = [...frame.seq, astRule];
|
|
117
|
-
const itemIndex = frame.itemIndex + 1;
|
|
118
|
-
if (itemIndex < frame.items.length) {
|
|
119
|
-
stack = { top: { ...frame, itemIndex, seq }, rest: stack };
|
|
120
|
-
task = { name: frame.items[itemIndex], tag: undefined, idx: nidx };
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
result = mrSuccess(frame.tag, seq, nidx);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
// success that consumed input wins immediately: the frame stays popped and
|
|
129
|
-
// `result` propagates to the frame below, matching the recursive `return m`.
|
|
130
|
-
if (!(result.success && frame.idx !== result.idx)) {
|
|
131
|
-
const emptyResult = result.success ? result : frame.emptyResult;
|
|
132
|
-
const entryIndex = frame.entryIndex + 1;
|
|
133
|
-
if (entryIndex < frame.entries.length) {
|
|
134
|
-
stack = { top: { ...frame, entryIndex, emptyResult }, rest: stack };
|
|
135
|
-
const [entryTag, entryName] = frame.entries[entryIndex];
|
|
136
|
-
task = { name: entryName, tag: entryTag, idx: frame.idx };
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
result = emptyResult;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
const match = (name, cp) => {
|
|
146
|
-
return f(name, undefined, cp, 0);
|
|
147
|
-
};
|
|
148
|
-
return match;
|
|
149
|
-
};
|