Documentation
use logos::Logos;

#[derive(Logos, Debug, PartialEq, Clone)]
#[logos(skip r"[ \t\r\n\f]+|;.*")]
pub(super) enum Token<'a> {
    #[token("(")]
    LParen,

    #[token(")")]
    RParen,

    #[regex("(?i)define")]
    Definition,

    #[regex("(?i)domain")]
    DomainName,

    #[regex(":(?i)requirements")]
    Requirements,

    #[regex(":[a-zA-Z][a-zA-Z0-9-_]*")]
    Requirement(&'a str),

    #[regex(":(?i)types")]
    Types,

    #[regex(":(?i)predicates")]
    Predicates,

    #[regex(":(?i)action")]
    Action,

    #[regex(":(?i)parameters")]
    Parameters,

    #[regex(":(?i)precondition")]
    Precondition,

    #[regex(":(?i)effect")]
    Effect,

    #[regex(":(?i)init")]
    Init,

    #[regex("=")]
    Equal,

    #[regex("(?i)and")]
    And,

    #[regex("(?i)or")]
    Or,

    #[regex("(?i)not")]
    Not,

    #[token("-")]
    TypeSeparator,

    #[regex("[a-zA-Z?][a-zA-Z0-9-_]*")]
    Name(&'a str),
}