use crate::range::Range;
#[derive(Debug, PartialEq, Clone)]
pub enum Token {
CharSetStart, CharSetStartNegative, CharSetEnd,
Optional, OneOrMore, ZeroOrMore, LazyOptional, LazyOneOrMore, LazyZeroOrMore,
LogicOr, LineBoundaryAssertionStart, LineBoundaryAssertionEnd, Dot,
Char(char),
CharRange( char, char), PresetCharSet(char), WordBoundaryAssertion( bool), Repetition(Repetition, bool),
GroupStart, NonCaptureGroupStart, LookAheadGroupStart, LookAheadNegativeGroupStart, NamedCaptureGroupStart(String), LookBehindGroupStart, LookBehindNegativeGroupStart, GroupEnd,
BackReferenceNumber(usize), BackReferenceName(String), }
#[derive(Debug, PartialEq, Clone)]
pub enum Repetition {
Repeat(usize),
RepeatFrom(usize),
RepeatRange(usize, usize),
}
#[derive(Debug, PartialEq, Clone)]
pub struct TokenWithRange {
pub token: Token,
pub range: Range,
}
impl TokenWithRange {
pub fn new(token: Token, range: Range) -> Self {
Self { token, range }
}
}