anchor.diff:  				;
   baseDecl 		: KW_BASE  IRIREF ;
   prefixDecl		: KW_PREFIX PNAME_NS IRIREF ;
  -notStartAction  : start
  -			    | shape
  -			    ;
  -start           : KW_START '=' shapeExpression semanticActions ;
  +notStartAction  : start | shapeExprDecl ;
  +start           : KW_START '=' shapeExpression ;
   startActions	: codeDecl+ ;
  -statement		: directive
  -				| notStartAction
  -				;
  -shape           : shapeLabel (stringFacet* shapeExpression | KW_EXTERNAL) semanticActions ;
  +statement 		: directive | notStartAction ;
  +shapeExprDecl   : shapeLabel (shapeExpression | KW_EXTERNAL) ;
   shapeExpression : shapeOr ;
   shapeOr  		: shapeAnd (KW_OR shapeAnd)* ;
   shapeAnd		: shapeNot (KW_AND shapeNot)* ;
   shapeNot	    : (KW_NOT | '!')? shapeAtom ;
  -shapeDefinition : (includeSet | extraPropertySet | KW_CLOSED)* '{' someOfShape? '}' ;
  +inlineShapeExpression : inlineShapeOr ;
  +inlineShapeOr   : inlineShapeAnd (KW_OR inlineShapeAnd)* ;
  +inlineShapeAnd  : inlineShapeNot (KW_AND inlineShapeNot)* ;
  +inlineShapeNot  : (KW_NOT | '!')? inlineShapeAtom ;
  +shapeDefinition : (includeSet | extraPropertySet | KW_CLOSED)* '{' someOfShape? '}' annotation* semanticActions ;
  +inlineShapeDefinition : (includeSet | extraPropertySet | KW_CLOSED)* '{' someOfShape? '}' ;
   extraPropertySet : KW_EXTRA predicate+ ;
   someOfShape     : groupShape
   				| multiElementSomeOf
  
positive.code: 				| ATPNAME_NS
  				| '@' shapeLabel
  				| shapeDefinition
  				;
  include			: '&' shapeLabel ;
  semanticActions	: codeDecl* ;
  
negative.code: 				;
  singleElementGroup : unaryShape ';'? ;
  multiElementGroup : unaryShape (';' unaryShape)+ ';'? ;
  unaryShape      : productionLabel? (tripleConstraint | encapsulatedShape)
  				| include
  				;
  encapsulatedShape  : '(' innerShape ')' cardinality? annotation* semanticActions ;
  shapeAtom		: nodeConstraint shapeOrRef?    # shapeAtomNodeConstraint
  				| shapeOrRef                    # shapeAtomShapeOrRef
  				| '(' shapeExpression ')'		# shapeAtomShapeExpression
  				| '.'							# shapeAtomAny			// no constraint
  				;
  inlineShapeAtom : nodeConstraint inlineShapeOrRef? # inlineShapeAtomNodeConstraint
  				| inlineShapeOrRef nodeConstraint? # inlineShapeAtomShapeOrRef
  				| '(' shapeExpression ')'		# inlineShapeAtomShapeExpression
  				| '.'							# inlineShapeAtomAny   // no constraint
  				;
  nodeConstraint  : KW_LITERAL xsFacet*			# nodeConstraintLiteral
  				| nonLiteralKind stringFacet*	# nodeConstraintNonLiteral
  				| datatype xsFacet*				# nodeConstraintDatatype
  				| valueSet xsFacet*				# nodeConstraintValueSet
  				| xsFacet+						# nodeConstraintFacet
  				;
  nonLiteralKind  : KW_IRI
  				| KW_BNODE
  