anchor.diff:  
   argList
       : nil -> nil
  -    | OPEN_BRACE DISTINCT? expression ( COMMA expression )* CLOSE_BRACE -> DISTINCT? expression*
  +    | OPEN_BRACE DISTINCT? expression (COMMA expression)* CLOSE_BRACE -> DISTINCT? expression*
       ;
   
   expressionList
  -    : ( nil | OPEN_BRACE expression ( COMMA expression )* CLOSE_BRACE ) -> ^(EXPRESSION_LIST nil* expression*)
  +    : (nil | OPEN_BRACE expression (COMMA expression)* CLOSE_BRACE) -> ^(EXPRESSION_LIST nil* expression*)
       ;	
   
   constructTemplate
  
positive.code:     ;
  
  constructTriples
      : triplesSameSubject ( DOT triplesSameSubject )* DOT? -> triplesSameSubject+
      ;
  
  triplesSameSubject
      : varOrTerm propertyListNotEmpty[(CommonTree)$varOrTerm.tree] -> ^(TRIPLE propertyListNotEmpty)
      | triplesNode propertyListNotEmpty[new CommonTree(new CommonToken(BLANK_NODE,"[]"))]? -> ^(TRIPLE triplesNode (/*^(SUBJECT BLANK_NODE)*/ propertyListNotEmpty)?) 
      ;
  
  propertyListNotEmpty[CommonTree subject]
      : verb objectList (SEMICOLON (verb objectList)?)* -> (^(SUBJECT {new CommonTree(subject)}) ^(PREDICATE verb)  objectList)+
      ;
  
  objectList
      : graphNode ( COMMA graphNode )* -> ^(OBJECT graphNode)+
      ;
  
  verb
  
negative.code:     ;
  
  triplesSameSubjectPath
      : varOrTerm propertyListNotEmptyPath -> ^(TRIPLES_SAME_SUBJECT ^(SUBJECT varOrTerm) propertyListNotEmptyPath)
      | triplesNode propertyListNotEmpty? -> ^(TRIPLES_SAME_SUBJECT  triplesNode (^(SUBJECT BLANK_NODE) propertyListNotEmpty)?)
      ;
    
  propertyListNotEmptyPath
      : verbSimpleOrPath objectList (SEMICOLON (verbSimpleOrPath objectList)?)* -> (^(PREDICATE verbSimpleOrPath) objectList)+
      ;
    
  verbSimpleOrPath
  