pub fn parse(
        token_tree: Spanned<TokenTree>,
    ) -> Result<(Spanned<AST>, HashMap<String, SharedSymbol>), Syntax> {
        // build base parser
        let mut parser = Parser {
            symbols: HashMap::new(),
        };

        let ast = parser.rule_prefix(&token_tree)?;

        Ok((ast, parser.symbols))
    }
Parses a token tree into a syntax tree.
This will produce a module as opposed to a block.
Also returns the symbol interning table.
passerine/src/compiler/parse.rs