anchor.diff:  
   // From Harlowe:
   // This includes all forms of Unicode 6 whitespace except \n, \r, and Ogham space mark.
  -//WS:                    [ \f\t\v\u00a0\u2000-\u200a\u2028\u2029\u202f\u205f\u3000]+ -> skip ;
  -WS_CODE:        [ \t]+ -> channel(HIDDEN) ;
  -//NL:         '\r'? '\n' -> channel(HIDDEN) ;
  +//WS_CODE:    [ \f\t\v\u00a0\u2000-\u200a\u2028\u2029\u202f\u205f\u3000]+ -> skip ;
  +WS_CODE:    [ \t]+ -> channel(HIDDEN) ;
   
   ERROR_CHAR: . ;
   
   // fragments
  -fragment ESC:           '\\"' | '\\\\' ; // 2-char sequences \" and \\
  -//fragment ESC:           '\\' [trn"\\] ; // \t \r \n \" and \\
  -fragment DIGIT:         [0-9] ;
  -fragment ID_LETTER:     [A-Za-z\u0080-\uFFFF_] ; // goes from 41 ('A') to z then 128 to 65535 (unicode)
  +fragment ESC:       '\\"' | '\\\\' ; // 2-char sequences \" and \\
  +fragment DIGIT:     [0-9] ;
  +fragment ID_LETTER: [A-Za-z\u0080-\uFFFF_] ; // goes from 41 ('A') to z then 128 to 65535 (unicode)
  
positive.code: lexer grammar VineLexer;
  
  tokens { TYPE_STMT_END }
  /*
   * Lexer Rules
   */
  
  //channels { WSCHANNEL, MYHIDDEN }
  
  // Default "mode": Everything that is outside of tags '{{ .. }}', '{% .. %}' or '{# .. #}'
  
  OUTPUT:         '{{' -> pushMode(MODE_CODE) ;
  STMT:           '{%' -> pushMode(MODE_CODE) ;
  //LINE_COMMENT:   '#' ~('#')*? NL -> channel(HIDDEN);
  BLOCK_COMMENT:  '{#' .*? '#}' ;
  
  
negative.code: //        )+ ;
  
  // ----------------------------------------------------------
  mode VineCode;
  END_OUTPUT_WS:  '}}' WS -> popMode ; 
  END_OUTPUT:     '}}' -> popMode ; 
  END_STMT:       '%}' -> popMode ; 
  
  // Keywords
  IF:         'if ' ;
  ELSE:       'elif ' ;
  ELIF:       'else' ;
  END:        'end' ;
  TRUE:       'true' ;
  FALSE:      'false' ;
  NULL:       'null' ;
  AND2:       ' and ' ;
  OR2:        ' or ' ;
  
  AND:        '&&' ;
  OR:         '||' ;
  DOT:        '.' ;
  COMMA:      ',' ;
  LPAREN:     '(' ;
  RPAREN:     ')' ;
  LBRACK:     '[' ;
  RBRACK:     ']' ;
  
  // unary op
  MINUS:  '-' ;
  