anchor.diff:  KW_MAXLENGTH    	: M A X L E N G T H ;
   KW_TOTALDIGITS  	: T O T A L D I G I T S ;
   KW_FRACTIONDIGITS 	: F R A C T I O N D I G I T S ;
  +KW_NOT				: N O T ;
   KW_TRUE         	: 'true' ;
   KW_FALSE        	: 'false' ;
   
  
positive.code: predicate       : iri
  				| rdfType
  				;
  shapeAtom       : KW_LITERAL xsFacet*		# shapeAtomLiteral
  				| nonLiteralKind shapeOrRef? stringFacet*	# shapeAtomNonLiteral
  				| datatype xsFacet*				# shapeAtomDataType
  				| shapeOrRef stringFacet*		# shapeAtomGroup
  				| valueSet						# shapeAtomValueSet
  
negative.code: blankNode       : BLANK_NODE_LABEL ;
  codeDecl		: '%' iri (CODE | '%') ;
  startActions	: codeDecl+ ;
  semanticActions	: codeDecl* ;
  productionLabel : '$' (iri | blankNode) ;
  rdfType			: RDF_TYPE ;
  
  