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