anchor.diff:    PROGRAM : 'program';
     TIMEOUT : 'timeout';
   
  -//following node names seems only used for root node name 
  -//not exactly matching anything, should we still keep it?
  -// Follow tree name are not no longer used
  -//comment out maybe remove
  -//  ARGUMENT : ;
  -//  TYPE : ;
  -//  NAME : ;
  -//  DEFAULT :;
  -//
  -//  ANNOTATE : ;
  -//
  -//  PROJECT :;
  -//  FILTER :;
  -//
  -//  PROPERTY :;
  -//  LITERAL :;
  -//  PARAMETER :;
  -//  SCALAR_LITERAL :;
  -//  MAP_LITERAL :;
  -// // ARRAY_LITERAL :;
  -//  FIELD :;
  -// //* FIELD_ASSIGNMENT;
  -//  ALL_SOURCE :;
  -//  MULTI_SOURCE :;
  -//  EXPRESSION_SOURCE :;
  -//  SEQUENCE_SOURCE :;
  -//  CALL_SOURCE :;
  -//  PIPELINE_STEP :;
  -//  AUTO_ALIAS :;
  -// // BINOP_ADD :;
  -// // BINOP_SUB :;
  -//  BINOP_MULT :;
  -//  BINOP_DIV :;  
  -//  BINOP_MOD :;
  -//
  -//  UNOP_MINUS :;
  -//  UNOP_NOT :;
  -//  
  -//  STATEMENT_SELECTVAR :;
  -//  STATEMENT_QUERY :;
  -//  
  -//  FIELDREF :;
  -//  PATH :;
  -//
  -//  CALL :;
  -//
  -// // INDEXREF :;
  -//  PROPERTYREF :;
  -//  
  -//  LEFT_JOIN :;
  -//  RIGHT_JOIN :;
  -////  FULL_JOIN;
  -//
  -//  ALIAS :;
  -//
  -//  INSERT_VALUES :;
  -//  UPDATE_VALUES :;
  -//
  -//  NO_ARGUMENTS :;
  -
  -
   
   /*------------------------------------------------------------------
    * LEXER RULES
  
positive.code: propertyref
  	: 	DOT nm=ID
  	;
  //operatorCall
  //    : multOp arguments[$expression::in_select]      -> ^(multOp arguments)
  //    | additiveOp arguments[$expression::in_select]  -> ^(additiveOp arguments)
  //    | AND arguments[$expression::in_select]         -> ^(AND arguments)
  //    | OR arguments[$expression::in_select]          -> ^(OR arguments)
  //    ;
  operatorCall
  @init{
  	boolean	in_select = expression_stack.peek().in_select;	
  
negative.code:     	| 'A'..'Z'
      	;
  
  STRING  :  '"' ( ESC_SEQ | ~('\\'| '"') )* '"'
          |  '\'' ( ESC_SEQ | ~('\\' | '\'') )* '\''
  	;
  