Commit 3fd6858f authored by Sébastien Villemot's avatar Sébastien Villemot

Macroprocessor: fix priority of operators

- == and != have now lower priority than <= < >= >, for consistency with the
  Dynare modelling language (and incidentally C and C++, but not Julia).

- ^ has now higher priority and no associativity, for consistency with the
  Dynare modelling language (and usual arithmetic notation).

- & has now higher priority than |, and both have lower priority than + and -,
  but higher than inequality comparators. This is not the same as C and C++ (in
  which & and | are just above && and ||), but this allows for expressions such
  as "a|b == c" to have their most natural semantics (i.e. this will compare
  the union of a and b with c; the C/C++ priority level would have resulted in
  a type error).

Ref #5.
parent 4624a310
......@@ -74,12 +74,16 @@ class MacroDriver;
%left LOGICAL_OR
%left LOGICAL_AND
%left LESS GREATER LESS_EQUAL GREATER_EQUAL EQUAL_EQUAL EXCLAMATION_EQUAL
%left EQUAL_EQUAL EXCLAMATION_EQUAL
%left LESS GREATER LESS_EQUAL GREATER_EQUAL
%nonassoc IN
%nonassoc COLON
%left UNION
%left INTERSECTION
%left PLUS MINUS
%left TIMES DIVIDE UNION INTERSECTION POWER
%left TIMES DIVIDE
%precedence UMINUS UPLUS EXCLAMATION
%nonassoc POWER
%precedence LBRACKET
%type <vector<string>> comma_name
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment