anchor.diff:      ;
       
   modify
  -    : ^(MODIFY ^(WITH iriRef) deleteClause* insertClause* usingClause* whereClause /*^(WHERE groupGraphPattern)*/)
  -    | ^(MODIFY deleteClause* insertClause* usingClause* whereClause /*^(WHERE groupGraphPattern)*/)
  +    : ^(MODIFY ^(WITH iriRef) deleteClause* insertClause* usingClause* whereClause)
  +    | ^(MODIFY deleteClause* insertClause* usingClause* whereClause)
       ;
     
   deleteClause
  
positive.code:     : ASTERISK -> pathMod(value={$ASTERISK.text})
      | QUESTION_MARK -> pathMod(value={$QUESTION_MARK.text})
      | PLUS -> pathMod(value={$PLUS.text})
      | OPEN_CURLY_BRACE (i1=INTEGER (COMMA (CLOSE_CURLY_BRACE | i2=INTEGER CLOSE_CURLY_BRACE) | CLOSE_CURLY_BRACE) | COMMA i3=INTEGER CLOSE_CURLY_BRACE) -> pathMod(i1={$i1.text}, i2={$i2.text}, i3={$i3.text})
      ;
  
  pathPrimary
      : ^(PATH_PRIMARY i=iriRef) -> pathPrimary(iriRef={$i.st})
      | ^(PATH_PRIMARY A) -> pathPrimary(value={$A.text})
      | ^(PATH_PRIMARY NEGATION pathNegatedPropertySet) -> pathPrimary(value={$NEGATION.text}, pathNegatedPropertySet={$p.st})
      | ^(PATH_PRIMARY p=path) -> pathPrimary(path={$p.st})
      ;
  
  
negative.code:     ;
  
  regexExpression
      : ^(REGEX (e+=expression)+) -> regexExpression(expression={$e})
      ;
      
  subStringExpression
  