示例#1
0
文件: exec.c 项目: fenglyu/streem
static void
node_init(strm_state* state)
{
  strm_var_def("STDIN", strm_ptr_value(strm_io_new(0, STRM_IO_READ)));
  strm_var_def("STDOUT", strm_ptr_value(strm_io_new(1, STRM_IO_WRITE)));
  strm_var_def("STDERR", strm_ptr_value(strm_io_new(2, STRM_IO_WRITE)));
  strm_var_def("puts", strm_cfunc_value(exec_puts));
  strm_var_def("+", strm_cfunc_value(exec_plus));
  strm_var_def("-", strm_cfunc_value(exec_minus));
  strm_var_def("*", strm_cfunc_value(exec_mult));
  strm_var_def("/", strm_cfunc_value(exec_div));
  strm_var_def("<", strm_cfunc_value(exec_lt));
  strm_var_def("<=", strm_cfunc_value(exec_le));
  strm_var_def(">", strm_cfunc_value(exec_gt));
  strm_var_def(">=", strm_cfunc_value(exec_ge));
  strm_var_def("==", strm_cfunc_value(exec_eq));
  strm_var_def("!=", strm_cfunc_value(exec_neq));
  strm_var_def("|", strm_cfunc_value(exec_bar));
  strm_var_def("%", strm_cfunc_value(exec_mod));
  strm_var_def("fread", strm_cfunc_value(exec_fread));
  strm_var_def("fwrite", strm_cfunc_value(exec_fwrite));

  strm_seq_init(state);
  strm_socket_init(state);
  strm_csv_init(state);
}
示例#2
0
文件: exec.c 项目: faicm/streem
int
node_run(parser_state* p)
{
  strm_value v;

  node_init(&p->ctx);
  strm_seq_init(&p->ctx);
  exec_expr(&p->ctx, (node*)p->lval, &v);
  if (p->ctx.exc != NULL) {
    strm_value v;
    exec_cputs(&p->ctx, stderr, 1, &p->ctx.exc->arg, &v);
    /* TODO: garbage correct previous exception value */
    p->ctx.exc = NULL;
  }
  return 0;
}