def testValidEval(expression, scope, sem): """ Reports an error in the model if a NameError is raised while evaluating 'expression'. """ env = createDummyEnvironment(scope) try: safeEval(expression, env) except Exception as e: if isinstance(e, NameError): reportError(str(e), sem)
def setSpeed_callback(data): global gModel ## Flatten into tuples angular = (data.angular.x, data.angular.y, data.angular.z) linear = (data.linear.x, data.linear.y, data.linear.z) env = dict() env["angular"] = angular env["linear"] = linear env['angular'] = rdis.safeEval('<angular[0]>', env) env['linear'] = rdis.safeEval('<linear[0]>', env) gModel.callDomainInterface('set_velocity', env)
def publish_hitObject(rdisMsg, pub): env = dict() ## Generated initializations from model. env['distance'] = rdisMsg['distance'] ## Generated mappings to ROS bool from any domain adapter of RDIS. env['data'] = rdis.safeEval('<distance == 0>', env) ## Statements above should have initialized env['data'] pub.publish(Bool( env['data'] ))
def testType(initValue, ptype, semObj): """ Reports error if initValue does not safeEval() to a Python type which corresponds to the RDIS type ptype. """ if initValue == "": return value = None try: value = safeEval(initValue, dict()) except Exception as e: reportError(str(e), semObj) return targetType = mapType(ptype) if not isinstance(value, eval(targetType)): reportError( "Invalid type. Evaluated Python type '{}' but wanted '{}'.".format(repr(type(value)), repr(targetType)), semObj, )