cairo-lang-parser 0.1.0

Cairo parser.
Documentation
//! > Test if-else without extra braces

//! > test_function_name
test_partial_parser_tree

//! > cairo_code
fn f() {
    if 1 == 2 {
        3
    } else if 4 == 5 {
        6
    } else if 7 == 8 {
        9
    } else {
        10
    }
}

//! > top_level_kind
ExprIf

//! > ignored_kinds
ExprBinary

//! > expected_diagnostics

//! > expected_tree
└── Top level kind: ExprIf
    ├── if_kw (kind: TokenIf): 'if'
    ├── condition (kind: ExprBinary) <ignored>
    ├── if_block (kind: ExprBlock)
    │   ├── lbrace (kind: TokenLBrace): '{'
    │   ├── statements (kind: StatementList)
    │   │   └── child #0 (kind: StatementExpr)
    │   │       ├── expr (kind: TokenLiteralNumber): '3'
    │   │       └── semicolon (kind: OptionTerminalSemicolonEmpty) []
    │   └── rbrace (kind: TokenRBrace): '}'
    └── else_clause (kind: ElseClause)
        ├── else_kw (kind: TokenElse): 'else'
        └── else_block_or_if (kind: ExprIf)
            ├── if_kw (kind: TokenIf): 'if'
            ├── condition (kind: ExprBinary) <ignored>
            ├── if_block (kind: ExprBlock)
            │   ├── lbrace (kind: TokenLBrace): '{'
            │   ├── statements (kind: StatementList)
            │   │   └── child #0 (kind: StatementExpr)
            │   │       ├── expr (kind: TokenLiteralNumber): '6'
            │   │       └── semicolon (kind: OptionTerminalSemicolonEmpty) []
            │   └── rbrace (kind: TokenRBrace): '}'
            └── else_clause (kind: ElseClause)
                ├── else_kw (kind: TokenElse): 'else'
                └── else_block_or_if (kind: ExprIf)
                    ├── if_kw (kind: TokenIf): 'if'
                    ├── condition (kind: ExprBinary) <ignored>
                    ├── if_block (kind: ExprBlock)
                    │   ├── lbrace (kind: TokenLBrace): '{'
                    │   ├── statements (kind: StatementList)
                    │   │   └── child #0 (kind: StatementExpr)
                    │   │       ├── expr (kind: TokenLiteralNumber): '9'
                    │   │       └── semicolon (kind: OptionTerminalSemicolonEmpty) []
                    │   └── rbrace (kind: TokenRBrace): '}'
                    └── else_clause (kind: ElseClause)
                        ├── else_kw (kind: TokenElse): 'else'
                        └── else_block_or_if (kind: ExprBlock)
                            ├── lbrace (kind: TokenLBrace): '{'
                            ├── statements (kind: StatementList)
                            │   └── child #0 (kind: StatementExpr)
                            │       ├── expr (kind: TokenLiteralNumber): '10'
                            │       └── semicolon (kind: OptionTerminalSemicolonEmpty) []
                            └── rbrace (kind: TokenRBrace): '}'