From 321f70df214b836c602a1ccf9d15c0347e95345d Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 12 Aug 2019 16:57:39 -0400
Subject: [PATCH] macro processor: consolidate precedence rules around unary
 +/- and casting

---
 src/macro/Parser.yy | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/macro/Parser.yy b/src/macro/Parser.yy
index cb2378cb..862c163a 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, @$); }
-- 
GitLab