コード例 #1
0
ファイル: prim_if.c プロジェクト: carado/plisp
Eval prim_if(Expr args) {
	Env* env = take_typed(&args, ENVIRONMENT).env;
	Expr cond = take_arg(&args);
	Expr cons = take_arg(&args);
	Expr alt = take_arg(&args);
	take_nil(args);
	
	cond = eval(cond, env);
	if(cond.type != BOOLEAN)
		error(L"Condition must evaluate to boolean");
	
	return must_eval(cond.boolean ? cons : alt, env);
}
コード例 #2
0
ファイル: actor.c プロジェクト: organix/art
static KIND(empty_beh_kind)
{
    TRACE(fprintf(stderr, "%p(empty_beh_kind)\n", self));
    OOP evt = take_arg();
    OOP act = as_event(evt)->actor;
    OOP msg = as_event(evt)->msg;
    TRACE(fprintf(stderr, "  %p: event=%p {actor:%p, msg:%p}\n", self, evt, act, msg));
    return o_true;  // commit
}
コード例 #3
0
ファイル: main.c プロジェクト: Albatroce/epita
int	main(int argc, char **argv)
{
  int	flag, pos;

  pos = take_arg(argc, argv, &flag);
  if (pos >= argc)
    {
      my_write(STDERR_FILENO, ARG_NOT_ENOUGHT, my_strlen(ARG_NOT_ENOUGHT));
      exit(1);
    }
  for (pos = pos; pos < argc; pos++)
    {
      my_putstrstr("|=====> Assembling ^\n", argv[pos]);
      compilation_fichier(argv[pos], flag);
      my_putstr("______________________________\n");
    }
  return (0);
}
コード例 #4
0
ファイル: prim_quote.c プロジェクト: carado/plisp
Eval prim_quote(Expr args) {
	take_typed(&args, ENVIRONMENT);
	Expr e = take_arg(&args);
	take_nil(args);
	return final_eval(e);
}