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
示例#2
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()
示例#3
0
 def unequality_operation(self, expression: UnequalityOperation):
     self.__default__(expression)
     if expression.left_expression.type != expression.right_expression.type:
         raise BadOperandException("!=", expression.left_expression.type, expression.right_expression.type)
     expression.type = BooleanType()
示例#4
0
 def and_operation(self, expression: AndOperation):
     self.__default__(expression)
     if expression.left_expression.type != BooleanType() or expression.right_expression.type != BooleanType():
         raise BadOperandException("&&", expression.left_expression.type, expression.right_expression.type)
     expression.type = BooleanType()
示例#5
0
 def unary_not_operation(self, expression: UnaryNotOperation):
     if expression.expression.type != BooleanType():
         raise BadOperandException("!", expression.expression.type)
     expression.type = BooleanType()
示例#6
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()