Пример #1
0
def parse(buf, mode="exec", transformer=None):
    'Extends compiler.parse to take a transformer.'
    if transformer is None:
        transformer = Transformer()
    if mode == "exec" or mode == "single":
        return transformer.parsesuite(buf)
    elif mode == "eval":
        return transformer.parseexpr(buf)
    else:
        raise ValueError("compile() arg 3 must be"
                         " 'exec' or 'eval' or 'single'")
Пример #2
0
def parse(buf, mode="exec", transformer=None):
    'Extends compiler.parse to take a transformer.'
    if transformer is None:
        transformer = Transformer()
    if mode == "exec" or mode == "single":
        return transformer.parsesuite(buf)
    elif mode == "eval":
        return transformer.parseexpr(buf)
    else:
        raise ValueError("compile() arg 3 must be"
                         " 'exec' or 'eval' or 'single'")
Пример #3
0
def parse(buf, mode="exec", transformer=None):
    'Extends compiler.parse to take a transformer.'
    if transformer is None:
        transformer = Transformer()
    if mode == "exec" or mode == "single":
        # Since the parser gives a SyntaxError with the 'with' keyword,
        # add the import along with the buffer, then remove it. The lineno
        # on the ast nodes must also be adjusted
        py_version = sys.version_info
        py_version = int(py_version[0]) + 0.1 * int(py_version[1])
        if py_version < 2.6:
            new_buf = 'from __future__ import with_statement\n' + buf
            ast = transformer.parsesuite(new_buf)
            ast.node.nodes = ast.node.nodes[1:]
            for node in ast.node.nodes:
                if node.lineno is not None:
                    node.lineno -= 1
            return ast
        return transformer.parsesuite(buf)
    elif mode == "eval":
        return transformer.parseexpr(buf)
    else:
        raise ValueError("compile() arg 3 must be"
                         " 'exec' or 'eval' or 'single'")
Пример #4
0
def parse(buf, mode="exec", transformer=None):
    'Extends compiler.parse to take a transformer.'
    if transformer is None:
        transformer = Transformer()
    if mode == "exec" or mode == "single":
        # Since the parser gives a SyntaxError with the 'with' keyword,
        # add the import along with the buffer, then remove it. The lineno
        # on the ast nodes must also be adjusted
        py_version = sys.version_info
        py_version = int(py_version[0])+0.1*int(py_version[1])
        if py_version < 2.6:
            new_buf = 'from __future__ import with_statement\n' + buf
            ast = transformer.parsesuite(new_buf)
            ast.node.nodes = ast.node.nodes[1:]
            for node in ast.node.nodes:
                if node.lineno is not None:
                    node.lineno -= 1
            return ast
        return transformer.parsesuite(buf)
    elif mode == "eval":
        return transformer.parseexpr(buf)
    else:
        raise ValueError("compile() arg 3 must be"
                         " 'exec' or 'eval' or 'single'")