parse: lex: add a range of operator tokens

This commit is contained in:
2026-05-12 22:54:50 +01:00
parent 64903c821c
commit 2235d8593b
2 changed files with 67 additions and 63 deletions
+32 -30
View File
@@ -122,6 +122,7 @@ const char *token_keyword_to_string(enum token_keyword keyword)
ENUM_STR(KW_NONE); ENUM_STR(KW_NONE);
ENUM_STR(KW_FUNC); ENUM_STR(KW_FUNC);
ENUM_STR(KW_IF); ENUM_STR(KW_IF);
ENUM_STR(KW_ELSEIF);
ENUM_STR(KW_ELSE); ENUM_STR(KW_ELSE);
default: default:
return "<unknown>"; return "<unknown>";
@@ -175,36 +176,37 @@ const char *token_symbol_to_string(enum token_symbol sym)
const char *token_operator_to_string(enum token_operator op) const char *token_operator_to_string(enum token_operator op)
{ {
switch (op) { switch (op) {
ENUM_STR(OP_BAND); ENUM_STR(TKOP_BAND);
ENUM_STR(OP_BOR); ENUM_STR(TKOP_BOR);
ENUM_STR(OP_BXOR); ENUM_STR(TKOP_BXOR);
ENUM_STR(OP_BNOT); ENUM_STR(TKOP_BNOT);
ENUM_STR(OP_SHL); ENUM_STR(TKOP_SHL);
ENUM_STR(OP_SHR); ENUM_STR(TKOP_SHR);
ENUM_STR(OP_EQ); ENUM_STR(TKOP_EQ);
ENUM_STR(OP_NE); ENUM_STR(TKOP_NE);
ENUM_STR(OP_GT); ENUM_STR(TKOP_GT);
ENUM_STR(OP_LT); ENUM_STR(TKOP_LT);
ENUM_STR(OP_GE); ENUM_STR(TKOP_GE);
ENUM_STR(OP_LE); ENUM_STR(TKOP_LE);
ENUM_STR(OP_MATCH); ENUM_STR(TKOP_MATCH);
ENUM_STR(OP_NOTMATCH); ENUM_STR(TKOP_NOTMATCH);
ENUM_STR(OP_REPLACE); ENUM_STR(TKOP_REPLACE);
ENUM_STR(OP_LIKE); ENUM_STR(TKOP_LIKE);
ENUM_STR(OP_NOTLIKE); ENUM_STR(TKOP_NOTLIKE);
ENUM_STR(OP_IN); ENUM_STR(TKOP_IN);
ENUM_STR(OP_NOTIN); ENUM_STR(TKOP_F);
ENUM_STR(OP_CONTAINS); ENUM_STR(TKOP_NOTIN);
ENUM_STR(OP_NOTCONTAINS); ENUM_STR(TKOP_CONTAINS);
ENUM_STR(OP_AND); ENUM_STR(TKOP_NOTCONTAINS);
ENUM_STR(OP_OR); ENUM_STR(TKOP_AND);
ENUM_STR(OP_XOR); ENUM_STR(TKOP_OR);
ENUM_STR(OP_NOT); ENUM_STR(TKOP_XOR);
ENUM_STR(OP_SPLIT); ENUM_STR(TKOP_NOT);
ENUM_STR(OP_JOIN); ENUM_STR(TKOP_SPLIT);
ENUM_STR(OP_IS); ENUM_STR(TKOP_JOIN);
ENUM_STR(OP_ISNOT); ENUM_STR(TKOP_IS);
ENUM_STR(OP_AS); ENUM_STR(TKOP_ISNOT);
ENUM_STR(TKOP_AS);
default: default:
return "<unknown>"; return "<unknown>";
} }
+35 -33
View File
@@ -34,44 +34,46 @@ enum token_keyword {
__KW_INDEX_BASE = 200, __KW_INDEX_BASE = 200,
KW_FUNC, KW_FUNC,
KW_IF, KW_IF,
KW_ELSEIF,
KW_ELSE, KW_ELSE,
__KW_INDEX_LIMIT, __KW_INDEX_LIMIT,
}; };
enum token_operator { enum token_operator {
OP_NONE = 0, TKOP_NONE = 0,
__OP_INDEX_BASE = 300, __TKOP_INDEX_BASE = 300,
OP_BAND, TKOP_F,
OP_BOR, TKOP_BAND,
OP_BXOR, TKOP_BOR,
OP_BNOT, TKOP_BXOR,
OP_SHL, TKOP_BNOT,
OP_SHR, TKOP_SHL,
OP_EQ, TKOP_SHR,
OP_NE, TKOP_EQ,
OP_GT, TKOP_NE,
OP_LT, TKOP_GT,
OP_GE, TKOP_LT,
OP_LE, TKOP_GE,
OP_MATCH, TKOP_LE,
OP_NOTMATCH, TKOP_MATCH,
OP_REPLACE, TKOP_NOTMATCH,
OP_LIKE, TKOP_REPLACE,
OP_NOTLIKE, TKOP_LIKE,
OP_IN, TKOP_NOTLIKE,
OP_NOTIN, TKOP_IN,
OP_CONTAINS, TKOP_NOTIN,
OP_NOTCONTAINS, TKOP_CONTAINS,
OP_AND, TKOP_NOTCONTAINS,
OP_OR, TKOP_AND,
OP_XOR, TKOP_OR,
OP_NOT, TKOP_XOR,
OP_SPLIT, TKOP_NOT,
OP_JOIN, TKOP_SPLIT,
OP_IS, TKOP_JOIN,
OP_ISNOT, TKOP_IS,
OP_AS, TKOP_ISNOT,
__OP_INDEX_LIMIT, TKOP_AS,
__TKOP_INDEX_LIMIT,
}; };
enum token_symbol { enum token_symbol {