1use thiserror::Error;
2
3use crate::{ast, grammar::CommandParser};
4
5#[derive(Error, Debug)]
7pub enum Error {
8 #[error("unsuccessful parse")]
9 UnsuccessfulParse,
10}
11
12pub struct Parser {
13 parser: CommandParser,
14}
15
16impl Default for Parser {
17 fn default() -> Self {
18 Parser {
19 parser: CommandParser::new(),
20 }
21 }
22}
23
24impl Parser {
25 pub fn parse(&mut self, input: &str) -> Result<ast::Command, Error> {
26 self.parser
27 .parse(input)
28 .map_err(|_| Error::UnsuccessfulParse)
29 }
30}