code: @Override
      public double valueOf(String s) throws ParseException {
          Integer i = map.get(s);
          if (i == null) {
              if (open) {
                  i = values.size();
                  map.put(s, i);
                  values.add(s);
              } else {
                  throw new ParseException("Invalid string value: " + s, 0);
              }
          }
          
          return i;
      }
docs: Returns the ordinal value of a string value.