anchor.diff:  				;
   valueSet		: '[' valueSetValue* ']' ;
   valueSetValue   : iriRange
  -				| literal
  -				;
  -iriRange        : iri ('~' exclusion*)?
  -				| '.' exclusion+
  -				;
  -exclusion       : '-' iri '~'? ;
  +				| literalRange
  +				| languageRange
  +				| '.' (iriExclusion+ | literalExclusion+ | languageExclusion+)
  +				;
  +iriRange        : iri (STEM_MARK iriExclusion*)? ;
  +iriExclusion    : '-' iri STEM_MARK? ;
  +literalRange    : literal (STEM_MARK literalExclusion*)? ;
  +literalExclusion : '-' literal STEM_MARK? ;
  +languageRange   : LANGTAG (STEM_MARK languageExclusion*)? ;
  +languageExclusion : '-' LANGTAG STEM_MARK? ;
   literal         : rdfLiteral
   				| numericLiteral
   				| booleanLiteral
   				;
  -shapeOrRef      : ATPNAME_LN
  +shapeOrRef      : shapeDefinition
  +				| shapeRef
  +				;
  +inlineShapeOrRef : inlineShapeDefinition
  +				| shapeRef
  +				;
  +shapeRef 		: ATPNAME_LN
   				| ATPNAME_NS
   				| '@' shapeExprLabel
  -				| shapeDefinition
  -				;
  -inlineShapeOrRef : ATPNAME_LN
  -				| ATPNAME_NS
  -				| '@' shapeExprLabel
  -				| inlineShapeDefinition
   				;
   include			: '&' tripleExprLabel ;
   semanticActions	: codeDecl* ;
  
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: CODE                  : '{' (~[%\\] | '\\' [%\\] | UCHAR)* '%' '}' ;
  RDF_TYPE              : 'a' ;
  IRIREF                : '<' (~[\u0000-\u0020=<>\"{}|^`\\] | UCHAR)* '>' ; /* #x00=NULL #01-#x1F=control codes #x20=space */
  PNAME_NS			  : PN_PREFIX? ':' ;
  PNAME_LN			  : PNAME_NS PN_LOCAL ;
  ATPNAME_NS			  : '@' PN_PREFIX? ':' ;
  ATPNAME_LN			  : '@' PNAME_NS PN_LOCAL ;
  REGEXP                : '/' (~[/\n\r\\] | '\\' [/nrt\\|.?*+(){}[\]$^-] | UCHAR)+ '/' ;
  REGEXP_FLAGS		  : [smix]+ ;
  BLANK_NODE_LABEL      : '_:' (PN_CHARS_U | [0-9]) ((PN_CHARS | '.')* PN_CHARS)? ;
  LANGTAG               : '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)* ;
  INTEGER               : [+-]? [0-9]+ ;
  DECIMAL               : [+-]? [0-9]* '.' [0-9]+ ;
  DOUBLE                : [+-]? ([0-9]+ '.' [0-9]* EXPONENT | '.'? [0-9]+ EXPONENT) ;
  STEM_MARK			  : '~' ;
  UNBOUNDED             : '*' ;
  
  fragment EXPONENT     : [eE] [+-]? [0-9]+ ;
  
  