docs: public final EventFilterParser.time_string_function_return time_string_function() throws RecognitionException {
          EventFilterParser.time_string_function_return retval = new EventFilterParser.time_string_function_return();
          retval.start = input.LT(1);
  
  
          CommonTree root_0 = null;
  
          Token TIME_STRING_FUN_NAME101=null;
          Token char_literal102=null;
          Token STRING103=null;
          Token char_literal104=null;
          Token STRING105=null;
          Token char_literal106=null;
          Token STRING107=null;
          Token char_literal108=null;
  
          CommonTree TIME_STRING_FUN_NAME101_tree=null;
          CommonTree char_literal102_tree=null;
          CommonTree STRING103_tree=null;
          CommonTree char_literal104_tree=null;
          CommonTree STRING105_tree=null;
          CommonTree char_literal106_tree=null;
          CommonTree STRING107_tree=null;
          CommonTree char_literal108_tree=null;
          RewriteRuleTokenStream stream_35=new RewriteRuleTokenStream(adaptor,"token 35");
          RewriteRuleTokenStream stream_TIME_STRING_FUN_NAME=new RewriteRuleTokenStream(adaptor,"token TIME_STRING_FUN_NAME");
          RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33");
          RewriteRuleTokenStream stream_34=new RewriteRuleTokenStream(adaptor,"token 34");
          RewriteRuleTokenStream stream_STRING=new RewriteRuleTokenStream(adaptor,"token STRING");
  
          try {
              // EventFilter.g:194:2: ( TIME_STRING_FUN_NAME '(' STRING ',' STRING ',' STRING ')' -> ^( TIME_STRING_FUN_NAME STRING STRING STRING ) )
              // EventFilter.g:194:5: TIME_STRING_FUN_NAME '(' STRING ',' STRING ',' STRING ')'
              {
              TIME_STRING_FUN_NAME101=(Token)match(input,TIME_STRING_FUN_NAME,FOLLOW_TIME_STRING_FUN_NAME_in_time_string_function1179);  
              stream_TIME_STRING_FUN_NAME.add(TIME_STRING_FUN_NAME101);
  
  
              char_literal102=(Token)match(input,33,FOLLOW_33_in_time_string_function1181);  
              stream_33.add(char_literal102);
  
  
              STRING103=(Token)match(input,STRING,FOLLOW_STRING_in_time_string_function1183);  
              stream_STRING.add(STRING103);
  
  
              char_literal104=(Token)match(input,35,FOLLOW_35_in_time_string_function1185);  
              stream_35.add(char_literal104);
  
  
              STRING105=(Token)match(input,STRING,FOLLOW_STRING_in_time_string_function1187);  
              stream_STRING.add(STRING105);
  
  
              char_literal106=(Token)match(input,35,FOLLOW_35_in_time_string_function1189);  
              stream_35.add(char_literal106);
  
  
              STRING107=(Token)match(input,STRING,FOLLOW_STRING_in_time_string_function1191);  
              stream_STRING.add(STRING107);
  
  
              char_literal108=(Token)match(input,34,FOLLOW_34_in_time_string_function1193);  
              stream_34.add(char_literal108);
  
  
              // AST REWRITE
              // elements: STRING, TIME_STRING_FUN_NAME, STRING, STRING
              // token labels: 
              // rule labels: retval
              // token list labels: 
              // rule list labels: 
              // wildcard labels: 
              retval.tree = root_0;
              RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
  
              root_0 = (CommonTree)adaptor.nil();
              // 194:63: -> ^( TIME_STRING_FUN_NAME STRING STRING STRING )
              {
                  // EventFilter.g:194:66: ^( TIME_STRING_FUN_NAME STRING STRING STRING )
                  {
                  CommonTree root_1 = (CommonTree)adaptor.nil();
                  root_1 = (CommonTree)adaptor.becomeRoot(
                  new TimeStringValueTreeNode(stream_TIME_STRING_FUN_NAME.nextToken())
                  , root_1);
  
                  adaptor.addChild(root_1, 
                  new StringTreeNode(stream_STRING.nextToken())
                  );
  
                  adaptor.addChild(root_1, 
                  new StringTreeNode(stream_STRING.nextToken())
                  );
  
                  adaptor.addChild(root_1, 
                  new StringTreeNode(stream_STRING.nextToken())
                  );
  
                  adaptor.addChild(root_0, root_1);
                  }
  
              }
  
  
              retval.tree = root_0;
  
              }
  
              retval.stop = input.LT(-1);
  
  
              retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
              adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
  
          }
          catch (RecognitionException re) {
              reportError(re);
              recover(input,re);
      	retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
  
          }
  
          finally {
          	// do for sure before leaving
          }
          return retval;
      }