anchor.diff:  blankNode       : BLANK_NODE_LABEL ;
   codeDecl		: '%' iri (CODE | '%') ;
   startActions	: codeDecl+ ;
  -semanticActions	: (codeDecl | productionLabel)* ;
  +semanticActions	: codeDecl* ;
   productionLabel : '$' (iri | blankNode) ;
   rdfType			: RDF_TYPE ;
   
  
positive.code: 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_TRUE         	: 'true' ;
  KW_FALSE        	: 'false' ;
  
  
negative.code: predicate       : iri
  				| rdfType
  				;
  shapeAtom       : KW_LITERAL xsFacet*			# shapeAtomLiteral
  				| nonLiteralKind stringFacet* shapeOrRef?	# shapeAtomNonLiteral
  				| datatype xsFacet*				# shapeAtomDataType
  				| shapeOrRef stringFacet*		# shapeAtomGroup
  				| valueSet						# shapeAtomValueSet
  