Example #1
0
// picoc: term_moveright(cols);
static void pterm_moveright(pstate *p, val *r, val **param, int n)
{
  unsigned delta;
  delta = param[0]->Val->UnsignedInteger;

  term_right(delta);
}
Example #2
0
Expr* APDEvaluator::term_right(const char* string, Expr* expr) {
  Expr* new_expr;

  switch(string[G_STRING_ITERATOR]) {
  case '+':
  case '-':
  case '[':
  case ']':
  case '<':
  case '>':
  case '=':
  case '&':
  case '|':
    if(NULL == (new_expr = (Expr*)malloc(sizeof(Expr)))) {
      exit(1);
    }
    if(NULL == (new_expr->data.expr[1] = (Expr*)malloc(sizeof(Expr)))) {
      exit(1);
    }
    new_expr->op = proc_c(string, string[G_STRING_ITERATOR]);
    new_expr->data.expr[0] = expr;

    new_expr->data.expr[1] = term(string, new_expr->data.expr[1]);
    new_expr = term_right(string, new_expr);
    return new_expr;
  case ')':
  case 's':
  case 'c':
  case 0:
    return expr;
  default:
    parse_error(string);
  }
}
Example #3
0
// Lua: moveright( cols )
static int luaterm_moveright( lua_State* L )
{
  unsigned delta;
  
  delta = ( unsigned )luaL_checkinteger( L, 1 );
  term_right( delta );
  return 0;
}
Example #4
0
// (term-moveright 'num) -> Nil
any plisp_term_moveright(any ex) {
  any x, y;
  long n;
  
  x = cdr(ex), y = EVAL(car(x));
  NeedNum(ex, y);
  n = unBox(y);
  term_right(n);
  return Nil;
}
Example #5
0
// TODO add lookahead for sensor and control expressions
Expr* APDEvaluator::expression(const char* string) {
  Expr* expr;

  if(string[G_STRING_ITERATOR] == '(' || isdigit(string[G_STRING_ITERATOR])|| string[G_STRING_ITERATOR]=='c'|| string[G_STRING_ITERATOR]=='s') {
    if(NULL == (expr = (Expr*)malloc(sizeof(Expr)))) {
      exit(1);			// TODO this is not the way to handle this
    }

    expr = term(string, expr);
    expr = term_right(string, expr);
    return expr;
  } else {
    parse_error(string);
  }
}