cairo-lang-parser 2.9.3

Cairo parser.
Documentation
//! > Test index operator simple

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn test() {
    a[1];
}

//! > top_level_kind
ExprIndexed

//! > ignored_kinds
ExprPath

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprIndexed
    ├── expr (kind: ExprPath) <ignored>
    ├── lbrack (kind: TokenLBrack): '['
    ├── index_expr (kind: TokenLiteralNumber): '1'
    └── rbrack (kind: TokenRBrack): ']'

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

//! > Test index operator complex

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn test() {
    a[x + y];
}

//! > top_level_kind
ExprIndexed

//! > ignored_kinds
ExprPath
ExprBinary

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprIndexed
    ├── expr (kind: ExprPath) <ignored>
    ├── lbrack (kind: TokenLBrack): '['
    ├── index_expr (kind: ExprBinary) <ignored>
    └── rbrack (kind: TokenRBrack): ']'

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

//! > Test index operator block

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn test() {
    a[{
        x + y
    }];
}

//! > top_level_kind
ExprIndexed

//! > ignored_kinds
ExprPath
ExprBinary
ExprBlock

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprIndexed
    ├── expr (kind: ExprPath) <ignored>
    ├── lbrack (kind: TokenLBrack): '['
    ├── index_expr (kind: ExprBlock) <ignored>
    └── rbrack (kind: TokenRBrack): ']'

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

//! > Test index operator of index

//! > test_runner_name
test_partial_parser_tree(expect_diagnostics: false)

//! > cairo_code
fn test() {
    a[a[1]];
}

//! > top_level_kind
ExprIndexed

//! > ignored_kinds
ExprPath

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprIndexed
    ├── expr (kind: ExprPath) <ignored>
    ├── lbrack (kind: TokenLBrack): '['
    ├── index_expr (kind: ExprIndexed)
    │   ├── expr (kind: ExprPath) <ignored>
    │   ├── lbrack (kind: TokenLBrack): '['
    │   ├── index_expr (kind: TokenLiteralNumber): '1'
    │   └── rbrack (kind: TokenRBrack): ']'
    └── rbrack (kind: TokenRBrack): ']'