anchor.diff:  
   WS : [ \n\r\t\u000C] -> skip ;
   COMMENT : '/*' .*? '*/' -> skip;
  -
  +LINE_COMMENT : LineComment -> skip;
  +
  +fragment LineComment
  +   : '//' ~ [\r\n]*
  +   ;
  +
  
positive.code: 
  constant : INTEGER_CONSTANT | FLOAT_CONSTANT | BOOLEAN_CONSTANT | STRING_CONSTANT | NULL_CONSTANT;
  
  
  clauseExpression      : '[' clause ']' ;
  
  clause       : 'rename' renameParam (',' renameParam)*     #renameClause
  
negative.code: grammar VTL;
  start : statement+ EOF;
  
  statement : assignment | expression ;
  
  nativeCall         : functionName=NATIVE_FUNCTIONS LPAR functionParameters? RPAR ;
  functionCall       : functionName=REG_IDENTIFIER LPAR functionParameters? RPAR ;
  
  functionParameters : namedExpression ( COMMA namedExpression)*
                     | expression ( COMMA expression )*
                     | expression ( COMMA expression )* COMMA namedExpression ( COMMA namedExpression)* ;
  
  
  namedExpression     : name=REG_IDENTIFIER COLON expression ;
  
  // Expressions
  expression : LPAR expression RPAR
             | nativeCall
             | functionCall
             // | unaryOperators
             | <assoc=right> expression operatorConcat expression
             | datasetExpression
             | expression clauseExpression
             | variable
  