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)}"
Пример #2
0
 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
Пример #3
0
 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()
Пример #4
0
 def unary_minus_operation(self, expression: UnaryMinusOperation):
     if expression.expression.type != IntType():
         raise BadOperandException("-", expression.expression.type)
     expression.type = IntType()
Пример #5
0
 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()
Пример #6
0
 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()
Пример #7
0
 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()