anchor.diff:  ID_CAP: LETTER_UPPER (LETTER | DIGIT | '_')*;
   ID_UNCAP: LETTER_LOWER (LETTER | DIGIT | '_')*;
   
  +PARAGRAPH: '';
   PIPE: '|';
   HASH: '#';
   DOT: '.';
  
positive.code: messageExchange: atom message* indexAssign?;
  variableDeclaration: VAR id (ASSIGN expression)?;
  returnExpr: RETURN expression;
  atom: selfMessageExchange | access | grouping | literal | parArg;
  selfMessageExchange: multiArgMessage;
  access: id;
  grouping: PAR_OP topExpressions PAR_CL;
  message: nonBinaryMessage | binaryMessage;
  nonBinaryMessage: DOT multiArgMessage | slotAccess | indexAccess;
  multiArgMessage: ID_UNCAP multiArgMessageArgs (ID_CAP multiArgMessageArgs)*;
  multiArgMessageArgs: 
      (PAR_OP (expression (COMMA expression)*)? PAR_CL)
      |
      literal (COMMA literal)*;
  slotAccess: DOT selector;
  indexAccess: SQ_OP expression SQ_CL;
  binaryMessage: BIN_OP binaryMessageOperand;
  
negative.code: pseudoVar: PSEUDO_VAR;
  parArg: COLON id;
  id: ID_CAP | ID_UNCAP;
  primitive: 
      PARAGRAPH ID_UNCAP primitiveOperand* 
      PAR_OP (primitiveArgument (COMMA primitiveArgument)*)? PAR_CL;
  primitiveArgument: expression;
  primitiveOperand: (literal | ID);
  selector: id | binaryOperator | indexOperator;
  binaryOperator: BIN_OP;
  indexOperator: SQ_OP SQ_CL;
  