cairo-lang-parser 2.9.3

Cairo parser.
Documentation
//! > Test that a ! b isn't parsed as a binary operation

//! > comments
`a ! b;` should be parsed as `a !b;`, i.e, two statements:
    * `a` (missing a semicolon)
    * `!b;` (not `b`)

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
#[cairofmt::skip]
fn foo() {
    1 ! 2;
    1 @ 2;
}

//! > top_level_kind
StatementList

//! > ignored_kinds

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: StatementList
    ├── child #0 (kind: StatementExpr)
    │   ├── attributes (kind: AttributeList) []
    │   ├── expr (kind: TokenLiteralNumber): '1'
    │   └── semicolon (kind: OptionTerminalSemicolonEmpty) []
    ├── child #1 (kind: StatementExpr)
    │   ├── attributes (kind: AttributeList) []
    │   ├── expr (kind: ExprUnary)
    │   │   ├── op (kind: TokenNot): '!'
    │   │   └── expr (kind: TokenLiteralNumber): '2'
    │   └── semicolon (kind: TokenSemicolon): ';'
    ├── child #2 (kind: StatementExpr)
    │   ├── attributes (kind: AttributeList) []
    │   ├── expr (kind: TokenLiteralNumber): '1'
    │   └── semicolon (kind: OptionTerminalSemicolonEmpty) []
    └── child #3 (kind: StatementExpr)
        ├── attributes (kind: AttributeList) []
        ├── expr (kind: ExprUnary)
        │   ├── op (kind: TokenAt): '@'
        │   └── expr (kind: TokenLiteralNumber): '2'
        └── semicolon (kind: TokenSemicolon): ';'