def _yacc(verbose=False):
    """Return YACC parser object for the MOF compiler.

    As a side effect, the YACC table module for the MOF compiler gets created
    if it does not exist yet, or updated if its table version does not match
    the installed version of the `ply` package.
    """

    # In yacc(), the 'debug' parameter controls the main error
    # messages to the 'errorlog' in addition to the debug messages
    # to the 'debuglog'. Because we want to see the error messages,
    # we enable debug but set the debuglog to the NullLogger.
    # To enable debug logging, set debuglog to some other logger
    # (ex. PlyLogger(sys.stdout) to generate log output.
    return yacc.yacc(optimize=_optimize,
                     tabmodule=_tabmodule,
                     outputdir=_tabdir,
                     debug=True,
                     debuglog=yacc.NullLogger(),
                     errorlog=yacc.PlyLogger(sys.stdout))
Return YACC parser object for the MOF compiler.

    As a side effect, the YACC table module for the MOF compiler gets created
    if it does not exist yet, or updated if its table version does not match
    the installed version of the `ply` package.