use std::num::ParseIntError;
#[derive(Clone, Debug, thiserror::Error, PartialEq)]
pub enum Error {
#[error("error lexing input: {0}")]
Lexing(#[from] LexingError),
#[error("error building ActionToken tree: {0}")]
TokenTree(#[from] TokenTreeError),
}
#[derive(Clone, Debug, thiserror::Error, PartialEq)]
pub enum TokenTreeError {
#[error("DSL input is too deeply nested to parse")]
TooDeeplyNested,
#[error("syntax error encountered during parsing; expected one of {0:?}")]
SyntaxError(Vec<String>),
#[error("failed to parse input")]
ParseFailed,
}
#[derive(Clone, Debug, Default, thiserror::Error, PartialEq)]
pub enum LexingError {
#[default]
#[error("bad input")]
BadInput,
#[error("unexpected or incomplete tokens starting near offset {0}: {1:?}")]
UnexpectedSequence(usize, String),
#[error("failed to parse escape sequence: {0}")]
InvalidEscape(#[from] InvalidEscapeError),
#[error("failed to parse integer: {0}")]
InvalidNumber(#[from] ParseIntError),
}
#[derive(Clone, Debug, thiserror::Error, PartialEq)]
#[error(transparent)]
pub struct InvalidEscapeError(pub(crate) unescape_zero_copy::Error);