dala/interpreter/
parser.rs

1use pest::iterators::Pairs;
2use pest::Parser;
3use pest_derive::Parser;
4
5use crate::{DalaError, ParseError};
6
7#[derive(Parser)]
8#[grammar = "dala.pest"]
9struct DalaParser;
10
11pub fn parse_dala(str: &str) -> Result<Pairs<Rule>, DalaError> {
12    let dala = DalaParser::parse(Rule::DALA, str);
13    if dala.is_err() {
14        let err = dala.err().unwrap();
15        return Err(DalaError::ParseError(ParseError::new(err.to_string())));
16    }
17
18    Ok(dala.unwrap())
19}