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}