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
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
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()
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 }
def getIdentifiers(self): print(CustomError('Method not implemented.'))
def evaluateType(self, s): print(CustomError('Method not implemented.'))
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
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