code: def parse_declaration_expressn_fncall_SUBparams(self, params):
          
          # arguments passed to the function
          if isinstance(params, wdl_parser.Terminal):
              raise NotImplementedError
          elif isinstance(params, wdl_parser.Ast):
              raise NotImplementedError
          elif isinstance(params, wdl_parser.AstList):
              assert len(params) == 3, ('sub() function requires exactly 3 arguments.')
              es_params0 = self.parse_declaration_expressn(params[0], es='')
              es_params1 = self.parse_declaration_expressn(params[1], es='')
              es_params2 = self.parse_declaration_expressn(params[2], es='')
              return es_params1 + ', ' + es_params2 + ', ' + es_params0
docs: Needs rearrangement:
  
          0 1 2
          WDL native params: sub(input, pattern, replace)
  
          1 2 0
          Python's re.sub() params: sub(pattern, replace, input)
  
          :param params:
          :param es:
          :return: