anchor.diff:  				| '(' shapeExpression ')'		# shapeAtomShapeExpression
   				| '.'							# shapeAtomAny			// no constraint
   				;
  -inlineShapeAtom : nonLitNodeConstraint inlineShapeOrRef? # inlineShapeAtomNonLitNodeConstraint
  -                | litNodeConstraint             # inlineShapeAtomLitNodeConstraint
  -				| inlineShapeOrRef nonLitNodeConstraint? # inlineShapeAtomShapeOrRef
  +inlineShapeAtom : inlineNonLitNodeConstraint inlineShapeOrRef? # inlineShapeAtomNonLitNodeConstraint
  +                | inlineLitNodeConstraint             # inlineShapeAtomLitNodeConstraint
  +				| inlineShapeOrRef inlineNonLitNodeConstraint? # inlineShapeAtomShapeOrRef
   				| '(' shapeExpression ')'		# inlineShapeAtomShapeExpression
   				| '.'							# inlineShapeAtomAny   // no constraint
   				;
  
positive.code: 				| valueSet xsFacet*				# nodeConstraintValueSet
  				| numericFacet+					# nodeConstraintNumericFacet
  				;
  litNodeConstraint : inlineLitNodeConstraint  annotation* semanticActions ;
  inlineNonLitNodeConstraint  : nonLiteralKind stringFacet*	# litNodeConstraintLiteral
                  | stringFacet+                  # litNodeConstraintStringFacet
  				;
  nonLitNodeConstraint : inlineNonLitNodeConstraint  annotation* semanticActions ;
  nonLiteralKind  : KW_IRI
  				| KW_BNODE
  				| KW_NONLITERAL
  
negative.code: importDecl      : KW_IMPORT IRIREF ;
  notStartAction  : start | shapeExprDecl ;
  start           : KW_START '=' shapeExpression ;
  startActions	: semanticAction+ ;
  statement 		: directive | notStartAction ;
  shapeExprDecl   : /* KW_ABSTRACT? */ shapeExprLabel /* restrictions* */ (shapeExpression | KW_EXTERNAL) ;
  shapeExpression : shapeOr ;
  inlineShapeExpression : inlineShapeOr ;
  shapeOr  		: shapeAnd (KW_OR shapeAnd)* ;
  