+ case PSI_T_QUOTED_CHAR:
+ /* FIXME L */
+ tmp.i8 = exp->data.numb[1 + (*exp->data.numb == 'L')];
+ switch(tmp.i8) {
+ case '\\':
+ tmp.i8 = exp->data.numb[2 + (*exp->data.numb == 'L')];
+ switch(tmp.i8) {
+ case 'x':
+ tmp.i8 = strtol(&exp->data.numb[3 + (*exp->data.numb == 'L')], &exp->data.numb[strlen(exp->data.numb)-1], 16);
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = tmp.i8;
+ return true;
+ case '\'':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\'';
+ return true;
+ case 'a':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\a';
+ return true;
+ case 'b':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\b';
+ return true;
+ case 'f':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\f';
+ return true;
+ case 'n':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\n';
+ return true;
+ case 'r':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\r';
+ return true;
+ case 't':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\t';
+ return true;
+ case 'v':
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = '\v';
+ return true;
+ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7':
+ tmp.i8 = strtol(&exp->data.numb[2 + (*exp->data.numb == 'L')], &exp->data.numb[strlen(exp->data.numb)-1], 8);
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = tmp.i8;
+ return true;
+ default:
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = tmp.i8;
+ return true;
+ }
+ break;
+ default:
+ free(exp->data.numb);
+ exp->type = PSI_T_INT8;
+ exp->data.ival.i8 = tmp.i8;
+ return true;
+ }
+ break;
+