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_FUNC);
ENUM_STR(KW_IF);
ENUM_STR(KW_ELSEIF);
ENUM_STR(KW_ELSE);
default:
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)
{
switch (op) {
ENUM_STR(OP_BAND);
ENUM_STR(OP_BOR);
ENUM_STR(OP_BXOR);
ENUM_STR(OP_BNOT);
ENUM_STR(OP_SHL);
ENUM_STR(OP_SHR);
ENUM_STR(OP_EQ);
ENUM_STR(OP_NE);
ENUM_STR(OP_GT);
ENUM_STR(OP_LT);
ENUM_STR(OP_GE);
ENUM_STR(OP_LE);
ENUM_STR(OP_MATCH);
ENUM_STR(OP_NOTMATCH);
ENUM_STR(OP_REPLACE);
ENUM_STR(OP_LIKE);
ENUM_STR(OP_NOTLIKE);
ENUM_STR(OP_IN);
ENUM_STR(OP_NOTIN);
ENUM_STR(OP_CONTAINS);
ENUM_STR(OP_NOTCONTAINS);
ENUM_STR(OP_AND);
ENUM_STR(OP_OR);
ENUM_STR(OP_XOR);
ENUM_STR(OP_NOT);
ENUM_STR(OP_SPLIT);
ENUM_STR(OP_JOIN);
ENUM_STR(OP_IS);
ENUM_STR(OP_ISNOT);
ENUM_STR(OP_AS);
ENUM_STR(TKOP_BAND);
ENUM_STR(TKOP_BOR);
ENUM_STR(TKOP_BXOR);
ENUM_STR(TKOP_BNOT);
ENUM_STR(TKOP_SHL);
ENUM_STR(TKOP_SHR);
ENUM_STR(TKOP_EQ);
ENUM_STR(TKOP_NE);
ENUM_STR(TKOP_GT);
ENUM_STR(TKOP_LT);
ENUM_STR(TKOP_GE);
ENUM_STR(TKOP_LE);
ENUM_STR(TKOP_MATCH);
ENUM_STR(TKOP_NOTMATCH);
ENUM_STR(TKOP_REPLACE);
ENUM_STR(TKOP_LIKE);
ENUM_STR(TKOP_NOTLIKE);
ENUM_STR(TKOP_IN);
ENUM_STR(TKOP_F);
ENUM_STR(TKOP_NOTIN);
ENUM_STR(TKOP_CONTAINS);
ENUM_STR(TKOP_NOTCONTAINS);
ENUM_STR(TKOP_AND);
ENUM_STR(TKOP_OR);
ENUM_STR(TKOP_XOR);
ENUM_STR(TKOP_NOT);
ENUM_STR(TKOP_SPLIT);
ENUM_STR(TKOP_JOIN);
ENUM_STR(TKOP_IS);
ENUM_STR(TKOP_ISNOT);
ENUM_STR(TKOP_AS);
default:
return "<unknown>";
}
+35 -33
View File
@@ -34,44 +34,46 @@ enum token_keyword {
__KW_INDEX_BASE = 200,
KW_FUNC,
KW_IF,
KW_ELSEIF,
KW_ELSE,
__KW_INDEX_LIMIT,
};
enum token_operator {
OP_NONE = 0,
__OP_INDEX_BASE = 300,
OP_BAND,
OP_BOR,
OP_BXOR,
OP_BNOT,
OP_SHL,
OP_SHR,
OP_EQ,
OP_NE,
OP_GT,
OP_LT,
OP_GE,
OP_LE,
OP_MATCH,
OP_NOTMATCH,
OP_REPLACE,
OP_LIKE,
OP_NOTLIKE,
OP_IN,
OP_NOTIN,
OP_CONTAINS,
OP_NOTCONTAINS,
OP_AND,
OP_OR,
OP_XOR,
OP_NOT,
OP_SPLIT,
OP_JOIN,
OP_IS,
OP_ISNOT,
OP_AS,
__OP_INDEX_LIMIT,
TKOP_NONE = 0,
__TKOP_INDEX_BASE = 300,
TKOP_F,
TKOP_BAND,
TKOP_BOR,
TKOP_BXOR,
TKOP_BNOT,
TKOP_SHL,
TKOP_SHR,
TKOP_EQ,
TKOP_NE,
TKOP_GT,
TKOP_LT,
TKOP_GE,
TKOP_LE,
TKOP_MATCH,
TKOP_NOTMATCH,
TKOP_REPLACE,
TKOP_LIKE,
TKOP_NOTLIKE,
TKOP_IN,
TKOP_NOTIN,
TKOP_CONTAINS,
TKOP_NOTCONTAINS,
TKOP_AND,
TKOP_OR,
TKOP_XOR,
TKOP_NOT,
TKOP_SPLIT,
TKOP_JOIN,
TKOP_IS,
TKOP_ISNOT,
TKOP_AS,
__TKOP_INDEX_LIMIT,
};
enum token_symbol {