use lua_patterns::LuaPattern; use pcre2::bytes::Regex; use enum_as_inner::EnumAsInner; use crate::tokenizer::types::TokenKind; pub type Syntax<'r> = Vec>; pub enum RegexOrPattern<'r> { Regex(Regex), Pattern(LuaPattern<'r>) } pub enum PatternTypes<'r> { Type1(RegexOrPattern<'r>), Type2([RegexOrPattern<'r>; 2]), Type3([RegexOrPattern<'r>; 3]) } #[derive(EnumAsInner)] pub enum KindOrSubsyntax<'r> { Kind(TokenKind<'r>), Subsyntax(Syntax<'r>) } pub struct Rule<'r> { pub pattern: PatternTypes<'r>, pub group: KindOrSubsyntax<'r>, pub whole_line: bool }