improved REAL constant and string constant stab generation

This commit is contained in:
ceriel 1990-08-10 18:01:50 +00:00
parent c7a5b07da7
commit 36b11dc296

View file

@ -340,16 +340,28 @@ stb_string(df, kind)
adds_db_str(sprint(buf, "c%ld;", df->con_const.TOK_INT)); adds_db_str(sprint(buf, "c%ld;", df->con_const.TOK_INT));
break; break;
case T_REAL: case T_REAL:
addc_db_str('r');
if (! df->con_const.TOK_REAL) { if (! df->con_const.TOK_REAL) {
char buf2[FLT_STRLEN]; char buf2[FLT_STRLEN];
flt_flt2str(&df->con_const.TOK_RVAL, buf2, FLT_STRLEN); flt_flt2str(&df->con_const.TOK_RVAL, buf2, FLT_STRLEN);
adds_db_str(sprint(buf, "r%s;", buf2)); adds_db_str(buf2);
} }
else adds_db_str(sprint(buf, "r%s;", df->con_const.TOK_REAL)); else adds_db_str(df->con_const.TOK_REAL);
addc_db_str(';');
break; break;
case T_STRING: case T_STRING: {
adds_db_str(sprint(buf, "s'%s';", df->con_const.TOK_STR)); register char *p = df->con_const.TOK_STR;
adds_db_str("s'");
while (*p) {
if (*p == '\'' || *p == '\\') {
addc_db_str('\\');
}
addc_db_str(*p++);
}
adds_db_str("';");
}
break; break;
case T_ENUMERATION: case T_ENUMERATION:
addc_db_str('e'); addc_db_str('e');