+
+ /* more to grok? */
+ if (*endptr) {
+ impl_val tmp_val = {0};
+ token_t tmp_typ = validate_char(endptr, &tmp_val, lvl);
+
+ if (!tmp_typ) {
+ return 0;
+ }
+
+ res->i32 = res->i8 << (8 * *lvl);
+ typ = psi_calc_add(PSI_T_INT32, res, tmp_typ, &tmp_val, res);
+ }
+
+ ++(*lvl);
+
+ return typ;
+}
+static inline bool psi_number_validate_char(struct psi_data *data, struct psi_number *exp)
+{
+ impl_val val = {0};
+ unsigned lvl = 1;
+ token_t typ = validate_char(exp->data.numb, &val, &lvl);
+
+ if (!typ) {
+ return false;
+ }
+
+ free(exp->data.numb);
+ exp->type = typ;
+ exp->data.ival = val;
+ return true;