MudOSa4DGD/
MudOSa4DGD/bin/
MudOSa4DGD/data/
MudOSa4DGD/doc/
MudOSa4DGD/doc/driver/
MudOSa4DGD/doc/efun/bitstrings/
MudOSa4DGD/doc/efun/command/
MudOSa4DGD/doc/efun/communication/
MudOSa4DGD/doc/efun/heart_beat/
MudOSa4DGD/doc/efun/interactive/
MudOSa4DGD/doc/efun/inventory/
MudOSa4DGD/doc/efun/living/
MudOSa4DGD/doc/efun/mappings/
MudOSa4DGD/doc/efun/strings/
MudOSa4DGD/doc/efun/uid/
MudOSa4DGD/doc/funs/
MudOSa4DGD/doc/language/
MudOSa4DGD/mudlib/dgd/doc/
MudOSa4DGD/mudlib/dgd/lib/include/dgd/
MudOSa4DGD/mudlib/dgd/lib/std/
MudOSa4DGD/mudlib/dgd/lib/sys/
MudOSa4DGD/mudlib/dgd/log/
MudOSa4DGD/mudlib/log/
MudOSa4DGD/mudlib/std/include/
MudOSa4DGD/mudlib/std/obj/
/*
 * exp_sent.c
 *
 * SFUN: explode a sentence into an array of words
 *
 * (C) Frank Schmidt, Jesus@NorseMUD
 *
 */


static string *explode_sentence(string str) {
  int i, e, sz, last_was_number;
  string *result;
  
  e = 0;
  last_was_number = 0;
  result = ({ "" });
  sz = strlen(str);
  for (i=0; i < sz; ++i) {
    int ch;
    if (((ch=str[i]) >= 'a' && ch <= 'z') ||
	(ch >= 'A' && ch <= 'Z')) {
      /* add letter in words */
      result[e] += str[i..i];
      last_was_number = 0;
    }
    else if (ch >= '0' && ch <= '9') {
      /* add characters in numbers (both ints and floats) */
      result[e] += str[i..i];
      last_was_number = 1;
    }
    else if (last_was_number && ch == '.') {
      /* add characters in floats */
      result[e] += str[i..i];
      last_was_number = 0;
    }
    else {
      /* add one more word */
      ++e;
      if (ch != ' ') {
	/* special characters, stored as a single word */
	result += ({ str[i..i], "" });
	++e;
      }
      else
	/* space */
	result += ({ "" });
      last_was_number = 0;
    }
  }
  /* return result */
  return result;
}