anchor.diff:  IF : 'if' ;
   IFNONE : 'ifnone' ;
   INCDIR : 'incdir' ;
  -INCLUDE : 'include' ;
  +INCLUDE : 'include' -> mode(FILE_PATH_MODE) ;
   INITIAL : 'initial' ;
   INOUT : 'inout' ;
   INPUT : 'input' ;
  
positive.code: JOIN : 'join' ;
  LARGE : 'large' ;
  LIBLIST : 'liblist' ;
  LIBRARY : 'library' ;
  LOCALPARAM : 'localparam' ;
  MACROMODULE : 'macromodule' ;
  MEDIUM : 'medium' ;
  
negative.code: ASTERISK_GREATER_THAN : '*>' ;
  TRIPLE_AMPERSAND : '&&&' ;
  
  // Context-sensitive rules
  
  mode FILE_READ_MODE;
  // 17.2 File input-output system tasks and functions | 19.5 `include
  FILE_NAME : ~[/\\?%':|"<>,;=]+ -> mode(DEFAULT_MODE) ;
  // 17.2.1 Opening and closing files
  TYPE : ('r' | 'rb' | 'w' | 'wb' | 'a' | 'ab' | 'r+' | 'r+b' | 'rb+' | 'w+' | 'w+b' | 'wb+' | 'a+' | 'a+b' | 'ab+') -> mode(DEFAULT_MODE) ;
  // 17.2.10 Loading timing data from an SDF file
  MTM_SPEC : ('MAXIMUM' | 'MINIMUM' | 'TOOL_CONTROL' | 'TYPICAL') -> mode(DEFAULT_MODE) ;
  SCALE_TYPE : ('FROM_MAXIMUM' | 'FROM_MINIMUM' | 'FROM_MTM' | 'FROM_TYPICAL') -> mode(DEFAULT_MODE) ;
  
  mode TIME_FORMAT_MODE;
  // 17.3.2 $timeformat
  UNITS_NUMBER : ('0' | MINUS [1-15]) -> mode(DEFAULT_MODE) ;
  
  mode SIMULATION_CONTROL_MODE;
  // 17.4 Simulation control system tasks
  FINISH_NUMBER : [0-2] -> mode(DEFAULT_MODE) ;
  
  mode DEFAULT_NETTYPE_MODE;
  // 19.2 `default_nettype
  NONE : 'none' -> mode(DEFAULT_MODE) ;
  
  mode DEFINE_MODE;
  // 19.3 `define and `undef
  TEXT : MATCH_EVERYTHING_NON_GREEDY ~'\\' NEWLINE -> mode(DEFAULT_MODE) ;
  
  mode LINE_MODE;
  // 19.7 `line
  LEVEL : [0-2] -> mode(DEFAULT_MODE) ;
  
  mode TIMESCALE_MODE;
  // 19.8 `timescale
  TIME_LITERAL : UNSIGNED_NUMBER TIME_UNIT -> mode(DEFAULT_MODE) ;
  fragment TIME_UNIT : [mnpf]? 's' ;
  
  mode BEGIN_KEYWORDS_MODE;
  // 19.11 `begin_keywords, `end_keywords
  VERSION_SPECIFIER : ('1364-1995' | '1364-2001' | '1364-2001-noconfig' | '1364-2005') -> mode(DEFAULT_MODE) ;
  
  mode FILE_PATH_MODE;
  // A.1.1 Library source text
  FILE_PATH_SPEC : ~[ \t\r\n]+ -> mode(DEFAULT_MODE) ;
  MINUS_INCDIR : '-incdir' -> mode(DEFAULT_MODE) ;
  
  mode USE_CLAUSE_MODE;
  // A.1.5 Configuration source text
  COLON_CONFIG : ':config' -> mode(DEFAULT_MODE) ;
  
  mode SPECPARAM_MODE;
  // A.2.4 Declaration assignments
  PATHPULSE : 'PATHPULSE$' -> mode(DEFAULT_MODE) ;
  
  mode TABLE_MODE;
  // A.5.3 UDP body
  INIT_VAL : ('1' APOSTROPHE B (ZERO_OR_ONE | X) | ZERO_OR_ONE) -> mode(DEFAULT_MODE) ;
  OUTPUT_SYMBOL : [01xX] -> mode(DEFAULT_MODE) ;
  LEVEL_SYMBOL : [01xX?bB] -> mode(DEFAULT_MODE) ;
  EDGE_SYMBOL : [rRfFpPnN*] -> mode(DEFAULT_MODE) ;
  
  mode TIMING_CHECK_MODE;
  // A.7.5.3 System timing check event definitions
  EDGE_DESCRIPTOR : ('01' | '10' | Z_OR_X ZERO_OR_ONE | ZERO_OR_ONE Z_OR_X) -> mode(DEFAULT_MODE) ;
  fragment ZERO_OR_ONE : [01] ;
  fragment Z_OR_X : X | Z ;
  SCALAR_CONSTANT : ('1' APOSTROPHE B ZERO_OR_ONE | ZERO_OR_ONE) -> mode(DEFAULT_MODE) ;
  
  // Letters
  
  