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}