m2isar.metamodel.utils.ExprVisitor
A helper module for applying all expression visitor functions in this package to functions and instructions to get rid of monkey patching and use instead polymorphism.
Classes
Base class for recursive metamodel traversal with 2 modes: |
Module Contents
- class ExprVisitor[source]
Bases:
abc.ABC
- Base class for recursive metamodel traversal with 2 modes:
Generating text by appending context while traversing AST.
Analyzing/Mutating the AST (sometimes with the help of a context) and returning a modified AST.
To implement a new visitor, overload the ‘generate’ method of nodes that need altered visitation behavior. Use self for additonal global state information Use context for stack-based information that is only relevant for the current branch of the AST.
- abstract generate(expr: m2isar.metamodel.behav.BaseNode, context=None)[source]
- abstract default_visit(expr: m2isar.metamodel.behav.BaseNode, context)[source]
- visit_codeliteral(expr: m2isar.metamodel.behav.CodeLiteral, context)[source]
- visit_operator(expr: m2isar.metamodel.behav.Operator, context)[source]
- visit_operation(expr: m2isar.metamodel.behav.Operation, context)[source]
- visit_block(expr: m2isar.metamodel.behav.Block, context)[source]
- visit_binary_operation(expr: m2isar.metamodel.behav.BinaryOperation, context)[source]
- visit_slice_operation(expr: m2isar.metamodel.behav.SliceOperation, context)[source]
- visit_concat_operation(expr: m2isar.metamodel.behav.ConcatOperation, context)[source]
- visit_number_literal(expr: m2isar.metamodel.behav.NumberLiteral, context)[source]
- visit_int_literal(expr: m2isar.metamodel.behav.IntLiteral, context)[source]
- visit_string_literal(expr: m2isar.metamodel.behav.StringLiteral, context)[source]
- visit_assignment(expr: m2isar.metamodel.behav.Assignment, context)[source]
- visit_conditional(expr: m2isar.metamodel.behav.Conditional, context)[source]
- visit_loop(expr: m2isar.metamodel.behav.Loop, context)[source]
- visit_ternary_operation(expr: m2isar.metamodel.behav.Ternary, context)[source]
- visit_return_operation(expr: m2isar.metamodel.behav.Return, context)[source]
- visit_unary_operation(expr: m2isar.metamodel.behav.UnaryOperation, context)[source]
- visit_scalar_definition(expr: m2isar.metamodel.behav.ScalarDefinition, context)[source]
- visit_break(expr: m2isar.metamodel.behav.Break, context)[source]
- visit_named_reference(expr: m2isar.metamodel.behav.NamedReference, context)[source]
- visit_indexed_reference(expr: m2isar.metamodel.behav.IndexedReference, context)[source]
- visit_type_conv(expr: m2isar.metamodel.behav.TypeConv, context)[source]
- visit_callable(expr: m2isar.metamodel.behav.Callable, context)[source]
- visit_procedure_call(expr: m2isar.metamodel.behav.Callable, context)[source]
- visit_group(expr: m2isar.metamodel.behav.Group, context)[source]