NumberToken(String s){
        original = s;
        
        // Check that it's all lowercase
        if (!s.equals(s.toLowerCase())){
            em.error("Should be all lower-case: \"%s\"", s);
            return;
        }
        
        // Determine token type
        assert (type == null);
        type = getTypeOf(s);
        if (type == null){
            em.error("Not recognized as a valid word: \"%s\"", s);
            return;
        }
        
        // Determine value
        value = getValueOf(type, s);
    }