anchor.diff:  blankNode       : BLANK_NODE_LABEL ;
   codeDecl		: '%' iri (CODE | '%') ;
   startActions	: codeDecl+ ;
  -semanticActions	: codeDecl* ;
  +semanticActions	: (codeDecl | productionLabel)* ;
  +productionLabel : '$' (iri | blankNode) ;
   rdfType			: RDF_TYPE ;
   
   
  
positive.code: // Dec 30 - update to match http://www.w3.org/2005/01/yacker/uploads/ShEx2/bnf with last change "EGP 20151120"
  // May 23, 2016 - Update to match http://www.w3.org/2005/01/yacker/uploads/ShEx2/bnf with last change "EGP20160520" AND ';' separator and '//' for annotations
  // May 24, 2016 - EGP20150424
  
  grammar ShExDoc;
  
  
negative.code: predicate       : iri
  				| rdfType
  				;
  shapeAtom       : KW_LITERAL xsFacet*		# shapeAtomLiteral
  				| nonLiteralKind shapeOrRef? stringFacet*	# shapeAtomNonLiteral
  				| datatype xsFacet*				# shapeAtomDataType
  				| shapeOrRef stringFacet*		# shapeAtomGroup
  				| valueSet						# shapeAtomValueSet
  				| '(' shapeExpression ')'		# shapeAtomShapeExpression
  				| '.'							# shapeAtomAny			// no constraint
  				;
  nonLiteralKind  : KW_IRI
  				| KW_BNODE
  