use crate::records::location::Location;

#[allow(non_camel_case_types)]
#[repr(u32)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum LexemeType {
    Eof = 0,
    Char_END = 256,
    Equal,
    LessEqual,
    GreaterEqual,
    Dot2,
    Dot3,
    SkinnyArrow,
    DoubleColon,
    InterpStringBegin,
    InterpStringMid,
    InterpStringEnd,
    AddAssign,
    SubAssign,
    MulAssign,
    DivAssign,
    FloorDivAssign,
    ModAssign,
    PowAssign,
    ConcatAssign,
    RawString,
    QuotedString,
    Number,
    Name,
    Comment,
    BlockComment,
    Attribute,
    AttributeOpen,
    BrokenString,
    BrokenComment,
    BrokenUnicode,
    BrokenInterpDoubleBrace,
    Error,
    ReservedAnd,
    ReservedBreak,
    ReservedDo,
    ReservedElse,
    ReservedElseif,
    ReservedEnd,
    ReservedFalse,
    ReservedFor,
    ReservedFunction,
    ReservedIf,
    ReservedIn,
    ReservedLocal,
    ReservedNil,
    ReservedNot,
    ReservedOr,
    ReservedRepeat,
    ReservedReturn,
    ReservedThen,
    ReservedTrue,
    ReservedUntil,
    ReservedWhile,
    ReservedType,
    ReservedExport,
    ReservedContinue,
    ReservedSelf,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Comment {
    pub r#type: crate::records::lexeme::Type,
    pub location: Location,
}
