1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//! The parser and AST trees for *xlang*.
use lalrpop_util::{lalrpop_mod, ParseError, lexer::Token};
pub mod ast;
lalrpop_mod!(grammar);
/// Parses a single *xlang* expression.
pub fn parse_expr(input: &str) -> Result<ast::Expr<'_>, ParseError<usize, Token<'_>, &'static str>> {
grammar::ExprParser::new().parse(input)
}
/// Parses some *xlang* source.
pub fn parse(input: &str) -> Result<Vec<ast::Expr<'_>>, ParseError<usize, Token<'_>, &'static str>> {
grammar::ExprsParser::new().parse(input)
}