lyra.core package¶
Submodules¶
Control Flow Graph¶
Lyra’s internal representation of a Python program.
Author: | Caterina Urban |
---|
-
class
lyra.core.cfg.
Basic
(identifier: int, stmts: typing.List[lyra.core.statements.Statement] = None)[source]¶ Bases:
lyra.core.cfg.Node
-
class
lyra.core.cfg.
Conditional
(source: typing.Union[lyra.core.cfg.Node, NoneType], condition: lyra.core.statements.Statement, target: typing.Union[lyra.core.cfg.Node, NoneType], kind=<Kind.DEFAULT: 0>)[source]¶ Bases:
lyra.core.cfg.Edge
-
condition
¶
-
-
class
lyra.core.cfg.
ControlFlowGraph
(nodes: typing.Set[lyra.core.cfg.Node], in_node: lyra.core.cfg.Node, out_node: lyra.core.cfg.Node, edges: typing.Set[lyra.core.cfg.Edge])[source]¶ Bases:
object
-
edges
¶
-
in_edges
(node: lyra.core.cfg.Node) → typing.Set[lyra.core.cfg.Edge][source]¶ Ingoing edges of a given node.
Parameters: node – given node Returns: set of ingoing edges of the node
-
in_node
¶
-
nodes
¶
-
out_edges
(node: lyra.core.cfg.Node) → typing.Set[lyra.core.cfg.Edge][source]¶ Outgoing edges of a given node.
Parameters: node – given node Returns: set of outgoing edges of the node
-
out_node
¶
-
-
class
lyra.core.cfg.
Edge
(source: lyra.core.cfg.Node, target: lyra.core.cfg.Node, kind: lyra.core.cfg.Edge.Kind = <Kind.DEFAULT: 0>)[source]¶ Bases:
object
-
class
Kind
[source]¶ Bases:
enum.Enum
Kind of an edge of a control flow graph.
-
DEFAULT
= 0¶
-
IF_IN
= 2¶
-
IF_OUT
= -2¶
-
LOOP_IN
= 1¶
-
LOOP_OUT
= -1¶
-
-
kind
¶
-
source
¶
-
target
¶
-
class
-
class
lyra.core.cfg.
Loop
(identifier: int, stmts: typing.List[lyra.core.statements.Statement] = None)[source]¶ Bases:
lyra.core.cfg.Node
-
class
lyra.core.cfg.
Node
(identifier: int, stmts: typing.List[lyra.core.statements.Statement])[source]¶ Bases:
object
-
identifier
¶
-
size
()[source]¶ Number of statements stored in the node.
Returns: number of statements stored in the node
-
stmts
¶
-
-
class
lyra.core.cfg.
Unconditional
(source: typing.Union[lyra.core.cfg.Node, NoneType], target: typing.Union[lyra.core.cfg.Node, NoneType], kind=<Kind.DEFAULT: 0>)[source]¶ Bases:
lyra.core.cfg.Edge
Expressions¶
Lyra’s internal representation of Python expressions.
Authors: | Caterina Urban and Simon Wehrli |
---|
-
class
lyra.core.expressions.
AttributeReference
(typ: lyra.core.types.LyraType, target: lyra.core.expressions.Expression, attribute: lyra.core.expressions.Identifier)[source]¶ Bases:
lyra.core.expressions.Expression
Attribute reference representation.
https://docs.python.org/3.4/reference/expressions.html#attribute-references
-
attribute
¶
-
target
¶
-
-
class
lyra.core.expressions.
BinaryArithmeticOperation
(typ: lyra.core.types.LyraType, left: lyra.core.expressions.Expression, operator: lyra.core.expressions.BinaryArithmeticOperation.Operator, right: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.BinaryOperation
Binary arithmetic operation expression representation.
https://docs.python.org/3.4/reference/expressions.html#binary-arithmetic-operations
-
class
lyra.core.expressions.
BinaryBooleanOperation
(typ: lyra.core.types.LyraType, left: lyra.core.expressions.Expression, operator: lyra.core.expressions.BinaryBooleanOperation.Operator, right: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.BinaryOperation
Binary boolean operation expression representation.
https://docs.python.org/3.6/reference/expressions.html#boolean-operations
-
class
lyra.core.expressions.
BinaryComparisonOperation
(typ: lyra.core.types.LyraType, left: lyra.core.expressions.Expression, operator: lyra.core.expressions.BinaryComparisonOperation.Operator, right: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.BinaryOperation
Binary comparison operation expression representation.
https://docs.python.org/3.4/reference/expressions.html#comparisons
-
class
lyra.core.expressions.
BinaryOperation
(typ: lyra.core.types.LyraType, left: lyra.core.expressions.Expression, operator: lyra.core.expressions.BinaryOperation.Operator, right: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Operation
Binary operation representation.
-
left
¶
-
operator
¶
-
right
¶
-
-
class
lyra.core.expressions.
BinarySequenceOperation
(typ: lyra.core.types.LyraType, left: lyra.core.expressions.Expression, operator: lyra.core.expressions.BinarySequenceOperation.Operator, right: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.BinaryOperation
Binary sequence operation expression representation.
-
class
lyra.core.expressions.
Call
(typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.expressions.Expression
Call representation.
https://docs.python.org/3.4/reference/expressions.html#calls
-
class
lyra.core.expressions.
DictDisplay
(typ: lyra.core.types.DictLyraType, keys: typing.List[lyra.core.expressions.Expression] = None, values: typing.List[lyra.core.expressions.Expression] = None)[source]¶ Bases:
lyra.core.expressions.Expression
Dictionary display representation.
https://docs.python.org/3/reference/expressions.html#dictionary-displays
-
keys
¶
-
values
¶
-
-
class
lyra.core.expressions.
Expression
(typ: lyra.core.types.LyraType)[source]¶ Bases:
object
Expression representation.
https://docs.python.org/3.4/reference/expressions.html
-
ids
() → typing.Set[_ForwardRef(‘VariableIdentifier’)][source]¶ Identifiers that appear in the expression.
Returns: set of identifiers that appear in the expression
-
typ
¶
-
-
class
lyra.core.expressions.
ExpressionVisitor
[source]¶ Bases:
object
An expression visitor base class that walks the expression tree and calls a visitor function for every expression found. This function may return a value which is forwarded by the visit method.
Subclasses are meant to implement the visitor functions. The visitor function for an expression is
'visit_'
+ class name of the expression. So a Literal expression visit function would be visit_Literal. If no visitor function exists for an expression a NotImplementedError is raised.Adapted from ast.py.
-
visit_AttributeReference
(expr: lyra.core.expressions.AttributeReference)[source]¶ Visit of an attribute reference.
-
visit_BinaryArithmeticOperation
(expr: lyra.core.expressions.BinaryArithmeticOperation)[source]¶ Visit of a binary arithmetic operation.
-
visit_BinaryBooleanOperation
(expr: lyra.core.expressions.BinaryBooleanOperation)[source]¶ Visit of a binary boolean operation.
-
visit_BinaryComparisonOperation
(expr: lyra.core.expressions.BinaryComparisonOperation)[source]¶ Visit of a binary comparison operation.
-
visit_BinarySequenceOperation
(expr: lyra.core.expressions.BinarySequenceOperation)[source]¶ Visit of a binary sequence operation.
-
visit_LengthIdentifier
(expr: lyra.core.expressions.LengthIdentifier)[source]¶ Visit of a sequence or collection length.
-
visit_Subscription
(expr: lyra.core.expressions.Subscription)[source]¶ Visit of a subscription expression.
-
visit_UnaryArithmeticOperation
(expr: lyra.core.expressions.UnaryArithmeticOperation)[source]¶ Visit of a unary arithmetic operation.
-
-
class
lyra.core.expressions.
Identifier
(typ: lyra.core.types.LyraType, name: str)[source]¶ Bases:
lyra.core.expressions.Expression
Identifier representation.
https://docs.python.org/3.4/reference/expressions.html#atom-identifiers
-
name
¶
-
-
class
lyra.core.expressions.
Input
(typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.expressions.Call
Input call representation.
-
class
lyra.core.expressions.
Items
(typ: lyra.core.types.LyraType, target_dict: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Call
Items call representation
-
target_dict
¶
-
-
class
lyra.core.expressions.
Keys
(typ: lyra.core.types.LyraType, target_dict: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Call
Keys call representation
-
target_dict
¶
-
-
class
lyra.core.expressions.
LengthIdentifier
(variable: lyra.core.expressions.VariableIdentifier)[source]¶ Bases:
lyra.core.expressions.Identifier
Sequence or collection length representation.
-
variable
¶
-
-
class
lyra.core.expressions.
ListDisplay
(typ: lyra.core.types.ListLyraType, items: typing.List[lyra.core.expressions.Expression] = None)[source]¶ Bases:
lyra.core.expressions.Expression
List display representation.
https://docs.python.org/3/reference/expressions.html#list-displays
-
items
¶
-
-
class
lyra.core.expressions.
Literal
(typ: lyra.core.types.LyraType, val: str)[source]¶ Bases:
lyra.core.expressions.Expression
Literal representation.
https://docs.python.org/3.4/reference/expressions.html#literals
-
val
¶
-
-
class
lyra.core.expressions.
NegationFreeNormalExpression
[source]¶ Bases:
lyra.core.expressions.ExpressionVisitor
An expression visitor that:
- removes negations using De Morgan’s law, and
- puts all boolean comparison operations with
=
,!=
,<
,<=
,>
, and>=
in the normal formexpr <= 0
.
-
visit_AttributeReference
(expr: lyra.core.expressions.AttributeReference, invert=False)[source]¶ Visit of an attribute reference.
-
visit_BinaryArithmeticOperation
(expr: lyra.core.expressions.BinaryArithmeticOperation, invert=False)[source]¶ Visit of a binary arithmetic operation.
-
visit_BinaryBooleanOperation
(expr: lyra.core.expressions.BinaryBooleanOperation, invert=False)[source]¶ Visit of a binary boolean operation.
-
visit_BinaryComparisonOperation
(expr: lyra.core.expressions.BinaryComparisonOperation, invert=False)[source]¶ Visit of a binary comparison operation.
-
visit_BinarySequenceOperation
(expr: lyra.core.expressions.BinarySequenceOperation, invert=False)[source]¶ Visit of a binary sequence operation.
-
visit_DictDisplay
(expr: lyra.core.expressions.DictDisplay, invert=False)[source]¶ Visit of dictionary display.
-
visit_Input
(expr: lyra.core.expressions.Input, invert=False)[source]¶ Visit of an input call expression.
-
visit_LengthIdentifier
(expr: lyra.core.expressions.LengthIdentifier, invert=False)[source]¶ Visit of a sequence or collection length.
-
visit_ListDisplay
(expr: lyra.core.expressions.ListDisplay, invert=False)[source]¶ Visit of a list display.
-
visit_Literal
(expr: lyra.core.expressions.Literal, invert=False)[source]¶ Visit of a literal expression.
-
visit_Range
(expr: lyra.core.expressions.Range, invert=False)[source]¶ Visit of a range call expression.
-
visit_SetDisplay
(expr: lyra.core.expressions.SetDisplay, invert=False)[source]¶ Visit of a set display.
-
visit_Slicing
(expr: lyra.core.expressions.Slicing, invert=False)[source]¶ Visit of a slicing expression.
-
visit_Subscription
(expr: lyra.core.expressions.Subscription, invert=False)[source]¶ Visit of a subscription expression.
-
visit_TupleDisplay
(expr: lyra.core.expressions.TupleDisplay, invert=False)[source]¶ Visit of a tuple display.
-
visit_UnaryArithmeticOperation
(expr: lyra.core.expressions.UnaryArithmeticOperation, invert=False)[source]¶ Visit of a unary arithmetic operation.
-
class
lyra.core.expressions.
Operation
(typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.expressions.Expression
Operation representation.
-
class
lyra.core.expressions.
Range
(typ: lyra.core.types.LyraType, start: lyra.core.expressions.Expression, stop: lyra.core.expressions.Expression, step: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Call
Range call representation.
-
start
¶
-
step
¶
-
stop
¶
-
-
class
lyra.core.expressions.
SetDisplay
(typ: lyra.core.types.SetLyraType, items: typing.List[lyra.core.expressions.Expression] = None)[source]¶ Bases:
lyra.core.expressions.Expression
Set display representation.
https://docs.python.org/3/reference/expressions.html#set-displays
-
items
¶
-
-
class
lyra.core.expressions.
Slicing
(typ: lyra.core.types.LyraType, target: lyra.core.expressions.Expression, lower: lyra.core.expressions.Expression, upper: lyra.core.expressions.Expression, stride: lyra.core.expressions.Expression = None)[source]¶ Bases:
lyra.core.expressions.Expression
Slicing representation.
https://docs.python.org/3.4/reference/expressions.html#slicings
-
lower
¶
-
stride
¶
-
target
¶
-
upper
¶
-
-
class
lyra.core.expressions.
Subscription
(typ: lyra.core.types.LyraType, target: lyra.core.expressions.Expression, key: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Expression
Subscription representation.
https://docs.python.org/3.4/reference/expressions.html#subscriptions
-
key
¶
-
target
¶
-
-
class
lyra.core.expressions.
TupleDisplay
(typ: lyra.core.types.TupleLyraType, items: typing.List[lyra.core.expressions.Expression] = None)[source]¶ Bases:
lyra.core.expressions.Expression
Tuple display (= expression list with comma or ()) representation.
https://docs.python.org/3/reference/expressions.html#expression-lists
-
items
¶
-
-
class
lyra.core.expressions.
UnaryArithmeticOperation
(typ: lyra.core.types.LyraType, operator: lyra.core.expressions.UnaryArithmeticOperation.Operator, expression: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.UnaryOperation
Unary arithmetic operation expression representation.
https://docs.python.org/3.4/reference/expressions.html#unary-arithmetic-and-bitwise-operations
-
class
lyra.core.expressions.
UnaryBooleanOperation
(typ: lyra.core.types.LyraType, operator: lyra.core.expressions.UnaryBooleanOperation.Operator, expression: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.UnaryOperation
Unary boolean operation expression representation.
https://docs.python.org/3.4/reference/expressions.html#boolean-operations
-
class
lyra.core.expressions.
UnaryOperation
(typ: lyra.core.types.LyraType, operator: lyra.core.expressions.UnaryOperation.Operator, expression: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Operation
Unary operation representation.
-
expression
¶
-
operator
¶
-
-
class
lyra.core.expressions.
Values
(typ: lyra.core.types.LyraType, target_dict: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.expressions.Call
Values call representation
-
target_dict
¶
-
-
class
lyra.core.expressions.
VariableIdentifier
(typ: lyra.core.types.LyraType, name: str)[source]¶ Bases:
lyra.core.expressions.Identifier
Variable identifier representation.
Statements¶
Lyra’s internal representation of Python statements.
Authors: | Caterina Urban and Simon Wehrli |
---|
-
class
lyra.core.statements.
Assignment
(pp: lyra.core.statements.ProgramPoint, left: lyra.core.statements.ExpressionAccess, right: lyra.core.statements.Statement)[source]¶ Bases:
lyra.core.statements.Statement
Assignment Statements.
https://docs.python.org/3.4/reference/simple_stmts.html#assignment-statements
-
left
¶
-
right
¶
-
-
class
lyra.core.statements.
Call
(pp: lyra.core.statements.ProgramPoint, name: str, arguments: typing.List[lyra.core.statements.Statement], typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.statements.Statement
-
arguments
¶
-
name
¶
-
typ
¶
-
-
class
lyra.core.statements.
DictDisplayAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, keys: typing.List[lyra.core.statements.Statement], values: typing.List[lyra.core.statements.Statement])[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Dictionary display access representation. ({k:v, …})
-
keys
¶
-
values
¶
-
-
class
lyra.core.statements.
ExpressionAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.statements.Statement
Statement representation for statements that can appear on the left-hand side of assignments.
-
typ
¶
-
-
class
lyra.core.statements.
ListDisplayAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, items: typing.List[lyra.core.statements.Statement])[source]¶ Bases:
lyra.core.statements.ExpressionAccess
List display access representation.
-
items
¶
-
-
class
lyra.core.statements.
LiteralEvaluation
(pp: lyra.core.statements.ProgramPoint, literal: lyra.core.expressions.Expression)[source]¶ Bases:
lyra.core.statements.Statement
Literal evaluation expression.
-
literal
¶
-
-
class
lyra.core.statements.
ProgramPoint
(line: int, column: int)[source]¶ Bases:
object
-
column
¶
-
line
¶
-
-
class
lyra.core.statements.
SetDisplayAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, items: typing.List[lyra.core.statements.Statement])[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Set display access representation.
-
items
¶
-
-
class
lyra.core.statements.
SlicingAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, target: lyra.core.statements.Statement, lower: lyra.core.statements.Statement, upper: lyra.core.statements.Statement, stride: lyra.core.statements.Statement = None)[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Slicing access representation.
-
lower
¶
-
stride
¶
-
target
¶
-
upper
¶
-
-
class
lyra.core.statements.
Statement
(pp: lyra.core.statements.ProgramPoint)[source]¶ Bases:
object
Statement representation.
https://docs.python.org/3.4/reference/simple_stmts.html
-
pp
¶
-
-
class
lyra.core.statements.
SubscriptionAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, target: lyra.core.statements.Statement, key: lyra.core.statements.Statement)[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Subscription access representation.
-
key
¶
-
target
¶
-
-
class
lyra.core.statements.
TupleDisplayAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, items: typing.List[lyra.core.statements.Statement])[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Tuple display (= expression list with comma, or ()) access representation.
-
items
¶
-
-
class
lyra.core.statements.
VariableAccess
(pp: lyra.core.statements.ProgramPoint, typ: lyra.core.types.LyraType, variable: lyra.core.expressions.VariableIdentifier)[source]¶ Bases:
lyra.core.statements.ExpressionAccess
Variable access representation.
-
variable
¶
-
Types¶
Lyra’s internal representation of Python types.
Author: | Caterina Urban |
---|
-
class
lyra.core.types.
BooleanLyraType
[source]¶ Bases:
lyra.core.types.LyraType
Boolean type representation.
-
class
lyra.core.types.
ContainerLyraType
[source]¶ Bases:
lyra.core.types.LyraType
Container type representation.
-
class
lyra.core.types.
DictLyraType
(key_typ: lyra.core.types.LyraType, val_typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.types.ContainerLyraType
Dictionary type representation.
-
key_typ
¶ Type of the dictionary keys.
-
val_typ
¶ Type of the dictionary values.
-
-
class
lyra.core.types.
FloatLyraType
[source]¶ Bases:
lyra.core.types.LyraType
Float type representation.
-
class
lyra.core.types.
IntegerLyraType
[source]¶ Bases:
lyra.core.types.LyraType
Integer type representation.
-
class
lyra.core.types.
ListLyraType
(typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.types.SequenceLyraType
,lyra.core.types.ContainerLyraType
List type representation.
-
typ
¶ Type of the list elements.
-
-
class
lyra.core.types.
SequenceLyraType
[source]¶ Bases:
lyra.core.types.LyraType
Sequence type representation.
-
class
lyra.core.types.
SetLyraType
(typ: lyra.core.types.LyraType)[source]¶ Bases:
lyra.core.types.ContainerLyraType
Set type representation.
-
typ
¶ Type of the set elements.
-
-
class
lyra.core.types.
StringLyraType
[source]¶ Bases:
lyra.core.types.SequenceLyraType
String type representation.
-
class
lyra.core.types.
TupleLyraType
(typs: typing.List[lyra.core.types.LyraType])[source]¶ Bases:
lyra.core.types.SequenceLyraType
,lyra.core.types.ContainerLyraType
Tuple type representation.
-
typs
¶ Types of the tuple elements.
-