def _create_opt_rule(self, rulename):
        optname = rulename + '_opt'

        def optrule(self, p):
            p[0] = p[1]

        optrule.__doc__ = '%s : empty\n| %s' % (optname, rulename)
        optrule.__name__ = 'p_%s' % optname
        setattr(self.__class__, optrule.__name__, optrule)
Given a rule name, creates an optional ply.yacc rule
dataset/ETHPy150Open cloudera/hue/desktop/core/ext-py/pycparser-2.14/pycparser/plyparser.py/PLYParser._create_opt_rule