diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 4c63286be1a..5584a02b483 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -49,7 +49,7 @@ expression ; arrowTupleExpression - : assignmentOperator ("->" assignmentOperator)* + : disjunction ("->" disjunction)* ; disjunction @@ -65,13 +65,12 @@ equalityComparison ; comparison - : namedInfixOrTypeExpression (comparisonOperation namedInfixOrTypeExpression)* + : namedInfix (comparisonOperation namedInfix)* ; -namedInfixOrTypeExpression +namedInfix : elvisExpression (inOperation elvisExpression)* : elvisExpression (isOperation isRHS)? - : elvisExpression (typeOperation type)? ; elvisExpression @@ -91,7 +90,11 @@ additiveExpression ; multiplicativeExpression - : prefixUnaryExpression (multiplicativeOperation prefixUnaryExpression)* + : typeRHS (multiplicativeOperation typeRHS)* + ; + +typeRHS + : prefixUnaryExpression typeOperation prefixUnaryExpression ; prefixUnaryExpression @@ -191,11 +194,6 @@ assignmentOperator : "+=" : "-=" : "*=" : "/=" : "%=" ; -unOpExpression - : expression postfixUnaryOperation - : prefixUnaryOperation expression - ; - prefixUnaryOperation : "-" : "+" : "++" : "--"