anchor.diff:      ;
   
   multiplicativeExpression 
  -    : unaryExpression
  -      (('*'^ | '/'^ | '%'^ | '&'^) unaryExpression)*
  -    ;
  -
  -unaryExpression 
  -    : prefixOperator unaryExpression
  -    -> ^(PREFIX_EXPR prefixOperator unaryExpression)
  +    : negationComplementExpression
  +      (('*'^ | '/'^ | '%'^ | '&'^) negationComplementExpression)*
  +    ;
  +
  +negationComplementExpression 
  +    : ('-'^ | '~'^ | '$'^) negationComplementExpression
       | exponentiationExpression
       ;
   
   exponentiationExpression
  -    : primary ('**'^ primary)?
  -    ;
  -
  -prefixOperator
  -    : '$' | '-' |'++' | '--' | '~'
  +    : incrementDecrementExpression 
  +      ('**'^ incrementDecrementExpression)?
  +    ;
  +
  +incrementDecrementExpression
  +    : ('++'^ | '--'^) incrementDecrementExpression
  +    | primary
       ;
   
   selfReference
  
positive.code:     FOR_CONTAINMENT;
      ENUM_LIST;
      SUPERCLASS;
      PREFIX_EXPR;
      POSTFIX_EXPR;
      EXISTS_EXPR;
      NONEMPTY_EXPR;
  
negative.code: interpolatedExpressionStart
      : '(' 
      | '{'
      | LIDENTIFIER 
      | UIDENTIFIER 
      | selfReference 
      | nonstringLiteral
      | prefixOperator
      ;
  
  prefixOperator
      : '$' | '-' |'++' | '--' | '~'
      ;
  
  expression
  