anchor.diff:  //            Change (non-standard) "codeLabel" to "productionName"
   // Oct 26 - change annotation predicate to include rdftype (how did this slip in to the production rules?
   // Dec 30 - update to match http://www.w3.org/2005/01/yacker/uploads/ShEx2/bnf with last change "EGP 20151120"
  +// May 23, 2016 - Update to match http://www.w3.org/2005/01/yacker/uploads/ShEx2/bnf with last change "EGP20160520" AND ';' separator and '//' for annotations
  +// May 24, 2016 - EGP20150424
   
   grammar ShExDoc;
   
  
positive.code: INTEGER               : [+-]? [0-9]+ ;
  DECIMAL               : [+-]? [0-9]* '.' [0-9]+ ;
  DOUBLE                : [+-]? ([0-9]+ '.' [0-9]* EXPONENT | '.'? [0-9]+ EXPONENT) ;
  PRODUCTION_LABEL      : [A-Za-z_][A-Za-z0-9_]* ;
  fragment EXPONENT     : [eE] [+-]? [0-9]+ ;
  
  STRING_LITERAL1       : '\'' (~[\u0027\u005C\u000A\u000D] | ECHAR | UCHAR)* '\'' ; /* #x27=' #x5C=\ #xA=new line #xD=carriage return */
  
negative.code: prefixDecl		: KW_PREFIX PNAME_NS IRIREF ;
  start           : KW_START '=' ( shapeLabel |
   								 shapeDefinition semanticActions)  ;
  shape           : shapeLabel nonLiteralKind? stringFacet* shapeDefinition (KW_AND shapeDefinition)* semanticActions ;
  shapeDefinition : (includeSet | inclPropertySet | KW_CLOSED)* '{' someOfShape? '}' ;
  includeSet      : '&' shapeLabel+ ;
  inclPropertySet : KW_EXTRA predicate+ ;
  