anchor.diff:  statement		: directive | notStartAction ;
   notStartAction  : start
   			    | shape
  -			    | valueExprDefinition
   			    ;
   directive       : baseDecl
   				| prefixDecl
   				;
  -valueExprDefinition : valueExprLabel ('=' valueClassExpr semanticActions | KW_EXTERNAL) ;
  -valueClassExpr  : valueClass valueClassJuncts?
  -				| '(' valueClass valueClassJuncts? ')' ;
  -valueClassJuncts : (KW_OR valueClass)+
  -				|  (KW_AND valueClass)+
  -				;
  -valueExprLabel  : '$' (iri | blankNode) ;
  +shapeExpression : shapeDisjunction ;
  +shapeDisjunction : shapeConjunction (KW_OR shapeConjunction)* ;
  +shapeConjunction : negShapeAtom (KW_AND negShapeAtom)* ;
  +negShapeAtom    : (KW_NOT | '!')? shapeAtom ;
   baseDecl 		: KW_BASE  IRIREF ;
   prefixDecl		: KW_PREFIX PNAME_NS IRIREF ;
  -start           : KW_START '=' ( shapeLabel |
  - 								 shapeDefinition semanticActions)  ;
  -shape           : shapeLabel nonLiteralKind? stringFacet* shapeDefinition (KW_AND shapeDefinition)* semanticActions ;
  +start           : KW_START '=' shapeExpression semanticActions ;
  +shape           : shapeLabel (stringFacet* shapeExpression | KW_EXTERNAL) semanticActions ;
   shapeDefinition : (includeSet | inclPropertySet | KW_CLOSED)* '{' someOfShape? '}' ;
   includeSet      : '&' shapeLabel+ ;
   inclPropertySet : KW_EXTRA predicate+ ;
  
positive.code: predicate       : iri
  				| rdfType
  				;
  valueClass		: '!'? negatableValueClass;
  negatableValueClass : KW_LITERAL xsFacet*		# valueClassLiteral
  				| nonLiteralKind shapeOrRef? stringFacet*	# valueClassNonLiteral
  				| datatype xsFacet*				# valueClassDatatype
  				| shapeOrRef stringFacet*		# valueClassGroup
  				| valueSet						# valueClassValueSet
  				| valueExprLabel				# valueClassZ
  				| '.'							# valueClassAny			// no constraint
  				;
  nonLiteralKind  : KW_IRI
  				| KW_BNODE
  
negative.code: blankNode       : BLANK_NODE_LABEL ;
  codeDecl		: '%' iri (CODE | '%') ;
  startActions	: codeDecl+ ;
  semanticActions	: (codeDecl | productionLabel)* ;
  productionLabel : '$' (iri | blankNode) ;
  rdfType			: RDF_TYPE ;
  
  
  