loki.backend.pygen module
- pygen(ir)
Generate standard Python 3 code (that uses Numpy) from one or many IR objects/trees.
- class PyCodegen(depth=0, indent=' ', linewidth=100)
Bases:
Stringifier
Tree visitor to generate standard Python code (with Numpy) from IR.
- visit_Sourcefile(o, **kwargs)
- Format as
…modules… …subroutines…
- visit_Subroutine(o, **kwargs)
- Format as:
…imports… def <name>(<args>):
…spec without imports and only declarations with initial values… …body…
- visit_Intrinsic(o, **kwargs)
Format intrinsic nodes.
- visit_Comment(o, **kwargs)
Format comments.
- visit_CommentBlock(o, **kwargs)
Format comment blocks.
- visit_VariableDeclaration(o, **kwargs)
- Format declaration as
<name> = <initial>
and skip any arguments or scalars without an initial value
- visit_Import(o, **kwargs)
Skip imports
- visit_Loop(o, **kwargs)
- Format loop with explicit range as
- for <var> in range(<start>, <end> + <incr>, <incr>):
…body…
- visit_WhileLoop(o, **kwargs)
- Format loop as:
- while <condition>:
…body…
- visit_Conditional(o, **kwargs)
Format conditional as if <condition>:
…body…
- [elif <condition>:]
[…body…]
- [else:]
[…body…]
- visit_Assignment(o, **kwargs)
- Format statement as
<target> = <expr> [<comment>]
- visit_Section(o, **kwargs)
Format the section’s body.
- visit_CallStatement(o, **kwargs)
- Format call statement as
<name>(<args>)
- visit_SymbolAttributes(o, **kwargs)
- visit_StatementFunction(o, **kwargs)
- class PyCodeMapper(*args, **kwargs)
Bases:
LokiStringifyMapper
Generate Python representation of expression trees using numpy syntax.
- map_logic_literal(expr, enclosing_prec, *args, **kwargs)
- map_float_literal(expr, enclosing_prec, *args, **kwargs)
- map_int_literal(expr, enclosing_prec, *args, **kwargs)
- map_cast(expr, enclosing_prec, *args, **kwargs)
- map_variable_symbol(expr, enclosing_prec, *args, **kwargs)
- map_meta_symbol(expr, enclosing_prec, *args, **kwargs)
- map_scalar(expr, enclosing_prec, *args, **kwargs)
- map_array(expr, enclosing_prec, *args, **kwargs)
- map_array_subscript(expr, enclosing_prec, *args, **kwargs)
- map_string_subscript(expr, enclosing_prec, *args, **kwargs)
- map_string_concat(expr, enclosing_prec, *args, **kwargs)
- map_inline_call(expr, enclosing_prec, *args, **kwargs)
- map_deferred_type_symbol(expr, *args, **kwargs)