mirror of
https://github.com/gbdev/rgbds.git
synced 2026-06-09 18:22:35 +00:00
Add assume checks for expected Token types, like RPNValue has for RPNCommands
This commit is contained in:
+25
-5
@@ -49,11 +49,31 @@ struct Token {
|
||||
int type;
|
||||
std::variant<std::monostate, uint32_t, std::string> value;
|
||||
|
||||
Token() : type(T_(NUMBER)), value(std::monostate{}) {}
|
||||
Token(int type_) : type(type_), value(std::monostate{}) {}
|
||||
Token(int type_, uint32_t value_) : type(type_), value(value_) {}
|
||||
Token(int type_, std::string const &value_) : type(type_), value(std::move(value_)) {}
|
||||
Token(int type_, std::string &&value_) : type(type_), value(std::move(value_)) {}
|
||||
Token() : type(T_(NUMBER)), value(std::monostate{}) {
|
||||
assume(
|
||||
type != T_(NUMBER) && type != T_(STRING) && type != T_(CHARACTER) && type != T_(SYMBOL)
|
||||
&& type != T_(LABEL) && type != T_(LOCAL) && type != T_(ANON) && type != T_(QMACRO)
|
||||
);
|
||||
}
|
||||
Token(int type_) : type(type_), value(std::monostate{}) {
|
||||
assume(
|
||||
type != T_(NUMBER) && type != T_(STRING) && type != T_(CHARACTER) && type != T_(SYMBOL)
|
||||
&& type != T_(LABEL) && type != T_(LOCAL) && type != T_(ANON) && type != T_(QMACRO)
|
||||
);
|
||||
}
|
||||
Token(int type_, uint32_t value_) : type(type_), value(value_) { assume(type == T_(NUMBER)); }
|
||||
Token(int type_, std::string const &value_) : type(type_), value(std::move(value_)) {
|
||||
assume(
|
||||
type == T_(STRING) || type == T_(CHARACTER) || type == T_(SYMBOL) || type == T_(LABEL)
|
||||
|| type == T_(LOCAL) || type == T_(ANON) || type == T_(QMACRO)
|
||||
);
|
||||
}
|
||||
Token(int type_, std::string &&value_) : type(type_), value(std::move(value_)) {
|
||||
assume(
|
||||
type == T_(STRING) || type == T_(CHARACTER) || type == T_(SYMBOL) || type == T_(LABEL)
|
||||
|| type == T_(LOCAL) || type == T_(ANON) || type == T_(QMACRO)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
// This map lists all RGBASM keywords which `yylex_NORMAL` lexes as identifiers.
|
||||
|
||||
Reference in New Issue
Block a user