JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsIdentifierAssignment {
name_token: IDENT@0..4 "foo" [] [Whitespace(" ")],
},
operator_token: PLUSEQ@4..7 "+=" [] [Whitespace(" ")],
right: JsAssignmentExpression {
left: JsIdentifierAssignment {
name_token: IDENT@7..11 "bar" [] [Whitespace(" ")],
},
operator_token: EQ@11..13 "=" [] [Whitespace(" ")],
right: JsAssignmentExpression {
left: JsIdentifierAssignment {
name_token: IDENT@13..15 "b" [] [Whitespace(" ")],
},
operator_token: QUESTION2EQ@15..19 "??=" [] [Whitespace(" ")],
right: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@19..20 "3" [] [],
},
},
},
},
semicolon_token: SEMICOLON@20..21 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsStaticMemberAssignment {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@21..23 "a" [Newline("\n")] [],
},
},
dot_token: DOT@23..24 "." [] [],
member: JsName {
value_token: IDENT@24..28 "foo" [] [Whitespace(" ")],
},
},
operator_token: MINUSEQ@28..31 "-=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@31..34 "bar" [] [],
},
},
},
semicolon_token: SEMICOLON@34..35 ";" [] [],
},
JsExpressionStatement {
expression: JsParenthesizedExpression {
l_paren_token: L_PAREN@35..37 "(" [Newline("\n")] [],
expression: JsAssignmentExpression {
left: JsIdentifierAssignment {
name_token: IDENT@37..41 "foo" [] [Whitespace(" ")],
},
operator_token: EQ@41..43 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@43..46 "bar" [] [],
},
},
},
r_paren_token: R_PAREN@46..47 ")" [] [],
},
semicolon_token: SEMICOLON@47..48 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsParenthesizedAssignment {
l_paren_token: L_PAREN@48..50 "(" [Newline("\n")] [],
assignment: JsParenthesizedAssignment {
l_paren_token: L_PAREN@50..51 "(" [] [],
assignment: JsParenthesizedAssignment {
l_paren_token: L_PAREN@51..52 "(" [] [],
assignment: JsIdentifierAssignment {
name_token: IDENT@52..55 "foo" [] [],
},
r_paren_token: R_PAREN@55..56 ")" [] [],
},
r_paren_token: R_PAREN@56..57 ")" [] [],
},
r_paren_token: R_PAREN@57..59 ")" [] [Whitespace(" ")],
},
operator_token: EQ@59..61 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@61..64 "bar" [] [],
},
},
},
semicolon_token: SEMICOLON@64..65 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsComputedMemberAssignment {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@65..67 "a" [Newline("\n")] [],
},
},
l_brack_token: L_BRACK@67..68 "[" [] [],
member: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@68..74 "\"test\"" [] [],
},
r_brack_token: R_BRACK@74..76 "]" [] [Whitespace(" ")],
},
operator_token: EQ@76..78 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@78..81 "bar" [] [],
},
},
},
semicolon_token: SEMICOLON@81..82 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsStaticMemberAssignment {
object: JsCallExpression {
callee: JsStaticMemberExpression {
object: JsCallExpression {
callee: JsStaticMemberExpression {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@82..84 "a" [Newline("\n")] [],
},
},
operator_token: DOT@84..85 "." [] [],
member: JsName {
value_token: IDENT@85..89 "call" [] [],
},
},
optional_chain_token: missing (optional),
type_arguments: missing (optional),
arguments: JsCallArguments {
l_paren_token: L_PAREN@89..90 "(" [] [],
args: JsCallArgumentList [],
r_paren_token: R_PAREN@90..91 ")" [] [],
},
},
operator_token: DOT@91..92 "." [] [],
member: JsName {
value_token: IDENT@92..97 "chain" [] [],
},
},
optional_chain_token: missing (optional),
type_arguments: missing (optional),
arguments: JsCallArguments {
l_paren_token: L_PAREN@97..98 "(" [] [],
args: JsCallArgumentList [],
r_paren_token: R_PAREN@98..99 ")" [] [],
},
},
dot_token: DOT@99..100 "." [] [],
member: JsName {
value_token: IDENT@100..107 "member" [] [Whitespace(" ")],
},
},
operator_token: EQ@107..109 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@109..110 "x" [] [],
},
},
},
semicolon_token: SEMICOLON@110..111 ";" [] [],
},
JsExpressionStatement {
expression: JsBinaryExpression {
left: JsPreUpdateExpression {
operator_token: PLUS2@111..114 "++" [Newline("\n")] [],
operand: JsIdentifierAssignment {
name_token: IDENT@114..120 "count" [] [Whitespace(" ")],
},
},
operator_token: EQ3@120..124 "===" [] [Whitespace(" ")],
right: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@124..125 "3" [] [],
},
},
semicolon_token: missing (optional),
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsComputedMemberAssignment {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@125..127 "a" [Newline("\n")] [],
},
},
l_brack_token: L_BRACK@127..128 "[" [] [],
member: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@128..131 "'b'" [] [],
},
r_brack_token: R_BRACK@131..133 "]" [] [Whitespace(" ")],
},
operator_token: EQ@133..135 "=" [] [Whitespace(" ")],
right: JsAssignmentExpression {
left: JsComputedMemberAssignment {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@135..136 "c" [] [],
},
},
l_brack_token: L_BRACK@136..137 "[" [] [],
member: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@137..138 "d" [] [],
},
},
r_brack_token: R_BRACK@138..140 "]" [] [Whitespace(" ")],
},
operator_token: EQ@140..142 "=" [] [Whitespace(" ")],
right: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@142..148 "\"test\"" [] [],
},
},
},
semicolon_token: missing (optional),
},
],
eof_token: EOF@148..149 "" [Newline("\n")] [],
}
0: JS_MODULE@0..149
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..148
0: JS_EXPRESSION_STATEMENT@0..21
0: JS_ASSIGNMENT_EXPRESSION@0..20
0: JS_IDENTIFIER_ASSIGNMENT@0..4
0: IDENT@0..4 "foo" [] [Whitespace(" ")]
1: PLUSEQ@4..7 "+=" [] [Whitespace(" ")]
2: JS_ASSIGNMENT_EXPRESSION@7..20
0: JS_IDENTIFIER_ASSIGNMENT@7..11
0: IDENT@7..11 "bar" [] [Whitespace(" ")]
1: EQ@11..13 "=" [] [Whitespace(" ")]
2: JS_ASSIGNMENT_EXPRESSION@13..20
0: JS_IDENTIFIER_ASSIGNMENT@13..15
0: IDENT@13..15 "b" [] [Whitespace(" ")]
1: QUESTION2EQ@15..19 "??=" [] [Whitespace(" ")]
2: JS_NUMBER_LITERAL_EXPRESSION@19..20
0: JS_NUMBER_LITERAL@19..20 "3" [] []
1: SEMICOLON@20..21 ";" [] []
1: JS_EXPRESSION_STATEMENT@21..35
0: JS_ASSIGNMENT_EXPRESSION@21..34
0: JS_STATIC_MEMBER_ASSIGNMENT@21..28
0: JS_IDENTIFIER_EXPRESSION@21..23
0: JS_REFERENCE_IDENTIFIER@21..23
0: IDENT@21..23 "a" [Newline("\n")] []
1: DOT@23..24 "." [] []
2: JS_NAME@24..28
0: IDENT@24..28 "foo" [] [Whitespace(" ")]
1: MINUSEQ@28..31 "-=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@31..34
0: JS_REFERENCE_IDENTIFIER@31..34
0: IDENT@31..34 "bar" [] []
1: SEMICOLON@34..35 ";" [] []
2: JS_EXPRESSION_STATEMENT@35..48
0: JS_PARENTHESIZED_EXPRESSION@35..47
0: L_PAREN@35..37 "(" [Newline("\n")] []
1: JS_ASSIGNMENT_EXPRESSION@37..46
0: JS_IDENTIFIER_ASSIGNMENT@37..41
0: IDENT@37..41 "foo" [] [Whitespace(" ")]
1: EQ@41..43 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@43..46
0: JS_REFERENCE_IDENTIFIER@43..46
0: IDENT@43..46 "bar" [] []
2: R_PAREN@46..47 ")" [] []
1: SEMICOLON@47..48 ";" [] []
3: JS_EXPRESSION_STATEMENT@48..65
0: JS_ASSIGNMENT_EXPRESSION@48..64
0: JS_PARENTHESIZED_ASSIGNMENT@48..59
0: L_PAREN@48..50 "(" [Newline("\n")] []
1: JS_PARENTHESIZED_ASSIGNMENT@50..57
0: L_PAREN@50..51 "(" [] []
1: JS_PARENTHESIZED_ASSIGNMENT@51..56
0: L_PAREN@51..52 "(" [] []
1: JS_IDENTIFIER_ASSIGNMENT@52..55
0: IDENT@52..55 "foo" [] []
2: R_PAREN@55..56 ")" [] []
2: R_PAREN@56..57 ")" [] []
2: R_PAREN@57..59 ")" [] [Whitespace(" ")]
1: EQ@59..61 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@61..64
0: JS_REFERENCE_IDENTIFIER@61..64
0: IDENT@61..64 "bar" [] []
1: SEMICOLON@64..65 ";" [] []
4: JS_EXPRESSION_STATEMENT@65..82
0: JS_ASSIGNMENT_EXPRESSION@65..81
0: JS_COMPUTED_MEMBER_ASSIGNMENT@65..76
0: JS_IDENTIFIER_EXPRESSION@65..67
0: JS_REFERENCE_IDENTIFIER@65..67
0: IDENT@65..67 "a" [Newline("\n")] []
1: L_BRACK@67..68 "[" [] []
2: JS_STRING_LITERAL_EXPRESSION@68..74
0: JS_STRING_LITERAL@68..74 "\"test\"" [] []
3: R_BRACK@74..76 "]" [] [Whitespace(" ")]
1: EQ@76..78 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@78..81
0: JS_REFERENCE_IDENTIFIER@78..81
0: IDENT@78..81 "bar" [] []
1: SEMICOLON@81..82 ";" [] []
5: JS_EXPRESSION_STATEMENT@82..111
0: JS_ASSIGNMENT_EXPRESSION@82..110
0: JS_STATIC_MEMBER_ASSIGNMENT@82..107
0: JS_CALL_EXPRESSION@82..99
0: JS_STATIC_MEMBER_EXPRESSION@82..97
0: JS_CALL_EXPRESSION@82..91
0: JS_STATIC_MEMBER_EXPRESSION@82..89
0: JS_IDENTIFIER_EXPRESSION@82..84
0: JS_REFERENCE_IDENTIFIER@82..84
0: IDENT@82..84 "a" [Newline("\n")] []
1: DOT@84..85 "." [] []
2: JS_NAME@85..89
0: IDENT@85..89 "call" [] []
1: (empty)
2: (empty)
3: JS_CALL_ARGUMENTS@89..91
0: L_PAREN@89..90 "(" [] []
1: JS_CALL_ARGUMENT_LIST@90..90
2: R_PAREN@90..91 ")" [] []
1: DOT@91..92 "." [] []
2: JS_NAME@92..97
0: IDENT@92..97 "chain" [] []
1: (empty)
2: (empty)
3: JS_CALL_ARGUMENTS@97..99
0: L_PAREN@97..98 "(" [] []
1: JS_CALL_ARGUMENT_LIST@98..98
2: R_PAREN@98..99 ")" [] []
1: DOT@99..100 "." [] []
2: JS_NAME@100..107
0: IDENT@100..107 "member" [] [Whitespace(" ")]
1: EQ@107..109 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@109..110
0: JS_REFERENCE_IDENTIFIER@109..110
0: IDENT@109..110 "x" [] []
1: SEMICOLON@110..111 ";" [] []
6: JS_EXPRESSION_STATEMENT@111..125
0: JS_BINARY_EXPRESSION@111..125
0: JS_PRE_UPDATE_EXPRESSION@111..120
0: PLUS2@111..114 "++" [Newline("\n")] []
1: JS_IDENTIFIER_ASSIGNMENT@114..120
0: IDENT@114..120 "count" [] [Whitespace(" ")]
1: EQ3@120..124 "===" [] [Whitespace(" ")]
2: JS_NUMBER_LITERAL_EXPRESSION@124..125
0: JS_NUMBER_LITERAL@124..125 "3" [] []
1: (empty)
7: JS_EXPRESSION_STATEMENT@125..148
0: JS_ASSIGNMENT_EXPRESSION@125..148
0: JS_COMPUTED_MEMBER_ASSIGNMENT@125..133
0: JS_IDENTIFIER_EXPRESSION@125..127
0: JS_REFERENCE_IDENTIFIER@125..127
0: IDENT@125..127 "a" [Newline("\n")] []
1: L_BRACK@127..128 "[" [] []
2: JS_STRING_LITERAL_EXPRESSION@128..131
0: JS_STRING_LITERAL@128..131 "'b'" [] []
3: R_BRACK@131..133 "]" [] [Whitespace(" ")]
1: EQ@133..135 "=" [] [Whitespace(" ")]
2: JS_ASSIGNMENT_EXPRESSION@135..148
0: JS_COMPUTED_MEMBER_ASSIGNMENT@135..140
0: JS_IDENTIFIER_EXPRESSION@135..136
0: JS_REFERENCE_IDENTIFIER@135..136
0: IDENT@135..136 "c" [] []
1: L_BRACK@136..137 "[" [] []
2: JS_IDENTIFIER_EXPRESSION@137..138
0: JS_REFERENCE_IDENTIFIER@137..138
0: IDENT@137..138 "d" [] []
3: R_BRACK@138..140 "]" [] [Whitespace(" ")]
1: EQ@140..142 "=" [] [Whitespace(" ")]
2: JS_STRING_LITERAL_EXPRESSION@142..148
0: JS_STRING_LITERAL@142..148 "\"test\"" [] []
1: (empty)
4: EOF@148..149 "" [Newline("\n")] []