anchor.diff:  // 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
  +// Aug 11, 2016 - EGP20160708
   
   grammar ShExDoc;
   
  
positive.code: groupShape      : singleElementGroup
  				| multiElementGroup
  				;
  singleElementGroup : unaryShape (','|';')? ;
  multiElementGroup : unaryShape ((','|';') unaryShape)+ (','|';')? ;
  unaryShape      : tripleConstraint
  				| include
  				| encapsulatedShape
  				;
  encapsulatedShape  : '(' innerShape ')' cardinality? annotation* semanticActions ;
  include			: '&' shapeLabel ;
  shapeLabel      : iri
  				| blankNode
  				;
  tripleConstraint : senseFlags? predicate valueClassExpr cardinality? annotation* semanticActions;
  senseFlags      : '!' '^'?
  				| '^' '!'?		// inverse not
  				;
  
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
  