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: JsBogusAssignment {
                    items: [
                        PLUS2@0..2 "++" [] [],
                        JsIdentifierAssignment {
                            name_token: IDENT@2..4 "a" [] [Whitespace(" ")],
                        },
                    ],
                },
                operator_token: EQ@4..6 "=" [] [Whitespace(" ")],
                right: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@6..7 "b" [] [],
                    },
                },
            },
            semicolon_token: SEMICOLON@7..8 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsAssignmentExpression {
                left: JsParenthesizedAssignment {
                    l_paren_token: L_PAREN@8..10 "(" [Newline("\n")] [],
                    assignment: JsBogusAssignment {
                        items: [
                            PLUS2@10..12 "++" [] [],
                            JsIdentifierAssignment {
                                name_token: IDENT@12..13 "a" [] [],
                            },
                        ],
                    },
                    r_paren_token: R_PAREN@13..15 ")" [] [Whitespace(" ")],
                },
                operator_token: EQ@15..17 "=" [] [Whitespace(" ")],
                right: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@17..18 "b" [] [],
                    },
                },
            },
            semicolon_token: SEMICOLON@18..19 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@19..21 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsIdentifierAssignment {
                        name_token: IDENT@21..23 "a" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@23..25 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@25..26 "b" [] [],
                        },
                    },
                },
                r_paren_token: missing (required),
            },
            semicolon_token: SEMICOLON@26..27 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsAssignmentExpression {
                left: JsBogusAssignment {
                    items: [
                        JsIdentifierExpression {
                            name: JsReferenceIdentifier {
                                value_token: IDENT@27..29 "a" [Newline("\n")] [],
                            },
                        },
                        QUESTIONDOT@29..31 "?." [] [],
                        JsName {
                            value_token: IDENT@31..33 "b" [] [Whitespace(" ")],
                        },
                    ],
                },
                operator_token: EQ@33..35 "=" [] [Whitespace(" ")],
                right: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@35..36 "b" [] [],
                    },
                },
            },
            semicolon_token: SEMICOLON@36..37 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsAssignmentExpression {
                left: JsBogusAssignment {
                    items: [
                        JsIdentifierExpression {
                            name: JsReferenceIdentifier {
                                value_token: IDENT@37..39 "a" [Newline("\n")] [],
                            },
                        },
                        QUESTIONDOT@39..41 "?." [] [],
                        L_BRACK@41..42 "[" [] [],
                        JsStringLiteralExpression {
                            value_token: JS_STRING_LITERAL@42..45 "\"b\"" [] [],
                        },
                        R_BRACK@45..47 "]" [] [Whitespace(" ")],
                    ],
                },
                operator_token: EQ@47..49 "=" [] [Whitespace(" ")],
                right: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@49..50 "b" [] [],
                    },
                },
            },
            semicolon_token: SEMICOLON@50..51 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsAssignmentExpression {
                left: JsParenthesizedAssignment {
                    l_paren_token: L_PAREN@51..53 "(" [Newline("\n")] [],
                    assignment: JsBogusAssignment {
                        items: [
                            JsIdentifierExpression {
                                name: JsReferenceIdentifier {
                                    value_token: IDENT@53..55 "a" [] [Whitespace(" ")],
                                },
                            },
                            PLUS@55..56 "+" [] [],
                        ],
                    },
                    r_paren_token: R_PAREN@56..58 ")" [] [Whitespace(" ")],
                },
                operator_token: EQ@58..60 "=" [] [Whitespace(" ")],
                right: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@60..61 "b" [] [],
                    },
                },
            },
            semicolon_token: SEMICOLON@61..62 ";" [] [],
        },
    ],
    eof_token: EOF@62..63 "" [Newline("\n")] [],
}

0: JS_MODULE@0..63
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..62
    0: JS_EXPRESSION_STATEMENT@0..8
      0: JS_ASSIGNMENT_EXPRESSION@0..7
        0: JS_BOGUS_ASSIGNMENT@0..4
          0: PLUS2@0..2 "++" [] []
          1: JS_IDENTIFIER_ASSIGNMENT@2..4
            0: IDENT@2..4 "a" [] [Whitespace(" ")]
        1: EQ@4..6 "=" [] [Whitespace(" ")]
        2: JS_IDENTIFIER_EXPRESSION@6..7
          0: JS_REFERENCE_IDENTIFIER@6..7
            0: IDENT@6..7 "b" [] []
      1: SEMICOLON@7..8 ";" [] []
    1: JS_EXPRESSION_STATEMENT@8..19
      0: JS_ASSIGNMENT_EXPRESSION@8..18
        0: JS_PARENTHESIZED_ASSIGNMENT@8..15
          0: L_PAREN@8..10 "(" [Newline("\n")] []
          1: JS_BOGUS_ASSIGNMENT@10..13
            0: PLUS2@10..12 "++" [] []
            1: JS_IDENTIFIER_ASSIGNMENT@12..13
              0: IDENT@12..13 "a" [] []
          2: R_PAREN@13..15 ")" [] [Whitespace(" ")]
        1: EQ@15..17 "=" [] [Whitespace(" ")]
        2: JS_IDENTIFIER_EXPRESSION@17..18
          0: JS_REFERENCE_IDENTIFIER@17..18
            0: IDENT@17..18 "b" [] []
      1: SEMICOLON@18..19 ";" [] []
    2: JS_EXPRESSION_STATEMENT@19..27
      0: JS_PARENTHESIZED_EXPRESSION@19..26
        0: L_PAREN@19..21 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@21..26
          0: JS_IDENTIFIER_ASSIGNMENT@21..23
            0: IDENT@21..23 "a" [] [Whitespace(" ")]
          1: EQ@23..25 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@25..26
            0: JS_REFERENCE_IDENTIFIER@25..26
              0: IDENT@25..26 "b" [] []
        2: (empty)
      1: SEMICOLON@26..27 ";" [] []
    3: JS_EXPRESSION_STATEMENT@27..37
      0: JS_ASSIGNMENT_EXPRESSION@27..36
        0: JS_BOGUS_ASSIGNMENT@27..33
          0: JS_IDENTIFIER_EXPRESSION@27..29
            0: JS_REFERENCE_IDENTIFIER@27..29
              0: IDENT@27..29 "a" [Newline("\n")] []
          1: QUESTIONDOT@29..31 "?." [] []
          2: JS_NAME@31..33
            0: IDENT@31..33 "b" [] [Whitespace(" ")]
        1: EQ@33..35 "=" [] [Whitespace(" ")]
        2: JS_IDENTIFIER_EXPRESSION@35..36
          0: JS_REFERENCE_IDENTIFIER@35..36
            0: IDENT@35..36 "b" [] []
      1: SEMICOLON@36..37 ";" [] []
    4: JS_EXPRESSION_STATEMENT@37..51
      0: JS_ASSIGNMENT_EXPRESSION@37..50
        0: JS_BOGUS_ASSIGNMENT@37..47
          0: JS_IDENTIFIER_EXPRESSION@37..39
            0: JS_REFERENCE_IDENTIFIER@37..39
              0: IDENT@37..39 "a" [Newline("\n")] []
          1: QUESTIONDOT@39..41 "?." [] []
          2: L_BRACK@41..42 "[" [] []
          3: JS_STRING_LITERAL_EXPRESSION@42..45
            0: JS_STRING_LITERAL@42..45 "\"b\"" [] []
          4: R_BRACK@45..47 "]" [] [Whitespace(" ")]
        1: EQ@47..49 "=" [] [Whitespace(" ")]
        2: JS_IDENTIFIER_EXPRESSION@49..50
          0: JS_REFERENCE_IDENTIFIER@49..50
            0: IDENT@49..50 "b" [] []
      1: SEMICOLON@50..51 ";" [] []
    5: JS_EXPRESSION_STATEMENT@51..62
      0: JS_ASSIGNMENT_EXPRESSION@51..61
        0: JS_PARENTHESIZED_ASSIGNMENT@51..58
          0: L_PAREN@51..53 "(" [Newline("\n")] []
          1: JS_BOGUS_ASSIGNMENT@53..56
            0: JS_IDENTIFIER_EXPRESSION@53..55
              0: JS_REFERENCE_IDENTIFIER@53..55
                0: IDENT@53..55 "a" [] [Whitespace(" ")]
            1: PLUS@55..56 "+" [] []
          2: R_PAREN@56..58 ")" [] [Whitespace(" ")]
        1: EQ@58..60 "=" [] [Whitespace(" ")]
        2: JS_IDENTIFIER_EXPRESSION@60..61
          0: JS_REFERENCE_IDENTIFIER@60..61
            0: IDENT@60..61 "b" [] []
      1: SEMICOLON@61..62 ";" [] []
  4: EOF@62..63 "" [Newline("\n")] []
--
invalid_assignment_target.js:1:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Invalid assignment to `++a`
  
  > 1 │ ++a = b;
      │ ^^^
    2 │ (++a) = b;
    3 │ (a = b;
  
  i This expression cannot be assigned to
  
--
invalid_assignment_target.js:2:2 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Invalid assignment to `++a`
  
    1 │ ++a = b;
  > 2 │ (++a) = b;
      │  ^^^
    3 │ (a = b;
    4 │ a?.b = b;
  
  i This expression cannot be assigned to
  
--
invalid_assignment_target.js:3:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × expected `)` but instead found `;`
  
    1 │ ++a = b;
    2 │ (++a) = b;
  > 3 │ (a = b;
      │       ^
    4 │ a?.b = b;
    5 │ a?.["b"] = b;
  
  i Remove ;
  
--
invalid_assignment_target.js:4:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Invalid assignment to `a?.b`
  
    2 │ (++a) = b;
    3 │ (a = b;
  > 4 │ a?.b = b;
      │ ^^^^
    5 │ a?.["b"] = b;
    6 │ (a +) = b;
  
  i This expression cannot be assigned to
  
--
invalid_assignment_target.js:5:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Invalid assignment to `a?.["b"]`
  
    3 │ (a = b;
    4 │ a?.b = b;
  > 5 │ a?.["b"] = b;
      │ ^^^^^^^^
    6 │ (a +) = b;
    7 │ 
  
  i This expression cannot be assigned to
  
--
invalid_assignment_target.js:6:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an expression but instead found ')'.
  
    4 │ a?.b = b;
    5 │ a?.["b"] = b;
  > 6 │ (a +) = b;
      │     ^
    7 │ 
  
  i Expected an expression here.
  
    4 │ a?.b = b;
    5 │ a?.["b"] = b;
  > 6 │ (a +) = b;
      │     ^
    7 │ 
  
--
invalid_assignment_target.js:6:2 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Invalid assignment to `a +`
  
    4 │ a?.b = b;
    5 │ a?.["b"] = b;
  > 6 │ (a +) = b;
      │  ^^^
    7 │ 
  
  i This expression cannot be assigned to
  
--
++a = b;
(++a) = b;
(a = b;
a?.b = b;
a?.["b"] = b;
(a +) = b;