anchor.diff:  				| valueSet xsFacet*				# nodeConstraintValueSet
   				| numericFacet+					# nodeConstraintNumericFacet
   				;
  -litNodeConstraint : inlineLitNodeConstraint  annotation* semanticActions ;
  +litNodeConstraint : inlineLitNodeConstraint  annotation* semanticAction* ;
   inlineNonLitNodeConstraint  : nonLiteralKind stringFacet*	# litNodeConstraintLiteral
                   | stringFacet+                  # litNodeConstraintStringFacet
   				;
  -nonLitNodeConstraint : inlineNonLitNodeConstraint  annotation* semanticActions ;
  +nonLitNodeConstraint : inlineNonLitNodeConstraint  annotation* semanticAction* ;
   nonLiteralKind  : KW_IRI
   				| KW_BNODE
   				| KW_NONLITERAL
  
positive.code: unaryTripleExpr : ('$' tripleExprLabel)? (tripleConstraint | bracketedTripleExpr)
  				| include
  				;
  bracketedTripleExpr : '(' innerTripleExpr ')' cardinality? onShapeExpr? annotation* semanticActions ;
  tripleConstraint : senseFlags? predicate inlineShapeExpression cardinality? onShapeExpr? annotation* semanticActions ;
  cardinality     :  '*'         # starCardinality
  				| '+'          # plusCardinality
  				| '?'          # optionalCardinality
  
negative.code: 				| '(' shapeExpression ')'		# shapeAtomShapeExpression
  				| '.'							# shapeAtomAny			// no constraint
  				;
  inlineShapeAtom : inlineNonLitNodeConstraint inlineShapeOrRef? # inlineShapeAtomNonLitNodeConstraint
                  | inlineLitNodeConstraint             # inlineShapeAtomLitNodeConstraint
  				| inlineShapeOrRef inlineNonLitNodeConstraint? # inlineShapeAtomShapeOrRef
  				| '(' shapeExpression ')'		# inlineShapeAtomShapeExpression
  				| '.'							# inlineShapeAtomAny   // no constraint
  				;
  