diff options
Diffstat (limited to 'pyecsca/ec/op.py')
| -rw-r--r-- | pyecsca/ec/op.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/pyecsca/ec/op.py b/pyecsca/ec/op.py index ea2254f..6a057fe 100644 --- a/pyecsca/ec/op.py +++ b/pyecsca/ec/op.py @@ -1,6 +1,6 @@ -from ast import Module, walk, Name +from ast import Module, walk, Name, BinOp, operator from types import CodeType -from typing import FrozenSet +from typing import FrozenSet, Optional from .mod import Mod @@ -16,6 +16,7 @@ class Op(object): class CodeOp(Op): code: Module + operator: Optional[operator] compiled: CodeType def __init__(self, code: Module): @@ -24,6 +25,7 @@ class CodeOp(Op): self.result = assign.targets[0].id params = set() variables = set() + op = None for node in walk(assign.value): if isinstance(node, Name): name = node.id @@ -31,6 +33,9 @@ class CodeOp(Op): variables.add(name) else: params.add(name) + elif isinstance(node, BinOp): + op = node.op + self.operator = op self.parameters = frozenset(params) self.variables = frozenset(variables) self.compiled = compile(self.code, "", mode="exec") |
