@creationix/rex 0.1.0 → 0.1.2
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 +12 -0
- package/package.json +5 -4
- package/rex-cli.js +44 -0
- package/rex-compile.ts +21 -11
- package/rex.ohm-bundle.cjs +1 -0
- package/rex.ts +5 -1
- package/rex-cli.ts +0 -3
package/README.md
CHANGED
|
@@ -35,6 +35,18 @@ rex --expr "a and b" --ir
|
|
|
35
35
|
rex --expr "x = method + path x" --minify-names --dedupe-values
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
Run without installing globally:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
bunx @creationix/rex --help
|
|
42
|
+
bunx @creationix/rex --expr "when x do y end"
|
|
43
|
+
|
|
44
|
+
npx -y @creationix/rex -- --help
|
|
45
|
+
npx -y @creationix/rex -- --expr "when x do y end"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`npx` works with Node.js alone (v22.18+). `bunx` works with Bun alone.
|
|
49
|
+
|
|
38
50
|
## Programmatic API
|
|
39
51
|
|
|
40
52
|
```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@creationix/rex",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Compiler and parser for the Rex language",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rex",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"type": "module",
|
|
13
13
|
"bin": {
|
|
14
|
-
"rex": "./rex-cli.
|
|
14
|
+
"rex": "./rex-cli.js"
|
|
15
15
|
},
|
|
16
16
|
"main": "rex.ts",
|
|
17
17
|
"types": "./rex.ts",
|
|
@@ -23,15 +23,16 @@
|
|
|
23
23
|
"LICENSE",
|
|
24
24
|
"rex.ts",
|
|
25
25
|
"rex-compile.ts",
|
|
26
|
-
"rex-cli.
|
|
26
|
+
"rex-cli.js",
|
|
27
27
|
"rex.ohm",
|
|
28
|
+
"rex.ohm-bundle.cjs",
|
|
28
29
|
"rex.ohm-bundle.js",
|
|
29
30
|
"rex.ohm-bundle.d.ts",
|
|
30
31
|
"rexc-interpreter.ts"
|
|
31
32
|
],
|
|
32
33
|
"scripts": {
|
|
33
34
|
"test": "bun test",
|
|
34
|
-
"build:grammar": "ohm generateBundles --withTypes rex.ohm",
|
|
35
|
+
"build:grammar": "ohm generateBundles --withTypes rex.ohm && node -e \"require('node:fs').copyFileSync('rex.ohm-bundle.js','rex.ohm-bundle.cjs')\"",
|
|
35
36
|
"compile": "bun run rex-compile.ts",
|
|
36
37
|
"verify:docs": "bun run verify-doc-examples.ts",
|
|
37
38
|
"pack:dry-run": "npm pack --dry-run",
|
package/rex-cli.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const compileScript = join(here, "rex-compile.ts");
|
|
9
|
+
const passthroughArgs = process.argv.slice(2);
|
|
10
|
+
|
|
11
|
+
if (typeof Bun !== "undefined") {
|
|
12
|
+
await import("./rex-compile.ts");
|
|
13
|
+
process.exit(0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const [majorText, minorText] = process.versions.node.split(".");
|
|
17
|
+
const major = Number(majorText);
|
|
18
|
+
const minor = Number(minorText);
|
|
19
|
+
|
|
20
|
+
if (!Number.isFinite(major) || !Number.isFinite(minor) || major < 22 || (major === 22 && minor < 18)) {
|
|
21
|
+
console.error("rex: Node.js v22.18+ is required to run TypeScript natively, or use Bun.");
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const child = spawn(process.execPath, [compileScript, ...passthroughArgs], {
|
|
26
|
+
stdio: "inherit",
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
child.on("error", (error) => {
|
|
30
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
31
|
+
console.error("rex: failed to launch runtime.");
|
|
32
|
+
console.error("Use Node.js v22.18+ or Bun.");
|
|
33
|
+
console.error(`Details: ${message}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
child.on("exit", (code, signal) => {
|
|
38
|
+
if (typeof code === "number") process.exit(code);
|
|
39
|
+
if (signal) {
|
|
40
|
+
console.error(`rex: process terminated by signal ${signal}`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
package/rex-compile.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { compile, parseToIR } from "./rex.ts";
|
|
2
2
|
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
4
|
|
|
4
5
|
type CliOptions = {
|
|
5
6
|
expr?: string;
|
|
@@ -106,9 +107,11 @@ function usage() {
|
|
|
106
107
|
"Compile high-level Rex to compact encoding (rexc).",
|
|
107
108
|
"",
|
|
108
109
|
"Usage:",
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
" cat input.rex |
|
|
110
|
+
" rex --expr \"when x do y end\"",
|
|
111
|
+
" rex --file input.rex",
|
|
112
|
+
" cat input.rex | rex",
|
|
113
|
+
"",
|
|
114
|
+
"(Repo script alternative: bun run rex:compile --expr \"when x do y end\")",
|
|
112
115
|
"",
|
|
113
116
|
"Options:",
|
|
114
117
|
" -e, --expr <source> Compile an inline expression/program",
|
|
@@ -125,13 +128,17 @@ function usage() {
|
|
|
125
128
|
}
|
|
126
129
|
|
|
127
130
|
async function readStdin(): Promise<string> {
|
|
128
|
-
|
|
131
|
+
const chunks: Buffer[] = [];
|
|
132
|
+
for await (const chunk of process.stdin) {
|
|
133
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
134
|
+
}
|
|
135
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
129
136
|
}
|
|
130
137
|
|
|
131
138
|
async function resolveSource(options: CliOptions): Promise<string> {
|
|
132
139
|
if (options.expr && options.file) throw new Error("Use only one of --expr or --file");
|
|
133
140
|
if (options.expr) return options.expr;
|
|
134
|
-
if (options.file) return
|
|
141
|
+
if (options.file) return readFile(options.file, "utf8");
|
|
135
142
|
if (!process.stdin.isTTY) {
|
|
136
143
|
const piped = await readStdin();
|
|
137
144
|
if (piped.trim().length > 0) return piped;
|
|
@@ -141,10 +148,13 @@ async function resolveSource(options: CliOptions): Promise<string> {
|
|
|
141
148
|
|
|
142
149
|
async function loadDomainRefsFromFolder(folderPath: string): Promise<Record<string, number>> {
|
|
143
150
|
const schemaPath = resolve(folderPath, "rex-domain.json");
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
151
|
+
let parsed: DomainSchema;
|
|
152
|
+
try {
|
|
153
|
+
parsed = JSON.parse(await readFile(schemaPath, "utf8")) as DomainSchema;
|
|
154
|
+
} catch (error) {
|
|
155
|
+
if ((error as NodeJS.ErrnoException).code === "ENOENT") return {};
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
148
158
|
if (!parsed || typeof parsed !== "object" || !parsed.globals || typeof parsed.globals !== "object") {
|
|
149
159
|
throw new Error(`Invalid rex-domain.json at ${schemaPath}: expected { globals: { ... } }`);
|
|
150
160
|
}
|
|
@@ -165,7 +175,7 @@ async function resolveDomainRefs(options: CliOptions): Promise<Record<string, nu
|
|
|
165
175
|
}
|
|
166
176
|
|
|
167
177
|
async function main() {
|
|
168
|
-
const options = parseArgs(
|
|
178
|
+
const options = parseArgs(process.argv.slice(2));
|
|
169
179
|
if (options.help) {
|
|
170
180
|
console.log(usage());
|
|
171
181
|
return;
|
|
@@ -183,7 +193,7 @@ async function main() {
|
|
|
183
193
|
});
|
|
184
194
|
|
|
185
195
|
if (options.out) {
|
|
186
|
-
await
|
|
196
|
+
await writeFile(options.out, `${output}\n`, "utf8");
|
|
187
197
|
return;
|
|
188
198
|
}
|
|
189
199
|
console.log(output);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';const {makeRecipe}=require('ohm-js');const result=makeRecipe(["grammar",{"source":"Rex {\n space += comment\n\n Program\n = Expr*\n\n Expr\n = AssignExpr\n\n AssignExpr\n = Place AssignOp AssignExpr -- assign\n | ExistenceExpr -- value\n\n ExistenceExpr\n = ExistenceExpr AndKw BitExpr -- and\n | ExistenceExpr OrKw BitExpr -- or\n | BitExpr -- value\n\n BitExpr\n = BitExpr \"&\" CompareExpr -- and\n | BitExpr \"^\" CompareExpr -- xor\n | BitExpr \"|\" CompareExpr -- or\n | CompareExpr -- value\n\n CompareExpr\n = AddExpr CompareOp AddExpr -- binary\n | AddExpr -- value\n\n AddExpr\n = AddExpr \"+\" MulExpr -- add\n | AddExpr \"-\" MulExpr -- sub\n | MulExpr -- value\n\n MulExpr\n = MulExpr \"*\" UnaryExpr -- mul\n | MulExpr \"/\" UnaryExpr -- div\n | MulExpr \"%\" UnaryExpr -- mod\n | UnaryExpr -- value\n\n UnaryExpr\n = \"-\" ~digit UnaryExpr -- neg\n | \"~\" UnaryExpr -- not\n | DeleteKw Place -- delete\n | PostfixExpr -- value\n\n PostfixExpr\n = PrimaryExpr PostfixTail* -- chain\n\n PostfixTail\n = \".\" keyName -- navStatic\n | \".(\" Expr \")\" -- navDynamic\n | \"(\" \")\" -- callEmpty\n | \"(\" Elements<Expr> \")\" -- call\n\n PrimaryExpr\n = ConditionalExpr\n | DoExpr\n | ForExpr\n | BreakKw -- break\n | ContinueKw -- continue\n | Array\n | Object\n | String\n | Number\n | StringKw -- stringPred\n | NumberKw -- numberPred\n | ObjectKw -- objectPred\n | ArrayKw -- arrayPred\n | BooleanKw -- booleanPred\n | TrueKw -- true\n | FalseKw -- false\n | NullKw -- null\n | UndefinedKw -- undefined\n | SelfExpr -- self\n | identifier -- identifier\n | \"(\" Expr \")\" -- group\n\n SelfExpr\n = SelfKw \"@\" Number -- depth\n | SelfKw -- plain\n\n Place\n = PlaceBase PlaceTail*\n\n PlaceBase\n = identifier\n | SelfKw\n\n PlaceTail\n = \".\" keyName -- navStatic\n | \".(\" Expr \")\" -- navDynamic\n\n ConditionalExpr\n = ConditionalHead Expr DoKw Block ConditionalElse? EndKw\n\n ConditionalHead\n = WhenKw\n | UnlessKw\n\n ConditionalElse\n = ElseKw ConditionalHead Expr DoKw Block ConditionalElse? -- elseChain\n | ElseKw Block -- else\n\n ForExpr\n = ForKw BindingExpr DoKw Block EndKw\n\n DoExpr\n = DoKw Block EndKw\n\n BindingExpr\n = IterBinding\n | Expr\n\n Block\n = Expr*\n\n Array\n = \"[\" \"]\" -- empty\n | \"[\" BindingExpr \";\" Expr \"]\" -- comprehension\n | \"[\" Elements<Expr> \"]\" -- values\n\n Object\n = \"{\" \"}\" -- empty\n | \"{\" BindingExpr \";\" ObjKey \":\" Expr \"}\" -- comprehension\n | \"{\" Elements<Pair> \"}\" -- pairs\n\n IterBinding\n = identifier \",\" identifier \"in\" Expr -- keyValueIn\n | identifier \"in\" Expr -- valueIn\n | identifier \"of\" Expr -- keyOf\n\n Pair\n = ObjKey \":\" Expr\n\n ObjKey\n = keyName -- bare\n | Number -- number\n | String -- string\n | \"(\" Expr \")\" -- computed\n\n keyName\n = nameHead nameTail*\n\n CompareOp\n = \"==\"\n | \"!=\"\n | \">=\"\n | \">\"\n | \"<=\"\n | \"<\"\n\n AssignOp\n = \"=\"\n | \"+=\"\n | \"-=\"\n | \"*=\"\n | \"/=\"\n | \"%=\"\n | \"&=\"\n | \"|=\"\n | \"^=\"\n\n Elements<item>\n = item (\",\"? item)* \",\"?\n\n identifier\n = ~reserved nameHead nameTail*\n\n nameHead\n = letter\n | \"_\"\n\n nameTail\n = letter\n | digit\n | \"_\"\n | \"-\"\n\n reserved\n = trueTok\n | falseTok\n | nullTok\n | undefinedTok\n | selfTok\n | whenTok\n | unlessTok\n | forTok\n | inTok\n | ofTok\n | doTok\n | elseTok\n | endTok\n | breakTok\n | continueTok\n | andTok\n | orTok\n | deleteTok\n | stringTok\n | numberTok\n | objectTok\n | arrayTok\n | booleanTok\n\n TrueKw\n = trueTok\n\n FalseKw\n = falseTok\n\n NullKw\n = nullTok\n\n UndefinedKw\n = undefinedTok\n\n SelfKw\n = selfTok\n\n WhenKw\n = whenTok\n\n UnlessKw\n = unlessTok\n\n ForKw\n = forTok\n\n DoKw\n = doTok\n\n ElseKw\n = elseTok\n\n EndKw\n = endTok\n\n BreakKw\n = breakTok\n\n ContinueKw\n = continueTok\n\n AndKw\n = andTok\n\n OrKw\n = orTok\n\n DeleteKw\n = deleteTok\n\n StringKw\n = stringTok\n\n NumberKw\n = numberTok\n\n ObjectKw\n = objectTok\n\n ArrayKw\n = arrayTok\n\n BooleanKw\n = booleanTok\n\n trueTok\n = \"true\" ~nameTail\n\n falseTok\n = \"false\" ~nameTail\n\n nullTok\n = \"null\" ~nameTail\n\n undefinedTok\n = \"undefined\" ~nameTail\n\n selfTok\n = \"self\" ~nameTail\n\n whenTok\n = \"when\" ~nameTail\n\n unlessTok\n = \"unless\" ~nameTail\n\n forTok\n = \"for\" ~nameTail\n\n inTok\n = \"in\" ~nameTail\n\n ofTok\n = \"of\" ~nameTail\n\n doTok\n = \"do\" ~nameTail\n\n elseTok\n = \"else\" ~nameTail\n\n endTok\n = \"end\" ~nameTail\n\n breakTok\n = \"break\" ~nameTail\n\n continueTok\n = \"continue\" ~nameTail\n\n andTok\n = \"and\" ~nameTail\n\n orTok\n = \"or\" ~nameTail\n\n deleteTok\n = \"delete\" ~nameTail\n\n stringTok\n = \"string\" ~nameTail\n\n numberTok\n = \"number\" ~nameTail\n\n objectTok\n = \"object\" ~nameTail\n\n arrayTok\n = \"array\" ~nameTail\n\n booleanTok\n = \"boolean\" ~nameTail\n\n String\n = DQuotedString\n | SQuotedString\n\n DQuotedString\n = \"\\\"\" dStringChar* \"\\\"\"\n\n dStringChar\n = ~(\"\\\"\" | \"\\\\\") any\n | escape\n\n SQuotedString\n = \"'\" sStringChar* \"'\"\n\n sStringChar\n = ~(\"'\" | \"\\\\\") any\n | escape\n\n escape\n = \"\\\\\" (escapeChar | hexEscape | unicodeEscape)\n\n escapeChar\n = \"\\\"\" | \"'\" | \"\\\\\" | \"/\" | \"b\" | \"f\" | \"n\" | \"r\" | \"t\" | \"0\"\n\n hexEscape\n = \"x\" hex hex\n\n unicodeEscape\n = \"u\" hex hex hex hex\n\n hex\n = digit\n | \"A\"..\"F\"\n | \"a\"..\"f\"\n\n Number\n = hexNumber\n | binaryNumber\n | decimalNumber\n\n hexNumber\n = \"-\"? \"0x\" hex+\n\n binaryNumber\n = \"-\"? \"0b\" bit+\n\n decimalNumber\n = \"-\"? decimalInteger (\".\" digit+)? exponent?\n\n decimalInteger\n = nonZeroDigit digit* -- nonZero\n | \"0\" -- zero\n\n bit\n = \"0\" | \"1\"\n\n exponent\n = (\"e\" | \"E\") (\"+\" | \"-\")? digit+\n\n nonZeroDigit\n = \"1\"..\"9\"\n\n comment\n = lineComment\n | blockComment\n\n lineComment\n = \"//\" (~\"\\n\" any)* \"\\n\"?\n\n blockComment\n = \"/*\" (~\"*/\" any)* \"*/\"\n}"},"Rex",null,"Program",{"space":["extend",{"sourceInterval":[8,24]},null,[],["app",{"sourceInterval":[17,24]},"comment",[]]],"Program":["define",{"sourceInterval":[28,47]},null,[],["star",{"sourceInterval":[42,47]},["app",{"sourceInterval":[42,46]},"Expr",[]]]],"Expr":["define",{"sourceInterval":[51,72]},null,[],["app",{"sourceInterval":[62,72]},"AssignExpr",[]]],"AssignExpr_assign":["define",{"sourceInterval":[93,133]},null,[],["seq",{"sourceInterval":[93,118]},["app",{"sourceInterval":[93,98]},"Place",[]],["app",{"sourceInterval":[99,107]},"AssignOp",[]],["app",{"sourceInterval":[108,118]},"AssignExpr",[]]]],"AssignExpr_value":["define",{"sourceInterval":[140,179]},null,[],["app",{"sourceInterval":[140,153]},"ExistenceExpr",[]]],"AssignExpr":["define",{"sourceInterval":[76,179]},null,[],["alt",{"sourceInterval":[93,179]},["app",{"sourceInterval":[93,118]},"AssignExpr_assign",[]],["app",{"sourceInterval":[140,153]},"AssignExpr_value",[]]]],"ExistenceExpr_and":["define",{"sourceInterval":[203,240]},null,[],["seq",{"sourceInterval":[203,230]},["app",{"sourceInterval":[203,216]},"ExistenceExpr",[]],["app",{"sourceInterval":[217,222]},"AndKw",[]],["app",{"sourceInterval":[223,230]},"BitExpr",[]]]],"ExistenceExpr_or":["define",{"sourceInterval":[247,283]},null,[],["seq",{"sourceInterval":[247,273]},["app",{"sourceInterval":[247,260]},"ExistenceExpr",[]],["app",{"sourceInterval":[261,265]},"OrKw",[]],["app",{"sourceInterval":[266,273]},"BitExpr",[]]]],"ExistenceExpr_value":["define",{"sourceInterval":[290,329]},null,[],["app",{"sourceInterval":[290,297]},"BitExpr",[]]],"ExistenceExpr":["define",{"sourceInterval":[183,329]},null,[],["alt",{"sourceInterval":[203,329]},["app",{"sourceInterval":[203,230]},"ExistenceExpr_and",[]],["app",{"sourceInterval":[247,273]},"ExistenceExpr_or",[]],["app",{"sourceInterval":[290,297]},"ExistenceExpr_value",[]]]],"BitExpr_and":["define",{"sourceInterval":[347,384]},null,[],["seq",{"sourceInterval":[347,370]},["app",{"sourceInterval":[347,354]},"BitExpr",[]],["terminal",{"sourceInterval":[355,358]},"&"],["app",{"sourceInterval":[359,370]},"CompareExpr",[]]]],"BitExpr_xor":["define",{"sourceInterval":[391,428]},null,[],["seq",{"sourceInterval":[391,414]},["app",{"sourceInterval":[391,398]},"BitExpr",[]],["terminal",{"sourceInterval":[399,402]},"^"],["app",{"sourceInterval":[403,414]},"CompareExpr",[]]]],"BitExpr_or":["define",{"sourceInterval":[435,471]},null,[],["seq",{"sourceInterval":[435,458]},["app",{"sourceInterval":[435,442]},"BitExpr",[]],["terminal",{"sourceInterval":[443,446]},"|"],["app",{"sourceInterval":[447,458]},"CompareExpr",[]]]],"BitExpr_value":["define",{"sourceInterval":[478,517]},null,[],["app",{"sourceInterval":[478,489]},"CompareExpr",[]]],"BitExpr":["define",{"sourceInterval":[333,517]},null,[],["alt",{"sourceInterval":[347,517]},["app",{"sourceInterval":[347,370]},"BitExpr_and",[]],["app",{"sourceInterval":[391,414]},"BitExpr_xor",[]],["app",{"sourceInterval":[435,458]},"BitExpr_or",[]],["app",{"sourceInterval":[478,489]},"BitExpr_value",[]]]],"CompareExpr_binary":["define",{"sourceInterval":[539,579]},null,[],["seq",{"sourceInterval":[539,564]},["app",{"sourceInterval":[539,546]},"AddExpr",[]],["app",{"sourceInterval":[547,556]},"CompareOp",[]],["app",{"sourceInterval":[557,564]},"AddExpr",[]]]],"CompareExpr_value":["define",{"sourceInterval":[586,625]},null,[],["app",{"sourceInterval":[586,593]},"AddExpr",[]]],"CompareExpr":["define",{"sourceInterval":[521,625]},null,[],["alt",{"sourceInterval":[539,625]},["app",{"sourceInterval":[539,564]},"CompareExpr_binary",[]],["app",{"sourceInterval":[586,593]},"CompareExpr_value",[]]]],"AddExpr_add":["define",{"sourceInterval":[643,680]},null,[],["seq",{"sourceInterval":[643,662]},["app",{"sourceInterval":[643,650]},"AddExpr",[]],["terminal",{"sourceInterval":[651,654]},"+"],["app",{"sourceInterval":[655,662]},"MulExpr",[]]]],"AddExpr_sub":["define",{"sourceInterval":[687,724]},null,[],["seq",{"sourceInterval":[687,706]},["app",{"sourceInterval":[687,694]},"AddExpr",[]],["terminal",{"sourceInterval":[695,698]},"-"],["app",{"sourceInterval":[699,706]},"MulExpr",[]]]],"AddExpr_value":["define",{"sourceInterval":[731,770]},null,[],["app",{"sourceInterval":[731,738]},"MulExpr",[]]],"AddExpr":["define",{"sourceInterval":[629,770]},null,[],["alt",{"sourceInterval":[643,770]},["app",{"sourceInterval":[643,662]},"AddExpr_add",[]],["app",{"sourceInterval":[687,706]},"AddExpr_sub",[]],["app",{"sourceInterval":[731,738]},"AddExpr_value",[]]]],"MulExpr_mul":["define",{"sourceInterval":[788,825]},null,[],["seq",{"sourceInterval":[788,809]},["app",{"sourceInterval":[788,795]},"MulExpr",[]],["terminal",{"sourceInterval":[796,799]},"*"],["app",{"sourceInterval":[800,809]},"UnaryExpr",[]]]],"MulExpr_div":["define",{"sourceInterval":[832,869]},null,[],["seq",{"sourceInterval":[832,853]},["app",{"sourceInterval":[832,839]},"MulExpr",[]],["terminal",{"sourceInterval":[840,843]},"/"],["app",{"sourceInterval":[844,853]},"UnaryExpr",[]]]],"MulExpr_mod":["define",{"sourceInterval":[876,913]},null,[],["seq",{"sourceInterval":[876,897]},["app",{"sourceInterval":[876,883]},"MulExpr",[]],["terminal",{"sourceInterval":[884,887]},"%"],["app",{"sourceInterval":[888,897]},"UnaryExpr",[]]]],"MulExpr_value":["define",{"sourceInterval":[920,959]},null,[],["app",{"sourceInterval":[920,929]},"UnaryExpr",[]]],"MulExpr":["define",{"sourceInterval":[774,959]},null,[],["alt",{"sourceInterval":[788,959]},["app",{"sourceInterval":[788,809]},"MulExpr_mul",[]],["app",{"sourceInterval":[832,853]},"MulExpr_div",[]],["app",{"sourceInterval":[876,897]},"MulExpr_mod",[]],["app",{"sourceInterval":[920,929]},"MulExpr_value",[]]]],"UnaryExpr_neg":["define",{"sourceInterval":[979,1016]},null,[],["seq",{"sourceInterval":[979,999]},["terminal",{"sourceInterval":[979,982]},"-"],["not",{"sourceInterval":[983,989]},["app",{"sourceInterval":[984,989]},"digit",[]]],["app",{"sourceInterval":[990,999]},"UnaryExpr",[]]]],"UnaryExpr_not":["define",{"sourceInterval":[1023,1060]},null,[],["seq",{"sourceInterval":[1023,1036]},["terminal",{"sourceInterval":[1023,1026]},"~"],["app",{"sourceInterval":[1027,1036]},"UnaryExpr",[]]]],"UnaryExpr_delete":["define",{"sourceInterval":[1067,1107]},null,[],["seq",{"sourceInterval":[1067,1081]},["app",{"sourceInterval":[1067,1075]},"DeleteKw",[]],["app",{"sourceInterval":[1076,1081]},"Place",[]]]],"UnaryExpr_value":["define",{"sourceInterval":[1114,1153]},null,[],["app",{"sourceInterval":[1114,1125]},"PostfixExpr",[]]],"UnaryExpr":["define",{"sourceInterval":[963,1153]},null,[],["alt",{"sourceInterval":[979,1153]},["app",{"sourceInterval":[979,999]},"UnaryExpr_neg",[]],["app",{"sourceInterval":[1023,1036]},"UnaryExpr_not",[]],["app",{"sourceInterval":[1067,1081]},"UnaryExpr_delete",[]],["app",{"sourceInterval":[1114,1125]},"UnaryExpr_value",[]]]],"PostfixExpr_chain":["define",{"sourceInterval":[1175,1214]},null,[],["seq",{"sourceInterval":[1175,1199]},["app",{"sourceInterval":[1175,1186]},"PrimaryExpr",[]],["star",{"sourceInterval":[1187,1199]},["app",{"sourceInterval":[1187,1198]},"PostfixTail",[]]]]],"PostfixExpr":["define",{"sourceInterval":[1157,1214]},null,[],["app",{"sourceInterval":[1175,1214]},"PostfixExpr_chain",[]]],"PostfixTail_navStatic":["define",{"sourceInterval":[1236,1279]},null,[],["seq",{"sourceInterval":[1236,1247]},["terminal",{"sourceInterval":[1236,1239]},"."],["app",{"sourceInterval":[1240,1247]},"keyName",[]]]],"PostfixTail_navDynamic":["define",{"sourceInterval":[1286,1329]},null,[],["seq",{"sourceInterval":[1286,1299]},["terminal",{"sourceInterval":[1286,1290]},".("],["app",{"sourceInterval":[1291,1295]},"Expr",[]],["terminal",{"sourceInterval":[1296,1299]},")"]]],"PostfixTail_callEmpty":["define",{"sourceInterval":[1336,1377]},null,[],["seq",{"sourceInterval":[1336,1343]},["terminal",{"sourceInterval":[1336,1339]},"("],["terminal",{"sourceInterval":[1340,1343]},")"]]],"PostfixTail_call":["define",{"sourceInterval":[1384,1421]},null,[],["seq",{"sourceInterval":[1384,1406]},["terminal",{"sourceInterval":[1384,1387]},"("],["app",{"sourceInterval":[1388,1402]},"Elements",[["app",{"sourceInterval":[1397,1401]},"Expr",[]]]],["terminal",{"sourceInterval":[1403,1406]},")"]]],"PostfixTail":["define",{"sourceInterval":[1218,1421]},null,[],["alt",{"sourceInterval":[1236,1421]},["app",{"sourceInterval":[1236,1247]},"PostfixTail_navStatic",[]],["app",{"sourceInterval":[1286,1299]},"PostfixTail_navDynamic",[]],["app",{"sourceInterval":[1336,1343]},"PostfixTail_callEmpty",[]],["app",{"sourceInterval":[1384,1406]},"PostfixTail_call",[]]]],"PrimaryExpr_break":["define",{"sourceInterval":[1492,1531]},null,[],["app",{"sourceInterval":[1492,1499]},"BreakKw",[]]],"PrimaryExpr_continue":["define",{"sourceInterval":[1538,1580]},null,[],["app",{"sourceInterval":[1538,1548]},"ContinueKw",[]]],"PrimaryExpr_stringPred":["define",{"sourceInterval":[1638,1682]},null,[],["app",{"sourceInterval":[1638,1646]},"StringKw",[]]],"PrimaryExpr_numberPred":["define",{"sourceInterval":[1689,1733]},null,[],["app",{"sourceInterval":[1689,1697]},"NumberKw",[]]],"PrimaryExpr_objectPred":["define",{"sourceInterval":[1740,1784]},null,[],["app",{"sourceInterval":[1740,1748]},"ObjectKw",[]]],"PrimaryExpr_arrayPred":["define",{"sourceInterval":[1791,1834]},null,[],["app",{"sourceInterval":[1791,1798]},"ArrayKw",[]]],"PrimaryExpr_booleanPred":["define",{"sourceInterval":[1841,1886]},null,[],["app",{"sourceInterval":[1841,1850]},"BooleanKw",[]]],"PrimaryExpr_true":["define",{"sourceInterval":[1893,1931]},null,[],["app",{"sourceInterval":[1893,1899]},"TrueKw",[]]],"PrimaryExpr_false":["define",{"sourceInterval":[1938,1977]},null,[],["app",{"sourceInterval":[1938,1945]},"FalseKw",[]]],"PrimaryExpr_null":["define",{"sourceInterval":[1984,2022]},null,[],["app",{"sourceInterval":[1984,1990]},"NullKw",[]]],"PrimaryExpr_undefined":["define",{"sourceInterval":[2029,2072]},null,[],["app",{"sourceInterval":[2029,2040]},"UndefinedKw",[]]],"PrimaryExpr_self":["define",{"sourceInterval":[2079,2117]},null,[],["app",{"sourceInterval":[2079,2087]},"SelfExpr",[]]],"PrimaryExpr_identifier":["define",{"sourceInterval":[2124,2168]},null,[],["app",{"sourceInterval":[2124,2134]},"identifier",[]]],"PrimaryExpr_group":["define",{"sourceInterval":[2175,2213]},null,[],["seq",{"sourceInterval":[2175,2187]},["terminal",{"sourceInterval":[2175,2178]},"("],["app",{"sourceInterval":[2179,2183]},"Expr",[]],["terminal",{"sourceInterval":[2184,2187]},")"]]],"PrimaryExpr":["define",{"sourceInterval":[1425,2213]},null,[],["alt",{"sourceInterval":[1443,2213]},["app",{"sourceInterval":[1443,1458]},"ConditionalExpr",[]],["app",{"sourceInterval":[1465,1471]},"DoExpr",[]],["app",{"sourceInterval":[1478,1485]},"ForExpr",[]],["app",{"sourceInterval":[1492,1499]},"PrimaryExpr_break",[]],["app",{"sourceInterval":[1538,1548]},"PrimaryExpr_continue",[]],["app",{"sourceInterval":[1587,1592]},"Array",[]],["app",{"sourceInterval":[1599,1605]},"Object",[]],["app",{"sourceInterval":[1612,1618]},"String",[]],["app",{"sourceInterval":[1625,1631]},"Number",[]],["app",{"sourceInterval":[1638,1646]},"PrimaryExpr_stringPred",[]],["app",{"sourceInterval":[1689,1697]},"PrimaryExpr_numberPred",[]],["app",{"sourceInterval":[1740,1748]},"PrimaryExpr_objectPred",[]],["app",{"sourceInterval":[1791,1798]},"PrimaryExpr_arrayPred",[]],["app",{"sourceInterval":[1841,1850]},"PrimaryExpr_booleanPred",[]],["app",{"sourceInterval":[1893,1899]},"PrimaryExpr_true",[]],["app",{"sourceInterval":[1938,1945]},"PrimaryExpr_false",[]],["app",{"sourceInterval":[1984,1990]},"PrimaryExpr_null",[]],["app",{"sourceInterval":[2029,2040]},"PrimaryExpr_undefined",[]],["app",{"sourceInterval":[2079,2087]},"PrimaryExpr_self",[]],["app",{"sourceInterval":[2124,2134]},"PrimaryExpr_identifier",[]],["app",{"sourceInterval":[2175,2187]},"PrimaryExpr_group",[]]]],"SelfExpr_depth":["define",{"sourceInterval":[2232,2270]},null,[],["seq",{"sourceInterval":[2232,2249]},["app",{"sourceInterval":[2232,2238]},"SelfKw",[]],["terminal",{"sourceInterval":[2239,2242]},"@"],["app",{"sourceInterval":[2243,2249]},"Number",[]]]],"SelfExpr_plain":["define",{"sourceInterval":[2277,2316]},null,[],["app",{"sourceInterval":[2277,2283]},"SelfKw",[]]],"SelfExpr":["define",{"sourceInterval":[2217,2316]},null,[],["alt",{"sourceInterval":[2232,2316]},["app",{"sourceInterval":[2232,2249]},"SelfExpr_depth",[]],["app",{"sourceInterval":[2277,2283]},"SelfExpr_plain",[]]]],"Place":["define",{"sourceInterval":[2320,2352]},null,[],["seq",{"sourceInterval":[2332,2352]},["app",{"sourceInterval":[2332,2341]},"PlaceBase",[]],["star",{"sourceInterval":[2342,2352]},["app",{"sourceInterval":[2342,2351]},"PlaceTail",[]]]]],"PlaceBase":["define",{"sourceInterval":[2356,2395]},null,[],["alt",{"sourceInterval":[2372,2395]},["app",{"sourceInterval":[2372,2382]},"identifier",[]],["app",{"sourceInterval":[2389,2395]},"SelfKw",[]]]],"PlaceTail_navStatic":["define",{"sourceInterval":[2415,2458]},null,[],["seq",{"sourceInterval":[2415,2426]},["terminal",{"sourceInterval":[2415,2418]},"."],["app",{"sourceInterval":[2419,2426]},"keyName",[]]]],"PlaceTail_navDynamic":["define",{"sourceInterval":[2465,2508]},null,[],["seq",{"sourceInterval":[2465,2478]},["terminal",{"sourceInterval":[2465,2469]},".("],["app",{"sourceInterval":[2470,2474]},"Expr",[]],["terminal",{"sourceInterval":[2475,2478]},")"]]],"PlaceTail":["define",{"sourceInterval":[2399,2508]},null,[],["alt",{"sourceInterval":[2415,2508]},["app",{"sourceInterval":[2415,2426]},"PlaceTail_navStatic",[]],["app",{"sourceInterval":[2465,2478]},"PlaceTail_navDynamic",[]]]],"ConditionalExpr":["define",{"sourceInterval":[2512,2588]},null,[],["seq",{"sourceInterval":[2534,2588]},["app",{"sourceInterval":[2534,2549]},"ConditionalHead",[]],["app",{"sourceInterval":[2550,2554]},"Expr",[]],["app",{"sourceInterval":[2555,2559]},"DoKw",[]],["app",{"sourceInterval":[2560,2565]},"Block",[]],["opt",{"sourceInterval":[2566,2582]},["app",{"sourceInterval":[2566,2581]},"ConditionalElse",[]]],["app",{"sourceInterval":[2583,2588]},"EndKw",[]]]],"ConditionalHead":["define",{"sourceInterval":[2592,2635]},null,[],["alt",{"sourceInterval":[2614,2635]},["app",{"sourceInterval":[2614,2620]},"WhenKw",[]],["app",{"sourceInterval":[2627,2635]},"UnlessKw",[]]]],"ConditionalElse_elseChain":["define",{"sourceInterval":[2661,2730]},null,[],["seq",{"sourceInterval":[2661,2716]},["app",{"sourceInterval":[2661,2667]},"ElseKw",[]],["app",{"sourceInterval":[2668,2683]},"ConditionalHead",[]],["app",{"sourceInterval":[2684,2688]},"Expr",[]],["app",{"sourceInterval":[2689,2693]},"DoKw",[]],["app",{"sourceInterval":[2694,2699]},"Block",[]],["opt",{"sourceInterval":[2700,2716]},["app",{"sourceInterval":[2700,2715]},"ConditionalElse",[]]]]],"ConditionalElse_else":["define",{"sourceInterval":[2737,2803]},null,[],["seq",{"sourceInterval":[2737,2749]},["app",{"sourceInterval":[2737,2743]},"ElseKw",[]],["app",{"sourceInterval":[2744,2749]},"Block",[]]]],"ConditionalElse":["define",{"sourceInterval":[2639,2803]},null,[],["alt",{"sourceInterval":[2661,2803]},["app",{"sourceInterval":[2661,2716]},"ConditionalElse_elseChain",[]],["app",{"sourceInterval":[2737,2749]},"ConditionalElse_else",[]]]],"ForExpr":["define",{"sourceInterval":[2807,2855]},null,[],["seq",{"sourceInterval":[2821,2855]},["app",{"sourceInterval":[2821,2826]},"ForKw",[]],["app",{"sourceInterval":[2827,2838]},"BindingExpr",[]],["app",{"sourceInterval":[2839,2843]},"DoKw",[]],["app",{"sourceInterval":[2844,2849]},"Block",[]],["app",{"sourceInterval":[2850,2855]},"EndKw",[]]]],"DoExpr":["define",{"sourceInterval":[2859,2888]},null,[],["seq",{"sourceInterval":[2872,2888]},["app",{"sourceInterval":[2872,2876]},"DoKw",[]],["app",{"sourceInterval":[2877,2882]},"Block",[]],["app",{"sourceInterval":[2883,2888]},"EndKw",[]]]],"BindingExpr":["define",{"sourceInterval":[2892,2932]},null,[],["alt",{"sourceInterval":[2910,2932]},["app",{"sourceInterval":[2910,2921]},"IterBinding",[]],["app",{"sourceInterval":[2928,2932]},"Expr",[]]]],"Block":["define",{"sourceInterval":[2936,2953]},null,[],["star",{"sourceInterval":[2948,2953]},["app",{"sourceInterval":[2948,2952]},"Expr",[]]]],"Array_empty":["define",{"sourceInterval":[2969,3016]},null,[],["seq",{"sourceInterval":[2969,2976]},["terminal",{"sourceInterval":[2969,2972]},"["],["terminal",{"sourceInterval":[2973,2976]},"]"]]],"Array_comprehension":["define",{"sourceInterval":[3023,3077]},null,[],["seq",{"sourceInterval":[3023,3051]},["terminal",{"sourceInterval":[3023,3026]},"["],["app",{"sourceInterval":[3027,3038]},"BindingExpr",[]],["terminal",{"sourceInterval":[3039,3042]},";"],["app",{"sourceInterval":[3043,3047]},"Expr",[]],["terminal",{"sourceInterval":[3048,3051]},"]"]]],"Array_values":["define",{"sourceInterval":[3084,3132]},null,[],["seq",{"sourceInterval":[3084,3106]},["terminal",{"sourceInterval":[3084,3087]},"["],["app",{"sourceInterval":[3088,3102]},"Elements",[["app",{"sourceInterval":[3097,3101]},"Expr",[]]]],["terminal",{"sourceInterval":[3103,3106]},"]"]]],"Array":["define",{"sourceInterval":[2957,3132]},null,[],["alt",{"sourceInterval":[2969,3132]},["app",{"sourceInterval":[2969,2976]},"Array_empty",[]],["app",{"sourceInterval":[3023,3051]},"Array_comprehension",[]],["app",{"sourceInterval":[3084,3106]},"Array_values",[]]]],"Object_empty":["define",{"sourceInterval":[3149,3197]},null,[],["seq",{"sourceInterval":[3149,3156]},["terminal",{"sourceInterval":[3149,3152]},"{"],["terminal",{"sourceInterval":[3153,3156]},"}"]]],"Object_comprehension":["define",{"sourceInterval":[3204,3260]},null,[],["seq",{"sourceInterval":[3204,3243]},["terminal",{"sourceInterval":[3204,3207]},"{"],["app",{"sourceInterval":[3208,3219]},"BindingExpr",[]],["terminal",{"sourceInterval":[3220,3223]},";"],["app",{"sourceInterval":[3224,3230]},"ObjKey",[]],["terminal",{"sourceInterval":[3231,3234]},":"],["app",{"sourceInterval":[3235,3239]},"Expr",[]],["terminal",{"sourceInterval":[3240,3243]},"}"]]],"Object_pairs":["define",{"sourceInterval":[3267,3314]},null,[],["seq",{"sourceInterval":[3267,3289]},["terminal",{"sourceInterval":[3267,3270]},"{"],["app",{"sourceInterval":[3271,3285]},"Elements",[["app",{"sourceInterval":[3280,3284]},"Pair",[]]]],["terminal",{"sourceInterval":[3286,3289]},"}"]]],"Object":["define",{"sourceInterval":[3136,3314]},null,[],["alt",{"sourceInterval":[3149,3314]},["app",{"sourceInterval":[3149,3156]},"Object_empty",[]],["app",{"sourceInterval":[3204,3243]},"Object_comprehension",[]],["app",{"sourceInterval":[3267,3289]},"Object_pairs",[]]]],"IterBinding_keyValueIn":["define",{"sourceInterval":[3336,3387]},null,[],["seq",{"sourceInterval":[3336,3371]},["app",{"sourceInterval":[3336,3346]},"identifier",[]],["terminal",{"sourceInterval":[3347,3350]},","],["app",{"sourceInterval":[3351,3361]},"identifier",[]],["terminal",{"sourceInterval":[3362,3366]},"in"],["app",{"sourceInterval":[3367,3371]},"Expr",[]]]],"IterBinding_valueIn":["define",{"sourceInterval":[3394,3442]},null,[],["seq",{"sourceInterval":[3394,3414]},["app",{"sourceInterval":[3394,3404]},"identifier",[]],["terminal",{"sourceInterval":[3405,3409]},"in"],["app",{"sourceInterval":[3410,3414]},"Expr",[]]]],"IterBinding_keyOf":["define",{"sourceInterval":[3449,3495]},null,[],["seq",{"sourceInterval":[3449,3469]},["app",{"sourceInterval":[3449,3459]},"identifier",[]],["terminal",{"sourceInterval":[3460,3464]},"of"],["app",{"sourceInterval":[3465,3469]},"Expr",[]]]],"IterBinding":["define",{"sourceInterval":[3318,3495]},null,[],["alt",{"sourceInterval":[3336,3495]},["app",{"sourceInterval":[3336,3371]},"IterBinding_keyValueIn",[]],["app",{"sourceInterval":[3394,3414]},"IterBinding_valueIn",[]],["app",{"sourceInterval":[3449,3469]},"IterBinding_keyOf",[]]]],"Pair":["define",{"sourceInterval":[3499,3525]},null,[],["seq",{"sourceInterval":[3510,3525]},["app",{"sourceInterval":[3510,3516]},"ObjKey",[]],["terminal",{"sourceInterval":[3517,3520]},":"],["app",{"sourceInterval":[3521,3525]},"Expr",[]]]],"ObjKey_bare":["define",{"sourceInterval":[3542,3580]},null,[],["app",{"sourceInterval":[3542,3549]},"keyName",[]]],"ObjKey_number":["define",{"sourceInterval":[3587,3627]},null,[],["app",{"sourceInterval":[3587,3593]},"Number",[]]],"ObjKey_string":["define",{"sourceInterval":[3634,3674]},null,[],["app",{"sourceInterval":[3634,3640]},"String",[]]],"ObjKey_computed":["define",{"sourceInterval":[3681,3722]},null,[],["seq",{"sourceInterval":[3681,3693]},["terminal",{"sourceInterval":[3681,3684]},"("],["app",{"sourceInterval":[3685,3689]},"Expr",[]],["terminal",{"sourceInterval":[3690,3693]},")"]]],"ObjKey":["define",{"sourceInterval":[3529,3722]},null,[],["alt",{"sourceInterval":[3542,3722]},["app",{"sourceInterval":[3542,3549]},"ObjKey_bare",[]],["app",{"sourceInterval":[3587,3593]},"ObjKey_number",[]],["app",{"sourceInterval":[3634,3640]},"ObjKey_string",[]],["app",{"sourceInterval":[3681,3693]},"ObjKey_computed",[]]]],"keyName":["define",{"sourceInterval":[3726,3758]},null,[],["seq",{"sourceInterval":[3740,3758]},["app",{"sourceInterval":[3740,3748]},"nameHead",[]],["star",{"sourceInterval":[3749,3758]},["app",{"sourceInterval":[3749,3757]},"nameTail",[]]]]],"CompareOp":["define",{"sourceInterval":[3762,3835]},null,[],["alt",{"sourceInterval":[3778,3835]},["terminal",{"sourceInterval":[3778,3782]},"=="],["terminal",{"sourceInterval":[3789,3793]},"!="],["terminal",{"sourceInterval":[3800,3804]},">="],["terminal",{"sourceInterval":[3811,3814]},">"],["terminal",{"sourceInterval":[3821,3825]},"<="],["terminal",{"sourceInterval":[3832,3835]},"<"]]],"AssignOp":["define",{"sourceInterval":[3839,3945]},null,[],["alt",{"sourceInterval":[3854,3945]},["terminal",{"sourceInterval":[3854,3857]},"="],["terminal",{"sourceInterval":[3864,3868]},"+="],["terminal",{"sourceInterval":[3875,3879]},"-="],["terminal",{"sourceInterval":[3886,3890]},"*="],["terminal",{"sourceInterval":[3897,3901]},"/="],["terminal",{"sourceInterval":[3908,3912]},"%="],["terminal",{"sourceInterval":[3919,3923]},"&="],["terminal",{"sourceInterval":[3930,3934]},"|="],["terminal",{"sourceInterval":[3941,3945]},"^="]]],"Elements":["define",{"sourceInterval":[3949,3992]},null,["item"],["seq",{"sourceInterval":[3970,3992]},["param",{"sourceInterval":[3970,3974]},0],["star",{"sourceInterval":[3975,3987]},["seq",{"sourceInterval":[3976,3985]},["opt",{"sourceInterval":[3976,3980]},["terminal",{"sourceInterval":[3976,3979]},","]],["param",{"sourceInterval":[3981,3985]},0]]],["opt",{"sourceInterval":[3988,3992]},["terminal",{"sourceInterval":[3988,3991]},","]]]],"identifier":["define",{"sourceInterval":[3996,4041]},null,[],["seq",{"sourceInterval":[4013,4041]},["not",{"sourceInterval":[4013,4022]},["app",{"sourceInterval":[4014,4022]},"reserved",[]]],["app",{"sourceInterval":[4023,4031]},"nameHead",[]],["star",{"sourceInterval":[4032,4041]},["app",{"sourceInterval":[4032,4040]},"nameTail",[]]]]],"nameHead":["define",{"sourceInterval":[4045,4076]},null,[],["alt",{"sourceInterval":[4060,4076]},["app",{"sourceInterval":[4060,4066]},"letter",[]],["terminal",{"sourceInterval":[4073,4076]},"_"]]],"nameTail":["define",{"sourceInterval":[4080,4133]},null,[],["alt",{"sourceInterval":[4095,4133]},["app",{"sourceInterval":[4095,4101]},"letter",[]],["app",{"sourceInterval":[4108,4113]},"digit",[]],["terminal",{"sourceInterval":[4120,4123]},"_"],["terminal",{"sourceInterval":[4130,4133]},"-"]]],"reserved":["define",{"sourceInterval":[4137,4481]},null,[],["alt",{"sourceInterval":[4152,4481]},["app",{"sourceInterval":[4152,4159]},"trueTok",[]],["app",{"sourceInterval":[4166,4174]},"falseTok",[]],["app",{"sourceInterval":[4181,4188]},"nullTok",[]],["app",{"sourceInterval":[4195,4207]},"undefinedTok",[]],["app",{"sourceInterval":[4214,4221]},"selfTok",[]],["app",{"sourceInterval":[4228,4235]},"whenTok",[]],["app",{"sourceInterval":[4242,4251]},"unlessTok",[]],["app",{"sourceInterval":[4258,4264]},"forTok",[]],["app",{"sourceInterval":[4271,4276]},"inTok",[]],["app",{"sourceInterval":[4283,4288]},"ofTok",[]],["app",{"sourceInterval":[4295,4300]},"doTok",[]],["app",{"sourceInterval":[4307,4314]},"elseTok",[]],["app",{"sourceInterval":[4321,4327]},"endTok",[]],["app",{"sourceInterval":[4334,4342]},"breakTok",[]],["app",{"sourceInterval":[4349,4360]},"continueTok",[]],["app",{"sourceInterval":[4367,4373]},"andTok",[]],["app",{"sourceInterval":[4380,4385]},"orTok",[]],["app",{"sourceInterval":[4392,4401]},"deleteTok",[]],["app",{"sourceInterval":[4408,4417]},"stringTok",[]],["app",{"sourceInterval":[4424,4433]},"numberTok",[]],["app",{"sourceInterval":[4440,4449]},"objectTok",[]],["app",{"sourceInterval":[4456,4464]},"arrayTok",[]],["app",{"sourceInterval":[4471,4481]},"booleanTok",[]]]],"TrueKw":["define",{"sourceInterval":[4485,4505]},null,[],["app",{"sourceInterval":[4498,4505]},"trueTok",[]]],"FalseKw":["define",{"sourceInterval":[4509,4531]},null,[],["app",{"sourceInterval":[4523,4531]},"falseTok",[]]],"NullKw":["define",{"sourceInterval":[4535,4555]},null,[],["app",{"sourceInterval":[4548,4555]},"nullTok",[]]],"UndefinedKw":["define",{"sourceInterval":[4559,4589]},null,[],["app",{"sourceInterval":[4577,4589]},"undefinedTok",[]]],"SelfKw":["define",{"sourceInterval":[4593,4613]},null,[],["app",{"sourceInterval":[4606,4613]},"selfTok",[]]],"WhenKw":["define",{"sourceInterval":[4617,4637]},null,[],["app",{"sourceInterval":[4630,4637]},"whenTok",[]]],"UnlessKw":["define",{"sourceInterval":[4641,4665]},null,[],["app",{"sourceInterval":[4656,4665]},"unlessTok",[]]],"ForKw":["define",{"sourceInterval":[4669,4687]},null,[],["app",{"sourceInterval":[4681,4687]},"forTok",[]]],"DoKw":["define",{"sourceInterval":[4691,4707]},null,[],["app",{"sourceInterval":[4702,4707]},"doTok",[]]],"ElseKw":["define",{"sourceInterval":[4711,4731]},null,[],["app",{"sourceInterval":[4724,4731]},"elseTok",[]]],"EndKw":["define",{"sourceInterval":[4735,4753]},null,[],["app",{"sourceInterval":[4747,4753]},"endTok",[]]],"BreakKw":["define",{"sourceInterval":[4757,4779]},null,[],["app",{"sourceInterval":[4771,4779]},"breakTok",[]]],"ContinueKw":["define",{"sourceInterval":[4783,4811]},null,[],["app",{"sourceInterval":[4800,4811]},"continueTok",[]]],"AndKw":["define",{"sourceInterval":[4815,4833]},null,[],["app",{"sourceInterval":[4827,4833]},"andTok",[]]],"OrKw":["define",{"sourceInterval":[4837,4853]},null,[],["app",{"sourceInterval":[4848,4853]},"orTok",[]]],"DeleteKw":["define",{"sourceInterval":[4857,4881]},null,[],["app",{"sourceInterval":[4872,4881]},"deleteTok",[]]],"StringKw":["define",{"sourceInterval":[4885,4909]},null,[],["app",{"sourceInterval":[4900,4909]},"stringTok",[]]],"NumberKw":["define",{"sourceInterval":[4913,4937]},null,[],["app",{"sourceInterval":[4928,4937]},"numberTok",[]]],"ObjectKw":["define",{"sourceInterval":[4941,4965]},null,[],["app",{"sourceInterval":[4956,4965]},"objectTok",[]]],"ArrayKw":["define",{"sourceInterval":[4969,4991]},null,[],["app",{"sourceInterval":[4983,4991]},"arrayTok",[]]],"BooleanKw":["define",{"sourceInterval":[4995,5021]},null,[],["app",{"sourceInterval":[5011,5021]},"booleanTok",[]]],"trueTok":["define",{"sourceInterval":[5025,5055]},null,[],["seq",{"sourceInterval":[5039,5055]},["terminal",{"sourceInterval":[5039,5045]},"true"],["not",{"sourceInterval":[5046,5055]},["app",{"sourceInterval":[5047,5055]},"nameTail",[]]]]],"falseTok":["define",{"sourceInterval":[5059,5091]},null,[],["seq",{"sourceInterval":[5074,5091]},["terminal",{"sourceInterval":[5074,5081]},"false"],["not",{"sourceInterval":[5082,5091]},["app",{"sourceInterval":[5083,5091]},"nameTail",[]]]]],"nullTok":["define",{"sourceInterval":[5095,5125]},null,[],["seq",{"sourceInterval":[5109,5125]},["terminal",{"sourceInterval":[5109,5115]},"null"],["not",{"sourceInterval":[5116,5125]},["app",{"sourceInterval":[5117,5125]},"nameTail",[]]]]],"undefinedTok":["define",{"sourceInterval":[5129,5169]},null,[],["seq",{"sourceInterval":[5148,5169]},["terminal",{"sourceInterval":[5148,5159]},"undefined"],["not",{"sourceInterval":[5160,5169]},["app",{"sourceInterval":[5161,5169]},"nameTail",[]]]]],"selfTok":["define",{"sourceInterval":[5173,5203]},null,[],["seq",{"sourceInterval":[5187,5203]},["terminal",{"sourceInterval":[5187,5193]},"self"],["not",{"sourceInterval":[5194,5203]},["app",{"sourceInterval":[5195,5203]},"nameTail",[]]]]],"whenTok":["define",{"sourceInterval":[5207,5237]},null,[],["seq",{"sourceInterval":[5221,5237]},["terminal",{"sourceInterval":[5221,5227]},"when"],["not",{"sourceInterval":[5228,5237]},["app",{"sourceInterval":[5229,5237]},"nameTail",[]]]]],"unlessTok":["define",{"sourceInterval":[5241,5275]},null,[],["seq",{"sourceInterval":[5257,5275]},["terminal",{"sourceInterval":[5257,5265]},"unless"],["not",{"sourceInterval":[5266,5275]},["app",{"sourceInterval":[5267,5275]},"nameTail",[]]]]],"forTok":["define",{"sourceInterval":[5279,5307]},null,[],["seq",{"sourceInterval":[5292,5307]},["terminal",{"sourceInterval":[5292,5297]},"for"],["not",{"sourceInterval":[5298,5307]},["app",{"sourceInterval":[5299,5307]},"nameTail",[]]]]],"inTok":["define",{"sourceInterval":[5311,5337]},null,[],["seq",{"sourceInterval":[5323,5337]},["terminal",{"sourceInterval":[5323,5327]},"in"],["not",{"sourceInterval":[5328,5337]},["app",{"sourceInterval":[5329,5337]},"nameTail",[]]]]],"ofTok":["define",{"sourceInterval":[5341,5367]},null,[],["seq",{"sourceInterval":[5353,5367]},["terminal",{"sourceInterval":[5353,5357]},"of"],["not",{"sourceInterval":[5358,5367]},["app",{"sourceInterval":[5359,5367]},"nameTail",[]]]]],"doTok":["define",{"sourceInterval":[5371,5397]},null,[],["seq",{"sourceInterval":[5383,5397]},["terminal",{"sourceInterval":[5383,5387]},"do"],["not",{"sourceInterval":[5388,5397]},["app",{"sourceInterval":[5389,5397]},"nameTail",[]]]]],"elseTok":["define",{"sourceInterval":[5401,5431]},null,[],["seq",{"sourceInterval":[5415,5431]},["terminal",{"sourceInterval":[5415,5421]},"else"],["not",{"sourceInterval":[5422,5431]},["app",{"sourceInterval":[5423,5431]},"nameTail",[]]]]],"endTok":["define",{"sourceInterval":[5435,5463]},null,[],["seq",{"sourceInterval":[5448,5463]},["terminal",{"sourceInterval":[5448,5453]},"end"],["not",{"sourceInterval":[5454,5463]},["app",{"sourceInterval":[5455,5463]},"nameTail",[]]]]],"breakTok":["define",{"sourceInterval":[5467,5499]},null,[],["seq",{"sourceInterval":[5482,5499]},["terminal",{"sourceInterval":[5482,5489]},"break"],["not",{"sourceInterval":[5490,5499]},["app",{"sourceInterval":[5491,5499]},"nameTail",[]]]]],"continueTok":["define",{"sourceInterval":[5503,5541]},null,[],["seq",{"sourceInterval":[5521,5541]},["terminal",{"sourceInterval":[5521,5531]},"continue"],["not",{"sourceInterval":[5532,5541]},["app",{"sourceInterval":[5533,5541]},"nameTail",[]]]]],"andTok":["define",{"sourceInterval":[5545,5573]},null,[],["seq",{"sourceInterval":[5558,5573]},["terminal",{"sourceInterval":[5558,5563]},"and"],["not",{"sourceInterval":[5564,5573]},["app",{"sourceInterval":[5565,5573]},"nameTail",[]]]]],"orTok":["define",{"sourceInterval":[5577,5603]},null,[],["seq",{"sourceInterval":[5589,5603]},["terminal",{"sourceInterval":[5589,5593]},"or"],["not",{"sourceInterval":[5594,5603]},["app",{"sourceInterval":[5595,5603]},"nameTail",[]]]]],"deleteTok":["define",{"sourceInterval":[5607,5641]},null,[],["seq",{"sourceInterval":[5623,5641]},["terminal",{"sourceInterval":[5623,5631]},"delete"],["not",{"sourceInterval":[5632,5641]},["app",{"sourceInterval":[5633,5641]},"nameTail",[]]]]],"stringTok":["define",{"sourceInterval":[5645,5679]},null,[],["seq",{"sourceInterval":[5661,5679]},["terminal",{"sourceInterval":[5661,5669]},"string"],["not",{"sourceInterval":[5670,5679]},["app",{"sourceInterval":[5671,5679]},"nameTail",[]]]]],"numberTok":["define",{"sourceInterval":[5683,5717]},null,[],["seq",{"sourceInterval":[5699,5717]},["terminal",{"sourceInterval":[5699,5707]},"number"],["not",{"sourceInterval":[5708,5717]},["app",{"sourceInterval":[5709,5717]},"nameTail",[]]]]],"objectTok":["define",{"sourceInterval":[5721,5755]},null,[],["seq",{"sourceInterval":[5737,5755]},["terminal",{"sourceInterval":[5737,5745]},"object"],["not",{"sourceInterval":[5746,5755]},["app",{"sourceInterval":[5747,5755]},"nameTail",[]]]]],"arrayTok":["define",{"sourceInterval":[5759,5791]},null,[],["seq",{"sourceInterval":[5774,5791]},["terminal",{"sourceInterval":[5774,5781]},"array"],["not",{"sourceInterval":[5782,5791]},["app",{"sourceInterval":[5783,5791]},"nameTail",[]]]]],"booleanTok":["define",{"sourceInterval":[5795,5831]},null,[],["seq",{"sourceInterval":[5812,5831]},["terminal",{"sourceInterval":[5812,5821]},"boolean"],["not",{"sourceInterval":[5822,5831]},["app",{"sourceInterval":[5823,5831]},"nameTail",[]]]]],"String":["define",{"sourceInterval":[5835,5881]},null,[],["alt",{"sourceInterval":[5848,5881]},["app",{"sourceInterval":[5848,5861]},"DQuotedString",[]],["app",{"sourceInterval":[5868,5881]},"SQuotedString",[]]]],"DQuotedString":["define",{"sourceInterval":[5885,5927]},null,[],["seq",{"sourceInterval":[5905,5927]},["terminal",{"sourceInterval":[5905,5909]},"\""],["star",{"sourceInterval":[5910,5922]},["app",{"sourceInterval":[5910,5921]},"dStringChar",[]]],["terminal",{"sourceInterval":[5923,5927]},"\""]]],"dStringChar":["define",{"sourceInterval":[5931,5980]},null,[],["alt",{"sourceInterval":[5949,5980]},["seq",{"sourceInterval":[5949,5967]},["not",{"sourceInterval":[5949,5963]},["alt",{"sourceInterval":[5951,5962]},["terminal",{"sourceInterval":[5951,5955]},"\""],["terminal",{"sourceInterval":[5958,5962]},"\\"]]],["app",{"sourceInterval":[5964,5967]},"any",[]]],["app",{"sourceInterval":[5974,5980]},"escape",[]]]],"SQuotedString":["define",{"sourceInterval":[5984,6024]},null,[],["seq",{"sourceInterval":[6004,6024]},["terminal",{"sourceInterval":[6004,6007]},"'"],["star",{"sourceInterval":[6008,6020]},["app",{"sourceInterval":[6008,6019]},"sStringChar",[]]],["terminal",{"sourceInterval":[6021,6024]},"'"]]],"sStringChar":["define",{"sourceInterval":[6028,6076]},null,[],["alt",{"sourceInterval":[6046,6076]},["seq",{"sourceInterval":[6046,6063]},["not",{"sourceInterval":[6046,6059]},["alt",{"sourceInterval":[6048,6058]},["terminal",{"sourceInterval":[6048,6051]},"'"],["terminal",{"sourceInterval":[6054,6058]},"\\"]]],["app",{"sourceInterval":[6060,6063]},"any",[]]],["app",{"sourceInterval":[6070,6076]},"escape",[]]]],"escape":["define",{"sourceInterval":[6080,6138]},null,[],["seq",{"sourceInterval":[6093,6138]},["terminal",{"sourceInterval":[6093,6097]},"\\"],["alt",{"sourceInterval":[6099,6137]},["app",{"sourceInterval":[6099,6109]},"escapeChar",[]],["app",{"sourceInterval":[6112,6121]},"hexEscape",[]],["app",{"sourceInterval":[6124,6137]},"unicodeEscape",[]]]]],"escapeChar":["define",{"sourceInterval":[6142,6218]},null,[],["alt",{"sourceInterval":[6159,6218]},["terminal",{"sourceInterval":[6159,6163]},"\""],["terminal",{"sourceInterval":[6166,6169]},"'"],["terminal",{"sourceInterval":[6172,6176]},"\\"],["terminal",{"sourceInterval":[6179,6182]},"/"],["terminal",{"sourceInterval":[6185,6188]},"b"],["terminal",{"sourceInterval":[6191,6194]},"f"],["terminal",{"sourceInterval":[6197,6200]},"n"],["terminal",{"sourceInterval":[6203,6206]},"r"],["terminal",{"sourceInterval":[6209,6212]},"t"],["terminal",{"sourceInterval":[6215,6218]},"0"]]],"hexEscape":["define",{"sourceInterval":[6222,6249]},null,[],["seq",{"sourceInterval":[6238,6249]},["terminal",{"sourceInterval":[6238,6241]},"x"],["app",{"sourceInterval":[6242,6245]},"hex",[]],["app",{"sourceInterval":[6246,6249]},"hex",[]]]],"unicodeEscape":["define",{"sourceInterval":[6253,6292]},null,[],["seq",{"sourceInterval":[6273,6292]},["terminal",{"sourceInterval":[6273,6276]},"u"],["app",{"sourceInterval":[6277,6280]},"hex",[]],["app",{"sourceInterval":[6281,6284]},"hex",[]],["app",{"sourceInterval":[6285,6288]},"hex",[]],["app",{"sourceInterval":[6289,6292]},"hex",[]]]],"hex":["define",{"sourceInterval":[6296,6341]},null,[],["alt",{"sourceInterval":[6306,6341]},["app",{"sourceInterval":[6306,6311]},"digit",[]],["range",{"sourceInterval":[6318,6326]},"A","F"],["range",{"sourceInterval":[6333,6341]},"a","f"]]],"Number":["define",{"sourceInterval":[6345,6406]},null,[],["alt",{"sourceInterval":[6358,6406]},["app",{"sourceInterval":[6358,6367]},"hexNumber",[]],["app",{"sourceInterval":[6374,6386]},"binaryNumber",[]],["app",{"sourceInterval":[6393,6406]},"decimalNumber",[]]]],"hexNumber":["define",{"sourceInterval":[6410,6440]},null,[],["seq",{"sourceInterval":[6426,6440]},["opt",{"sourceInterval":[6426,6430]},["terminal",{"sourceInterval":[6426,6429]},"-"]],["terminal",{"sourceInterval":[6431,6435]},"0x"],["plus",{"sourceInterval":[6436,6440]},["app",{"sourceInterval":[6436,6439]},"hex",[]]]]],"binaryNumber":["define",{"sourceInterval":[6444,6477]},null,[],["seq",{"sourceInterval":[6463,6477]},["opt",{"sourceInterval":[6463,6467]},["terminal",{"sourceInterval":[6463,6466]},"-"]],["terminal",{"sourceInterval":[6468,6472]},"0b"],["plus",{"sourceInterval":[6473,6477]},["app",{"sourceInterval":[6473,6476]},"bit",[]]]]],"decimalNumber":["define",{"sourceInterval":[6481,6544]},null,[],["seq",{"sourceInterval":[6501,6544]},["opt",{"sourceInterval":[6501,6505]},["terminal",{"sourceInterval":[6501,6504]},"-"]],["app",{"sourceInterval":[6506,6520]},"decimalInteger",[]],["opt",{"sourceInterval":[6521,6534]},["seq",{"sourceInterval":[6522,6532]},["terminal",{"sourceInterval":[6522,6525]},"."],["plus",{"sourceInterval":[6526,6532]},["app",{"sourceInterval":[6526,6531]},"digit",[]]]]],["opt",{"sourceInterval":[6535,6544]},["app",{"sourceInterval":[6535,6543]},"exponent",[]]]]],"decimalInteger_nonZero":["define",{"sourceInterval":[6569,6600]},null,[],["seq",{"sourceInterval":[6569,6588]},["app",{"sourceInterval":[6569,6581]},"nonZeroDigit",[]],["star",{"sourceInterval":[6582,6588]},["app",{"sourceInterval":[6582,6587]},"digit",[]]]]],"decimalInteger_zero":["define",{"sourceInterval":[6607,6635]},null,[],["terminal",{"sourceInterval":[6607,6610]},"0"]],"decimalInteger":["define",{"sourceInterval":[6548,6635]},null,[],["alt",{"sourceInterval":[6569,6635]},["app",{"sourceInterval":[6569,6588]},"decimalInteger_nonZero",[]],["app",{"sourceInterval":[6607,6610]},"decimalInteger_zero",[]]]],"bit":["define",{"sourceInterval":[6639,6658]},null,[],["alt",{"sourceInterval":[6649,6658]},["terminal",{"sourceInterval":[6649,6652]},"0"],["terminal",{"sourceInterval":[6655,6658]},"1"]]],"exponent":["define",{"sourceInterval":[6662,6708]},null,[],["seq",{"sourceInterval":[6677,6708]},["alt",{"sourceInterval":[6678,6687]},["terminal",{"sourceInterval":[6678,6681]},"e"],["terminal",{"sourceInterval":[6684,6687]},"E"]],["opt",{"sourceInterval":[6689,6701]},["alt",{"sourceInterval":[6690,6699]},["terminal",{"sourceInterval":[6690,6693]},"+"],["terminal",{"sourceInterval":[6696,6699]},"-"]]],["plus",{"sourceInterval":[6702,6708]},["app",{"sourceInterval":[6702,6707]},"digit",[]]]]],"nonZeroDigit":["define",{"sourceInterval":[6712,6739]},null,[],["range",{"sourceInterval":[6731,6739]},"1","9"]],"comment":["define",{"sourceInterval":[6743,6787]},null,[],["alt",{"sourceInterval":[6757,6787]},["app",{"sourceInterval":[6757,6768]},"lineComment",[]],["app",{"sourceInterval":[6775,6787]},"blockComment",[]]]],"lineComment":["define",{"sourceInterval":[6791,6832]},null,[],["seq",{"sourceInterval":[6809,6832]},["terminal",{"sourceInterval":[6809,6813]},"//"],["star",{"sourceInterval":[6814,6826]},["seq",{"sourceInterval":[6815,6824]},["not",{"sourceInterval":[6815,6820]},["terminal",{"sourceInterval":[6816,6820]},"\n"]],["app",{"sourceInterval":[6821,6824]},"any",[]]]],["opt",{"sourceInterval":[6827,6832]},["terminal",{"sourceInterval":[6827,6831]},"\n"]]]],"blockComment":["define",{"sourceInterval":[6836,6877]},null,[],["seq",{"sourceInterval":[6855,6877]},["terminal",{"sourceInterval":[6855,6859]},"/*"],["star",{"sourceInterval":[6860,6872]},["seq",{"sourceInterval":[6861,6870]},["not",{"sourceInterval":[6861,6866]},["terminal",{"sourceInterval":[6862,6866]},"*/"]],["app",{"sourceInterval":[6867,6870]},"any",[]]]],["terminal",{"sourceInterval":[6873,6877]},"*/"]]]}]);module.exports=result;
|
package/rex.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
const rexGrammarModule = require("./rex.ohm-bundle.cjs");
|
|
5
|
+
const rexGrammar = rexGrammarModule?.default ?? rexGrammarModule;
|
|
2
6
|
|
|
3
7
|
export const grammar = rexGrammar;
|
|
4
8
|
export const semantics = rexGrammar.createSemantics();
|
package/rex-cli.ts
DELETED