microcad-lang-parse 0.5.0

µcad language syntax lexer and parser
Documentation
---
source: crates/syntax/tests/parser.rs
expression: parse(tokens.as_slice())
---
Ok(
    SourceFile {
        span: 0..17,
        statements: StatementList {
            span: 0..17,
            extras: ItemExtras {
                leading: [],
                trailing: [],
            },
            statements: [],
            tail: Some(
                Expression(
                    ExpressionStatement {
                        span: 0..17,
                        extras: ItemExtras {
                            leading: [],
                            trailing: [],
                        },
                        attributes: [],
                        expression: BinaryOperation(
                            BinaryOperation {
                                span: 0..17,
                                lhs: ArrayList(
                                    ArrayListExpression {
                                        span: 0..6,
                                        extras: ItemExtras {
                                            leading: [],
                                            trailing: [],
                                        },
                                        items: [
                                            ArrayItem {
                                                span: 1..2,
                                                extras: ItemExtras {
                                                    leading: [],
                                                    trailing: [],
                                                },
                                                expression: Literal(
                                                    Literal {
                                                        span: 1..2,
                                                        extras: ItemExtras {
                                                            leading: [],
                                                            trailing: [],
                                                        },
                                                        literal: Integer(
                                                            IntegerLiteral {
                                                                span: 1..2,
                                                                value: 1,
                                                            },
                                                        ),
                                                    },
                                                ),
                                            },
                                            ArrayItem {
                                                span: 3..4,
                                                extras: ItemExtras {
                                                    leading: [],
                                                    trailing: [],
                                                },
                                                expression: Literal(
                                                    Literal {
                                                        span: 3..4,
                                                        extras: ItemExtras {
                                                            leading: [],
                                                            trailing: [],
                                                        },
                                                        literal: Integer(
                                                            IntegerLiteral {
                                                                span: 3..4,
                                                                value: 2,
                                                            },
                                                        ),
                                                    },
                                                ),
                                            },
                                        ],
                                        ty: Some(
                                            SingleType {
                                                span: 5..6,
                                                name: "\"",
                                            },
                                        ),
                                    },
                                ),
                                operation: Equal,
                                rhs: ArrayList(
                                    ArrayListExpression {
                                        span: 10..17,
                                        extras: ItemExtras {
                                            leading: [],
                                            trailing: [],
                                        },
                                        items: [
                                            ArrayItem {
                                                span: 11..12,
                                                extras: ItemExtras {
                                                    leading: [],
                                                    trailing: [],
                                                },
                                                expression: Literal(
                                                    Literal {
                                                        span: 11..12,
                                                        extras: ItemExtras {
                                                            leading: [],
                                                            trailing: [],
                                                        },
                                                        literal: Integer(
                                                            IntegerLiteral {
                                                                span: 11..12,
                                                                value: 1,
                                                            },
                                                        ),
                                                    },
                                                ),
                                            },
                                            ArrayItem {
                                                span: 13..14,
                                                extras: ItemExtras {
                                                    leading: [],
                                                    trailing: [],
                                                },
                                                expression: Literal(
                                                    Literal {
                                                        span: 13..14,
                                                        extras: ItemExtras {
                                                            leading: [],
                                                            trailing: [],
                                                        },
                                                        literal: Integer(
                                                            IntegerLiteral {
                                                                span: 13..14,
                                                                value: 2,
                                                            },
                                                        ),
                                                    },
                                                ),
                                            },
                                        ],
                                        ty: Some(
                                            SingleType {
                                                span: 15..17,
                                                name: "cm",
                                            },
                                        ),
                                    },
                                ),
                            },
                        ),
                    },
                ),
            ),
        },
    },
)