Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 682 Bytes

File metadata and controls

32 lines (24 loc) · 682 Bytes

pyastgen

Builder for generating Python source, inspired by llvmlite.

For example, the following code generates a fibonacci function:

import pyastgen

module, builder = pyastgen.new_module()

fib = builder.declare("fib")
(n,), fib_builder = builder.new_function(fib, pyastgen.Parameters("n"))
then, _else = fib_builder.if_(n.lt(pyastgen.constant(2)))
then.return_(n)
fib_builder.return_(
    fib.call(n.sub(pyastgen.constant(1))).add(
        fib.call(n.sub(pyastgen.constant(2)))
    )
)

print(pyastgen.unparse(module))

Output:

def fib(n, /):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)