1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#[macro_use]
extern crate lalrpop_util;
pub mod ast;
mod error;
use error::Error;
mod lexer;
use lexer::{Lexer, Token};
mod parser;
use crate::parser::SourceParser;
/// Parses the provided source and returns the AST.
pub fn parse(source: &str) -> Result<ast::Source, lalrpop_util::ParseError<usize, Token, Error>> {
let lex = Lexer::new(source).spanned().map(Token::to_spanned);
SourceParser::new().parse(lex)
}