Program (script) @1:1 ├─ VariableDeclaration (let) @1:1 │ └─ VariableDeclarator @1:1 │ ├─ Identifier "a" [global] (let) @1:5 │ └─ TaggedTemplateLiteral @1:9 │ ├─ tag │ │ └─ MemberExpression @1:15 │ │ ├─ Identifier "String" [global] @1:9 │ │ └─ Identifier "raw" @1:16 │ └─ template │ └─ TemplateLiteral @1:19 │ └─ StringLiteral "foo bar" @1:28 ├─ FunctionDeclaration "tag" @3:1 │ ├─ parameters │ │ └─ Identifier "strings" [argument:0] @3:14 │ └─ body │ └─ FunctionBody @4:5 │ └─ ReturnStatement @4:5 │ └─ MemberExpression [computed] @4:19 │ ├─ Identifier "strings" [argument:0] @4:12 │ └─ NumericLiteral 0 @4:20 ├─ VariableDeclaration (let) @7:1 │ └─ VariableDeclarator @7:1 │ ├─ Identifier "b" [global] (let) @7:5 │ └─ TaggedTemplateLiteral @7:9 │ ├─ tag │ │ └─ Identifier "tag" [global] @7:9 │ └─ template │ └─ TemplateLiteral @7:12 │ └─ StringLiteral "hello" @7:18 ├─ FunctionDeclaration "chain" @9:1 │ ├─ parameters │ │ └─ Identifier "s" @9:16 │ └─ body │ └─ FunctionBody @10:5 │ └─ ReturnStatement @10:5 │ └─ FunctionExpression "" @10:12 │ ├─ parameters │ │ └─ Identifier "s2" [argument:0] @10:22 │ └─ body │ └─ FunctionBody @11:9 │ └─ ReturnStatement @11:9 │ └─ BinaryExpression (+) @11:21 │ ├─ MemberExpression [computed] @11:17 │ │ ├─ Identifier "s" @11:16 │ │ └─ NumericLiteral 0 @11:18 │ └─ MemberExpression [computed] @11:25 │ ├─ Identifier "s2" [argument:0] @11:23 │ └─ NumericLiteral 0 @11:26 └─ VariableDeclaration (let) @15:1 └─ VariableDeclarator @15:1 ├─ Identifier "c" [global] (let) @15:5 └─ TaggedTemplateLiteral @15:9 ├─ tag │ └─ TaggedTemplateLiteral @15:9 │ ├─ tag │ │ └─ Identifier "chain" [global] @15:9 │ └─ template │ └─ TemplateLiteral @15:14 │ └─ StringLiteral "hello" @15:20 └─ template └─ TemplateLiteral @15:21 └─ StringLiteral "world" @15:27