Codegen multiple line strings

This commit is contained in:
Krzosa Karol
2022-09-30 16:05:19 +02:00
parent b17027f431
commit b1d05bc203
6 changed files with 25 additions and 13 deletions

View File

@@ -197,9 +197,18 @@ gen_value(Token *pos, Value a){
gen("0x%llx", pointer_value);
}
}break;
case TYPE_STRING:
gen("(String){(U8 *)\"%Q\", %d}", a.intern_val, a.intern_val.len);
break;
case TYPE_STRING:{
int length = 0;
gen("(String){(U8 *)\"");
for(int i = 0; i < a.intern_val.len; i++){
if(a.intern_val.str[i] == '\n'){length += 2; gen("\\n");}
else if(a.intern_val.str[i] == '\r'){length += 2; gen("\\r");}
else{length += 1; gen("%c", a.intern_val.str[i]);}
}
gen("\", %d}", length);
}break;
CASE_BOOL: {
a.bool_val ? gen("true"):gen("false");
}break;