biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
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")] []