コード例 #1
0
def trystep(config):
    (n, vs, I, O) = config
    v = findn(vs, n)
    (n, c) = v.params
    if c.operator == END:
        return (TERMINATED, None)
    elif I == [] and (c.operator in (DOUNTIL, IFELSE)):
        return (WAITING, None)
    elif c.operator == DOONCE:
        (a, n2) = c.params
        doaction(a)
        return (STEP, (n2, vs, I, [a] + O))
    elif c.operator == DOUNTIL:
        (a, cnd, n2) = c.params
        b = checkcond(cnd)
        doaction(a)
        if b:
            return (STEP, (n2, vs, I, [a] + O))
        else:
            return (STEP, (n, vs, I, [a] + O))
    elif c.operator == IFELSE:
        (cnd, n2, n3) = c.params
        b = checkcond(cnd)
        if b:
            return (STEP, (n2, vs, I, O))
        else:
            return (STEP, (n3, vs, I, O))
    elif c.operator == GOTO:
        (n2, ) = c.params
        return (STEP, (n2, vs, I, O))
    else:
        publisher.publish("Runtime Error: Unknown Content Operator?")
        raise Exception("Runtime Error: Unknown Content Operator?")
コード例 #2
0
def trystep(config):
  (n, vs, I, O) = config
  v = findn(vs, n)
  (n, c) = v.params
  if c.operator == END:
    return (TERMINATED, None)
  elif I == [] and (c.operator in (DOUNTIL, IFELSE)):
    return (WAITING, None)
  elif c.operator == DOONCE:
    (a, n2) = c.params
    doaction(a)
    return (STEP, (n2, vs, I, [a] + O))
  elif c.operator == DOUNTIL:
    (a, cnd, n2) = c.params
    b = checkcond(cnd)
    doaction(a)
    if b:
      return (STEP, (n2, vs, I, [a] + O))
    else:
      return (STEP, (n, vs, I, [a] + O))
  elif c.operator == IFELSE:
    (cnd, n2, n3) = c.params
    b = checkcond(cnd)
    if b:
      return (STEP, (n2, vs, I, O))
    else:
      return (STEP, (n3, vs, I, O))
  elif c.operator == GOTO:
    (n2,) = c.params
    return (STEP, (n2, vs, I, O))
  else:
    raise Exception("Runtime Error: Unknown Content Operator?")
コード例 #3
0
 def trystep(self, config):
     (n, vs, I, O) = config
     v = findn(vs, n)
     (n, c) = v.params
     if c.operator == END:
         return (TERMINATED, None)
     elif I == [] and (c.operator in (DOUNTIL, IFELSE)):
         return (WAITING, None)
     elif c.operator == DOONCE:
         (a, n2) = c.params
         self._success = self.doaction(a, n)
         result = STEP if self._success else FAIL
         return (result, (n2, vs, I, [a] + O))
     elif c.operator == DOUNTIL:
         (a, cnd, n2) = c.params
         b = checkcond(cnd)
         self._sucess = self.doaction(a, n)
         result = STEP if self._success else FAIL
         if b:
             return (result, (n2, vs, I, [a] + O))
         else:
             return (result, (n, vs, I, [a] + O))
     elif c.operator == IFELSE:
         (cnd, n2, n3) = c.params
         b = checkcond(cnd)
         if b:
             return (STEP, (n2, vs, I, O))
         else:
             return (STEP, (n3, vs, I, O))
     elif c.operator == GOTO:
         (n2, ) = c.params
         return (STEP, (n2, vs, I, O))
     else:
         self.publish_feedback("Runtime Error: Unsupported action!")
         self._success = False
コード例 #4
0
	def trystep(self, config):
		(n, vs, I, O) = config
		v = findn(vs, n)
		(n, c) = v.params
		if c.operator == END:
			return (TERMINATED, None)
		elif I == [] and (c.operator in (DOUNTIL, IFELSE)):
			return (WAITING, None)
		elif c.operator == DOONCE:
			(a, n2) = c.params
			self._success = self.doaction(a)
			result = STEP if self._success else FAIL
			return (result, (n2, vs, I, [a] + O))
		elif c.operator == DOUNTIL:
			(a, cnd, n2) = c.params
			b = checkcond(cnd)
			self._sucess = self.doaction(a)
			result = STEP if self._success else FAIL
			if b:
		  		return (result, (n2, vs, I, [a] + O))
			else:
		  		return (result, (n, vs, I, [a] + O))
		elif c.operator == IFELSE:
			(cnd, n2, n3) = c.params
			b = checkcond(cnd)
			if b:
		  		return (STEP, (n2, vs, I, O))
			else:
		  		return (STEP, (n3, vs, I, O))
		elif c.operator == GOTO:
			(n2,) = c.params
			return (STEP, (n2, vs, I, O))
		else:
			self.publish_feedback("Runtime Error: Unsupported action!");
			self._success = False