use strum::Display;
use crate::token::DocumentKind;
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, PartialOrd, Ord, Display)]
pub enum HaltStage {
LookingForLeftParenthesis,
LookingForRightParenthesis,
LookingForTerminator,
End,
}
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, PartialOrd, Ord, Display)]
pub enum Interpolation {
None,
Until(u32),
BraceUntil(u32),
}
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, PartialOrd, Ord, Display)]
pub enum LexerMode<'a> {
Inline,
Script,
DoubleQuoteString(Interpolation),
ShellExecuteString(Interpolation),
DocumentString(DocumentKind, &'a [u8], Interpolation),
Halt(HaltStage),
}