diff --git a/src/protocol/mod.rs b/src/protocol/mod.rs index 45f880fbe64dec700ef72086e324877299969e5b..b60caaf6e913262eeb6de01dc0cdc5f74a85aac7 100644 --- a/src/protocol/mod.rs +++ b/src/protocol/mod.rs @@ -10,7 +10,7 @@ pub(crate) mod ast_printer; use std::sync::Mutex; use crate::collections::{StringPool, StringRef}; -use crate::protocol::ast::*; +pub use crate::protocol::ast::*; use crate::protocol::eval::*; use crate::protocol::input_source::*; use crate::protocol::parser::*; @@ -51,7 +51,7 @@ pub enum ComponentCreationError { impl ProtocolDescription { pub fn parse(buffer: &[u8]) -> Result { let source = InputSource::new(String::new(), Vec::from(buffer)); - let mut parser = Parser::new(); + let mut parser = Parser::new()?; parser.feed(source).expect("failed to feed source"); if let Err(err) = parser.parse() { @@ -223,10 +223,10 @@ pub struct ProtocolDescriptionBuilder { } impl ProtocolDescriptionBuilder { - pub fn new() -> Self { - return Self{ - parser: Parser::new(), - } + pub fn new() -> Result { + return Ok(Self{ + parser: Parser::new()?, + }) } pub fn add(&mut self, filename: String, buffer: Vec) -> Result<(), ParseError> {