Separate error

This commit is contained in:
2026-05-14 20:51:43 +02:00
parent 5920a9f236
commit 192769c8ad
2 changed files with 21 additions and 17 deletions
+18
View File
@@ -0,0 +1,18 @@
use crate::Rule;
pub type ParseResult<'a, T> = Result<T, ParseError<'a>>;
#[derive(Debug, Clone)]
pub enum ParseError<'a> {
PreAst(pest::error::Error<Rule>),
Ast {
span: pest::Span<'a>,
error_code: ErrorCode,
error_message: String,
},
}
#[derive(Debug, Clone)]
pub enum ErrorCode {
InvalidStatement = 200,
}
+3 -17
View File
@@ -2,30 +2,16 @@ use pest::Parser;
use pest_derive::Parser; use pest_derive::Parser;
pub mod ast; pub mod ast;
pub mod error;
use ast::*; use ast::*;
use crate::error::{ErrorCode, ParseError, ParseResult};
#[derive(Parser)] #[derive(Parser)]
#[grammar = "./src/grammar.pest"] #[grammar = "./src/grammar.pest"]
pub struct MistParser; pub struct MistParser;
#[derive(Debug, Clone)]
pub enum ParseError<'a> {
PreAst(pest::error::Error<Rule>),
Ast {
span: pest::Span<'a>,
error_code: ErrorCode,
error_message: String,
},
}
type ParseResult<'a, T> = Result<T, ParseError<'a>>;
#[derive(Debug, Clone)]
pub enum ErrorCode {
InvalidStatement = 200,
}
pub fn parse<'a>(source: &'a str) -> ParseResult<'a, Vec<TopLevel>> { pub fn parse<'a>(source: &'a str) -> ParseResult<'a, Vec<TopLevel>> {
let mut pairs = MistParser::parse(Rule::program, source)?; let mut pairs = MistParser::parse(Rule::program, source)?;