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.issue#70
parent
4624a3104d
commit
3fd6858fb8
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue