Add char * which is supposed to work like in C and int

This commit is contained in:
Krzosa Karol
2022-06-12 11:58:36 +02:00
parent 4d6a8efd06
commit cd3098da45
8 changed files with 43 additions and 76 deletions

View File

@@ -90,11 +90,13 @@ gen_value(Value a){
const char *string = bigint_to_error_string(scratch, &a.big_int_val, 10);
gen("%s", string);
}break;
case TYPE_CHAR:
gen("\"%s\"", a.intern_val.str);
break;
case TYPE_STRING: case TYPE_UNTYPED_STRING:
gen("LIT(\"%s\")", a.intern_val.str);
CASE_STRING:
if(is_pointer(a.type)){
assert(a.type == type_pointer_to_char);
gen("\"%s\"", a.intern_val.str);
} else{
gen("LIT(\"%s\")", a.intern_val.str);
}
break;
CASE_BOOL: a.bool_val ? gen("true"):gen("false"); break;
CASE_FLOAT: gen("%f", a.f64_val); break;
@@ -380,6 +382,7 @@ gen_ast(Ast *ast){
gen_value(node->value);
}break;
CASE_STRING:{
assert(is_pointer(node->type) ? node->type == type_pointer_to_char : 1);
gen("// const String %s = ", node->name.str);
gen_value(node->value);
}break;