porffor 0.1.0 → 0.2.0-77e30e8
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 +184 -204
- package/compiler/2c.js +377 -0
- package/compiler/builtins/base64.js +91 -91
- package/compiler/builtins.js +19 -13
- package/compiler/codeGen.js +1313 -418
- package/compiler/decompile.js +35 -9
- package/compiler/embedding.js +9 -5
- package/compiler/encoding.js +8 -2
- package/compiler/index.js +55 -17
- package/compiler/log.js +15 -0
- package/compiler/opt.js +357 -258
- package/compiler/parse.js +24 -1
- package/compiler/prototype.js +263 -56
- package/compiler/sections.js +51 -8
- package/compiler/wasmSpec.js +3 -0
- package/compiler/wrap.js +21 -7
- package/package.json +6 -1
- package/porf.cmd +1 -1
- package/rhemyn/README.md +37 -0
- package/rhemyn/compile.js +214 -0
- package/rhemyn/parse.js +321 -0
- package/rhemyn/test/parse.js +59 -0
- package/runner/index.js +54 -31
- package/runner/info.js +37 -2
- package/runner/profile.js +1 -2
- package/runner/repl.js +13 -11
- package/runner/results.json +1 -0
- package/runner/transform.js +15 -36
- package/runner/version.js +10 -0
- package/CNAME +0 -1
- package/index.html +0 -1264
- package/logo.png +0 -0
- package/sw.js +0 -26
- package/test/array_1.js +0 -8
- package/test/array_push.js +0 -8
- package/test/assignop_1.js +0 -15
- package/test/bitwise_1.js +0 -6
- package/test/bool_1.js +0 -3
- package/test/boolean.js +0 -6
- package/test/break_1.js +0 -6
- package/test/break_2.js +0 -12
- package/test/conditional_1.js +0 -3
- package/test/conditional_2.js +0 -4
- package/test/console_1.js +0 -2
- package/test/continue_1.js +0 -6
- package/test/continue_2.js +0 -10
- package/test/empty.js +0 -1
- package/test/ending_exp_1.js +0 -2
- package/test/ending_exp_2.js +0 -6
- package/test/eq_1.js +0 -4
- package/test/eq_2.js +0 -4
- package/test/eq_3.js +0 -5
- package/test/export_1.js +0 -9
- package/test/factorial.js +0 -3
- package/test/fibonacci.js +0 -16
- package/test/float_div0.js +0 -2
- package/test/float_frac.js +0 -2
- package/test/float_isfinite.js +0 -29
- package/test/float_isinteger.js +0 -13
- package/test/float_isnan.js +0 -20
- package/test/float_issafeinteger.js +0 -11
- package/test/float_large.js +0 -2
- package/test/float_math_funcs.js +0 -24
- package/test/float_math_random.js +0 -6
- package/test/float_nan.js +0 -3
- package/test/float_number_values.js +0 -12
- package/test/for_1.js +0 -4
- package/test/for_2.js +0 -4
- package/test/func_1.js +0 -16
- package/test/func_2.js +0 -6
- package/test/func_3.js +0 -10
- package/test/global_1.js +0 -8
- package/test/global_2.js +0 -10
- package/test/if_1.js +0 -6
- package/test/if_2.js +0 -9
- package/test/if_3.js +0 -7
- package/test/iife_1.js +0 -8
- package/test/iife_2.js +0 -8
- package/test/index.js +0 -93
- package/test/int_number_values.js +0 -6
- package/test/logic_1.js +0 -7
- package/test/logic_2.js +0 -7
- package/test/math_1.js +0 -6
- package/test/math_2.js +0 -12
- package/test/math_3.js +0 -6
- package/test/number_func.js +0 -4
- package/test/return_1.js +0 -8
- package/test/return_2.js +0 -11
- package/test/tailcall_1.js +0 -10
- package/test/throw_1.js +0 -2
- package/test/throw_2.js +0 -4
- package/test/throw_3.js +0 -2
- package/test/throw_4.js +0 -3
- package/test/try_1.js +0 -7
- package/test/unary_1.js +0 -4
- package/test/unary_2.js +0 -5
- package/test/unary_3.js +0 -6
- package/test/unary_4.js +0 -12
- package/test/unary_5.js +0 -8
- package/test/undefined_1.js +0 -8
- package/test/undefined_2.js +0 -10
- package/test/updateexp_1.js +0 -9
- package/test/vars_1.js +0 -5
- package/test/vars_2.js +0 -9
- package/test/while_1.js +0 -6
- package/test262/compare.js +0 -30
- package/test262/index.js +0 -314
- package/test262/node_modules/.bin/esparse +0 -12
- package/test262/node_modules/.bin/esparse.cmd +0 -17
- package/test262/node_modules/.bin/esparse.ps1 +0 -28
- package/test262/node_modules/.bin/esvalidate +0 -12
- package/test262/node_modules/.bin/esvalidate.cmd +0 -17
- package/test262/node_modules/.bin/esvalidate.ps1 +0 -28
- package/test262/node_modules/.bin/js-yaml +0 -12
- package/test262/node_modules/.bin/js-yaml.cmd +0 -17
- package/test262/node_modules/.bin/js-yaml.ps1 +0 -28
- package/test262/node_modules/.package-lock.json +0 -0
- package/test262/node_modules/@nodelib/fs.scandir/LICENSE +0 -21
- package/test262/node_modules/@nodelib/fs.scandir/README.md +0 -171
- package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +0 -20
- package/test262/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +0 -19
- package/test262/node_modules/@nodelib/fs.scandir/out/constants.d.ts +0 -4
- package/test262/node_modules/@nodelib/fs.scandir/out/constants.js +0 -17
- package/test262/node_modules/@nodelib/fs.scandir/out/index.d.ts +0 -12
- package/test262/node_modules/@nodelib/fs.scandir/out/index.js +0 -26
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +0 -7
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/async.js +0 -104
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +0 -1
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/common.js +0 -13
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +0 -5
- package/test262/node_modules/@nodelib/fs.scandir/out/providers/sync.js +0 -54
- package/test262/node_modules/@nodelib/fs.scandir/out/settings.d.ts +0 -20
- package/test262/node_modules/@nodelib/fs.scandir/out/settings.js +0 -24
- package/test262/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +0 -20
- package/test262/node_modules/@nodelib/fs.scandir/out/types/index.js +0 -2
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +0 -2
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/fs.js +0 -19
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +0 -2
- package/test262/node_modules/@nodelib/fs.scandir/out/utils/index.js +0 -5
- package/test262/node_modules/@nodelib/fs.scandir/package.json +0 -44
- package/test262/node_modules/@nodelib/fs.stat/LICENSE +0 -21
- package/test262/node_modules/@nodelib/fs.stat/README.md +0 -126
- package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +0 -13
- package/test262/node_modules/@nodelib/fs.stat/out/adapters/fs.js +0 -17
- package/test262/node_modules/@nodelib/fs.stat/out/index.d.ts +0 -12
- package/test262/node_modules/@nodelib/fs.stat/out/index.js +0 -26
- package/test262/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +0 -4
- package/test262/node_modules/@nodelib/fs.stat/out/providers/async.js +0 -36
- package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +0 -3
- package/test262/node_modules/@nodelib/fs.stat/out/providers/sync.js +0 -23
- package/test262/node_modules/@nodelib/fs.stat/out/settings.d.ts +0 -16
- package/test262/node_modules/@nodelib/fs.stat/out/settings.js +0 -16
- package/test262/node_modules/@nodelib/fs.stat/out/types/index.d.ts +0 -4
- package/test262/node_modules/@nodelib/fs.stat/out/types/index.js +0 -2
- package/test262/node_modules/@nodelib/fs.stat/package.json +0 -37
- package/test262/node_modules/@nodelib/fs.walk/LICENSE +0 -21
- package/test262/node_modules/@nodelib/fs.walk/README.md +0 -215
- package/test262/node_modules/@nodelib/fs.walk/out/index.d.ts +0 -14
- package/test262/node_modules/@nodelib/fs.walk/out/index.js +0 -34
- package/test262/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +0 -12
- package/test262/node_modules/@nodelib/fs.walk/out/providers/async.js +0 -30
- package/test262/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +0 -4
- package/test262/node_modules/@nodelib/fs.walk/out/providers/index.js +0 -9
- package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +0 -12
- package/test262/node_modules/@nodelib/fs.walk/out/providers/stream.js +0 -34
- package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +0 -10
- package/test262/node_modules/@nodelib/fs.walk/out/providers/sync.js +0 -14
- package/test262/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +0 -30
- package/test262/node_modules/@nodelib/fs.walk/out/readers/async.js +0 -97
- package/test262/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +0 -7
- package/test262/node_modules/@nodelib/fs.walk/out/readers/common.js +0 -31
- package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +0 -6
- package/test262/node_modules/@nodelib/fs.walk/out/readers/reader.js +0 -11
- package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +0 -15
- package/test262/node_modules/@nodelib/fs.walk/out/readers/sync.js +0 -59
- package/test262/node_modules/@nodelib/fs.walk/out/settings.d.ts +0 -30
- package/test262/node_modules/@nodelib/fs.walk/out/settings.js +0 -26
- package/test262/node_modules/@nodelib/fs.walk/out/types/index.d.ts +0 -8
- package/test262/node_modules/@nodelib/fs.walk/out/types/index.js +0 -2
- package/test262/node_modules/@nodelib/fs.walk/package.json +0 -44
- package/test262/node_modules/argparse/CHANGELOG.md +0 -185
- package/test262/node_modules/argparse/LICENSE +0 -21
- package/test262/node_modules/argparse/README.md +0 -257
- package/test262/node_modules/argparse/index.js +0 -3
- package/test262/node_modules/argparse/lib/action/append/constant.js +0 -47
- package/test262/node_modules/argparse/lib/action/append.js +0 -53
- package/test262/node_modules/argparse/lib/action/count.js +0 -40
- package/test262/node_modules/argparse/lib/action/help.js +0 -47
- package/test262/node_modules/argparse/lib/action/store/constant.js +0 -43
- package/test262/node_modules/argparse/lib/action/store/false.js +0 -27
- package/test262/node_modules/argparse/lib/action/store/true.js +0 -26
- package/test262/node_modules/argparse/lib/action/store.js +0 -50
- package/test262/node_modules/argparse/lib/action/subparsers.js +0 -149
- package/test262/node_modules/argparse/lib/action/version.js +0 -47
- package/test262/node_modules/argparse/lib/action.js +0 -146
- package/test262/node_modules/argparse/lib/action_container.js +0 -482
- package/test262/node_modules/argparse/lib/argparse.js +0 -14
- package/test262/node_modules/argparse/lib/argument/error.js +0 -50
- package/test262/node_modules/argparse/lib/argument/exclusive.js +0 -54
- package/test262/node_modules/argparse/lib/argument/group.js +0 -75
- package/test262/node_modules/argparse/lib/argument_parser.js +0 -1161
- package/test262/node_modules/argparse/lib/const.js +0 -21
- package/test262/node_modules/argparse/lib/help/added_formatters.js +0 -87
- package/test262/node_modules/argparse/lib/help/formatter.js +0 -795
- package/test262/node_modules/argparse/lib/namespace.js +0 -76
- package/test262/node_modules/argparse/lib/utils.js +0 -57
- package/test262/node_modules/argparse/package.json +0 -34
- package/test262/node_modules/braces/CHANGELOG.md +0 -184
- package/test262/node_modules/braces/LICENSE +0 -21
- package/test262/node_modules/braces/README.md +0 -593
- package/test262/node_modules/braces/index.js +0 -170
- package/test262/node_modules/braces/lib/compile.js +0 -57
- package/test262/node_modules/braces/lib/constants.js +0 -57
- package/test262/node_modules/braces/lib/expand.js +0 -113
- package/test262/node_modules/braces/lib/parse.js +0 -333
- package/test262/node_modules/braces/lib/stringify.js +0 -32
- package/test262/node_modules/braces/lib/utils.js +0 -112
- package/test262/node_modules/braces/package.json +0 -77
- package/test262/node_modules/esprima/ChangeLog +0 -235
- package/test262/node_modules/esprima/LICENSE.BSD +0 -21
- package/test262/node_modules/esprima/README.md +0 -46
- package/test262/node_modules/esprima/bin/esparse.js +0 -139
- package/test262/node_modules/esprima/bin/esvalidate.js +0 -236
- package/test262/node_modules/esprima/dist/esprima.js +0 -6709
- package/test262/node_modules/esprima/package.json +0 -112
- package/test262/node_modules/fast-glob/LICENSE +0 -21
- package/test262/node_modules/fast-glob/README.md +0 -859
- package/test262/node_modules/fast-glob/out/index.d.ts +0 -40
- package/test262/node_modules/fast-glob/out/index.js +0 -102
- package/test262/node_modules/fast-glob/out/managers/tasks.d.ts +0 -22
- package/test262/node_modules/fast-glob/out/managers/tasks.js +0 -110
- package/test262/node_modules/fast-glob/out/providers/async.d.ts +0 -9
- package/test262/node_modules/fast-glob/out/providers/async.js +0 -23
- package/test262/node_modules/fast-glob/out/providers/filters/deep.d.ts +0 -16
- package/test262/node_modules/fast-glob/out/providers/filters/deep.js +0 -62
- package/test262/node_modules/fast-glob/out/providers/filters/entry.d.ts +0 -16
- package/test262/node_modules/fast-glob/out/providers/filters/entry.js +0 -63
- package/test262/node_modules/fast-glob/out/providers/filters/error.d.ts +0 -8
- package/test262/node_modules/fast-glob/out/providers/filters/error.js +0 -15
- package/test262/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +0 -33
- package/test262/node_modules/fast-glob/out/providers/matchers/matcher.js +0 -45
- package/test262/node_modules/fast-glob/out/providers/matchers/partial.d.ts +0 -4
- package/test262/node_modules/fast-glob/out/providers/matchers/partial.js +0 -38
- package/test262/node_modules/fast-glob/out/providers/provider.d.ts +0 -19
- package/test262/node_modules/fast-glob/out/providers/provider.js +0 -48
- package/test262/node_modules/fast-glob/out/providers/stream.d.ts +0 -11
- package/test262/node_modules/fast-glob/out/providers/stream.js +0 -31
- package/test262/node_modules/fast-glob/out/providers/sync.d.ts +0 -9
- package/test262/node_modules/fast-glob/out/providers/sync.js +0 -23
- package/test262/node_modules/fast-glob/out/providers/transformers/entry.d.ts +0 -8
- package/test262/node_modules/fast-glob/out/providers/transformers/entry.js +0 -26
- package/test262/node_modules/fast-glob/out/readers/async.d.ts +0 -10
- package/test262/node_modules/fast-glob/out/readers/async.js +0 -35
- package/test262/node_modules/fast-glob/out/readers/reader.d.ts +0 -15
- package/test262/node_modules/fast-glob/out/readers/reader.js +0 -33
- package/test262/node_modules/fast-glob/out/readers/stream.d.ts +0 -14
- package/test262/node_modules/fast-glob/out/readers/stream.js +0 -55
- package/test262/node_modules/fast-glob/out/readers/sync.d.ts +0 -12
- package/test262/node_modules/fast-glob/out/readers/sync.js +0 -43
- package/test262/node_modules/fast-glob/out/settings.d.ts +0 -164
- package/test262/node_modules/fast-glob/out/settings.js +0 -57
- package/test262/node_modules/fast-glob/out/types/index.d.ts +0 -31
- package/test262/node_modules/fast-glob/out/types/index.js +0 -2
- package/test262/node_modules/fast-glob/out/utils/array.d.ts +0 -2
- package/test262/node_modules/fast-glob/out/utils/array.js +0 -22
- package/test262/node_modules/fast-glob/out/utils/errno.d.ts +0 -2
- package/test262/node_modules/fast-glob/out/utils/errno.js +0 -7
- package/test262/node_modules/fast-glob/out/utils/fs.d.ts +0 -4
- package/test262/node_modules/fast-glob/out/utils/fs.js +0 -19
- package/test262/node_modules/fast-glob/out/utils/index.d.ts +0 -8
- package/test262/node_modules/fast-glob/out/utils/index.js +0 -17
- package/test262/node_modules/fast-glob/out/utils/path.d.ts +0 -13
- package/test262/node_modules/fast-glob/out/utils/path.js +0 -68
- package/test262/node_modules/fast-glob/out/utils/pattern.d.ts +0 -47
- package/test262/node_modules/fast-glob/out/utils/pattern.js +0 -188
- package/test262/node_modules/fast-glob/out/utils/stream.d.ts +0 -4
- package/test262/node_modules/fast-glob/out/utils/stream.js +0 -17
- package/test262/node_modules/fast-glob/out/utils/string.d.ts +0 -2
- package/test262/node_modules/fast-glob/out/utils/string.js +0 -11
- package/test262/node_modules/fast-glob/package.json +0 -81
- package/test262/node_modules/fastq/.github/dependabot.yml +0 -11
- package/test262/node_modules/fastq/.github/workflows/ci.yml +0 -50
- package/test262/node_modules/fastq/LICENSE +0 -13
- package/test262/node_modules/fastq/README.md +0 -309
- package/test262/node_modules/fastq/bench.js +0 -66
- package/test262/node_modules/fastq/example.js +0 -14
- package/test262/node_modules/fastq/example.mjs +0 -11
- package/test262/node_modules/fastq/index.d.ts +0 -37
- package/test262/node_modules/fastq/package.json +0 -52
- package/test262/node_modules/fastq/queue.js +0 -289
- package/test262/node_modules/fastq/test/example.ts +0 -81
- package/test262/node_modules/fastq/test/promise.js +0 -248
- package/test262/node_modules/fastq/test/test.js +0 -566
- package/test262/node_modules/fastq/test/tsconfig.json +0 -11
- package/test262/node_modules/fill-range/LICENSE +0 -21
- package/test262/node_modules/fill-range/README.md +0 -237
- package/test262/node_modules/fill-range/index.js +0 -249
- package/test262/node_modules/fill-range/package.json +0 -69
- package/test262/node_modules/glob-parent/CHANGELOG.md +0 -110
- package/test262/node_modules/glob-parent/LICENSE +0 -15
- package/test262/node_modules/glob-parent/README.md +0 -137
- package/test262/node_modules/glob-parent/index.js +0 -42
- package/test262/node_modules/glob-parent/package.json +0 -48
- package/test262/node_modules/graceful-fs/LICENSE +0 -15
- package/test262/node_modules/graceful-fs/README.md +0 -143
- package/test262/node_modules/graceful-fs/clone.js +0 -23
- package/test262/node_modules/graceful-fs/graceful-fs.js +0 -448
- package/test262/node_modules/graceful-fs/legacy-streams.js +0 -118
- package/test262/node_modules/graceful-fs/package.json +0 -53
- package/test262/node_modules/graceful-fs/polyfills.js +0 -355
- package/test262/node_modules/is-extglob/LICENSE +0 -21
- package/test262/node_modules/is-extglob/README.md +0 -107
- package/test262/node_modules/is-extglob/index.js +0 -20
- package/test262/node_modules/is-extglob/package.json +0 -69
- package/test262/node_modules/is-glob/LICENSE +0 -21
- package/test262/node_modules/is-glob/README.md +0 -206
- package/test262/node_modules/is-glob/index.js +0 -150
- package/test262/node_modules/is-glob/package.json +0 -81
- package/test262/node_modules/is-number/LICENSE +0 -21
- package/test262/node_modules/is-number/README.md +0 -187
- package/test262/node_modules/is-number/index.js +0 -18
- package/test262/node_modules/is-number/package.json +0 -82
- package/test262/node_modules/js-yaml/CHANGELOG.md +0 -557
- package/test262/node_modules/js-yaml/LICENSE +0 -21
- package/test262/node_modules/js-yaml/README.md +0 -299
- package/test262/node_modules/js-yaml/bin/js-yaml.js +0 -132
- package/test262/node_modules/js-yaml/dist/js-yaml.js +0 -3989
- package/test262/node_modules/js-yaml/dist/js-yaml.min.js +0 -1
- package/test262/node_modules/js-yaml/index.js +0 -7
- package/test262/node_modules/js-yaml/lib/js-yaml/common.js +0 -59
- package/test262/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -850
- package/test262/node_modules/js-yaml/lib/js-yaml/exception.js +0 -43
- package/test262/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1644
- package/test262/node_modules/js-yaml/lib/js-yaml/mark.js +0 -76
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
- package/test262/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
- package/test262/node_modules/js-yaml/lib/js-yaml/schema.js +0 -108
- package/test262/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -138
- package/test262/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -35
- package/test262/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -116
- package/test262/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -173
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -93
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -60
- package/test262/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -28
- package/test262/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
- package/test262/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
- package/test262/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -34
- package/test262/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -44
- package/test262/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -53
- package/test262/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
- package/test262/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -29
- package/test262/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
- package/test262/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -88
- package/test262/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
- package/test262/node_modules/js-yaml/lib/js-yaml.js +0 -39
- package/test262/node_modules/js-yaml/package.json +0 -49
- package/test262/node_modules/klaw/CHANGELOG.md +0 -62
- package/test262/node_modules/klaw/LICENSE +0 -15
- package/test262/node_modules/klaw/README.md +0 -252
- package/test262/node_modules/klaw/package.json +0 -40
- package/test262/node_modules/klaw/src/index.js +0 -56
- package/test262/node_modules/merge2/LICENSE +0 -21
- package/test262/node_modules/merge2/README.md +0 -144
- package/test262/node_modules/merge2/index.js +0 -144
- package/test262/node_modules/merge2/package.json +0 -43
- package/test262/node_modules/micromatch/LICENSE +0 -21
- package/test262/node_modules/micromatch/README.md +0 -1011
- package/test262/node_modules/micromatch/index.js +0 -467
- package/test262/node_modules/micromatch/package.json +0 -119
- package/test262/node_modules/picomatch/CHANGELOG.md +0 -136
- package/test262/node_modules/picomatch/LICENSE +0 -21
- package/test262/node_modules/picomatch/README.md +0 -708
- package/test262/node_modules/picomatch/index.js +0 -3
- package/test262/node_modules/picomatch/lib/constants.js +0 -179
- package/test262/node_modules/picomatch/lib/parse.js +0 -1091
- package/test262/node_modules/picomatch/lib/picomatch.js +0 -342
- package/test262/node_modules/picomatch/lib/scan.js +0 -391
- package/test262/node_modules/picomatch/lib/utils.js +0 -64
- package/test262/node_modules/picomatch/package.json +0 -81
- package/test262/node_modules/queue-microtask/LICENSE +0 -20
- package/test262/node_modules/queue-microtask/README.md +0 -90
- package/test262/node_modules/queue-microtask/index.d.ts +0 -2
- package/test262/node_modules/queue-microtask/index.js +0 -9
- package/test262/node_modules/queue-microtask/package.json +0 -55
- package/test262/node_modules/reusify/.coveralls.yml +0 -1
- package/test262/node_modules/reusify/.travis.yml +0 -28
- package/test262/node_modules/reusify/LICENSE +0 -22
- package/test262/node_modules/reusify/README.md +0 -145
- package/test262/node_modules/reusify/benchmarks/createNoCodeFunction.js +0 -30
- package/test262/node_modules/reusify/benchmarks/fib.js +0 -13
- package/test262/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +0 -38
- package/test262/node_modules/reusify/package.json +0 -45
- package/test262/node_modules/reusify/reusify.js +0 -33
- package/test262/node_modules/reusify/test.js +0 -66
- package/test262/node_modules/run-parallel/LICENSE +0 -20
- package/test262/node_modules/run-parallel/README.md +0 -85
- package/test262/node_modules/run-parallel/index.js +0 -51
- package/test262/node_modules/run-parallel/package.json +0 -58
- package/test262/node_modules/sprintf-js/LICENSE +0 -24
- package/test262/node_modules/sprintf-js/README.md +0 -88
- package/test262/node_modules/sprintf-js/bower.json +0 -14
- package/test262/node_modules/sprintf-js/demo/angular.html +0 -20
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -4
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +0 -1
- package/test262/node_modules/sprintf-js/dist/angular-sprintf.min.map +0 -1
- package/test262/node_modules/sprintf-js/dist/sprintf.min.js +0 -4
- package/test262/node_modules/sprintf-js/dist/sprintf.min.js.map +0 -1
- package/test262/node_modules/sprintf-js/dist/sprintf.min.map +0 -1
- package/test262/node_modules/sprintf-js/gruntfile.js +0 -36
- package/test262/node_modules/sprintf-js/package.json +0 -22
- package/test262/node_modules/sprintf-js/src/angular-sprintf.js +0 -18
- package/test262/node_modules/sprintf-js/src/sprintf.js +0 -208
- package/test262/node_modules/sprintf-js/test/test.js +0 -82
- package/test262/node_modules/test262-stream/.jshintignore +0 -2
- package/test262/node_modules/test262-stream/.jshintrc +0 -6
- package/test262/node_modules/test262-stream/.travis.yml +0 -5
- package/test262/node_modules/test262-stream/CONTRIBUTING.md +0 -37
- package/test262/node_modules/test262-stream/LICENSE-MICROSOFT.txt +0 -27
- package/test262/node_modules/test262-stream/LICENSE.txt +0 -27
- package/test262/node_modules/test262-stream/README.md +0 -71
- package/test262/node_modules/test262-stream/lib/builder.js +0 -46
- package/test262/node_modules/test262-stream/lib/compile.js +0 -24
- package/test262/node_modules/test262-stream/lib/create-scenarios.js +0 -29
- package/test262/node_modules/test262-stream/lib/index.js +0 -187
- package/test262/node_modules/test262-stream/lib/test-file.js +0 -150
- package/test262/node_modules/test262-stream/package.json +0 -26
- package/test262/node_modules/test262-stream/test/collateral/invalid-missing-harness/fake-test262/test/a-test-file.js +0 -16
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/package.json +0 -3
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-other-accepted/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/package.json +0 -3
- package/test262/node_modules/test262-stream/test/collateral/invalid-version-unsupported/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_default.js +0 -49
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/asyncNegative_strict_mode.js +0 -50
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_default.js +0 -48
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/async_strict_mode.js +0 -49
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_default.js +0 -46
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/bothStrict_strict_mode.js +0 -47
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_default.js +0 -39
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/error_strict_mode.js +0 -40
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_default.js +0 -37
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/module_strict_mode.js +0 -38
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_default.js +0 -37
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/negative-empty_strict_mode.js +0 -38
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/noStrict_default.js +0 -36
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawNoStrict_default.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/rawStrict_default.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-content/test/strict_strict_mode.js +0 -41
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_default.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/asyncNegative_strict_mode.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_default.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/async_strict_mode.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_default.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/bothStrict_strict_mode.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_default.json +0 -19
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/error_strict_mode.json +0 -19
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_default.json +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/module_strict_mode.json +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_default.json +0 -19
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/negative-empty_strict_mode.json +0 -19
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/noStrict_default.json +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawNoStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/rawStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-default/expected-metadata/test/strict_strict_mode.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/async.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/asyncNegative.js +0 -11
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/bothStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/error.js +0 -8
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/module_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/negative-empty.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/noStrict.js +0 -5
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawNoStrict.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/rawStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-default/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_default.js +0 -46
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-content/test/bothStrict_strict_mode.js +0 -47
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_default.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/expected-metadata/test/bothStrict_strict_mode.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/bothStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-0_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-1_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-2_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-3_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-4_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-5_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-6_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-7_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-8_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-extra-files/fake-test262/test/zzz-9_FIXTURE.txt +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/raw_default.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_default.js +0 -38
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-content/test/runtime_strict_mode.js +0 -39
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/raw_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_default.json +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/expected-metadata/test/runtime_strict_mode.json +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/raw.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-insertionindex-with-copyright/fake-test262/test/runtime.js +0 -7
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_default.js +0 -11
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/asyncNegative_strict_mode.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_default.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/async_strict_mode.js +0 -11
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_default.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/bothStrict_strict_mode.js +0 -16
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_default.js +0 -8
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/error_strict_mode.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_default.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/module_strict_mode.js +0 -7
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_default.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/negative-empty_strict_mode.js +0 -7
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/noStrict_default.js +0 -5
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawNoStrict_default.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/rawStrict_default.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-content/test/strict_strict_mode.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_default.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/asyncNegative_strict_mode.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/async_strict_mode.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/bothStrict_strict_mode.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_default.json +0 -16
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/error_strict_mode.json +0 -16
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/module_strict_mode.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_default.json +0 -16
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/negative-empty_strict_mode.json +0 -16
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/noStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawNoStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/rawStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/expected-metadata/test/strict_strict_mode.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/async.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/asyncNegative.js +0 -11
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/bothStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/error.js +0 -8
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/module_FIXTURE.js +0 -2
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/negative-empty.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/noStrict.js +0 -5
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawNoStrict.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/rawStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-omit-runtime/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-content/test/strict_strict_mode.js +0 -41
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/expected-metadata/test/strict_strict_mode.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/package.json +0 -3
- package/test262/node_modules/test262-stream/test/collateral/valid-version-ignored/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-content/test/strict_strict_mode.js +0 -41
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/expected-metadata/test/strict_strict_mode.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/package.json +0 -3
- package/test262/node_modules/test262-stream/test/collateral/valid-version-supported/fake-test262/test/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_default.js +0 -44
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/missing-raw-flag_strict_mode.js +0 -45
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-and-license-on-same-line_default.js +0 -20
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls-multiline-block_default.js +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ls_default.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-and-license-on-same-line_default.js +0 -20
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps-multiline-block_default.js +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw-with-ps_default.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/rawWithLicense_default.js +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-content/test/raw_default.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_default.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/missing-raw-flag_strict_mode.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-and-license-on-same-line_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls-multiline-block_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ls_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-and-license-on-same-line_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps-multiline-block_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw-with-ps_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/rawWithLicense_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/expected-metadata/test/raw_default.json +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/missing-raw-flag.js +0 -13
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-and-license-on-same-line.js +0 -20
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls-multiline-block.js +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ls.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-and-license-on-same-line.js +0 -20
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps-multiline-block.js +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw-with-ps.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/raw.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-hashbang/fake-test262/test/rawWithLicense.js +0 -21
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/doneprintHandle.js +0 -9
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/custom-includes/sta.js +0 -13
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_default.js +0 -52
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/async_strict_mode.js +0 -53
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_default.js +0 -47
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-content/test/bothStrict_strict_mode.js +0 -48
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_default.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/async_strict_mode.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_default.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/expected-metadata/test/bothStrict_strict_mode.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/async.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-with-includes/fake-test262/test/bothStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_default.js +0 -49
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/asyncNegative_strict_mode.js +0 -50
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_default.js +0 -48
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/async/async_strict_mode.js +0 -49
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_default.js +0 -46
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/bothStrict_strict_mode.js +0 -47
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/noStrict_default.js +0 -36
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-content/test/strict/no/rawNoStrict_default.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_default.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/asyncNegative_strict_mode.json +0 -22
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_default.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/async/async_strict_mode.json +0 -18
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_default.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/bothStrict_strict_mode.json +0 -24
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/noStrict_default.json +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/expected-metadata/test/strict/no/rawNoStrict_default.json +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/assert.js +0 -17
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/doneprintHandle.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/harness/sta.js +0 -12
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/async.js +0 -10
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/async/asyncNegative.js +0 -11
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/bothStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/error.js +0 -8
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/negative-empty.js +0 -6
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/noStrict.js +0 -5
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/no/rawNoStrict.js +0 -14
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/rawStrict.js +0 -15
- package/test262/node_modules/test262-stream/test/collateral/valid-with-paths/fake-test262/test/strict/strict.js +0 -9
- package/test262/node_modules/test262-stream/test/test.js +0 -319
- package/test262/node_modules/to-regex-range/LICENSE +0 -21
- package/test262/node_modules/to-regex-range/README.md +0 -305
- package/test262/node_modules/to-regex-range/index.js +0 -288
- package/test262/node_modules/to-regex-range/package.json +0 -88
- package/test262/package-lock.json +0 -279
- package/test262/package.json +0 -6
- package/test262/prelude.js +0 -75
- package/test262/results.json +0 -1
package/compiler/wrap.js
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
import compile from './index.js';
|
2
2
|
import decompile from './decompile.js';
|
3
|
-
|
3
|
+
import fs from 'node:fs';
|
4
4
|
|
5
5
|
const bold = x => `\u001b[1m${x}\u001b[0m`;
|
6
6
|
|
7
|
-
const typeBase =
|
7
|
+
const typeBase = 0x00;
|
8
|
+
const internalTypeBase = 0x10;
|
8
9
|
const TYPES = {
|
9
10
|
[typeBase]: 'number',
|
10
11
|
[typeBase + 1]: 'boolean',
|
@@ -16,7 +17,8 @@ const TYPES = {
|
|
16
17
|
[typeBase + 7]: 'bigint',
|
17
18
|
|
18
19
|
// internal
|
19
|
-
[
|
20
|
+
[internalTypeBase]: '_array',
|
21
|
+
[internalTypeBase + 1]: '_regexp'
|
20
22
|
};
|
21
23
|
|
22
24
|
export default async (source, flags = [ 'module' ], customImports = {}, print = str => process.stdout.write(str)) => {
|
@@ -37,7 +39,6 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
|
|
37
39
|
'': {
|
38
40
|
p: valtype === 'i64' ? i => print(Number(i).toString()) : i => print(i.toString()),
|
39
41
|
c: valtype === 'i64' ? i => print(String.fromCharCode(Number(i))) : i => print(String.fromCharCode(i)),
|
40
|
-
a: c => { if (!Number(c)) throw new Error(`assert failed`); },
|
41
42
|
t: _ => performance.now(),
|
42
43
|
...customImports
|
43
44
|
}
|
@@ -64,11 +65,15 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
|
|
64
65
|
|
65
66
|
exports[func.name] = function() {
|
66
67
|
try {
|
67
|
-
const
|
68
|
+
const _ret = exp.apply(this, arguments);
|
68
69
|
|
69
|
-
if (
|
70
|
+
if (_ret == null) return undefined;
|
70
71
|
|
71
|
-
|
72
|
+
const [ ret, type ] = _ret;
|
73
|
+
|
74
|
+
// if (ret >= typeBase && ret <= typeBase + 8) return ret > (typeBase + 7) ? 'object' : TYPES[ret];
|
75
|
+
|
76
|
+
switch (TYPES[type]) {
|
72
77
|
case 'boolean': return Boolean(ret);
|
73
78
|
case 'undefined': return undefined;
|
74
79
|
case 'object': return ret === 0 ? null : {};
|
@@ -90,6 +95,15 @@ export default async (source, flags = [ 'module' ], customImports = {}, print =
|
|
90
95
|
return Array.from(new Uint16Array(memory.buffer, pointer + 4, length)).map(x => String.fromCharCode(x)).join('');
|
91
96
|
}
|
92
97
|
|
98
|
+
case 'function': {
|
99
|
+
// wasm func index, including all imports
|
100
|
+
const func = funcs.find(x => (x.originalIndex ?? x.index) === ret);
|
101
|
+
if (!func) return ret;
|
102
|
+
|
103
|
+
// make fake empty func for repl/etc
|
104
|
+
return {[func.name]() {}}[func.name];
|
105
|
+
}
|
106
|
+
|
93
107
|
default: return ret;
|
94
108
|
}
|
95
109
|
} catch (e) {
|
package/package.json
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
{
|
2
2
|
"name": "porffor",
|
3
3
|
"description": "a basic experimental wip aot optimizing js -> wasm engine/compiler/runtime in js",
|
4
|
-
"version": "0.
|
4
|
+
"version": "0.2.0-77e30e8",
|
5
5
|
"author": "CanadaHonk",
|
6
6
|
"license": "MIT",
|
7
7
|
"dependencies": {
|
8
8
|
"acorn": "^8.9.0"
|
9
9
|
},
|
10
|
+
"optionalDependencies": {
|
11
|
+
"@babel/parser": "^7.23.6",
|
12
|
+
"hermes-parser": "^0.18.2",
|
13
|
+
"meriyah": "^4.3.9"
|
14
|
+
},
|
10
15
|
"bin": {
|
11
16
|
"porf": "./runner/index.js"
|
12
17
|
},
|
package/porf.cmd
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
@echo off
|
1
|
+
@echo off
|
2
2
|
node runner %*
|
package/rhemyn/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Rhemyn
|
2
|
+
A basic experimental WIP regex engine/AOT Wasm compiler in JS. Regex engine for Porffor! Uses own regex parser, no dependencies (excluding porffor internals). <br>
|
3
|
+
Age: ~1 day (of work)
|
4
|
+
|
5
|
+
Made for use with Porffor but could possibly be adapted, implementation/library notes:
|
6
|
+
- Exposes functions for each regex "operation" (eg test, match)
|
7
|
+
- Given a regex pattern string (eg `a+`), it returns a "function" object
|
8
|
+
- Wasm function returned expects an i32 pointer to a UTF-16 string (can add UTF-8 option later if someone else actually wants to use this)
|
9
|
+
|
10
|
+
## syntax
|
11
|
+
🟢 supported 🟡 partial 🟠 parsed only 🔴 unsupported
|
12
|
+
|
13
|
+
- 🟢 literal characters (eg `a`)
|
14
|
+
- 🟢 escaping (eg `\.\n\cJ\x0a\u000a`)
|
15
|
+
- 🟢 character itself (eg `\.`)
|
16
|
+
- 🟢 escape sequences (eg `\n`)
|
17
|
+
- 🟢 control character (eg `\cJ`)
|
18
|
+
- 🟢 unicode code points (eg `\x00`, `\u0000`)
|
19
|
+
- 🟢 sets (eg `[ab]`)
|
20
|
+
- 🟢 ranges (eg `[a-z]`)
|
21
|
+
- 🟢 negated sets (eg `[^ab]`)
|
22
|
+
- 🟢 metacharacters
|
23
|
+
- 🟢 dot (eg `a.b`)
|
24
|
+
- 🟢 digit, not digit (eg `\d\D`)
|
25
|
+
- 🟢 word, not word (eg `\w\W`)
|
26
|
+
- 🟢 whitespace, not whitespace (eg `\s\S`)
|
27
|
+
- 🟠 quantifiers
|
28
|
+
- 🟠 star (eg `a*`)
|
29
|
+
- 🟠 plus (eg `a+`)
|
30
|
+
- 🟠 optional (eg `a?`)
|
31
|
+
- 🟠 lazy modifier (eg `a*?`)
|
32
|
+
- 🔴 n repetitions (eg `a{4}`)
|
33
|
+
- 🔴 n-m repetitions (eg `a{2,4}`)
|
34
|
+
- 🔴 assertions
|
35
|
+
- 🔴 beginning (eg `^a`)
|
36
|
+
- 🔴 end (eg `a$`)
|
37
|
+
- 🔴 word boundary assertion (eg `\b\B`)
|
@@ -0,0 +1,214 @@
|
|
1
|
+
import { Blocktype, Opcodes, Valtype, PageSize, ValtypeSize } from '../compiler/wasmSpec.js';
|
2
|
+
import { number } from '../compiler/embedding.js';
|
3
|
+
import { signedLEB128, unsignedLEB128 } from '../compiler/encoding.js';
|
4
|
+
import parse from './parse.js';
|
5
|
+
|
6
|
+
// local indexes
|
7
|
+
const BasePointer = 0; // base string pointer
|
8
|
+
const IterPointer = 1; // this iteration base pointer
|
9
|
+
const EndPointer = 2; // pointer for the end
|
10
|
+
const Counter = 3; // what char we are running on
|
11
|
+
const Pointer = 4; // next char BYTE pointer
|
12
|
+
const Length = 5;
|
13
|
+
const Tmp = 6;
|
14
|
+
|
15
|
+
let exprLastGet = false;
|
16
|
+
const generate = (node, negated = false, get = true, func = 'test') => {
|
17
|
+
let out = [];
|
18
|
+
switch (node.type) {
|
19
|
+
case 'Expression':
|
20
|
+
exprLastGet = false;
|
21
|
+
out = [
|
22
|
+
// set length local
|
23
|
+
[ Opcodes.local_get, BasePointer ],
|
24
|
+
[ Opcodes.i32_load, Math.log2(ValtypeSize.i32) - 1, 0 ],
|
25
|
+
[ Opcodes.local_set, Length ],
|
26
|
+
|
27
|
+
// set iter pointer local as base + sizeof i32 initially
|
28
|
+
[ Opcodes.local_get, BasePointer ],
|
29
|
+
...number(ValtypeSize.i32, Valtype.i32),
|
30
|
+
[ Opcodes.i32_add ],
|
31
|
+
[ Opcodes.local_set, IterPointer ],
|
32
|
+
|
33
|
+
[ Opcodes.loop, Blocktype.void ],
|
34
|
+
|
35
|
+
// reset pointer as iter pointer
|
36
|
+
[ Opcodes.local_get, IterPointer ],
|
37
|
+
[ Opcodes.local_set, Pointer ],
|
38
|
+
|
39
|
+
[ Opcodes.block, Blocktype.void ],
|
40
|
+
|
41
|
+
// generate checks
|
42
|
+
...node.body.flatMap((x, i) => {
|
43
|
+
exprLastGet = x.type !== 'Group' && i === (node.body.length - 1);
|
44
|
+
return generate(x, negated);
|
45
|
+
}),
|
46
|
+
|
47
|
+
// reached end without branching out, successful match
|
48
|
+
...({
|
49
|
+
test: number(1, Valtype.i32),
|
50
|
+
search: [
|
51
|
+
[ Opcodes.local_get, Counter ]
|
52
|
+
]
|
53
|
+
})[func],
|
54
|
+
[ Opcodes.return ],
|
55
|
+
|
56
|
+
[ Opcodes.end ],
|
57
|
+
|
58
|
+
// increment iter pointer by sizeof i16
|
59
|
+
[ Opcodes.local_get, IterPointer ],
|
60
|
+
...number(ValtypeSize.i16, Valtype.i32),
|
61
|
+
[ Opcodes.i32_add ],
|
62
|
+
[ Opcodes.local_set, IterPointer ],
|
63
|
+
|
64
|
+
// increment counter by 1, check if eq length, if not loop
|
65
|
+
[ Opcodes.local_get, Counter ],
|
66
|
+
...number(1, Valtype.i32),
|
67
|
+
[ Opcodes.i32_add ],
|
68
|
+
[ Opcodes.local_tee, Counter ],
|
69
|
+
|
70
|
+
[ Opcodes.local_get, Length ],
|
71
|
+
[ Opcodes.i32_ne ],
|
72
|
+
|
73
|
+
[ Opcodes.br_if, 0 ],
|
74
|
+
[ Opcodes.end ],
|
75
|
+
|
76
|
+
// no match, return 0
|
77
|
+
...number(({
|
78
|
+
test: 0,
|
79
|
+
search: -1
|
80
|
+
})[func], Valtype.i32)
|
81
|
+
];
|
82
|
+
|
83
|
+
if (globalThis.regexLog) {
|
84
|
+
const underline = x => `\u001b[4m\u001b[1m${x}\u001b[0m`;
|
85
|
+
console.log(`\n${underline('ast')}`);
|
86
|
+
console.log(node);
|
87
|
+
console.log(`\n${underline('wasm bytecode')}\n` + decompile(out) + '\n');
|
88
|
+
}
|
89
|
+
|
90
|
+
break;
|
91
|
+
|
92
|
+
case 'Character':
|
93
|
+
out = generateChar(node, node.negated ^ negated, get);
|
94
|
+
break;
|
95
|
+
|
96
|
+
case 'Set':
|
97
|
+
out = generateSet(node, node.negated, get);
|
98
|
+
break;
|
99
|
+
|
100
|
+
case 'Group':
|
101
|
+
out = generateGroup(node, negated, get);
|
102
|
+
break;
|
103
|
+
|
104
|
+
case 'Range':
|
105
|
+
out = generateRange(node, negated, get);
|
106
|
+
break;
|
107
|
+
}
|
108
|
+
|
109
|
+
return out;
|
110
|
+
};
|
111
|
+
|
112
|
+
const getNextChar = () => [
|
113
|
+
// get char from pointer
|
114
|
+
[ Opcodes.local_get, Pointer ],
|
115
|
+
[ Opcodes.i32_load16_u, Math.log2(ValtypeSize.i16) - 1, ...unsignedLEB128(0) ],
|
116
|
+
|
117
|
+
...(exprLastGet ? [] : [
|
118
|
+
// pointer += sizeof i16
|
119
|
+
[ Opcodes.local_get, Pointer ],
|
120
|
+
...number(ValtypeSize.i16, Valtype.i32),
|
121
|
+
[ Opcodes.i32_add ],
|
122
|
+
[ Opcodes.local_set, Pointer ]
|
123
|
+
])
|
124
|
+
];
|
125
|
+
|
126
|
+
const checkFailure = () => [
|
127
|
+
// surely we do not need to do this for every single mismatch, right?
|
128
|
+
/* [ Opcodes.if, Blocktype.void ],
|
129
|
+
...number(0, Valtype.i32),
|
130
|
+
[ Opcodes.return ],
|
131
|
+
[ Opcodes.end ], */
|
132
|
+
|
133
|
+
[ Opcodes.br_if, 0 ]
|
134
|
+
];
|
135
|
+
|
136
|
+
const generateChar = (node, negated, get) => {
|
137
|
+
return [
|
138
|
+
...(get ? getNextChar() : []),
|
139
|
+
...number(node.char.charCodeAt(0), Valtype.i32),
|
140
|
+
negated ? [ Opcodes.i32_eq ] : [ Opcodes.i32_ne ],
|
141
|
+
...(get ? checkFailure(): [])
|
142
|
+
];
|
143
|
+
};
|
144
|
+
|
145
|
+
const generateSet = (node, negated, get) => {
|
146
|
+
// for a single char we do not need a tmp, it is like just
|
147
|
+
const singleChar = node.body.length === 1 && node.body[0].type === 'Character';
|
148
|
+
|
149
|
+
let out = [
|
150
|
+
...(get ? getNextChar() : []),
|
151
|
+
...(singleChar ? [] : [ [ Opcodes.local_set, Tmp ] ]),
|
152
|
+
];
|
153
|
+
|
154
|
+
for (const x of node.body) {
|
155
|
+
out = [
|
156
|
+
...out,
|
157
|
+
...(singleChar ? [] : [ [ Opcodes.local_get, Tmp ] ]),
|
158
|
+
...generate(x, negated, false)
|
159
|
+
];
|
160
|
+
}
|
161
|
+
|
162
|
+
out = out.concat(new Array(node.body.length - 1).fill(negated ? [ Opcodes.i32_or ] : [ Opcodes.i32_and ]));
|
163
|
+
|
164
|
+
return [
|
165
|
+
...out,
|
166
|
+
...checkFailure()
|
167
|
+
];
|
168
|
+
};
|
169
|
+
|
170
|
+
const generateRange = (node, negated, get) => {
|
171
|
+
return [
|
172
|
+
...(get ? getNextChar() : []),
|
173
|
+
...(get ? [ [ Opcodes.local_tee, Tmp ] ] : []),
|
174
|
+
|
175
|
+
...number(node.from.charCodeAt(0), Valtype.i32),
|
176
|
+
// negated ? [ Opcodes.i32_lt_s ] : [ Opcodes.i32_ge_s ],
|
177
|
+
negated ? [ Opcodes.i32_ge_s ] : [ Opcodes.i32_lt_s ],
|
178
|
+
|
179
|
+
[ Opcodes.local_get, Tmp ],
|
180
|
+
...number(node.to.charCodeAt(0), Valtype.i32),
|
181
|
+
// negated ? [ Opcodes.i32_gt_s ] : [ Opcodes.i32_le_s ],
|
182
|
+
negated ? [ Opcodes.i32_le_s ] : [ Opcodes.i32_gt_s ],
|
183
|
+
|
184
|
+
negated ? [ Opcodes.i32_and ] : [ Opcodes.i32_or ],
|
185
|
+
...(get ? checkFailure(): [])
|
186
|
+
];
|
187
|
+
};
|
188
|
+
|
189
|
+
const generateGroup = (node, negated, get) => {
|
190
|
+
|
191
|
+
};
|
192
|
+
|
193
|
+
export const test = (regex, index = 0, name = 'regex_test_' + regex) => outputFunc(generate(parse(regex), false, true, 'test'), name, index);
|
194
|
+
export const search = (regex, index = 0, name = 'regex_search_' + regex) => outputFunc(generate(parse(regex), false, true, 'search'), name, index);
|
195
|
+
|
196
|
+
const outputFunc = (wasm, name, index) => ({
|
197
|
+
name,
|
198
|
+
index,
|
199
|
+
wasm,
|
200
|
+
|
201
|
+
export: true,
|
202
|
+
params: [ Valtype.i32 ],
|
203
|
+
returns: [ Valtype.i32 ],
|
204
|
+
returnType: 0xffffffffffff1, // boolean - todo: do not hardcode this
|
205
|
+
locals: {
|
206
|
+
basePointer: { idx: 0, type: Valtype.i32 },
|
207
|
+
iterPointer: { idx: 1, type: Valtype.i32 },
|
208
|
+
endPointer: { idx: 2, type: Valtype.i32 },
|
209
|
+
counter: { idx: 3, type: Valtype.i32 },
|
210
|
+
pointer: { idx: 4, type: Valtype.i32 },
|
211
|
+
length: { idx: 5, type: Valtype.i32 },
|
212
|
+
tmp: { idx: 6, type: Valtype.i32 },
|
213
|
+
}
|
214
|
+
});
|
package/rhemyn/parse.js
ADDED
@@ -0,0 +1,321 @@
|
|
1
|
+
const State = {
|
2
|
+
none: 0,
|
3
|
+
insideSet: 1
|
4
|
+
};
|
5
|
+
|
6
|
+
const Quantifiers = {
|
7
|
+
'*': [ 0 ], // 0 -
|
8
|
+
'+': [ 1 ], // 1 -
|
9
|
+
'?': [ 0, 1 ], // 0 - 1
|
10
|
+
};
|
11
|
+
const QuantifierKeys = Object.keys(Quantifiers);
|
12
|
+
|
13
|
+
const getArg = (name, def) => {
|
14
|
+
const arg = (typeof process !== 'undefined' ? process.argv : Deno.args).find(x => x.startsWith(`-${name}=`));
|
15
|
+
if (arg) return arg.split('=')[0];
|
16
|
+
|
17
|
+
return def;
|
18
|
+
};
|
19
|
+
|
20
|
+
// full is spec-compliant but slower. not needed most of the time. (evil)
|
21
|
+
const DotChars = () => ({
|
22
|
+
full: [ '\n', '\r', '\u2028', '\u2029' ],
|
23
|
+
simple: [ '\n', '\r' ],
|
24
|
+
fast: [ '\n' ]
|
25
|
+
})[getArg('regex-dot', 'fast')];
|
26
|
+
|
27
|
+
const WordChars = () => ({
|
28
|
+
full: [ [ 'a', 'z' ], [ 'A', 'Z' ], [ '0', '9' ], '_' ],
|
29
|
+
fast: [ [ '_', 'z' ], [ 'A', 'Z' ], [ '0', '9' ] ] // skip individual _ with _-z BUT it also matches '`'
|
30
|
+
})[getArg('regex-word', 'full')];
|
31
|
+
|
32
|
+
const WhitespaceChars = () => ({
|
33
|
+
full: [ ' ', '\t', '\n', '\r', '\u2028', '\u2029' ],
|
34
|
+
simple: [ ' ', '\t', '\n', '\r' ]
|
35
|
+
})[getArg('regex-ws', 'simple')];
|
36
|
+
|
37
|
+
const _Metachars = () => ({
|
38
|
+
unescaped: {
|
39
|
+
'.': [ DotChars(), true ], // dot
|
40
|
+
},
|
41
|
+
escaped: {
|
42
|
+
d: [ [ [ '0', '9' ] ], false ], // digit
|
43
|
+
D: [ [ [ '0', '9' ] ], true ], // not digit
|
44
|
+
w: [ WordChars(), false ], // word
|
45
|
+
W: [ WordChars(), true ], // not word
|
46
|
+
s: [ WhitespaceChars(), false ], // whitespace
|
47
|
+
S: [ WhitespaceChars(), true ], // not whitespace
|
48
|
+
}
|
49
|
+
});
|
50
|
+
|
51
|
+
const EscapeSequences = {
|
52
|
+
f: '\f',
|
53
|
+
n: '\n',
|
54
|
+
r: '\r',
|
55
|
+
t: '\t',
|
56
|
+
v: '\v',
|
57
|
+
'0': '\0'
|
58
|
+
};
|
59
|
+
|
60
|
+
const HexDigit = /[0-9a-fA-F]/;
|
61
|
+
|
62
|
+
export default str => {
|
63
|
+
const Metachars = _Metachars();
|
64
|
+
|
65
|
+
const out = {
|
66
|
+
type: 'Expression',
|
67
|
+
body: []
|
68
|
+
};
|
69
|
+
let node = out, parents = [];
|
70
|
+
|
71
|
+
let state = State.none, setIndex = 0, escape = false;
|
72
|
+
for (let i = 0; i < str.length; i++) {
|
73
|
+
const c = str[i];
|
74
|
+
|
75
|
+
const charNode = char => ({
|
76
|
+
type: 'Character',
|
77
|
+
char
|
78
|
+
});
|
79
|
+
|
80
|
+
const rangeNode = (from, to) => ({
|
81
|
+
type: 'Range',
|
82
|
+
from,
|
83
|
+
to
|
84
|
+
});
|
85
|
+
|
86
|
+
const addChar = (char = c) => {
|
87
|
+
node.body.push(charNode(char));
|
88
|
+
};
|
89
|
+
|
90
|
+
const addSet = (matches, negated = false) => {
|
91
|
+
let body = matches.map(x => x[1] ? rangeNode(x[0], x[1]) : charNode(x));
|
92
|
+
if (state === State.insideSet) {
|
93
|
+
// if negated, mark each node as negated for merge
|
94
|
+
if (negated) body = body.map(x => {
|
95
|
+
x.negated = true;
|
96
|
+
return x;
|
97
|
+
});
|
98
|
+
|
99
|
+
// already in set, merge bodies
|
100
|
+
node.body.push(...body);
|
101
|
+
return;
|
102
|
+
}
|
103
|
+
|
104
|
+
node.body.push({
|
105
|
+
type: 'Set',
|
106
|
+
body,
|
107
|
+
negated
|
108
|
+
});
|
109
|
+
};
|
110
|
+
|
111
|
+
const addMetachar = meta => {
|
112
|
+
const [ matches, negated = false ] = meta;
|
113
|
+
return addSet(matches, negated);
|
114
|
+
};
|
115
|
+
|
116
|
+
// get next char and consume it
|
117
|
+
const seek = (allowEscaped = true) => {
|
118
|
+
const cNext = str[++i];
|
119
|
+
|
120
|
+
if (cNext === '\\') return !allowEscaped ? undefined : [ str[++i], true ];
|
121
|
+
return !allowEscaped ? cNext : [ cNext, false ];
|
122
|
+
};
|
123
|
+
|
124
|
+
// get next char without consuming
|
125
|
+
const peek = (allowEscaped = true, offset = 0) => {
|
126
|
+
const cNext = str[i + 1 + offset];
|
127
|
+
|
128
|
+
if (cNext === '\\') return !allowEscaped ? undefined : [ str[i + 2 + offset], true ];
|
129
|
+
return !allowEscaped ? cNext : [ cNext, false ];
|
130
|
+
};
|
131
|
+
|
132
|
+
if (escape) {
|
133
|
+
escape = false;
|
134
|
+
if (EscapeSequences[c]) {
|
135
|
+
addChar(EscapeSequences[c]);
|
136
|
+
continue;
|
137
|
+
}
|
138
|
+
|
139
|
+
if (Metachars.escaped[c]) {
|
140
|
+
addMetachar(Metachars.escaped[c]);
|
141
|
+
continue;
|
142
|
+
}
|
143
|
+
|
144
|
+
if (c === 'c') {
|
145
|
+
// \c (not [A-Za-z] ...) = literal \c... (WHY)
|
146
|
+
const next = peek(false);
|
147
|
+
if (next == null || /[^a-zA-Z]/.test(next)) {
|
148
|
+
addChar('\\');
|
149
|
+
addChar('c');
|
150
|
+
continue;
|
151
|
+
}
|
152
|
+
|
153
|
+
// \c[A-Za-z]
|
154
|
+
const code = seek(false).charCodeAt(0);
|
155
|
+
addChar(String.fromCharCode(code % 32));
|
156
|
+
continue;
|
157
|
+
}
|
158
|
+
|
159
|
+
if (c === 'x') {
|
160
|
+
// \x = x
|
161
|
+
// \xH = xH
|
162
|
+
// \x[0-9a-zA-Z][0-9a-zA-Z] = \xAB
|
163
|
+
const next1 = peek(false);
|
164
|
+
const next2 = peek(false, 1);
|
165
|
+
|
166
|
+
// missing a char or invalid hex digit
|
167
|
+
if (next1 == null || next2 == null || !HexDigit.test(next1) || !HexDigit.test(next2)) {
|
168
|
+
addChar('x');
|
169
|
+
continue;
|
170
|
+
}
|
171
|
+
|
172
|
+
const code = parseInt(seek(false) + seek(false), 16);
|
173
|
+
addChar(String.fromCodePoint(code));
|
174
|
+
continue;
|
175
|
+
}
|
176
|
+
|
177
|
+
if (c === 'u') {
|
178
|
+
// '\u' = u
|
179
|
+
// '\uHHH' = uHHH
|
180
|
+
// '\uABCD' = \uABCD
|
181
|
+
const next1 = peek(false);
|
182
|
+
const next2 = peek(false, 1);
|
183
|
+
const next3 = peek(false, 2);
|
184
|
+
const next4 = peek(false, 3);
|
185
|
+
|
186
|
+
// missing a char or invalid hex digit
|
187
|
+
if (next1 == null || next2 == null || next3 == null || next4 == null || !HexDigit.test(next1) || !HexDigit.test(next2) || !HexDigit.test(next3) || !HexDigit.test(next4)) {
|
188
|
+
addChar('u');
|
189
|
+
continue;
|
190
|
+
}
|
191
|
+
|
192
|
+
const code = parseInt(seek(false) + seek(false) + seek(false) + seek(false), 16);
|
193
|
+
addChar(String.fromCodePoint(code));
|
194
|
+
continue;
|
195
|
+
}
|
196
|
+
|
197
|
+
addChar();
|
198
|
+
continue;
|
199
|
+
}
|
200
|
+
|
201
|
+
if (c === '\\') {
|
202
|
+
escape = true;
|
203
|
+
continue;
|
204
|
+
}
|
205
|
+
|
206
|
+
switch (state) {
|
207
|
+
case State.none:
|
208
|
+
if (c === '[') {
|
209
|
+
parents.push(node);
|
210
|
+
node = {
|
211
|
+
type: 'Set',
|
212
|
+
body: [],
|
213
|
+
negated: false
|
214
|
+
};
|
215
|
+
|
216
|
+
parents.at(-1).body.push(node);
|
217
|
+
|
218
|
+
state = State.insideSet;
|
219
|
+
setIndex = 0;
|
220
|
+
continue;
|
221
|
+
}
|
222
|
+
|
223
|
+
if (c === '(') {
|
224
|
+
parents.push(node);
|
225
|
+
node = {
|
226
|
+
type: 'Group',
|
227
|
+
body: []
|
228
|
+
};
|
229
|
+
|
230
|
+
parents.at(-1).body.push(node);
|
231
|
+
continue;
|
232
|
+
}
|
233
|
+
|
234
|
+
if (c === ')') {
|
235
|
+
if (node.type !== 'Group') throw new SyntaxError('Unmatched closing parenthesis');
|
236
|
+
|
237
|
+
node = parents.pop();
|
238
|
+
continue;
|
239
|
+
}
|
240
|
+
|
241
|
+
if (QuantifierKeys.includes(c)) {
|
242
|
+
node.body.at(-1).quantifier = Quantifiers[c];
|
243
|
+
|
244
|
+
// lazy modifier
|
245
|
+
if (peek(false) === '?') node.body.at(-1).lazy = true;
|
246
|
+
|
247
|
+
continue;
|
248
|
+
}
|
249
|
+
|
250
|
+
if (Metachars.unescaped[c]) {
|
251
|
+
addMetachar(Metachars.unescaped[c]);
|
252
|
+
continue;
|
253
|
+
}
|
254
|
+
|
255
|
+
addChar();
|
256
|
+
break;
|
257
|
+
|
258
|
+
case State.insideSet:
|
259
|
+
setIndex++;
|
260
|
+
if (setIndex === 1) {
|
261
|
+
// first char in set
|
262
|
+
if (c === '^') {
|
263
|
+
node.negated = true;
|
264
|
+
continue;
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
268
|
+
if (c === ']') {
|
269
|
+
state = State.none;
|
270
|
+
node = parents.pop();
|
271
|
+
|
272
|
+
continue;
|
273
|
+
}
|
274
|
+
|
275
|
+
// range
|
276
|
+
if (c === '-') {
|
277
|
+
// start of set (or not char), just literal -
|
278
|
+
if (node.body.at(-1)?.char == null) {
|
279
|
+
addChar(); // add -
|
280
|
+
continue;
|
281
|
+
}
|
282
|
+
|
283
|
+
const from = node.body.pop().char;
|
284
|
+
const [ to, escaped ] = seek();
|
285
|
+
|
286
|
+
// end of set, just literal -
|
287
|
+
if (to == null || (!escaped && to === ']')) {
|
288
|
+
addChar(from); // add from char back
|
289
|
+
i--; // rollback seek
|
290
|
+
|
291
|
+
addChar(); // add -
|
292
|
+
continue;
|
293
|
+
}
|
294
|
+
|
295
|
+
// next char was escaped and a metachar, just literal -
|
296
|
+
if (escaped && Metachars.escaped[to] != null) {
|
297
|
+
i -= 2; // rollback seek
|
298
|
+
|
299
|
+
addChar(); // add -
|
300
|
+
continue;
|
301
|
+
}
|
302
|
+
|
303
|
+
if (to < from) throw new SyntaxError('Range out of order');
|
304
|
+
|
305
|
+
node.body.push(rangeNode(from, to));
|
306
|
+
continue;
|
307
|
+
}
|
308
|
+
|
309
|
+
addChar();
|
310
|
+
break;
|
311
|
+
}
|
312
|
+
}
|
313
|
+
|
314
|
+
// still in a group by the end
|
315
|
+
if (node.type !== 'Expression') throw new SyntaxError('Unmatched opening parenthesis');
|
316
|
+
|
317
|
+
// still in a set by the end
|
318
|
+
if (state === State.insideSet) throw new SyntaxError('Unmatched opening square bracket');
|
319
|
+
|
320
|
+
return out;
|
321
|
+
};
|