示例#1
0
文件: parser.py 项目: efrainra/blaze
def _parse(source):
    try:
        from . import dlex
        from . import dyacc
    except ImportError:
        raise RuntimeError("Parse tables not built, run install script.")

    module = sys.modules[__name__]
    lexer  = lexfrom(module, dlex)
    parser = yaccfrom(module, dyacc, lexer)

    return parser.parse(source, lexer=lexer)
示例#2
0
文件: parser.py 项目: garaud/blaze
def _parse(source):
    try:
        from . import dlex
        from . import dyacc
    except ImportError:
        rebuild()
        from . import dlex
        from . import dyacc

    module = sys.modules[__name__]
    lexer  = lexfrom(module, dlex)
    parser = yaccfrom(module, dyacc, lexer)

    return parser.parse(source, lexer=lexer)
示例#3
0
def load_parser(debug=False):
    if debug:
        from ply import lex, yacc
        path = os.path.relpath(__file__)
        dir_path = os.path.dirname(path)
        lexer = lex.lex(lextab="mlex", outputdir=dir_path, optimize=0)
        parser = yacc.yacc(tabmodule='myacc',outputdir=dir_path,
                write_tables=0, debug=0, optimize=0)
        return partial(debug_parse, lexer=lexer, parser=parser)
    else:
        module = sys.modules[__name__]
        lexer = lexfrom(module, mlex)
        parser = yaccfrom(module, myacc, lexer)

        # curry the lexer into the parser
        return partial(parser.parse, lexer=lexer)
示例#4
0
def load_parser(debug=False):
    if debug:
        from ply import lex, yacc
        # Must be abspath instead of relpath because
        # of Windows multi-rooted filesystem.
        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lexer = lex.lex(lextab="dlex", outputdir=dir_path, optimize=1)
        parser = yacc.yacc(tabmodule='dyacc',outputdir=dir_path,
                write_tables=1, debug=0, optimize=1)
        return partial(debug_parse, lexer=lexer, parser=parser)
    else:
        module = sys.modules[__name__]
        lexer = lexfrom(module, dlex)
        parser = yaccfrom(module, dyacc, lexer)

        # curry the lexer into the parser
        return partial(parser.parse, lexer=lexer)
示例#5
0
def load_parser(debug=False):
    if debug:
        from ply import lex, yacc
        path = os.path.relpath(__file__)
        dir_path = os.path.dirname(path)
        lexer = lex.lex(lextab="alex", outputdir=dir_path, optimize=1)
        parser = yacc.yacc(tabmodule='ayacc',
                           outputdir=dir_path,
                           write_tables=1,
                           debug=0,
                           optimize=1)
        return partial(debug_parse, lexer=lexer, parser=parser)
    else:
        module = sys.modules[__name__]
        lexer = lexfrom(module, alex)
        parser = yaccfrom(module, ayacc, lexer)

        # curry the lexer into the parser
        return partial(parser.parse, lexer=lexer)
示例#6
0
def load_parser(debug=False):
    if debug:
        from ply import lex, yacc
        # Must be abspath instead of relpath because
        # of Windows multi-rooted filesystem.
        path = os.path.abspath(__file__)
        dir_path = os.path.dirname(path)
        lexer = lex.lex(lextab="dlex", outputdir=dir_path, optimize=1)
        parser = yacc.yacc(tabmodule='dyacc',
                           outputdir=dir_path,
                           write_tables=1,
                           debug=0,
                           optimize=1)
        return partial(debug_parse, lexer=lexer, parser=parser)
    else:
        module = sys.modules[__name__]
        lexer = lexfrom(module, dlex)
        parser = yaccfrom(module, dyacc, lexer)

        # curry the lexer into the parser
        return partial(parser.parse, lexer=lexer)