rbx-rsml 1.0.0

A lexer and parser for the RSML language.
Documentation
---
source: src/parser/mod.rs
expression: parsed.ast
---
[
    Macro {
        declaration: Node {
            token: SpannedToken(
                0,
                MacroDeclaration,
                6,
            ),
            leading_trivia: None,
        },
        name: Some(
            Node {
                token: SpannedToken(
                    7,
                    Identifier(
                        "Recur",
                    ),
                    12,
                ),
                leading_trivia: None,
            },
        ),
        args: Some(
            Delimited {
                left: Node {
                    token: SpannedToken(
                        12,
                        ParensOpen,
                        13,
                    ),
                    leading_trivia: None,
                },
                content: None,
                right: Some(
                    Node {
                        token: SpannedToken(
                            13,
                            ParensClose,
                            14,
                        ),
                        leading_trivia: None,
                    },
                ),
            },
        ),
        return_type: Some(
            (
                Node {
                    token: SpannedToken(
                        15,
                        ReturnArrow,
                        17,
                    ),
                    leading_trivia: None,
                },
                Some(
                    Node {
                        token: SpannedToken(
                            18,
                            Identifier(
                                "Construct",
                            ),
                            27,
                        ),
                        leading_trivia: None,
                    },
                ),
            ),
        ),
        body: Some(
            MacroBody {
                open: Node {
                    token: SpannedToken(
                        28,
                        ScopeOpen,
                        29,
                    ),
                    leading_trivia: None,
                },
                content: Construct(
                    Some(
                        [
                            MacroCall {
                                name: Node {
                                    token: SpannedToken(
                                        30,
                                        MacroCallIdentifier(
                                            Some(
                                                "Recur",
                                            ),
                                        ),
                                        36,
                                    ),
                                    leading_trivia: None,
                                },
                                body: Some(
                                    Delimited {
                                        left: Node {
                                            token: SpannedToken(
                                                36,
                                                ParensOpen,
                                                37,
                                            ),
                                            leading_trivia: None,
                                        },
                                        content: None,
                                        right: Some(
                                            Node {
                                                token: SpannedToken(
                                                    37,
                                                    ParensClose,
                                                    38,
                                                ),
                                                leading_trivia: None,
                                            },
                                        ),
                                    },
                                ),
                                terminator: Some(
                                    Node {
                                        token: SpannedToken(
                                            38,
                                            SemiColon,
                                            39,
                                        ),
                                        leading_trivia: None,
                                    },
                                ),
                            },
                        ],
                    ),
                ),
                close: Some(
                    Node {
                        token: SpannedToken(
                            40,
                            ScopeClose,
                            41,
                        ),
                        leading_trivia: None,
                    },
                ),
            },
        ),
    },
    Rule {
        selectors: Some(
            [
                Token(
                    Node {
                        token: SpannedToken(
                            42,
                            Identifier(
                                "Frame",
                            ),
                            47,
                        ),
                        leading_trivia: None,
                    },
                ),
            ],
        ),
        body: Some(
            Delimited {
                left: Node {
                    token: SpannedToken(
                        48,
                        ScopeOpen,
                        49,
                    ),
                    leading_trivia: None,
                },
                content: Some(
                    [
                        MacroCall {
                            name: Node {
                                token: SpannedToken(
                                    50,
                                    MacroCallIdentifier(
                                        Some(
                                            "Recur",
                                        ),
                                    ),
                                    56,
                                ),
                                leading_trivia: None,
                            },
                            body: Some(
                                Delimited {
                                    left: Node {
                                        token: SpannedToken(
                                            56,
                                            ParensOpen,
                                            57,
                                        ),
                                        leading_trivia: None,
                                    },
                                    content: None,
                                    right: Some(
                                        Node {
                                            token: SpannedToken(
                                                57,
                                                ParensClose,
                                                58,
                                            ),
                                            leading_trivia: None,
                                        },
                                    ),
                                },
                            ),
                            terminator: Some(
                                Node {
                                    token: SpannedToken(
                                        58,
                                        SemiColon,
                                        59,
                                    ),
                                    leading_trivia: None,
                                },
                            ),
                        },
                    ],
                ),
                right: Some(
                    Node {
                        token: SpannedToken(
                            60,
                            ScopeClose,
                            61,
                        ),
                        leading_trivia: None,
                    },
                ),
            },
        ),
    },
]