-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathservice.py
More file actions
33 lines (26 loc) · 1.07 KB
/
service.py
File metadata and controls
33 lines (26 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import re
import numpy as np
from generator import MBAGenerator
from bexpr import BExpr, evaluate_affine
from mutator import Mutator
# TODO: Trova un modo per inserirle dinamicamente
EXPRS = [
BExpr("x", lambda vars: vars[0]),
BExpr("y", lambda vars: vars[1]),
BExpr("x & y", lambda vars: vars[0] & vars[1]),
BExpr("x | (~y)", lambda vars: vars[0] | ~vars[1]),
BExpr("x ^ y", lambda vars: vars[0] ^ vars[1]),
BExpr("(~x) & (~y)", lambda vars: ~vars[0] & ~vars[1]),
BExpr("~x", lambda vars: ~vars[0]),
BExpr("~y", lambda vars: ~vars[1]),
BExpr("(~x) ^ (~y)", lambda vars: ~vars[0] ^ ~vars[1]),
BExpr("1", lambda vars: 1)
]
if __name__ == "__main__":
mutator = Mutator(EXPRS)
expr_text = input("Inserisci la combinazione affine di x e y da mutare:\n\n\t")
count = int(input("\nQuante vuoi crearne? "))
print("\nEspressione MBA generate:\n")
for i in range(count):
mba = mutator.rewrite(expr_text)
print(mba.as_string())