anchor.diff:     ;
   
   functions_forward_decl
  -   : ('FORWARD' | 'TYPE') 'PROTOTYPES' delim function_forward_decl + 'END' 'PROTOTYPES' delim
  +   : ('FORWARD' | 'TYPE') 'PROTOTYPES'  function_forward_decl + 'END' 'PROTOTYPES' 
      ;
   
   function_body
  -   : ('PUBLIC' | 'PRIVATE' | 'PROTECTED')? scope_modif? ('FUNCTION' data_type_name | 'SUBROUTINE') identifier_name LPAREN parameters_list_sub? RPAREN ('THROWS' identifier_name)? SEMI (statement)* 'END' ('FUNCTION' | 'SUBROUTINE') delim
  +   : ('PUBLIC' | 'PRIVATE' | 'PROTECTED')? scope_modif? ('FUNCTION' data_type_name | 'SUBROUTINE') identifier_name LPAREN parameters_list_sub? RPAREN ('THROWS' identifier_name)? (SEMI statement)* 'END' ('FUNCTION' | 'SUBROUTINE') 
      ;
   
   on_body
  
positive.code:    ;
  
  constant_decl
     : constant_decl_sub (SEMI | delim)
     ;
  
  function_forward_decl
     : access_modif_part? scope_modif? ('FUNCTION' data_type_name | 'SUBROUTINE') identifier_name LPAREN parameters_list_sub? RPAREN ('LIBRARY' (DQUOTED_STRING | QUOTED_STRING) ('ALIAS' 'FOR' (DQUOTED_STRING | QUOTED_STRING))?)? ('RPCFUNC' 'ALIAS' 'FOR' (DQUOTED_STRING | QUOTED_STRING))? ('THROWS' identifier_name)? delim
     ;
  
  parameter_sub
  
negative.code:    | identifier_name
     ;
  
  
  DQUOTED_STRING
     : '"' (E_TILDE | ~ ('"') | E_DOUBLE_QUOTE)* '"'
  