cairo-lang-parser 2.18.0

Cairo parser.
Documentation
//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn f() {
    for i in 1..=x {}
}

//! > top_level_kind
ExprFor

//! > ignored_kinds

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprFor
    ├── for_kw (kind: TokenFor): 'for'
    ├── pattern (kind: ExprPath)
    │   └── item #0 (kind: PathSegmentSimple)
    │       └── ident (kind: TokenIdentifier): 'i'
    ├── identifier (kind: TokenIdentifier): 'in'
    ├── expr (kind: ExprBinary)
    │   ├── lhs (kind: TokenLiteralNumber): '1'
    │   ├── op (kind: TokenDotDotEq): '..='
    │   └── rhs (kind: ExprPath)
    │       └── item #0 (kind: PathSegmentSimple)
    │           └── ident (kind: TokenIdentifier): 'x'
    └── body (kind: ExprBlock)
        ├── lbrace (kind: TokenLBrace): '{'
        ├── statements (kind: StatementList) []
        └── rbrace (kind: TokenRBrace): '}'

//! > ==========================================================================

//! > Test range inclusive operator precedence

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn f() {
    x += false && true..=1 + 2
}

//! > top_level_kind
ExprBinary

//! > ignored_kinds

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprBinary
    ├── lhs (kind: ExprPath)
    │   └── item #0 (kind: PathSegmentSimple)
    │       └── ident (kind: TokenIdentifier): 'x'
    ├── op (kind: TokenPlusEq): '+='
    └── rhs (kind: ExprBinary)
        ├── lhs (kind: ExprBinary)
        │   ├── lhs (kind: TokenFalse): 'false'
        │   ├── op (kind: TokenAndAnd): '&&'
        │   └── rhs (kind: TokenTrue): 'true'
        ├── op (kind: TokenDotDotEq): '..='
        └── rhs (kind: ExprBinary)
            ├── lhs (kind: TokenLiteralNumber): '1'
            ├── op (kind: TokenPlus): '+'
            └── rhs (kind: TokenLiteralNumber): '2'