Esempio n. 1
0
 def evaluateType(self, s):
     lhsType = self.lhs.evaluateType(s)
     rhsType = self.rhs.evaluateType(s)
     if lhsType != rhsType:
         print(CustomError('SH??: Non - matching expression types \'{}\' and \'{}\''.format(lhsType, rhsType)))
     if lhsType != Tag.INTEGER_LITERAL:
         print(CustomError('SH??: Non-integer type in integer-only operator expression \'{}\''.format(lhsType)))
     return Tag.lhsType
Esempio n. 2
0
 def evaluateType(self, s):
     lhsType = self.lhs.evaluateType(s)
     rhsType = self.rhs.evaluateType(s)
     if lhsType != rhsType:
         print(CustomError('SH??: Non - matching expression types \'{}\' and \'{}\''.format(lhsType, rhsType)))
     if lhsType != Tag.BOOLEAN:
         print(CustomError('SH??: Non - boolean type in logic operator expression \'{}\''.format(lhsType)))
     return Tag.BOOLEAN
Esempio n. 3
0
    def evaluateType(self, s):
        funcDec = s.analyzer.find_function_declaration(self.id, s)
        funcParams = funcDec.get_params()
        callParams = self.get_params()

        if funcDec is not None:
            print(CustomError('SH19: Trying to call func {} but it\'s not declared'.format(self.id)))

        if len(funcParams) != len(callParams):
            print(CustomError('SH20: Func {} has {} params, called with {}'.format(self.id, len(funcParams), len(callParams))))

        for i in range(len(funcParams)):
            expectedType = funcParams[i].get_type()
            actualType = callParams[i].evaluateType(s)
            if expectedType != actualType:
                print(CustomError('SH21: Param at index {} expected to have type {} got {}'.format(i+1, expectedType, actualType)))
        return s.analyzer.find_function_declaration(self.id, s).get_return_type()
Esempio n. 4
0
    def validate(self, req):
        start_time = datetime.strptime(req.GET.get('start_time'), '%Y-%m-%d %H:%M:%S')
        end_time = datetime.strptime(req.GET.get('end_time'), '%Y-%m-%d %H:%M:%S')
        datetime_interval = int(req.GET.get('interval'))
        if end_time < start_time:
            raise CustomError(ErrEnums.DatetimeParamsError)

        interval = end_time - start_time

        if datetime_interval == DatetimeInterval.HOURS:
            if int(interval / two_hours) > 24:
                raise CustomError(ErrEnums.DatetimeIntervalError)
        if datetime_interval == DatetimeInterval.DAY:
            if int(interval / one_day) > 24:
                raise CustomError(ErrEnums.DatetimeIntervalError)
        # TODO 加入对月的统计
        # if datetime_interval == DatetimeInterval.MONTH:
        #     raise CustomError(ErrEnums.DatetimeIntervalError)
        return {
            'start_time': start_time,
            'end_time': end_time,
            'datetime_interval': datetime_interval
        }
Esempio n. 5
0
 def getIdentifiers(self):
     print(CustomError('Method not implemented.'))
Esempio n. 6
0
 def evaluateType(self, s):
     print(CustomError('Method not implemented.'))
Esempio n. 7
0
    def evaluateType(self, s):
        type = self.value.evaluateType(s);
        if type != Tag.INTEGER:
            print(CustomError('SH??: Non-integer type in integer-only operator expression \'{}\''.format(type)))

        return Tag.INTEGER
Esempio n. 8
0
 def evaluateType(self, s):
     type = self.value.evaluateType(s)
     if type != Tag.BOOLEAN:
         print(CustomError('SH??: Non - boolean type in logic operator expression \'{}\''.format(type)))
     return Tag.BOOLEAN