30 lines
606 B
Rust
30 lines
606 B
Rust
use lua_patterns::LuaPattern;
|
|
use pcre2::bytes::Regex;
|
|
use enum_as_inner::EnumAsInner;
|
|
use crate::tokenizer::types::TokenKind;
|
|
|
|
pub type Syntax<'r> = Vec<Rule<'r>>;
|
|
|
|
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
|
|
}
|