- Add inline, array, const, and match statement syntax - Add true/false keywords and deflate() decompression function - Introduce DslKeys enum for internal metadata key management - Improve parse_here delegation pattern with variable merging - Remove deprecated bracket attribute syntax (use ui() instead) - Enhance script type editor with additional functionality - Remove obsolete install.cmd Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
77 lines
1.1 KiB
C
77 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,
|
|
|
|
// 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
|