anchor.diff:      | expression
       ;
   
  +expression
  +    : assignmentExpression
  +    ;
  +
   //Even though it looks like this is non-associative
   //assignment, it is actually right associative because
   //assignable can be an assignment
   //Note that = is not really an assignment operator, but 
   //can be used to init locals
  -expression 
  +assignmentExpression 
       : implicationExpression 
         ( ('=' | ':=' | '.=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '&&=' | '||=' | '?=') assignable )?
       ;
  
positive.code:     ;
  
  tryCatchFinally
      :
      'try' ( '(' resource (',' resource)* ')' )? block
      ('catch' '(' variable ')' block)*
      ('finally' block)?
      ;
      
  resource
  
negative.code:     ;
      
  cases 
      : caseItem+ defaultCaseItem?
      ;
  
  caseItem
      : 'case' '(' caseCondition ')' block
      ;
  
  defaultCaseItem
      : 'else' block
      ;
  
  caseCondition
      : expressions | isCaseCondition
      ;
  