anchor.diff:  
   // ----------------------------------------------------------
   mode VineCode;
  -END_OUTPUT:     '}}' -> popMode ; 
  -END_STMT:       '%}' -> popMode ; 
  +END_OUTPUT:     '}}' -> popMode ;
  +END_STMT:       '%}' -> popMode ;
   
  -// Keywords
  -IF:         'if ' ;
  -ELSE:       'elif ' ;
  -ELIF:       'else' ;
  -ENDIF:      'endif' ;
  -TRUE:       'true' ;
  -FALSE:      'false' ;
  -NULL:       'null' ;
  -AND2:       ' and ' -> type(AND) ;
  -OR2:        ' or ' -> type(OR) ;
  -
  -AND:        '&&' ;
  -OR:         '||' ;
  -DOT:        '.' ;
  -COMMA:      ',' ;
   LPAREN:     '(' ;
   RPAREN:     ')' ;
   LBRACK:     '[' ;
  
positive.code: IS_EQ:  ' is ' -> type(EQ) ;
  IS_NEQ: ' is not ' -> type(NEQ) ;
  
  // Comparison op
  LT:     '<' ;
  GT:     '>' ;
  LTE:    '<=' ;
  GTE:    '>=' ;
  
  // TODO complete list. Commands are built-in functions
  COMMAND:    'array' | 'TODO' ;
  SET:        'set' ;
  TO:         'to' ;
  ASSIGN:     '=' ;
  
  
  STRING:         '"' (ESC | ~('\u000B'))*? '"' ;
  
negative.code: 
  //LeftBrace : '{';
  //RightBrace : '}';
  // Separators
  DOT:            '.' ;
  COMMA:          ',' ;
  
  // Unary op
  MINUS:  '-' ;
  NOT:    '!' ;
  NOT2:   'not ' -> type(NOT) ;
  POW:    '^' ; // right assoc
  
  // Arithmetic op
  MUL:    '*' ;
  DIV:    '/' ;
  ADD:    '+' ;
  