コード例 #1
0
ファイル: corn.c プロジェクト: raspberry-alpha-omega/e13
// set up default entries and initialise variables
void corn_init() {
  // set "constants"
  INBUF_START = (address)(memory_start + sizeof(struct sys_const) + sizeof(struct sys_var));
  INBUF_END = INBUF_START + INBUF_BYTES;

  DSTACK_START = INBUF_END;
  DSTACK_END = DSTACK_START + DSTACK_WORDS * WORDSIZE;

  RSTACK_START = DSTACK_END;
  RSTACK_END = RSTACK_START + RSTACK_WORDS * WORDSIZE;

  SCRATCH_START = RSTACK_END;
  SCRATCH_END = SCRATCH_START + SCRATCH_BYTES;

  POOL_START = SCRATCH_END;
  POOL_END = POOL_START + POOL_BYTES;

  // set "variables"

  HEAP_NEXT = POOL_START;
  POOL_HEAD = 0;
  DICT_HEAD = 0;

  // Add dummy entry to heap
  padd(INBUF_START,0);

  reset_working_data();

  init_vars();
  init_prims();
  init_defs();

  reset_working_data();
}
コード例 #2
0
ファイル: compiler_test.c プロジェクト: Anehta/Eloquent
int main(int argc, char *argv[])
{
  char *inputs[] = {
      "(lambda (x) (return x))",
  };
  init_global_variable();
  init_prims();
  init_primitive_opcode();
  init_macros();
  load_init_file();
  for (int i = 0; i < sizeof(inputs) / sizeof(char *); i++) {
    write_raw_string(">> ", standard_out);
    write_raw_string(inputs[i], standard_out);
    write_raw_char('\n', standard_out);
    lisp_object_t *expr = read_object_from_string(strdup(inputs[i]));
    expr = compile_to_bytecode(expr);
    if (is_signaled(expr))
      writef(standard_out, "%?\n", expr);
    else
      writef(standard_out, "=> %?\n", expr);
  }
  return 0;
}