Esempio n. 1
0
/* SUBGOAL switch-on ?knob
 * SUBGOAL switch-off ?knob
 */
void PA_SwitchX(Context *cx, Subgoal *sg, Ts *ts, Obj *a, Obj *o)
{
  Obj *p;
  Dbg(DBGPLAN, DBGOK, "PA_SwitchX", E);
  switch (sg->state) {
    case STBEGIN:
      if (!ISA(N("lock"), I(o,1))) {
        TOSTATE(cx, sg, 1);
        return;
      }
      if (!(p = R1EI(2, ts, L(N("key-of"), I(o,1), ObjWild, E)))) {
        Dbg(DBGPLAN, DBGBAD, "PA_SwitchX: no key found");
        goto failure;
      }
      SG(cx, sg, 1, STFAILURE, L(N("inside"), p, I(o,1), E));
      return;
    case 1:
      if (!(p = PA_GetFreeHand(ts, a))) goto failure;
      SG(cx, sg, STSUCCESS, STFAILURE, L(N("flip-to"), p, I(o,1), ObjNA,
                                         I(o,0), E));
      return;
    default: Dbg(DBGPLAN, DBGBAD, "PA_SwitchX: undefined state %d", sg->state);
  }
failure:
  TOSTATE(cx, sg, STFAILURE);
}
Esempio n. 2
0
/* Assumes srclang != tgtlang. */
Obj *TranslateCompoundTense(Obj *comptense, int srclang, int tgtlang)
{
  Obj	*rel, *r;
  if (comptense == NULL) return(NULL);
  if (tgtlang == F_FRENCH) rel = N("fr-translation-of");
  else rel = N("eng-translation-of");
  if ((r = R1EI(2, &TsNA, L(rel, comptense, ObjWild, E)))) {
    return(r);
  }
  return(comptense);
}