Skip to content

Instantly share code, notes, and snippets.

@conartist6
Last active August 13, 2024 20:54
Show Gist options
  • Save conartist6/b28c27bdbf94167abbcad439a0d8052b to your computer and use it in GitHub Desktop.
Save conartist6/b28c27bdbf94167abbcad439a0d8052b to your computer and use it in GitHub Desktop.
JSON grammar with hoisting
import { readFileSync } from 'node:fs';
import { streamParse, Context, AgastContext } from 'bablr/enhanceable';
import { evaluateReturnAsync } from '@bablr/agast-helpers/tree';
import * as language from './z_2.json.grammar.fast.js';
import { buildFullyQualifiedSpamMatcher } from '@bablr/agast-vm-helpers';
const input = readFileSync(`${import.meta.dirname}/z_3_fixture.json`, 'utf-8');
const matcher = buildFullyQualifiedSpamMatcher({}, language.canonicalURL, 'Expression');
const ctx = Context.from(AgastContext.create(), language);
await evaluateReturnAsync(streamParse(ctx, matcher, input));
{
"private": true,
"devDependencies": {
"bablr": "0.4.4"
"@bablr/agast-helpers": "0.3.2",
"@bablr/agast-vm-helpers": "0.3.2",
"@bablr/boot": "0.4.0",
"@bablr/cli": "0.4.6",
"@bablr/helpers": "0.18.2"
}
}
import { i } from '@bablr/boot/shorthand.macro';
import { triviaEnhancer } from '@bablr/helpers/trivia';
import * as productions from '@bablr/helpers/productions';
import { buildString, buildBoolean } from '@bablr/agast-vm-helpers';
import { Node, CoveredBy, AllowEmpty, InjectFrom, Attributes } from '@bablr/helpers/decorators';
export const canonicalURL = 'https://github.com/bablr-lang/language-en-json';
export const escapables = new Map(
Object.entries({
b: '\b',
f: '\f',
n: '\n',
r: '\r',
t: '\t',
'\\': '\\',
'/': '/',
}),
);
const s = [
i`match(/[ \n\r\t]/)`,
i`eat(<#*Space>)`,
i`eat(<> 'root')`,
i`eat(<Any> null [
<Array '['>
<Object '{'>
<String '"'>
<Number /-?\d/ span='Number'>
<Null 'null'>
<Boolean /true|false/>
])`,
i`eat(<~*Punctuator '[' balanced=']'> 'openToken')`,
i`eat(<List> 'elements[]' {
element: <Expression>
separator: <~*Punctuator ','>
allowTrailingSeparator: false
})`,
i`eat(<~*Punctuator ']' balancer> 'closeToken')`,
i`eat(<~*Punctuator '{' balanced='}'> 'openToken')`,
i`eat(<List> 'properties[]' {
element: <Property>
separator: <~*Punctuator ','>
allowTrailingSeparator: false
})`,
i`eat(<~*Punctuator '}' balancer> 'closeToken')`,
i`eat(<String> 'key')`,
i`eat(<~*Punctuator ':'> 'sigilToken')`,
i`eat(<Expression> 'value')`,
i`eat(<~*Punctuator '"' balanced='"' balancedSpan='String'> 'openToken')`,
i`eat(<*StringContent> 'content')`,
i`eat(<~*Punctuator '"' balancer> 'closeToken')`,
i`match('\\')`,
i`eat(<@EscapeSequence>)`,
i`eatMatch(/[^\r\n\\"]+/)`,
i`fail()`,
i`eat(<~*Punctuator '\\' openSpan='Escape'> 'sigilToken')`,
i`match(/[\\/bfnrt"]/)`,
i`match('u')`,
i`eat(<EscapeCode closeSpan='Escape'> 'value')`,
i`eat(<~*Keyword 'u'> 'typeToken')`,
i`eat(<Digits> 'digits[]')`,
i`eat(<Integer> 'wholePart' { noDoubleZero: true matchSign: '-' })`,
i`eatMatch(<~*Punctuator '.'> 'fractionalSeparatorToken')`,
i`eat(<Integer> 'fractionalPart')`,
i`eat(null 'fractionalPart')`,
i`eatMatch(<~*Punctuator /[eE]/> 'exponentSeparatorToken')`,
i`eat(<Integer> 'exponentPart' { matchSign: /[+-]/ })`,
i`eat(null 'exponentPart')`,
i`eat(null 'signToken')`,
i`eatMatch(/\d+/)`,
i`eat(<~*Keyword /true|false/> 'sigilToken')`,
i`eat(<~*Keyword 'null'> 'sigilToken')`,
i`eat(/[ \t\r\n]+/)`,
];
export const grammar = triviaEnhancer(
{
triviaIsAllowed: (s) => s.span === 'Bare',
*eatMatchTrivia() {
if (yield s[0]) {
yield s[1];
}
},
},
class JSONGrammar {
*[Symbol.for('@bablr/fragment')]() {
yield s[2];
}
@CoveredBy('Element')
*Expression() {
yield s[3];
}
@CoveredBy('Expression')
@Node
*Array() {
yield s[4];
yield s[5];
yield s[6];
}
@CoveredBy('Expression')
@Node
*Object() {
yield s[7];
yield s[8];
yield s[9];
}
@Node
*Property() {
yield s[10];
yield s[11];
yield s[12];
}
@CoveredBy('Language')
@Node
*String() {
yield s[13];
yield s[14];
yield s[15];
}
@AllowEmpty
@Node
*StringContent() {
let esc, lit;
do {
esc = (yield s[16]) && (yield s[17]);
lit = yield s[18];
} while (esc || lit);
}
@Attributes(['cooked'])
@Node
*EscapeSequence({ state: { span }, ctx }) {
if (!span.startsWith('String')) {
yield s[19];
}
yield s[20];
let match, cooked;
if ((match = yield s[21])) {
const match_ = ctx.sourceTextFor(match);
yield i`eat(<~*Keyword ${buildString(match_)} closeSpan='Escape'> 'value')`;
cooked = escapables.get(match_) || match_;
} else if (yield s[22]) {
const codeNode = yield s[23];
cooked = parseInt(
codeNode.properties.digits.map((digit) => ctx.sourceTextFor(digit)).join(''),
16,
);
} else {
yield s[19];
}
yield i`bindAttribute(cooked ${buildString(cooked.toString(10))})`;
}
@Node
*EscapeCode() {
yield s[24];
yield s[25];
}
@CoveredBy('Expression')
@Node
*Number() {
yield s[26];
let fs = yield s[27];
if (fs) {
yield s[28];
} else {
yield s[29];
}
let es = yield s[30];
if (es) {
yield s[31];
} else {
yield s[32];
}
}
@Node
*Integer({ value: props, ctx }) {
const { matchSign = null, noDoubleZero = false } = (props && ctx.unbox(props)) || {};
if (matchSign) {
yield i`eatMatch(<~*Punctuator ${matchSign}> 'signToken')`;
} else {
yield s[33];
}
yield i`eat(<*UnsignedInteger noDoubleZero=${buildBoolean(noDoubleZero)}> 'value')`;
}
@Node
*UnsignedInteger({ value: props, ctx }) {
const { noDoubleZero = false } = (props && ctx.unbox(props)) || {};
let [firstDigit] = ctx.allTerminalsFor(yield i`eat(/\d/)`);
if (!noDoubleZero || firstDigit.value !== '0') {
yield s[34];
}
}
@CoveredBy('Expression')
@Node
*Boolean() {
yield s[35];
}
@CoveredBy('Expression')
@Node
*Null() {
yield s[36];
}
@Node
*Space() {
yield s[37];
}
@Node
@InjectFrom(productions)
*Keyword() {}
@Node
@InjectFrom(productions)
*Punctuator() {}
@AllowEmpty
@InjectFrom(productions)
*List() {}
@InjectFrom(productions)
*Any() {}
},
);
/* @macrome
* @generatedby @bablr/macrome-generator-bablr
* @generatedfrom ./z_1.json.grammar.fast.macro.js#e0742bdbccd1335aa70856535e91987ca784206f
* This file is autogenerated. Please do not edit it directly.
* When editing run `npx macrome watch` then change the file this is generated from.
*/
import _applyDecs from "@babel/runtime/helpers/applyDecs2305";
import { interpolateArray as _interpolateArray, interpolateArrayChildren as _interpolateArrayChildren, interpolateString as _interpolateString } from "@bablr/agast-helpers/template";
import * as _l from "@bablr/agast-vm-helpers/languages";
import * as _t from "@bablr/agast-helpers/shorthand";
let _initProto, _ExpressionDecs, _ArrayDecs, _ObjectDecs, _StringDecs, _EscapeSequenceDecs, _NumberDecs, _BooleanDecs, _NullDecs, _KeywordDecs, _PunctuatorDecs, _ListDecs, _AnyDecs;
import { triviaEnhancer } from '@bablr/helpers/trivia';
import * as productions from '@bablr/helpers/productions';
import { buildString, buildBoolean } from '@bablr/agast-vm-helpers';
import { Node, CoveredBy, AllowEmpty, InjectFrom, Attributes } from '@bablr/helpers/decorators';
export const canonicalURL = 'https://github.com/bablr-lang/language-en-json';
export const escapables = new Map(Object.entries({
b: '\b',
f: '\f',
n: '\n',
r: '\r',
t: '\t',
'\\': '\\',
'/': '/'
}));
const s = [_t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "match"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
elements: [_t.node(_l.Regex, "Character", [_t.lit(" ")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\n")], {}, {
cooked: "\n"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\r")], {}, {
cooked: "\r"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\t")], {}, {
cooked: "\t"
}))], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: false
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`triviaToken`, _t.ref`tokenToken`], {
triviaToken: _t.s_i_node(_l.CSTML, "Punctuator", "#"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Space"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("root")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Any"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
}, {}), _t.node(_l.Instruction, "Array", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`elements[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "["),
elements: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Array"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Object"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "String"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("\"")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Number"),
intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
element: _t.node(_l.Regex, "Character", [_t.lit("-")], {}, {}),
value: _t.s_i_node(_l.Regex, "Keyword", "?")
}, {
min: 0,
max: 1,
greedy: true
}), _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
value: _t.s_i_node(_l.Regex, "Keyword", "d")
}, {})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {}),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("span")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("Number")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Null"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("null")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Boolean"),
intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Character", [_t.lit("t")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("r")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("u")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("e")], {}, {})]
}, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Character", [_t.lit("f")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("l")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("e")], {}, {})]
}, {})],
separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "]")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("[")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "List"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("elements[]")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}), _t.node(_l.Instruction, "Object", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("element")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Expression"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})
}, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("separator")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit(",")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})
}, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("allowTrailingSeparator")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "false")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("]")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("{")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "List"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("properties[]")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}), _t.node(_l.Instruction, "Object", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit("\n ")], {}, {})), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("element")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Property"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})
}, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("separator")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit(",")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})
}, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("allowTrailingSeparator")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "false")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("}")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "String"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("key")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit(":")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Expression"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("\"")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balanced")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("\"")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {}), _t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balancedSpan")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("String")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("openToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "StringContent"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("content")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("\"")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "BooleanAttribute", [_t.ref`key`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("balancer")], {}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("closeToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "match"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
cooked: "\\"
}))], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`escapeToken`], {
escapeToken: _t.s_i_node(_l.CSTML, "Punctuator", "@")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "EscapeSequence"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`negateToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
negateToken: _t.s_i_node(_l.Regex, "Keyword", "^"),
elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\r")], {}, {
cooked: "\r"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\n")], {}, {
cooked: "\n"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
cooked: "\\"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: true
}),
value: _t.s_i_node(_l.Regex, "Keyword", "+")
}, {
min: 1,
max: Infinity,
greedy: true
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "fail"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
cooked: "\\"
}))], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("openSpan")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "match"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
elements: [_t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\\\")], {}, {
cooked: "\\"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("/")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("b")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("f")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("n")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("r")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("t")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("\"")], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: false
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "match"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("u")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "EscapeCode"),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("closeSpan")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("u")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("typeToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Digits"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("digits[]")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Integer"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("wholePart")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}), _t.node(_l.Instruction, "Object", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("noDoubleZero")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Instruction, "Boolean", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "true")
}, {})
}, {}), _t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("matchSign")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("-")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit(".")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("fractionalSeparatorToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Integer"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("fractionalPart")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("fractionalPart")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
elements: [_t.node(_l.Regex, "Character", [_t.lit("e")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("E")], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: false
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("exponentSeparatorToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [], {}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Integer"),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("exponentPart")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}), _t.node(_l.Instruction, "Object", [_t.ref`openToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`properties[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "{"),
properties: [_t.node(_l.Instruction, "Property", [_t.ref`key`, _t.ref`mapToken`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`value`], {
key: _t.node(_l.Instruction, "Literal", [_t.lit("matchSign")], {}, {}),
mapToken: _t.s_i_node(_l.Instruction, "Punctuator", ":"),
value: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
elements: [_t.node(_l.Regex, "Character", [_t.lit("+")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("-")], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: false
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", "}")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("exponentPart")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Instruction, "Null", [_t.ref`sigilToken`], {
sigilToken: _t.s_i_node(_l.Instruction, "Keyword", "null")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("signToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
element: _t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
value: _t.s_i_node(_l.Regex, "Keyword", "d")
}, {}),
value: _t.s_i_node(_l.Regex, "Keyword", "+")
}, {
min: 1,
max: Infinity,
greedy: true
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
intrinsicValue: _t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`separators[]`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Character", [_t.lit("t")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("r")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("u")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("e")], {}, {})]
}, {}), _t.node(_l.Regex, "Alternative", [_t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Character", [_t.lit("f")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("a")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("l")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("s")], {}, {}), _t.node(_l.Regex, "Character", [_t.lit("e")], {}, {})]
}, {})],
separators: [_t.s_i_node(_l.Regex, "Punctuator", "|")],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
intrinsicValue: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("null")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {}),
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("sigilToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}), _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "Quantifier", [_t.ref`element`, _t.ref`value`], {
element: _t.node(_l.Regex, "CharacterClass", [_t.ref`openToken`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`elements[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "["),
elements: [_t.node(_l.Regex, "Character", [_t.lit(" ")], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\t")], {}, {
cooked: "\t"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\r")], {}, {
cooked: "\r"
}))], {}, {}), _t.node(_l.Regex, "Character", [_t.embedded(_t.s_e_node(_l.CSTML, "Escape", [_t.lit("\\n")], {}, {
cooked: "\n"
}))], {}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "]")
}, {
negate: false
}),
value: _t.s_i_node(_l.Regex, "Keyword", "+")
}, {
min: 1,
max: Infinity,
greedy: true
})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {})];
export const grammar = triviaEnhancer({
triviaIsAllowed: s => s.span === 'Bare',
*eatMatchTrivia() {
if (yield s[0]) {
yield s[1];
}
}
}, class JSONGrammar {
static {
[_initProto] = _applyDecs(this, [[_ExpressionDecs, 2, "Expression"], [_ArrayDecs, 2, "Array"], [_ObjectDecs, 2, "Object"], [Node, 2, "Property"], [_StringDecs, 2, "String"], [[AllowEmpty, Node], 2, "StringContent"], [_EscapeSequenceDecs, 2, "EscapeSequence"], [Node, 2, "EscapeCode"], [_NumberDecs, 2, "Number"], [Node, 2, "Integer"], [Node, 2, "UnsignedInteger"], [_BooleanDecs, 2, "Boolean"], [_NullDecs, 2, "Null"], [Node, 2, "Space"], [_KeywordDecs, 2, "Keyword"], [_PunctuatorDecs, 2, "Punctuator"], [_ListDecs, 2, "List"], [_AnyDecs, 2, "Any"]], []).e;
}
constructor() {
_initProto(this);
}
*[(_ExpressionDecs = CoveredBy('Element'), _ArrayDecs = [CoveredBy('Expression'), Node], _ObjectDecs = [CoveredBy('Expression'), Node], _StringDecs = [CoveredBy('Language'), Node], _EscapeSequenceDecs = [Attributes(['cooked']), Node], _NumberDecs = [CoveredBy('Expression'), Node], _BooleanDecs = [CoveredBy('Expression'), Node], _NullDecs = [CoveredBy('Expression'), Node], _KeywordDecs = [Node, InjectFrom(productions)], _PunctuatorDecs = [Node, InjectFrom(productions)], _ListDecs = [AllowEmpty, InjectFrom(productions)], _AnyDecs = InjectFrom(productions), Symbol.for('@bablr/fragment'))]() {
yield s[2];
}
*Expression() {
yield s[3];
}
*Array() {
yield s[4];
yield s[5];
yield s[6];
}
*Object() {
yield s[7];
yield s[8];
yield s[9];
}
*Property() {
yield s[10];
yield s[11];
yield s[12];
}
*String() {
yield s[13];
yield s[14];
yield s[15];
}
*StringContent() {
let esc, lit;
do {
esc = (yield s[16]) && (yield s[17]);
lit = yield s[18];
} while (esc || lit);
}
*EscapeSequence({
state: {
span
},
ctx
}) {
if (!span.startsWith('String')) {
yield s[19];
}
yield s[20];
let match, cooked;
if (match = yield s[21]) {
const match_ = ctx.sourceTextFor(match);
yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Keyword"),
intrinsicValue: buildString(match_),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("closeSpan")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("Escape")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {});
cooked = escapables.get(match_) || match_;
} else if (yield s[22]) {
const codeNode = yield s[23];
cooked = parseInt(codeNode.properties.digits.map(digit => ctx.sourceTextFor(digit)).join(''), 16);
} else {
yield s[19];
}
yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "bindAttribute"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), ..._interpolateArrayChildren(buildString(cooked.toString(10)), _t.ref`values[]`, _t.embedded(_t.t_node(_l.Comment, null, [_t.embedded(_t.t_node('Space', 'Space', [_t.lit(' ')]))]))), _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.s_node(_l.Instruction, "Identifier", "cooked"), ..._interpolateArray(buildString(cooked.toString(10)))],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {});
}
*EscapeCode() {
yield s[24];
yield s[25];
}
*Number() {
yield s[26];
let fs = yield s[27];
if (fs) {
yield s[28];
} else {
yield s[29];
}
let es = yield s[30];
if (es) {
yield s[31];
} else {
yield s[32];
}
}
*Integer({
value: props,
ctx
}) {
const {
matchSign = null,
noDoubleZero = false
} = props && ctx.unbox(props) || {};
if (matchSign) {
yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eatMatch"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`intrinsicValue`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`intrinsicToken`, _t.ref`tokenToken`], {
intrinsicToken: _t.s_i_node(_l.CSTML, "Punctuator", "~"),
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "Punctuator"),
intrinsicValue: matchSign,
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("signToken")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {});
} else {
yield s[33];
}
yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Spamex, "NodeMatcher", [_t.ref`openToken`, _t.ref`flags`, _t.ref`type`, _t.embedded(_t.s_t_node(_l.Space, "Space", [_t.lit(" ")], {}, {})), _t.ref`attributes[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Spamex, "Punctuator", "<"),
flags: _t.node(_l.CSTML, "Flags", [_t.ref`tokenToken`], {
tokenToken: _t.s_i_node(_l.CSTML, "Punctuator", "*")
}, {}),
type: _t.s_node(_l.Spamex, "Identifier", "UnsignedInteger"),
attributes: [_t.node(_l.Spamex, "MappingAttribute", [_t.ref`key`, _t.ref`mapToken`, _t.ref`value`], {
key: _t.node(_l.Spamex, "Literal", [_t.lit("noDoubleZero")], {}, {}),
mapToken: _t.s_i_node(_l.Spamex, "Punctuator", "="),
value: buildBoolean(noDoubleZero)
}, {})],
closeToken: _t.s_i_node(_l.Spamex, "Punctuator", ">")
}, {}), _t.node(_l.CSTML, "String", [_t.ref`openToken`, _t.ref`content`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.CSTML, "Punctuator", "'"),
content: _t.node(_l.CSTML, "Content", [_t.lit("value")], {}, {}),
closeToken: _t.s_i_node(_l.CSTML, "Punctuator", "'")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {});
}
*UnsignedInteger({
value: props,
ctx
}) {
const {
noDoubleZero = false
} = props && ctx.unbox(props) || {};
let [firstDigit] = ctx.allTerminalsFor(yield _t.node(_l.Instruction, "Call", [_t.ref`verb`, _t.ref`arguments`], {
verb: _t.s_node(_l.Instruction, "Identifier", "eat"),
arguments: _t.node(_l.Instruction, "Tuple", [_t.ref`openToken`, _t.ref`values[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Instruction, "Punctuator", "("),
values: [_t.node(_l.Regex, "Pattern", [_t.ref`openToken`, _t.ref`alternatives[]`, _t.ref`closeToken`], {
openToken: _t.s_i_node(_l.Regex, "Punctuator", "/"),
alternatives: [_t.node(_l.Regex, "Alternative", [_t.ref`elements[]`], {
elements: [_t.node(_l.Regex, "DigitCharacterSet", [_t.ref`escapeToken`, _t.ref`value`], {
escapeToken: _t.s_i_node(_l.Regex, "Punctuator", "\\"),
value: _t.s_i_node(_l.Regex, "Keyword", "d")
}, {})]
}, {})],
closeToken: _t.s_i_node(_l.Regex, "Punctuator", "/")
}, {})],
closeToken: _t.s_i_node(_l.Instruction, "Punctuator", ")")
}, {})
}, {}));
if (!noDoubleZero || firstDigit.value !== '0') {
yield s[34];
}
}
*Boolean() {
yield s[35];
}
*Null() {
yield s[36];
}
*Space() {
yield s[37];
}
*Keyword() {}
*Punctuator() {}
*List() {}
*Any() {}
});
[
{
"type": "declaration",
"named": true,
"subtypes": [
{
"type": "abstract_class_declaration",
"named": true
},
{
"type": "ambient_declaration",
"named": true
},
{
"type": "class_declaration",
"named": true
},
{
"type": "enum_declaration",
"named": true
},
{
"type": "function_declaration",
"named": true
},
{
"type": "function_signature",
"named": true
},
{
"type": "generator_function_declaration",
"named": true
},
{
"type": "import_alias",
"named": true
},
{
"type": "interface_declaration",
"named": true
},
{
"type": "internal_module",
"named": true
},
{
"type": "lexical_declaration",
"named": true
},
{
"type": "module",
"named": true
},
{
"type": "type_alias_declaration",
"named": true
},
{
"type": "variable_declaration",
"named": true
}
]
},
{
"type": "expression",
"named": true,
"subtypes": [
{
"type": "as_expression",
"named": true
},
{
"type": "assignment_expression",
"named": true
},
{
"type": "augmented_assignment_expression",
"named": true
},
{
"type": "await_expression",
"named": true
},
{
"type": "binary_expression",
"named": true
},
{
"type": "glimmer_template",
"named": true
},
{
"type": "instantiation_expression",
"named": true
},
{
"type": "internal_module",
"named": true
},
{
"type": "new_expression",
"named": true
},
{
"type": "primary_expression",
"named": true
},
{
"type": "satisfies_expression",
"named": true
},
{
"type": "ternary_expression",
"named": true
},
{
"type": "type_assertion",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "update_expression",
"named": true
},
{
"type": "yield_expression",
"named": true
}
]
},
{
"type": "pattern",
"named": true,
"subtypes": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "object_pattern",
"named": true
},
{
"type": "rest_pattern",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "undefined",
"named": true
}
]
},
{
"type": "primary_expression",
"named": true,
"subtypes": [
{
"type": "array",
"named": true
},
{
"type": "arrow_function",
"named": true
},
{
"type": "call_expression",
"named": true
},
{
"type": "class",
"named": true
},
{
"type": "false",
"named": true
},
{
"type": "function_expression",
"named": true
},
{
"type": "generator_function",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "meta_property",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "null",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "regex",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "super",
"named": true
},
{
"type": "template_string",
"named": true
},
{
"type": "this",
"named": true
},
{
"type": "true",
"named": true
},
{
"type": "undefined",
"named": true
}
]
},
{
"type": "primary_type",
"named": true,
"subtypes": [
{
"type": "array_type",
"named": true
},
{
"type": "conditional_type",
"named": true
},
{
"type": "const",
"named": false
},
{
"type": "existential_type",
"named": true
},
{
"type": "flow_maybe_type",
"named": true
},
{
"type": "generic_type",
"named": true
},
{
"type": "index_type_query",
"named": true
},
{
"type": "intersection_type",
"named": true
},
{
"type": "literal_type",
"named": true
},
{
"type": "lookup_type",
"named": true
},
{
"type": "nested_type_identifier",
"named": true
},
{
"type": "object_type",
"named": true
},
{
"type": "parenthesized_type",
"named": true
},
{
"type": "predefined_type",
"named": true
},
{
"type": "template_literal_type",
"named": true
},
{
"type": "this_type",
"named": true
},
{
"type": "tuple_type",
"named": true
},
{
"type": "type_identifier",
"named": true
},
{
"type": "type_query",
"named": true
},
{
"type": "union_type",
"named": true
}
]
},
{
"type": "statement",
"named": true,
"subtypes": [
{
"type": "break_statement",
"named": true
},
{
"type": "continue_statement",
"named": true
},
{
"type": "debugger_statement",
"named": true
},
{
"type": "declaration",
"named": true
},
{
"type": "do_statement",
"named": true
},
{
"type": "empty_statement",
"named": true
},
{
"type": "export_statement",
"named": true
},
{
"type": "expression_statement",
"named": true
},
{
"type": "for_in_statement",
"named": true
},
{
"type": "for_statement",
"named": true
},
{
"type": "if_statement",
"named": true
},
{
"type": "import_statement",
"named": true
},
{
"type": "labeled_statement",
"named": true
},
{
"type": "return_statement",
"named": true
},
{
"type": "statement_block",
"named": true
},
{
"type": "switch_statement",
"named": true
},
{
"type": "throw_statement",
"named": true
},
{
"type": "try_statement",
"named": true
},
{
"type": "while_statement",
"named": true
},
{
"type": "with_statement",
"named": true
}
]
},
{
"type": "type",
"named": true,
"subtypes": [
{
"type": "call_expression",
"named": true
},
{
"type": "constructor_type",
"named": true
},
{
"type": "function_type",
"named": true
},
{
"type": "infer_type",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "primary_type",
"named": true
},
{
"type": "readonly_type",
"named": true
}
]
},
{
"type": "abstract_class_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_body",
"named": true
}
]
},
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "class_heritage",
"named": true
}
]
}
},
{
"type": "abstract_method_signature",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "accessibility_modifier",
"named": true,
"fields": {}
},
{
"type": "adding_type_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "ambient_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "declaration",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "statement_block",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "spread_element",
"named": true
}
]
}
},
{
"type": "array",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "spread_element",
"named": true
}
]
}
},
{
"type": "array_pattern",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "assignment_pattern",
"named": true
},
{
"type": "pattern",
"named": true
}
]
}
},
{
"type": "array_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "primary_type",
"named": true
}
]
}
},
{
"type": "arrow_function",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "statement_block",
"named": true
}
]
},
"parameter": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "as_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "asserts",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "this",
"named": true
},
{
"type": "type_predicate",
"named": true
}
]
}
},
{
"type": "asserts_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "asserts",
"named": true
}
]
}
},
{
"type": "assignment_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "object_pattern",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "undefined",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "assignment_pattern",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "pattern",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "augmented_assignment_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "%=",
"named": false
},
{
"type": "&&=",
"named": false
},
{
"type": "&=",
"named": false
},
{
"type": "**=",
"named": false
},
{
"type": "*=",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "/=",
"named": false
},
{
"type": "<<=",
"named": false
},
{
"type": ">>=",
"named": false
},
{
"type": ">>>=",
"named": false
},
{
"type": "??=",
"named": false
},
{
"type": "^=",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||=",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "await_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "binary_expression",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "private_property_identifier",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!=",
"named": false
},
{
"type": "!==",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "**",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "===",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": ">>>",
"named": false
},
{
"type": "??",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "instanceof",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "||",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "break_statement",
"named": true,
"fields": {
"label": {
"multiple": false,
"required": false,
"types": [
{
"type": "statement_identifier",
"named": true
}
]
}
}
},
{
"type": "call_expression",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "arguments",
"named": true
},
{
"type": "template_string",
"named": true
}
]
},
"function": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "import",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "call_signature",
"named": true,
"fields": {
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "catch_clause",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"parameter": {
"multiple": false,
"required": false,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "object_pattern",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
}
}
},
{
"type": "class",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_body",
"named": true
}
]
},
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "class_heritage",
"named": true
}
]
}
},
{
"type": "class_body",
"named": true,
"fields": {
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "abstract_method_signature",
"named": true
},
{
"type": "class_static_block",
"named": true
},
{
"type": "index_signature",
"named": true
},
{
"type": "method_definition",
"named": true
},
{
"type": "method_signature",
"named": true
},
{
"type": "public_field_definition",
"named": true
}
]
}
},
{
"type": "class_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "class_body",
"named": true
}
]
},
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "class_heritage",
"named": true
}
]
}
},
{
"type": "class_heritage",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "extends_clause",
"named": true
},
{
"type": "implements_clause",
"named": true
}
]
}
},
{
"type": "class_static_block",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
}
}
},
{
"type": "computed_property_name",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "conditional_type",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "constraint",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "construct_signature",
"named": true,
"fields": {
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "constructor_type",
"named": true,
"fields": {
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "continue_statement",
"named": true,
"fields": {
"label": {
"multiple": false,
"required": false,
"types": [
{
"type": "statement_identifier",
"named": true
}
]
}
}
},
{
"type": "debugger_statement",
"named": true,
"fields": {}
},
{
"type": "decorator",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
}
]
}
},
{
"type": "default_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "do_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "parenthesized_expression",
"named": true
}
]
}
}
},
{
"type": "else_clause",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "empty_statement",
"named": true,
"fields": {}
},
{
"type": "enum_assignment",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "enum_body",
"named": true,
"fields": {
"name": {
"multiple": true,
"required": false,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "enum_assignment",
"named": true
}
]
}
},
{
"type": "enum_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "enum_body",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
}
},
{
"type": "existential_type",
"named": true,
"fields": {}
},
{
"type": "export_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "export_specifier",
"named": true
}
]
}
},
{
"type": "export_specifier",
"named": true,
"fields": {
"alias": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
}
},
{
"type": "export_statement",
"named": true,
"fields": {
"declaration": {
"multiple": false,
"required": false,
"types": [
{
"type": "declaration",
"named": true
}
]
},
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"source": {
"multiple": false,
"required": false,
"types": [
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "export_clause",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "namespace_export",
"named": true
}
]
}
},
{
"type": "expression_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
},
{
"type": "extends_clause",
"named": true,
"fields": {
"type_arguments": {
"multiple": true,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
},
"value": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "extends_type_clause",
"named": true,
"fields": {
"type": {
"multiple": true,
"required": true,
"types": [
{
"type": "generic_type",
"named": true
},
{
"type": "nested_type_identifier",
"named": true
},
{
"type": "type_identifier",
"named": true
}
]
}
}
},
{
"type": "finally_clause",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
}
}
},
{
"type": "flow_maybe_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "primary_type",
"named": true
}
]
}
},
{
"type": "for_in_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"kind": {
"multiple": false,
"required": false,
"types": [
{
"type": "const",
"named": false
},
{
"type": "let",
"named": false
},
{
"type": "var",
"named": false
}
]
},
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "object_pattern",
"named": true
},
{
"type": "parenthesized_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "undefined",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "in",
"named": false
},
{
"type": "of",
"named": false
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "for_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "empty_statement",
"named": true
},
{
"type": "expression_statement",
"named": true
}
]
},
"increment": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
},
"initializer": {
"multiple": false,
"required": true,
"types": [
{
"type": "empty_statement",
"named": true
},
{
"type": "expression_statement",
"named": true
},
{
"type": "lexical_declaration",
"named": true
},
{
"type": "variable_declaration",
"named": true
}
]
}
}
},
{
"type": "formal_parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "optional_parameter",
"named": true
},
{
"type": "required_parameter",
"named": true
}
]
}
},
{
"type": "function_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "function_expression",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "function_signature",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "function_type",
"named": true,
"fields": {
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": true,
"types": [
{
"type": "asserts",
"named": true
},
{
"type": "type",
"named": true
},
{
"type": "type_predicate",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "generator_function",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "generator_function_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
}
},
{
"type": "generic_type",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "nested_type_identifier",
"named": true
},
{
"type": "type_identifier",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "glimmer_template",
"named": true,
"fields": {
"close_tag": {
"multiple": false,
"required": true,
"types": [
{
"type": "glimmer_closing_tag",
"named": true
}
]
},
"open_tag": {
"multiple": false,
"required": true,
"types": [
{
"type": "glimmer_opening_tag",
"named": true
}
]
}
}
},
{
"type": "identifier",
"named": true,
"fields": {}
},
{
"type": "if_statement",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": false,
"types": [
{
"type": "else_clause",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "parenthesized_expression",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
}
}
},
{
"type": "implements_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "import",
"named": true,
"fields": {}
},
{
"type": "import_alias",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "nested_identifier",
"named": true
}
]
}
},
{
"type": "import_attribute",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "object",
"named": true
}
]
}
},
{
"type": "import_clause",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "named_imports",
"named": true
},
{
"type": "namespace_import",
"named": true
}
]
}
},
{
"type": "import_require_clause",
"named": true,
"fields": {
"source": {
"multiple": false,
"required": true,
"types": [
{
"type": "string",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "import_specifier",
"named": true,
"fields": {
"alias": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
}
},
{
"type": "import_statement",
"named": true,
"fields": {
"source": {
"multiple": false,
"required": false,
"types": [
{
"type": "string",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "import_attribute",
"named": true
},
{
"type": "import_clause",
"named": true
},
{
"type": "import_require_clause",
"named": true
}
]
}
},
{
"type": "index_signature",
"named": true,
"fields": {
"index_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"sign": {
"multiple": false,
"required": false,
"types": [
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "adding_type_annotation",
"named": true
},
{
"type": "omitting_type_annotation",
"named": true
},
{
"type": "opting_type_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "mapped_type_clause",
"named": true
}
]
}
},
{
"type": "index_type_query",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "primary_type",
"named": true
}
]
}
},
{
"type": "infer_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
},
{
"type": "type_identifier",
"named": true
}
]
}
},
{
"type": "instantiation_expression",
"named": true,
"fields": {
"function": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "import",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "interface_body",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "call_signature",
"named": true
},
{
"type": "construct_signature",
"named": true
},
{
"type": "export_statement",
"named": true
},
{
"type": "index_signature",
"named": true
},
{
"type": "method_signature",
"named": true
},
{
"type": "property_signature",
"named": true
}
]
}
},
{
"type": "interface_declaration",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "interface_body",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "extends_type_clause",
"named": true
}
]
}
},
{
"type": "internal_module",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "nested_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
}
},
{
"type": "intersection_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "jsx_attribute",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "jsx_element",
"named": true
},
{
"type": "jsx_expression",
"named": true
},
{
"type": "jsx_namespace_name",
"named": true
},
{
"type": "jsx_self_closing_element",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "jsx_closing_element",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "jsx_namespace_name",
"named": true
},
{
"type": "member_expression",
"named": true
}
]
}
}
},
{
"type": "jsx_element",
"named": true,
"fields": {
"close_tag": {
"multiple": false,
"required": true,
"types": [
{
"type": "jsx_closing_element",
"named": true
}
]
},
"open_tag": {
"multiple": false,
"required": true,
"types": [
{
"type": "jsx_opening_element",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "html_character_reference",
"named": true
},
{
"type": "jsx_element",
"named": true
},
{
"type": "jsx_expression",
"named": true
},
{
"type": "jsx_self_closing_element",
"named": true
},
{
"type": "jsx_text",
"named": true
}
]
}
},
{
"type": "jsx_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
},
{
"type": "spread_element",
"named": true
}
]
}
},
{
"type": "jsx_namespace_name",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "jsx_opening_element",
"named": true,
"fields": {
"attribute": {
"multiple": true,
"required": false,
"types": [
{
"type": "jsx_attribute",
"named": true
},
{
"type": "jsx_expression",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "jsx_namespace_name",
"named": true
},
{
"type": "member_expression",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "jsx_self_closing_element",
"named": true,
"fields": {
"attribute": {
"multiple": true,
"required": false,
"types": [
{
"type": "jsx_attribute",
"named": true
},
{
"type": "jsx_expression",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "jsx_namespace_name",
"named": true
},
{
"type": "member_expression",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "jsx_text",
"named": true,
"fields": {}
},
{
"type": "labeled_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"label": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_identifier",
"named": true
}
]
}
}
},
{
"type": "lexical_declaration",
"named": true,
"fields": {
"kind": {
"multiple": false,
"required": true,
"types": [
{
"type": "const",
"named": false
},
{
"type": "let",
"named": false
}
]
}
},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "variable_declarator",
"named": true
}
]
}
},
{
"type": "literal_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "false",
"named": true
},
{
"type": "null",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "true",
"named": true
},
{
"type": "unary_expression",
"named": true
},
{
"type": "undefined",
"named": true
}
]
}
},
{
"type": "lookup_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "mapped_type_clause",
"named": true,
"fields": {
"alias": {
"multiple": false,
"required": false,
"types": [
{
"type": "type",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "member_expression",
"named": true,
"fields": {
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "import",
"named": true
}
]
},
"optional_chain": {
"multiple": false,
"required": false,
"types": [
{
"type": "optional_chain",
"named": true
}
]
},
"property": {
"multiple": false,
"required": true,
"types": [
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
}
]
}
}
},
{
"type": "meta_property",
"named": true,
"fields": {}
},
{
"type": "method_definition",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "method_signature",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"parameters": {
"multiple": false,
"required": true,
"types": [
{
"type": "formal_parameters",
"named": true
}
]
},
"return_type": {
"multiple": false,
"required": false,
"types": [
{
"type": "asserts_annotation",
"named": true
},
{
"type": "type_annotation",
"named": true
},
{
"type": "type_predicate_annotation",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "module",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": false,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "nested_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
}
},
{
"type": "named_imports",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "import_specifier",
"named": true
}
]
}
},
{
"type": "namespace_export",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
}
},
{
"type": "namespace_import",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "nested_identifier",
"named": true,
"fields": {
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
}
]
},
"property": {
"multiple": false,
"required": true,
"types": [
{
"type": "property_identifier",
"named": true
}
]
}
}
},
{
"type": "nested_type_identifier",
"named": true,
"fields": {
"module": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "nested_identifier",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
}
}
},
{
"type": "new_expression",
"named": true,
"fields": {
"arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "arguments",
"named": true
}
]
},
"constructor": {
"multiple": false,
"required": true,
"types": [
{
"type": "primary_expression",
"named": true
}
]
},
"type_arguments": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_arguments",
"named": true
}
]
}
}
},
{
"type": "non_null_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "object",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "method_definition",
"named": true
},
{
"type": "pair",
"named": true
},
{
"type": "shorthand_property_identifier",
"named": true
},
{
"type": "spread_element",
"named": true
}
]
}
},
{
"type": "object_assignment_pattern",
"named": true,
"fields": {
"left": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "object_pattern",
"named": true
},
{
"type": "shorthand_property_identifier_pattern",
"named": true
}
]
},
"right": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "object_pattern",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "object_assignment_pattern",
"named": true
},
{
"type": "pair_pattern",
"named": true
},
{
"type": "rest_pattern",
"named": true
},
{
"type": "shorthand_property_identifier_pattern",
"named": true
}
]
}
},
{
"type": "object_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "call_signature",
"named": true
},
{
"type": "construct_signature",
"named": true
},
{
"type": "export_statement",
"named": true
},
{
"type": "index_signature",
"named": true
},
{
"type": "method_signature",
"named": true
},
{
"type": "property_signature",
"named": true
}
]
}
},
{
"type": "omitting_type_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "opting_type_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "optional_chain",
"named": true,
"fields": {}
},
{
"type": "optional_parameter",
"named": true,
"fields": {
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": false,
"types": [
{
"type": "pattern",
"named": true
},
{
"type": "this",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "optional_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "override_modifier",
"named": true,
"fields": {}
},
{
"type": "pair",
"named": true,
"fields": {
"key": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "pair_pattern",
"named": true,
"fields": {
"key": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "assignment_pattern",
"named": true
},
{
"type": "pattern",
"named": true
}
]
}
}
},
{
"type": "parenthesized_expression",
"named": true,
"fields": {
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
}
},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "call_expression",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
},
{
"type": "parenthesized_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "predefined_type",
"named": true,
"fields": {}
},
{
"type": "program",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "hash_bang_line",
"named": true
},
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "property_signature",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "public_field_definition",
"named": true,
"fields": {
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "computed_property_name",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "readonly_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "regex",
"named": true,
"fields": {
"flags": {
"multiple": false,
"required": false,
"types": [
{
"type": "regex_flags",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": true,
"types": [
{
"type": "regex_pattern",
"named": true
}
]
}
}
},
{
"type": "required_parameter",
"named": true,
"fields": {
"decorator": {
"multiple": true,
"required": false,
"types": [
{
"type": "decorator",
"named": true
}
]
},
"name": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "rest_pattern",
"named": true
}
]
},
"pattern": {
"multiple": false,
"required": false,
"types": [
{
"type": "pattern",
"named": true
},
{
"type": "this",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "accessibility_modifier",
"named": true
},
{
"type": "override_modifier",
"named": true
}
]
}
},
{
"type": "rest_pattern",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "non_null_expression",
"named": true
},
{
"type": "object_pattern",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "undefined",
"named": true
}
]
}
},
{
"type": "rest_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "return_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
},
{
"type": "satisfies_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "sequence_expression",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "spread_element",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "statement_block",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
}
},
{
"type": "string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "html_character_reference",
"named": true
},
{
"type": "string_fragment",
"named": true
}
]
}
},
{
"type": "subscript_expression",
"named": true,
"fields": {
"index": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "number",
"named": true
},
{
"type": "predefined_type",
"named": true
},
{
"type": "sequence_expression",
"named": true
},
{
"type": "string",
"named": true
}
]
},
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"optional_chain": {
"multiple": false,
"required": false,
"types": [
{
"type": "optional_chain",
"named": true
}
]
}
}
},
{
"type": "switch_body",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "switch_case",
"named": true
},
{
"type": "switch_default",
"named": true
}
]
}
},
{
"type": "switch_case",
"named": true,
"fields": {
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
}
},
{
"type": "switch_default",
"named": true,
"fields": {
"body": {
"multiple": true,
"required": false,
"types": [
{
"type": "statement",
"named": true
}
]
}
}
},
{
"type": "switch_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "switch_body",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "parenthesized_expression",
"named": true
}
]
}
}
},
{
"type": "template_literal_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "string_fragment",
"named": true
},
{
"type": "template_type",
"named": true
}
]
}
},
{
"type": "template_string",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "escape_sequence",
"named": true
},
{
"type": "string_fragment",
"named": true
},
{
"type": "template_substitution",
"named": true
}
]
}
},
{
"type": "template_substitution",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
},
{
"type": "template_type",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "infer_type",
"named": true
},
{
"type": "primary_type",
"named": true
}
]
}
},
{
"type": "ternary_expression",
"named": true,
"fields": {
"alternative": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"consequence": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "throw_statement",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "sequence_expression",
"named": true
}
]
}
},
{
"type": "try_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement_block",
"named": true
}
]
},
"finalizer": {
"multiple": false,
"required": false,
"types": [
{
"type": "finally_clause",
"named": true
}
]
},
"handler": {
"multiple": false,
"required": false,
"types": [
{
"type": "catch_clause",
"named": true
}
]
}
}
},
{
"type": "tuple_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "optional_parameter",
"named": true
},
{
"type": "optional_type",
"named": true
},
{
"type": "required_parameter",
"named": true
},
{
"type": "rest_type",
"named": true
},
{
"type": "type",
"named": true
}
]
}
},
{
"type": "type_alias_declaration",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"type_parameters": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_parameters",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "type_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "type_arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "type_assertion",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "type_arguments",
"named": true
}
]
}
},
{
"type": "type_parameter",
"named": true,
"fields": {
"constraint": {
"multiple": false,
"required": false,
"types": [
{
"type": "constraint",
"named": true
}
]
},
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_identifier",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "default_type",
"named": true
}
]
}
}
},
{
"type": "type_parameters",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type_parameter",
"named": true
}
]
}
},
{
"type": "type_predicate",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "this",
"named": true
}
]
},
"type": {
"multiple": false,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
}
},
{
"type": "type_predicate_annotation",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "type_predicate",
"named": true
}
]
}
},
{
"type": "type_query",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "call_expression",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "instantiation_expression",
"named": true
},
{
"type": "member_expression",
"named": true
},
{
"type": "subscript_expression",
"named": true
},
{
"type": "this",
"named": true
}
]
}
},
{
"type": "unary_expression",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "number",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "!",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "delete",
"named": false
},
{
"type": "typeof",
"named": false
},
{
"type": "void",
"named": false
},
{
"type": "~",
"named": false
}
]
}
}
},
{
"type": "union_type",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "type",
"named": true
}
]
}
},
{
"type": "update_expression",
"named": true,
"fields": {
"argument": {
"multiple": false,
"required": true,
"types": [
{
"type": "expression",
"named": true
}
]
},
"operator": {
"multiple": false,
"required": true,
"types": [
{
"type": "++",
"named": false
},
{
"type": "--",
"named": false
}
]
}
}
},
{
"type": "variable_declaration",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "variable_declarator",
"named": true
}
]
}
},
{
"type": "variable_declarator",
"named": true,
"fields": {
"name": {
"multiple": false,
"required": true,
"types": [
{
"type": "array_pattern",
"named": true
},
{
"type": "identifier",
"named": true
},
{
"type": "object_pattern",
"named": true
}
]
},
"type": {
"multiple": false,
"required": false,
"types": [
{
"type": "type_annotation",
"named": true
}
]
},
"value": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
}
},
{
"type": "while_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"condition": {
"multiple": false,
"required": true,
"types": [
{
"type": "parenthesized_expression",
"named": true
}
]
}
}
},
{
"type": "with_statement",
"named": true,
"fields": {
"body": {
"multiple": false,
"required": true,
"types": [
{
"type": "statement",
"named": true
}
]
},
"object": {
"multiple": false,
"required": true,
"types": [
{
"type": "parenthesized_expression",
"named": true
}
]
}
}
},
{
"type": "yield_expression",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "expression",
"named": true
}
]
}
},
{
"type": "!",
"named": false
},
{
"type": "!=",
"named": false
},
{
"type": "!==",
"named": false
},
{
"type": "\"",
"named": false
},
{
"type": "${",
"named": false
},
{
"type": "%",
"named": false
},
{
"type": "%=",
"named": false
},
{
"type": "&",
"named": false
},
{
"type": "&&",
"named": false
},
{
"type": "&&=",
"named": false
},
{
"type": "&=",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "(",
"named": false
},
{
"type": ")",
"named": false
},
{
"type": "*",
"named": false
},
{
"type": "**",
"named": false
},
{
"type": "**=",
"named": false
},
{
"type": "*=",
"named": false
},
{
"type": "+",
"named": false
},
{
"type": "++",
"named": false
},
{
"type": "+=",
"named": false
},
{
"type": "+?:",
"named": false
},
{
"type": ",",
"named": false
},
{
"type": "-",
"named": false
},
{
"type": "--",
"named": false
},
{
"type": "-=",
"named": false
},
{
"type": "-?:",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "...",
"named": false
},
{
"type": "/",
"named": false
},
{
"type": "/=",
"named": false
},
{
"type": "/>",
"named": false
},
{
"type": ":",
"named": false
},
{
"type": ";",
"named": false
},
{
"type": "<",
"named": false
},
{
"type": "</",
"named": false
},
{
"type": "<<",
"named": false
},
{
"type": "<<=",
"named": false
},
{
"type": "<=",
"named": false
},
{
"type": "=",
"named": false
},
{
"type": "==",
"named": false
},
{
"type": "===",
"named": false
},
{
"type": "=>",
"named": false
},
{
"type": ">",
"named": false
},
{
"type": ">=",
"named": false
},
{
"type": ">>",
"named": false
},
{
"type": ">>=",
"named": false
},
{
"type": ">>>",
"named": false
},
{
"type": ">>>=",
"named": false
},
{
"type": "?",
"named": false
},
{
"type": "?.",
"named": false
},
{
"type": "?:",
"named": false
},
{
"type": "??",
"named": false
},
{
"type": "??=",
"named": false
},
{
"type": "@",
"named": false
},
{
"type": "[",
"named": false
},
{
"type": "]",
"named": false
},
{
"type": "^",
"named": false
},
{
"type": "^=",
"named": false
},
{
"type": "`",
"named": false
},
{
"type": "abstract",
"named": false
},
{
"type": "accessor",
"named": false
},
{
"type": "any",
"named": false
},
{
"type": "as",
"named": false
},
{
"type": "assert",
"named": false
},
{
"type": "asserts",
"named": false
},
{
"type": "async",
"named": false
},
{
"type": "await",
"named": false
},
{
"type": "boolean",
"named": false
},
{
"type": "break",
"named": false
},
{
"type": "case",
"named": false
},
{
"type": "catch",
"named": false
},
{
"type": "class",
"named": false
},
{
"type": "comment",
"named": true
},
{
"type": "const",
"named": false
},
{
"type": "continue",
"named": false
},
{
"type": "debugger",
"named": false
},
{
"type": "declare",
"named": false
},
{
"type": "default",
"named": false
},
{
"type": "delete",
"named": false
},
{
"type": "do",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "enum",
"named": false
},
{
"type": "escape_sequence",
"named": true
},
{
"type": "export",
"named": false
},
{
"type": "extends",
"named": false
},
{
"type": "false",
"named": true
},
{
"type": "finally",
"named": false
},
{
"type": "for",
"named": false
},
{
"type": "from",
"named": false
},
{
"type": "function",
"named": false
},
{
"type": "get",
"named": false
},
{
"type": "glimmer_closing_tag",
"named": true
},
{
"type": "glimmer_opening_tag",
"named": true
},
{
"type": "global",
"named": false
},
{
"type": "hash_bang_line",
"named": true
},
{
"type": "html_character_reference",
"named": true
},
{
"type": "html_comment",
"named": true
},
{
"type": "if",
"named": false
},
{
"type": "implements",
"named": false
},
{
"type": "import",
"named": false
},
{
"type": "in",
"named": false
},
{
"type": "infer",
"named": false
},
{
"type": "instanceof",
"named": false
},
{
"type": "interface",
"named": false
},
{
"type": "is",
"named": false
},
{
"type": "keyof",
"named": false
},
{
"type": "let",
"named": false
},
{
"type": "module",
"named": false
},
{
"type": "namespace",
"named": false
},
{
"type": "never",
"named": false
},
{
"type": "new",
"named": false
},
{
"type": "null",
"named": true
},
{
"type": "number",
"named": false
},
{
"type": "number",
"named": true
},
{
"type": "object",
"named": false
},
{
"type": "of",
"named": false
},
{
"type": "override",
"named": false
},
{
"type": "private",
"named": false
},
{
"type": "private_property_identifier",
"named": true
},
{
"type": "property_identifier",
"named": true
},
{
"type": "protected",
"named": false
},
{
"type": "public",
"named": false
},
{
"type": "readonly",
"named": false
},
{
"type": "regex_flags",
"named": true
},
{
"type": "regex_pattern",
"named": true
},
{
"type": "require",
"named": false
},
{
"type": "return",
"named": false
},
{
"type": "satisfies",
"named": false
},
{
"type": "set",
"named": false
},
{
"type": "shorthand_property_identifier",
"named": true
},
{
"type": "shorthand_property_identifier_pattern",
"named": true
},
{
"type": "statement_identifier",
"named": true
},
{
"type": "static",
"named": false
},
{
"type": "string",
"named": false
},
{
"type": "string_fragment",
"named": true
},
{
"type": "super",
"named": true
},
{
"type": "switch",
"named": false
},
{
"type": "symbol",
"named": false
},
{
"type": "target",
"named": false
},
{
"type": "this",
"named": true
},
{
"type": "this_type",
"named": true
},
{
"type": "throw",
"named": false
},
{
"type": "true",
"named": true
},
{
"type": "try",
"named": false
},
{
"type": "type",
"named": false
},
{
"type": "type_identifier",
"named": true
},
{
"type": "typeof",
"named": false
},
{
"type": "undefined",
"named": true
},
{
"type": "unique symbol",
"named": false
},
{
"type": "unknown",
"named": false
},
{
"type": "using",
"named": false
},
{
"type": "var",
"named": false
},
{
"type": "void",
"named": false
},
{
"type": "while",
"named": false
},
{
"type": "with",
"named": false
},
{
"type": "yield",
"named": false
},
{
"type": "{",
"named": false
},
{
"type": "{|",
"named": false
},
{
"type": "|",
"named": false
},
{
"type": "|=",
"named": false
},
{
"type": "||",
"named": false
},
{
"type": "||=",
"named": false
},
{
"type": "|}",
"named": false
},
{
"type": "}",
"named": false
},
{
"type": "~",
"named": false
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment