anchor.diff:  fragment LOG: L O G;
   fragment ENRICH: E N R I C H;
   fragment TRANSFORM: T R A N S F O R M;
  +fragment STRINGTYPE: S T R I N G;
  +fragment INTEGERTYPE: I N T E G E R;
  +fragment BOOLEANTYPE: B O O L E A N;
  +fragment DOUBLETYPE: D O U B L E;
  +fragment FLOATTYPE: F L O A T;
  +fragment LONGTYPE: L O N G;
  +fragment SHORTTYPE: S H O R T;
  +fragment XMLTYPE: X M L;
  +fragment JSONTYPE: J S O N;
  +fragment VAR: V A R;
  +
  +fragment TYPEDEFINITION
  +    : INTEGERTYPE
  +    | STRINGTYPE
  +    | BOOLEANTYPE
  +    | LONGTYPE
  +    | SHORTTYPE
  +    | FLOATTYPE
  +    | DOUBLETYPE
  +    | XMLTYPE
  +    | JSONTYPE
  +    ;
  +
   
   // case insensitive lexer matching
   fragment A:('a'|'A');
  
positive.code: 
  ARROWX: ARROW;
  
  
  // LEXER: Keywords
  
  
negative.code: 
  WHITESPACE
      : [ \t]+ -> skip ;
  
  
  // LEXER: fragments to evaluate only within statements
  
  