XPlor/libs/dsl/Token.h
njohnson 39230139b9 Update DSL parser and interpreter
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:08:38 -05:00

79 lines
1.1 KiB
C

#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,
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
// 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