JsScript {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [
JsDirective {
value_token: JS_STRING_LITERAL@0..19 "\"use new\"" [Comments("// SCRIPT"), Newline("\n")] [],
semicolon_token: missing (optional),
},
],
statements: JsStatementList [
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@19..24 "let" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@24..26 "a" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@26..28 "=" [] [Whitespace(" ")],
expression: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@28..30 "10" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@30..31 ";" [] [],
},
JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@31..44 "\"use strict\"" [Newline("\n")] [],
},
semicolon_token: SEMICOLON@44..64 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
JsFunctionDeclaration {
async_token: missing (optional),
function_token: FUNCTION_KW@64..74 "function" [Newline("\n")] [Whitespace(" ")],
star_token: missing (optional),
id: JsIdentifierBinding {
name_token: IDENT@74..78 "test" [] [],
},
type_parameters: missing (optional),
parameters: JsParameters {
l_paren_token: L_PAREN@78..79 "(" [] [],
items: JsParameterList [],
r_paren_token: R_PAREN@79..81 ")" [] [Whitespace(" ")],
},
return_type_annotation: missing (optional),
body: JsFunctionBody {
l_curly_token: L_CURLY@81..82 "{" [] [],
directives: JsDirectiveList [
JsDirective {
value_token: JS_STRING_LITERAL@82..97 "'use strict'" [Newline("\n"), Whitespace(" ")] [],
semicolon_token: SEMICOLON@97..98 ";" [] [],
},
],
statements: JsStatementList [
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@98..105 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@105..107 "b" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@107..109 "=" [] [Whitespace(" ")],
expression: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@109..111 "10" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@111..112 ";" [] [],
},
JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@112..127 "'use strict'" [Newline("\n"), Whitespace(" ")] [],
},
semicolon_token: SEMICOLON@127..147 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
],
r_curly_token: R_CURLY@147..149 "}" [Newline("\n")] [],
},
},
JsExpressionStatement {
expression: JsParenthesizedExpression {
l_paren_token: L_PAREN@149..151 "(" [Newline("\n")] [],
expression: JsFunctionExpression {
async_token: missing (optional),
function_token: FUNCTION_KW@151..160 "function" [] [Whitespace(" ")],
star_token: missing (optional),
id: missing (optional),
type_parameters: missing (optional),
parameters: JsParameters {
l_paren_token: L_PAREN@160..161 "(" [] [],
items: JsParameterList [],
r_paren_token: R_PAREN@161..163 ")" [] [Whitespace(" ")],
},
return_type_annotation: missing (optional),
body: JsFunctionBody {
l_curly_token: L_CURLY@163..164 "{" [] [],
directives: JsDirectiveList [
JsDirective {
value_token: JS_STRING_LITERAL@164..179 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
semicolon_token: SEMICOLON@179..180 ";" [] [],
},
],
statements: JsStatementList [
JsExpressionStatement {
expression: JsStaticMemberExpression {
object: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@180..195 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
},
operator_token: DOT@195..201 "." [Newline("\n"), Whitespace(" ")] [],
member: JsName {
value_token: IDENT@201..207 "length" [] [],
},
},
semicolon_token: missing (optional),
},
JsEmptyStatement {
semicolon_token: SEMICOLON@207..227 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@227..234 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@234..236 "c" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@236..238 "=" [] [Whitespace(" ")],
expression: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@238..240 "10" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@240..241 ";" [] [],
},
JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@241..256 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
},
semicolon_token: SEMICOLON@256..276 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
],
r_curly_token: R_CURLY@276..278 "}" [Newline("\n")] [],
},
},
r_paren_token: R_PAREN@278..279 ")" [] [],
},
semicolon_token: SEMICOLON@279..280 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@280..285 "let" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@285..287 "b" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@287..289 "=" [] [Whitespace(" ")],
expression: JsArrowFunctionExpression {
async_token: missing (optional),
type_parameters: missing (optional),
parameters: JsParameters {
l_paren_token: L_PAREN@289..290 "(" [] [],
items: JsParameterList [],
r_paren_token: R_PAREN@290..292 ")" [] [Whitespace(" ")],
},
return_type_annotation: missing (optional),
fat_arrow_token: FAT_ARROW@292..295 "=>" [] [Whitespace(" ")],
body: JsFunctionBody {
l_curly_token: L_CURLY@295..296 "{" [] [],
directives: JsDirectiveList [
JsDirective {
value_token: JS_STRING_LITERAL@296..311 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
semicolon_token: SEMICOLON@311..312 ";" [] [],
},
],
statements: JsStatementList [
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@312..319 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@319..321 "e" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@321..323 "=" [] [Whitespace(" ")],
expression: JsNumberLiteralExpression {
value_token: JS_NUMBER_LITERAL@323..325 "10" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@325..326 ";" [] [],
},
JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@326..341 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
},
semicolon_token: SEMICOLON@341..362 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
],
r_curly_token: R_CURLY@362..364 "}" [Newline("\n")] [],
},
},
},
},
],
},
semicolon_token: missing (optional),
},
JsBlockStatement {
l_curly_token: L_CURLY@364..366 "{" [Newline("\n")] [],
statements: JsStatementList [
JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@366..381 "\"use strict\"" [Newline("\n"), Whitespace(" ")] [],
},
semicolon_token: SEMICOLON@381..401 ";" [] [Whitespace(" "), Comments("// not a directive")],
},
],
r_curly_token: R_CURLY@401..403 "}" [Newline("\n")] [],
},
],
eof_token: EOF@403..404 "" [Newline("\n")] [],
}
0: JS_SCRIPT@0..404
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..19
0: JS_DIRECTIVE@0..19
0: JS_STRING_LITERAL@0..19 "\"use new\"" [Comments("// SCRIPT"), Newline("\n")] []
1: (empty)
3: JS_STATEMENT_LIST@19..403
0: JS_VARIABLE_STATEMENT@19..31
0: JS_VARIABLE_DECLARATION@19..30
0: (empty)
1: LET_KW@19..24 "let" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@24..30
0: JS_VARIABLE_DECLARATOR@24..30
0: JS_IDENTIFIER_BINDING@24..26
0: IDENT@24..26 "a" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@26..30
0: EQ@26..28 "=" [] [Whitespace(" ")]
1: JS_NUMBER_LITERAL_EXPRESSION@28..30
0: JS_NUMBER_LITERAL@28..30 "10" [] []
1: SEMICOLON@30..31 ";" [] []
1: JS_EXPRESSION_STATEMENT@31..64
0: JS_STRING_LITERAL_EXPRESSION@31..44
0: JS_STRING_LITERAL@31..44 "\"use strict\"" [Newline("\n")] []
1: SEMICOLON@44..64 ";" [] [Whitespace(" "), Comments("// not a directive")]
2: JS_FUNCTION_DECLARATION@64..149
0: (empty)
1: FUNCTION_KW@64..74 "function" [Newline("\n")] [Whitespace(" ")]
2: (empty)
3: JS_IDENTIFIER_BINDING@74..78
0: IDENT@74..78 "test" [] []
4: (empty)
5: JS_PARAMETERS@78..81
0: L_PAREN@78..79 "(" [] []
1: JS_PARAMETER_LIST@79..79
2: R_PAREN@79..81 ")" [] [Whitespace(" ")]
6: (empty)
7: JS_FUNCTION_BODY@81..149
0: L_CURLY@81..82 "{" [] []
1: JS_DIRECTIVE_LIST@82..98
0: JS_DIRECTIVE@82..98
0: JS_STRING_LITERAL@82..97 "'use strict'" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@97..98 ";" [] []
2: JS_STATEMENT_LIST@98..147
0: JS_VARIABLE_STATEMENT@98..112
0: JS_VARIABLE_DECLARATION@98..111
0: (empty)
1: LET_KW@98..105 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@105..111
0: JS_VARIABLE_DECLARATOR@105..111
0: JS_IDENTIFIER_BINDING@105..107
0: IDENT@105..107 "b" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@107..111
0: EQ@107..109 "=" [] [Whitespace(" ")]
1: JS_NUMBER_LITERAL_EXPRESSION@109..111
0: JS_NUMBER_LITERAL@109..111 "10" [] []
1: SEMICOLON@111..112 ";" [] []
1: JS_EXPRESSION_STATEMENT@112..147
0: JS_STRING_LITERAL_EXPRESSION@112..127
0: JS_STRING_LITERAL@112..127 "'use strict'" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@127..147 ";" [] [Whitespace(" "), Comments("// not a directive")]
3: R_CURLY@147..149 "}" [Newline("\n")] []
3: JS_EXPRESSION_STATEMENT@149..280
0: JS_PARENTHESIZED_EXPRESSION@149..279
0: L_PAREN@149..151 "(" [Newline("\n")] []
1: JS_FUNCTION_EXPRESSION@151..278
0: (empty)
1: FUNCTION_KW@151..160 "function" [] [Whitespace(" ")]
2: (empty)
3: (empty)
4: (empty)
5: JS_PARAMETERS@160..163
0: L_PAREN@160..161 "(" [] []
1: JS_PARAMETER_LIST@161..161
2: R_PAREN@161..163 ")" [] [Whitespace(" ")]
6: (empty)
7: JS_FUNCTION_BODY@163..278
0: L_CURLY@163..164 "{" [] []
1: JS_DIRECTIVE_LIST@164..180
0: JS_DIRECTIVE@164..180
0: JS_STRING_LITERAL@164..179 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@179..180 ";" [] []
2: JS_STATEMENT_LIST@180..276
0: JS_EXPRESSION_STATEMENT@180..207
0: JS_STATIC_MEMBER_EXPRESSION@180..207
0: JS_STRING_LITERAL_EXPRESSION@180..195
0: JS_STRING_LITERAL@180..195 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: DOT@195..201 "." [Newline("\n"), Whitespace(" ")] []
2: JS_NAME@201..207
0: IDENT@201..207 "length" [] []
1: (empty)
1: JS_EMPTY_STATEMENT@207..227
0: SEMICOLON@207..227 ";" [] [Whitespace(" "), Comments("// not a directive")]
2: JS_VARIABLE_STATEMENT@227..241
0: JS_VARIABLE_DECLARATION@227..240
0: (empty)
1: LET_KW@227..234 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@234..240
0: JS_VARIABLE_DECLARATOR@234..240
0: JS_IDENTIFIER_BINDING@234..236
0: IDENT@234..236 "c" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@236..240
0: EQ@236..238 "=" [] [Whitespace(" ")]
1: JS_NUMBER_LITERAL_EXPRESSION@238..240
0: JS_NUMBER_LITERAL@238..240 "10" [] []
1: SEMICOLON@240..241 ";" [] []
3: JS_EXPRESSION_STATEMENT@241..276
0: JS_STRING_LITERAL_EXPRESSION@241..256
0: JS_STRING_LITERAL@241..256 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@256..276 ";" [] [Whitespace(" "), Comments("// not a directive")]
3: R_CURLY@276..278 "}" [Newline("\n")] []
2: R_PAREN@278..279 ")" [] []
1: SEMICOLON@279..280 ";" [] []
4: JS_VARIABLE_STATEMENT@280..364
0: JS_VARIABLE_DECLARATION@280..364
0: (empty)
1: LET_KW@280..285 "let" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@285..364
0: JS_VARIABLE_DECLARATOR@285..364
0: JS_IDENTIFIER_BINDING@285..287
0: IDENT@285..287 "b" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@287..364
0: EQ@287..289 "=" [] [Whitespace(" ")]
1: JS_ARROW_FUNCTION_EXPRESSION@289..364
0: (empty)
1: (empty)
2: JS_PARAMETERS@289..292
0: L_PAREN@289..290 "(" [] []
1: JS_PARAMETER_LIST@290..290
2: R_PAREN@290..292 ")" [] [Whitespace(" ")]
3: (empty)
4: FAT_ARROW@292..295 "=>" [] [Whitespace(" ")]
5: JS_FUNCTION_BODY@295..364
0: L_CURLY@295..296 "{" [] []
1: JS_DIRECTIVE_LIST@296..312
0: JS_DIRECTIVE@296..312
0: JS_STRING_LITERAL@296..311 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@311..312 ";" [] []
2: JS_STATEMENT_LIST@312..362
0: JS_VARIABLE_STATEMENT@312..326
0: JS_VARIABLE_DECLARATION@312..325
0: (empty)
1: LET_KW@312..319 "let" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@319..325
0: JS_VARIABLE_DECLARATOR@319..325
0: JS_IDENTIFIER_BINDING@319..321
0: IDENT@319..321 "e" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@321..325
0: EQ@321..323 "=" [] [Whitespace(" ")]
1: JS_NUMBER_LITERAL_EXPRESSION@323..325
0: JS_NUMBER_LITERAL@323..325 "10" [] []
1: SEMICOLON@325..326 ";" [] []
1: JS_EXPRESSION_STATEMENT@326..362
0: JS_STRING_LITERAL_EXPRESSION@326..341
0: JS_STRING_LITERAL@326..341 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@341..362 ";" [] [Whitespace(" "), Comments("// not a directive")]
3: R_CURLY@362..364 "}" [Newline("\n")] []
1: (empty)
5: JS_BLOCK_STATEMENT@364..403
0: L_CURLY@364..366 "{" [Newline("\n")] []
1: JS_STATEMENT_LIST@366..401
0: JS_EXPRESSION_STATEMENT@366..401
0: JS_STRING_LITERAL_EXPRESSION@366..381
0: JS_STRING_LITERAL@366..381 "\"use strict\"" [Newline("\n"), Whitespace(" ")] []
1: SEMICOLON@381..401 ";" [] [Whitespace(" "), Comments("// not a directive")]
2: R_CURLY@401..403 "}" [Newline("\n")] []
4: EOF@403..404 "" [Newline("\n")] []