mirror of
https://github.com/gbdev/rgbds.git
synced 2026-06-11 11:12:36 +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;
|
int type;
|
||||||
std::variant<std::monostate, uint32_t, std::string> value;
|
std::variant<std::monostate, uint32_t, std::string> value;
|
||||||
|
|
||||||
Token() : type(T_(NUMBER)), value(std::monostate{}) {}
|
Token() : type(T_(NUMBER)), value(std::monostate{}) {
|
||||||
Token(int type_) : type(type_), value(std::monostate{}) {}
|
assume(
|
||||||
Token(int type_, uint32_t value_) : type(type_), value(value_) {}
|
type != T_(NUMBER) && type != T_(STRING) && type != T_(CHARACTER) && type != T_(SYMBOL)
|
||||||
Token(int type_, std::string const &value_) : type(type_), value(std::move(value_)) {}
|
&& type != T_(LABEL) && type != T_(LOCAL) && type != T_(ANON) && type != T_(QMACRO)
|
||||||
Token(int type_, std::string &&value_) : type(type_), value(std::move(value_)) {}
|
);
|
||||||
|
}
|
||||||
|
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.
|
// This map lists all RGBASM keywords which `yylex_NORMAL` lexes as identifiers.
|
||||||
|
|||||||
Reference in New Issue
Block a user