code: public String readWord() {
      skipWhitespace(true);
      int start = pos;
      while (pos < data.length) {
        char c = data[pos];
        if ((c >= 'a' && c <= 'z')
            || (c >= 'A' && c <= 'Z')
            || (c >= '0' && c <= '9')
            || (c == '_')
            || (c == '-')
            || (c == '.')) {
          pos++;
        } else {
          break;
        }
      }
      if (start == pos) {
        throw unexpected("expected a word");
      }
      return new String(data, start, pos - start);
    }
docs: Reads a non-empty word and returns it.