anchor.diff:  xsFacet			: stringFacet
   				| numericFacet;
   stringFacet     : stringLength INTEGER
  -				| REGEXP
  +				| REGEXP REGEXP_FLAGS?
   				;
   stringLength	: KW_LENGTH
   				| KW_MINLENGTH
  
positive.code: 
  fragment UCHAR                 : '\\u' HEX HEX HEX HEX | '\\U' HEX HEX HEX HEX HEX HEX HEX HEX ;
  fragment ECHAR                 : '\\' [tbnrf\\\"\'] ;
  fragment WS                    : [\u0020\u0009\u000D\u000A] ; /* #x20=space #x9=character tabulation #xD=carriage return #xA=new line */
  
  fragment PN_CHARS_BASE 		   : [A-Z] | [a-z] | [\u00C0-\u00D6] | [\u00D8-\u00F6] | [\u00F8-\u02FF] | [\u0370-\u037D]
  					   		   | [\u037F-\u1FFF] | [\u200C-\u200D] | [\u2070-\u218F] | [\u2C00-\u2FEF] | [\u3001-\uD7FF]
  
negative.code: 				| repeatRange  # repeatCardinality
  				;
  // BNF: REPEAT_RANGE ::= '{' INTEGER (',' (INTEGER | '*')?)? '}'
  repeatRange     : '{' INTEGER '}'							  # exactRange
  				| '{' INTEGER ',' (INTEGER | UNBOUNDED)? '}'  # minMaxRange
  				;
  shapeExprLabel  : iri
  				| blankNode
  