code: def p_define_params_paramlist(p):
      
      for i in p[2]:
          if not isinstance(i, ID):
              error(p.lineno(3),
                    '"%s" might not appear in a macro parameter list' % str(i))
              p[0] = None
              return
  
      names = [x.name for x in p[2]]
      for i in range(len(names)):
          if names[i] in names[i + 1:]:
              error(p.lineno(3),
                    'Duplicated name parameter "%s"' % (names[i]))
              p[0] = None
              return
  
      p[0] = p[2]
docs: params : LP paramlist RP