Example #1
0
int main(int argc, char const *argv[]) {

  ZAPPER_LIB_PATH = getenv("ZLIB_PATH");
  if (ZAPPER_LIB_PATH == NULL) {
    printf("$ZLIB_PATH is not set. Using cwd for libraries and imports\n");
    ZAPPER_LIB_PATH = "lib/";
  }

  NAMESPACE = "";

  // these next lines are used to read a file in for evaluation
  char *buffer = 0;
  long length;
  FILE *f;

  if (argc > 1) {
    f = fopen(argv[1], "rb");

    if (f) {
      fseek(f, 0, SEEK_END);
      length = ftell(f);
      fseek(f, 0, SEEK_SET);
      buffer = malloc(length);
      if (buffer) {
        fread(buffer, 1, length, f);
      }
      fclose(f);
    }

  } else {
    CRASH_ON_EXCEPTION = 0;
    repl_init();
    return 0;
  }

  if (buffer) {
    init_system();
    symboltable_t* context = newSymbolTable();
    list_t* expressions = parse(buffer)->value->value.l;
    object_t* value = eval(expressions, context);
    free(expressions);
    free(value);
    if (clib_functions->head != clib_functions->tail) {
      collecsymboltable_t(clib_functions);
    }
  } else {
    exception("No input file was specified.", newObject());
  }
  return 0;
}
Example #2
0
void run_repl(Module *state, const char *in_file) {
    printf("EaRing.  Copyright 2008 Zed A. Shaw.\n");
    printf("Done compiling %s.  Enter ? to get the function list.\n", in_file);
    char *cmd = NULL;
    current_module = state;
    repl_init(NULL);

    while((cmd = repl_prompt())) {
        if(cmd[0] == '?') {
            tst_traverse(state->functions, (tst_traverse_cb)query_functions, NULL);
        } else {
            run_function(state, cmd);
        }
    }
}
Example #3
0
int main(int argc, char** argv) {
	DBusConnection* conn;
	DBusMessage* msg;
	DBusMessage* reply;
	DBusMessageIter args;
	DBusError err;
	dbus_uint32_t serial = 0;
	int ret;
	const char * lib_file;
	const char * init_fn;
	repl_result repl_result;
	dbus_error_init(&err);
	repl_init();
	conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
	CHECK_FOR_ERRORS("Connection error: %s\n");
	ASSERT(conn != NULL);
	ret = dbus_bus_request_name(conn, "cljc.repl.runtime", DBUS_NAME_FLAG_REPLACE_EXISTING , &err);
	CHECK_FOR_ERRORS("Name error: %s\n");
	ASSERT(ret == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER);
	while (true) {
		dbus_connection_read_write(conn, 0);
		msg = dbus_connection_pop_message(conn);
		if (msg == NULL) {
			usleep(10000);
			continue; }
		if (dbus_message_is_method_call(msg, "cljc.repl.runtime", "eval")) {
			ASSERT(dbus_message_iter_init(msg, &args));
			ASSERT(dbus_message_iter_get_arg_type(&args) == DBUS_TYPE_STRING);
			dbus_message_iter_get_basic(&args, &lib_file);
			ASSERT(dbus_message_iter_next(&args));
			ASSERT(dbus_message_iter_get_arg_type(&args) == DBUS_TYPE_STRING);
			dbus_message_iter_get_basic(&args, &init_fn);
			repl_result = repl_eval(lib_file, init_fn);
			fflush(stdout);
			reply = dbus_message_new_method_return(msg);
			dbus_message_iter_init_append(reply, &args);
			ASSERT(dbus_message_iter_append_basic(&args, DBUS_TYPE_UINT32, &repl_result.status));
			ASSERT(dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &repl_result.buffer));
			ASSERT(dbus_connection_send(conn, reply, &serial));
			dbus_connection_flush(conn);
			dbus_message_unref(reply); }
		dbus_message_unref(msg);
	}
}