XPlor/libs/dsl/Token.h

77 lines
1.1 KiB
C
Raw Normal View History

2026-01-01 22:18:25 -05:00
#ifndef TOKEN_H
#define TOKEN_H
#include <QString>
enum class TokenKind {
End,
Identifier,
Number,
String,
// punctuation
LBrace, RBrace,
LParen, RParen,
LBracket, RBracket,
Semicolon, Comma,
Assign,
Pipe,
Dot,
2026-01-01 22:18:25 -05:00
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,
// punctuation additions
Arrow, // =>
Colon, // :
2026-01-01 22:18:25 -05:00
// scalar keywords
KwU8, KwU16, KwU32, KwU64,
KwI8, KwI16, KwI32, KwI64,
KwF32, KwF64,
2026-01-01 22:18:25 -05:00
};
struct Token {
TokenKind kind = TokenKind::End;
QString text;
qint64 number = 0;
int line = 1;
int col = 1;
};
#endif // TOKEN_H