126 lines
1.6 KiB
Python
126 lines
1.6 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class NumberNode:
|
|
value: float
|
|
|
|
def __repr__(self):
|
|
return f"{self.value}"
|
|
|
|
|
|
@dataclass
|
|
class AddNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_a}+{self.node_b}]"
|
|
|
|
|
|
|
|
@dataclass
|
|
class SubtractNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_a}-{self.node_b}]"
|
|
|
|
|
|
|
|
@dataclass
|
|
class MultiplyNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_a}*{self.node_b}]"
|
|
|
|
|
|
@dataclass
|
|
class DivideNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_a}/{self.node_b}]"
|
|
|
|
@dataclass
|
|
class PowerNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_b}^{self.node_b}]"
|
|
|
|
|
|
@dataclass
|
|
class ModuleNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_b}%{self.node_b}]"
|
|
|
|
@dataclass
|
|
class AverageNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_b}@{self.node_b}]"
|
|
|
|
|
|
|
|
@dataclass
|
|
class MaximumNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_b}${self.node_b}]"
|
|
|
|
|
|
@dataclass
|
|
class MinimumNode:
|
|
node_a: any
|
|
node_b: any
|
|
|
|
def __repr__(self):
|
|
return f"[{self.node_b}&{self.node_b}]"
|
|
|
|
|
|
|
|
# Uniary symbols #
|
|
|
|
@dataclass
|
|
class PlusNode:
|
|
node: any
|
|
|
|
def __repr__(self):
|
|
return f"(+{self.node})"
|
|
|
|
|
|
@dataclass
|
|
class MinusNode:
|
|
node: any
|
|
|
|
def __repr__(self):
|
|
return f"(-{self.node})"
|
|
|
|
|
|
@dataclass
|
|
class FactorialNode:
|
|
node: any
|
|
|
|
def __repr__(self):
|
|
return f"(!{self.node})"
|
|
|
|
|
|
@dataclass
|
|
class NegateNode:
|
|
node: any
|
|
|
|
def __repr__(self):
|
|
return f"(~{self.node})"
|