anchor.diff:          'a'..'z' | 'A'..'Z' | '*' | '+' | '!' | '-' | '_' | '?' | '>' | '<' | '=' | '$'
           // other characters will be allowed eventually, but not all macro characters have been determined
       ;
  -    
  +
   fragment
   SYMBOL_REST:
           SYMBOL_HEAD
  
positive.code:     ;
  
  SYMBOL:
  	'.'
      |   '/' // The division function FIXME is it necessary to hardcode this ?
      |   NAME ('/' NAME)?
      ;
  
  fragment
  NAME:   SYMBOL_HEAD SYMBOL_REST* (':' SYMBOL_REST+)*
      ;
  
negative.code:  
   OPEN_PAREN: '('
   	;
   CLOSE_PAREN: ')'
  	;
  	
  // TODO complete this list
  SPECIAL_FORM: 'def' | 'if' | 'do' | 'let' | 'quote' | 'var' | 'fn' | 'loop' |
              'recur' | 'throw' | 'try' | 'monitor-enter' | 'monitor-exit' |
              'new' | 'set!' | '.'
      ;
  
  
  