operator: add script-block pseudo-operator

This commit is contained in:
2026-05-17 15:28:29 +01:00
parent 34114ca451
commit 05dcf1f8b6
2 changed files with 15 additions and 10 deletions
+14 -10
View File
@@ -18,10 +18,6 @@
/* clang-format off */ /* clang-format off */
static const struct operator_info operators[] = { static const struct operator_info operators[] = {
OP(SUBEXPR, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(ARRAY_START, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(PAREN, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(HASHTABLE_START, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(ACCESS, MEMBER_ACCESS, LEFT, INFIX, BINARY), OP(ACCESS, MEMBER_ACCESS, LEFT, INFIX, BINARY),
OP(CONDITIONAL_ACCESS, MEMBER_ACCESS, LEFT, INFIX, BINARY), OP(CONDITIONAL_ACCESS, MEMBER_ACCESS, LEFT, INFIX, BINARY),
OP(STATIC_ACCESS, STATIC_ACCESS, LEFT, INFIX, BINARY), OP(STATIC_ACCESS, STATIC_ACCESS, LEFT, INFIX, BINARY),
@@ -73,12 +69,20 @@ static const struct operator_info operators[] = {
OP(LEFT_SHIFT, BITWISE, LEFT, INFIX, BINARY), OP(LEFT_SHIFT, BITWISE, LEFT, INFIX, BINARY),
OP(RIGHT_SHIFT, BITWISE, LEFT, INFIX, BINARY), OP(RIGHT_SHIFT, BITWISE, LEFT, INFIX, BINARY),
OP(ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
OP(ADD_ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(ADD_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
OP(SUBTRACT_ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(SUBTRACT_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
OP(MULTIPLY_ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(MULTIPLY_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
OP(DIVIDE_ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(DIVIDE_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
OP(MODULO_ASSIGN, ASSIGN, LEFT, INFIX, BINARY), OP(MODULO_ASSIGN, ASSIGN, RIGHT, INFIX, BINARY),
/* these are not real operators, and are just used internally by the
* parser. */
OP(SUBEXPR, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(ARRAY_START, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(PAREN, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(HASHTABLE_START, PARENTHESIS, LEFT, PREFIX, UNARY),
OP(SCRIPTBLOCK, PARENTHESIS, LEFT, PREFIX, UNARY),
}; };
static const size_t nr_operators = sizeof operators / sizeof operators[0]; static const size_t nr_operators = sizeof operators / sizeof operators[0];
+1
View File
@@ -104,6 +104,7 @@ enum operator_id {
OP_CAST, OP_CAST,
OP_SUBEXPR, OP_SUBEXPR,
OP_PAREN, OP_PAREN,
OP_SCRIPTBLOCK,
OP_ARRAY_START, OP_ARRAY_START,
OP_HASHTABLE_START, OP_HASHTABLE_START,
}; };