anchor.diff:  
   // primitives
   id: IDENTIFIER;
  -bool: TRUE | FALSE ;
  -char: CHAR_LITERAL;
  -string: STRING_LITERAL | TEXT_BLOCK ;
  -num
  +boolE: TRUE | FALSE ;
  +charE: CHAR_LITERAL;
  +stringE: STRING_LITERAL | TEXT_BLOCK ;
  +numE
       : DECIMAL_LITERAL
       | HEX_LITERAL
       | FLOAT_LITERAL
       | HEX_FLOAT_LITERAL
       ;
  -null: NULL;
  +nullE: NULL;
  
positive.code:     : expression
      | assignment
      | assignmentNull
      | if
      | while
      | for
      | block
      | return
      ;
  
  lambdaParameters: BITOR (id (COMMA id)*) BITOR;
  block: LBRACE lambdaParameters? statement* RBRACE;
  return: RETURN expression;
  
  // class
  class: attributes? FOREIGN? CLASS  id inheritance? LBRACE classBody RBRACE;
  inheritance: IS id ;
  
  // class atributes
  
negative.code:     ;
  // expressions
  expression
      : expression compoundExpression
      | BANG expression
      | LPAREN expression  RPAREN
      | atomExpression
      ;
  
  compoundExpression
       : logic
       | arithBit
       | arithShift
       | arithRange
       | arithAdd
       | arithMul
       | DOT call
       | IS expression
       | elvis
       ;
  
  atomExpression
      : id
      | boolE
      | charE
      | stringE
      | numE
      | nullE
      | listInit
      | mapInit
      | call
  