lang: operator: define range and range-inclusive operators
This commit is contained in:
@@ -48,14 +48,16 @@ static const struct ivy_operator operators[] = {
|
||||
OP(BINARY_AND_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
|
||||
OP(BINARY_OR_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
|
||||
OP(BINARY_XOR_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
|
||||
OP(AND, LOGICAL_AND, LEFT, INFIX, BINARY),
|
||||
OP(OR, LOGICAL_OR, LEFT, INFIX, BINARY),
|
||||
OP(LOGICAL_AND, LOGICAL_AND, LEFT, INFIX, BINARY),
|
||||
OP(LOGICAL_OR, LOGICAL_OR, LEFT, INFIX, BINARY),
|
||||
OP(IS, IS, LEFT, INFIX, BINARY),
|
||||
OP(NOT, NOT, LEFT, PREFIX, UNARY),
|
||||
OP(UNDERSTANDS, IS, LEFT, INFIX, BINARY),
|
||||
OP(SELF_ACCESS, SUBSCRIPT, LEFT, INFIX, BINARY),
|
||||
OP(PKG_ACCESS, SUBSCRIPT, LEFT, INFIX, BINARY),
|
||||
OP(SUBSCRIPT, SUBSCRIPT, LEFT, INFIX, BINARY),
|
||||
OP(RANGE, ADDITION, LEFT, INFIX, BINARY),
|
||||
OP(RANGE_INCLUSIVE, ADDITION, LEFT, INFIX, BINARY),
|
||||
|
||||
/* parser-internal pseudo-operators. */
|
||||
OP(MSG, UNARY_MSG, LEFT, POSTFIX, UNARY),
|
||||
@@ -92,6 +94,8 @@ static const struct ivy_operator *operator_symbols[] = {
|
||||
SYM_OP(BINARY_AND_ASSIGN, AMPERSAND_EQUAL),
|
||||
SYM_OP(BINARY_OR_ASSIGN, PIPE_EQUAL),
|
||||
SYM_OP(BINARY_XOR_ASSIGN, CARET_EQUAL),
|
||||
SYM_OP(RANGE, DOUBLE_DOT),
|
||||
SYM_OP(RANGE_INCLUSIVE, DOUBLE_DOT_EQUAL),
|
||||
SYM_OP(SELF_ACCESS, DOUBLE_COLON),
|
||||
SYM_OP(PKG_ACCESS, HYPHEN_RIGHT_ANGLE),
|
||||
|
||||
@@ -101,8 +105,8 @@ static const struct ivy_operator *operator_symbols[] = {
|
||||
static const size_t nr_operator_symbols = sizeof operator_symbols / sizeof operator_symbols[0];
|
||||
|
||||
static const struct ivy_operator *operator_keywords[] = {
|
||||
KW_OP(AND, AND),
|
||||
KW_OP(OR, OR),
|
||||
KW_OP(LOGICAL_AND, AND),
|
||||
KW_OP(LOGICAL_OR, OR),
|
||||
KW_OP(IS, IS),
|
||||
KW_OP(NOT, NOT),
|
||||
KW_OP(UNDERSTANDS, UNDERSTANDS),
|
||||
@@ -195,8 +199,8 @@ const char *ivy_operator_id_to_string(enum ivy_operator_id op)
|
||||
ENUM_STR(IVY_OP_BINARY_AND_ASSIGN);
|
||||
ENUM_STR(IVY_OP_BINARY_OR_ASSIGN);
|
||||
ENUM_STR(IVY_OP_BINARY_XOR_ASSIGN);
|
||||
ENUM_STR(IVY_OP_AND);
|
||||
ENUM_STR(IVY_OP_OR);
|
||||
ENUM_STR(IVY_OP_LOGICAL_AND);
|
||||
ENUM_STR(IVY_OP_LOGICAL_OR);
|
||||
ENUM_STR(IVY_OP_IS);
|
||||
ENUM_STR(IVY_OP_NOT);
|
||||
ENUM_STR(IVY_OP_UNDERSTANDS);
|
||||
|
||||
Reference in New Issue
Block a user