mf_expression/parser/
result.rs1use crate::parser::{Node, ParserError};
2use nohash_hasher::BuildNoHashHasher;
3use std::collections::HashMap;
4
5#[derive(Debug)]
8pub struct ParserResult<'a> {
9 pub root: &'a Node<'a>, pub is_complete: bool, pub metadata:
12 Option<HashMap<usize, NodeMetadata, BuildNoHashHasher<usize>>>, }
14
15#[derive(Debug, Clone)]
18pub struct NodeMetadata {
19 pub span: (u32, u32), }
21
22impl<'a> ParserResult<'a> {
23 pub fn error(&self) -> Result<(), ParserError> {
26 if !self.is_complete {
28 return Err(ParserError::Incomplete);
29 }
30
31 match self.root.first_error() {
33 None => Ok(()),
34 Some(err) => Err(ParserError::NodeError(err.to_string())),
35 }
36 }
37}