anchor.diff:  statement		: directive | notStartAction ;
   notStartAction  : start
   			    | shape
  -			    | valueClassDefinition
  +			    | valueExprDefinition
   			    ;
   directive       : baseDecl
   				| prefixDecl
   				;
  -valueClassDefinition : valueClassLabel ('=' valueClassExpr semanticActions | KW_EXTERNAL) ;
  -valueClassExpr  : valueClass ('+' valueClass)* ;
  -valueClassLabel : '$' iri ;
  +valueExprDefinition : valueExprLabel ('=' valueClassExpr semanticActions | KW_EXTERNAL) ;
  +valueClassExpr  : valueClass valueClassJuncts? ;
  +valueClassJuncts : (KW_OR valueClass)+
  +				|  (KW_AND valueClass)+
  +				;
  +valueExprLabel  : '$' (iri | blankNode) ;
   baseDecl 		: KW_BASE  IRIREF ;
   prefixDecl		: KW_PREFIX PNAME_NS IRIREF ;
   start           : KW_START '=' ( shapeLabel |
  
positive.code: 				;
  singleElementGroup : unaryShape ','? ;
  multiElementGroup : unaryShape (',' unaryShape)+ ','? ;
  unaryShape      :  tripleConstraint
  				| include
  				| encapsulatedShape
  				;
  
negative.code: 				;
  blankNode       : BLANK_NODE_LABEL ;
  // BNF: codeDecl ::= '%' iri? CODE
  codeDecl		: '%' (productionName '%' | iri? CODE) ;
  productionName  : PRODUCTION_LABEL ;
  startActions	: codeDecl+ ;
  semanticActions	: codeDecl* ;
  rdfType			: RDF_TYPE ;
  