diff --git a/src/macro/Parser.yy b/src/macro/Parser.yy
index cb2378cba0fc139200ae0c80aa51929bd0c2e3c7..862c163a3d85d9b7aeac57ec9b08e1eff6b15b8b 100644
--- a/src/macro/Parser.yy
+++ b/src/macro/Parser.yy
@@ -80,8 +80,8 @@ using namespace macro;
 %left INTERSECTION
 %left PLUS MINUS
 %left TIMES DIVIDE
-%precedence UMINUS UPLUS NOT
-%precedence CAST_BOOL CAST_REAL CAST_STRING CAST_TUPLE CAST_ARRAY
+%precedence UNARY NOT
+%precedence CAST
 %nonassoc POWER
 
 %token <string> NAME TEXT QUOTED_STRING NUMBER EOL
@@ -325,21 +325,21 @@ expr : LPAREN expr RPAREN
        { $$ = make_shared<Comprehension>($2, $4, $6, driver.env, @$); }
      | LBRACKET expr FOR expr IN expr WHEN expr RBRACKET
        { $$ = make_shared<Comprehension>($2, $4, $6, $8, driver.env, @$); }
-     | LPAREN BOOL RPAREN expr %prec CAST_BOOL
+     | LPAREN BOOL RPAREN expr %prec CAST
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_bool, $4, driver.env, @$); }
-     | LPAREN REAL RPAREN expr %prec CAST_REAL
+     | LPAREN REAL RPAREN expr %prec CAST
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_real, $4, driver.env, @$); }
-     | LPAREN STRING RPAREN expr %prec CAST_STRING
+     | LPAREN STRING RPAREN expr %prec CAST
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_string, $4, driver.env, @$); }
-     | LPAREN TUPLE RPAREN expr %prec CAST_TUPLE
+     | LPAREN TUPLE RPAREN expr %prec CAST
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_tuple, $4, driver.env, @$); }
-     | LPAREN ARRAY RPAREN expr %prec CAST_ARRAY
+     | LPAREN ARRAY RPAREN expr %prec CAST
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::cast_array, $4, driver.env, @$); }
      | NOT expr
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::logical_not, $2, driver.env, @$); }
-     | MINUS expr %prec UMINUS
+     | MINUS expr %prec UNARY
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::unary_minus, $2, driver.env, @$); }
-     | PLUS expr %prec UPLUS
+     | PLUS expr %prec UNARY
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::unary_plus, $2, driver.env, @$); }
      | LENGTH LPAREN expr RPAREN
        { $$ = make_shared<UnaryOp>(codes::UnaryOp::length, $3, driver.env, @$); }