def to_string(self) -> str: if isinstance(self.source, Variable): return f"scoreboard players operation {self.target.get_identifier()} = {self.source.get_identifier()}" else: if self.source.type == IntType(): return f"scoreboard players set {self.target.get_identifier()} {self.source.value}" else: return f"scoreboard players set {self.target.get_identifier()} {bool_to_int(self.source.value)}"
def __init__(self, value: Token): super().__init__([]) self.value: Token = value self.type: Type = None if value.type == "INT": self.type = IntType() elif value.type == "BOOLEAN": self.type = BooleanType() else: assert False
def less_then_equals_operation(self, expression: LessThenEqualsOperation): self.__default__(expression) if expression.left_expression.type != IntType() or expression.right_expression.type != IntType(): raise BadOperandException("<=", expression.left_expression.type, expression.right_expression.type) expression.type = BooleanType()
def unary_minus_operation(self, expression: UnaryMinusOperation): if expression.expression.type != IntType(): raise BadOperandException("-", expression.expression.type) expression.type = IntType()
def modulo_operation(self, expression: ModuloOperation): self.__default__(expression) if expression.left_expression.type != IntType() or expression.right_expression.type != IntType(): raise BadOperandException("%", expression.left_expression.type, expression.right_expression.type) expression.type = IntType()
def division_operation(self, expression: DivisionOperation): self.__default__(expression) if expression.left_expression.type != IntType() or expression.right_expression.type != IntType(): raise BadOperandException("/", expression.left_expression.type, expression.right_expression.type) expression.type = IntType()
def greater_then_operation(self, expression: GreaterThenOperation): self.__default__(expression) if expression.left_expression.type != IntType() or expression.right_expression.type != IntType(): raise BadOperandException(">", expression.left_expression.type, expression.right_expression.type) expression.type = BooleanType()