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")] []