#ifndef TOKEN_H #define TOKEN_H #include enum class TokenKind { End, Identifier, Number, String, // punctuation LBrace, RBrace, LParen, RParen, LBracket, RBracket, Semicolon, Comma, Assign, Pipe, Dot, DotDot, // operators Plus, Minus, Star, Slash, Percent, LShift, RShift, Bar, Amp, Caret, Bang, EqEq, NotEq, Lt, Lte, Gt, Gte, AndAnd, OrOr, // keywords KwType, KwByteOrder, KwLE, KwBE, KwSkip, KwIf, KwElse, KwWhile, KwAlign, KwSeek, KwRepeat, KwFor, KwIn, KwEOF, KwCriteria, KwRequire, KwBool, KwBreak, KwTrue, KwFalse, KwMatch, KwInline, KwArray, KwConst, KwWhen, KwAt, KwDefault, KwUi, // ui KwEdit, // edit KwReadOnly, // readonly // punctuation additions Arrow, // => Colon, // : // scalar keywords KwU8, KwU16, KwU32, KwU64, KwI8, KwI16, KwI32, KwI64, KwF32, KwF64, }; struct Token { TokenKind kind = TokenKind::End; QString text; qint64 number = 0; int line = 1; int col = 1; }; #endif // TOKEN_H