anchor.diff:    ;
   
   binary
  -  :  term (binop term)*
  +  :  term (binop binary)?
     ;
   
   term
  
positive.code: 
  control
    :  'if' seq 'then' seq ('elseif' seq 'then' seq)* ('else' seq)? 'end'
    |  'match' seq? case* ('else' seq)? 'end'
    |  'while' seq 'do' seq ('else' seq)? 'end'
    |  'do' seq 'while' seq 'end'
    |  'for' ID oftype? 'in' seq 'do' seq ('else' seq)? 'end'
    |  'try' seq ('else' seq)? ('then' seq)? 'end'
    ;
  
  case
    :  '|' seq? ('as' idseq oftype)? ('when' seq)? body?
    ;
  
  postfix
  
negative.code:   :  'and' | 'or' | 'xor' // logic
    |  '+' | '-' | '*' | '/' | '%' // arithmetic
    |  '<<' | '>>' // shift
    |  'is' | '==' | '!=' | '<' | '<=' | '>=' | '>' // comparison
    |  assign
    ;
  
  