anchor.diff:  
   color
       : COLOR '[' expr ',' expr ',' expr ']' -> ^(COLOR expr*)
  -    ;
  -
  -transformation
  -    : TRANSFORMATION expr                -> ^(TRANSFORMATION expr)
  -    | TRANSFORMATION2 function_call_args -> ^(TRANSFORMATION2 function_call_args)
       ;
   
   DEF : 'def';
  
positive.code:     | variable_reference
      | vector
      | color
      | transformation
      | '('! expr ')'!
      ;
  
  
negative.code:     | PRIMITIVE_SHAPE function_call_args? (block | ';') -> ^(PRIMITIVE_SHAPE function_call_args? block?)
      | CSG_SHAPE function_call_args? (block | ';')       -> ^(CSG_SHAPE function_call_args? block?)
      | BBOX function_call_args? (block | ';')            -> ^(BBOX function_call_args? block?)
      | TRANSFORMATION expr ';'                           -> ^(TRANSFORMATION expr)
      | TRANSFORMATION2 function_call_args ';'            -> ^(TRANSFORMATION2 function_call_args)
      | LIGHT function_call_args? (block | ';')           -> ^(LIGHT function_call_args? block?)
      | expr ';'!
      ;
  