anchor.diff:  	|	FRAGMENT
   	;
   
  -// A set of alts, rewritten as a BLOCK for generic processing
  -// in tree walkers. Used by the rule 'rule' so that the list of
  -// alts for a rule appears as a BLOCK containing the alts and
  -// can be processed by the generic BLOCK rule. Note that we
  -// use a separate rule so that the BLOCK node has start and stop
  -// boundaries set correctly by rule post processing of rewrites.
   ruleBlock
   	:	ruleAltList
   	;
  
positive.code: 	;
  
  modeSpec
  	:	MODE id ';' ruleSpec+
  	;
  
  rules
  
negative.code: 	|	RULE_REF
  	|	notSet
  	|	LEXER_CHAR_SET
  	|	DOT elementOptions?
  	;
  
  atom
  	:	range // Range x..y - only valid in lexers
  	|	terminal
  	|	ruleref
  	|	notSet
  	|	DOT elementOptions?
  	;
  
  notSet
  	:	NOT setElement
  	|	NOT blockSet
  