galvan-into-ast 0.0.3

CST to AST conversion for the Galvan programming language
Documentation
#[macro_export]
macro_rules! cursor_expect {
    ($cursor:ident, $rule:literal) => {{
        use crate::result::CursorUtil;
        while $cursor.kind()? == "comment" && $rule != "comment" {
            if !$cursor.goto_next_sibling() {
                break;
            }
        }

        let node = $cursor.curr()?;
        if node.kind() != $rule {
            let kind = node.kind();
            $cursor.goto_parent();
            let parent = $cursor.curr()?;
            unreachable!(
                "Expected {} keyword, got: {}, in: {}",
                $rule,
                kind,
                parent.kind()
            );
        } else {
            node
        }
    }};
}