Add bool values to parser, and bool nodes to ast
This commit is contained in:
23
ccodegen.cpp
23
ccodegen.cpp
@@ -20,11 +20,6 @@ gen_indent(){
|
||||
function void
|
||||
gen_simple_decl_prefix(Ast_Resolved_Type *ast){
|
||||
switch(ast->kind){
|
||||
case TYPE_INT: gen("Int "); break;
|
||||
case TYPE_BOOL: gen("bool "); break;
|
||||
case TYPE_UINT: gen("UInt "); break;
|
||||
case TYPE_STRING: gen("String "); break;
|
||||
case TYPE_VOID: gen("void "); break;
|
||||
case TYPE_POINTER:{gen_simple_decl_prefix(ast->base); gen("*");} break;
|
||||
case TYPE_ARRAY: gen_simple_decl_prefix(ast->base); break;
|
||||
case TYPE_LAMBDA:break;
|
||||
@@ -34,23 +29,18 @@ gen_simple_decl_prefix(Ast_Resolved_Type *ast){
|
||||
auto name = constant->name;
|
||||
gen("%s ", name.str);
|
||||
}break;
|
||||
invalid_default_case;
|
||||
default: gen("%s ", name(ast));
|
||||
}
|
||||
}
|
||||
|
||||
function void
|
||||
gen_simple_decl_postfix(Ast_Resolved_Type *ast){
|
||||
switch(ast->kind){
|
||||
case TYPE_INT: break;
|
||||
case TYPE_BOOL: break;
|
||||
case TYPE_UINT: break;
|
||||
case TYPE_STRING: break;
|
||||
case TYPE_VOID: break;
|
||||
case TYPE_POINTER: gen_simple_decl_postfix(ast->base); break;
|
||||
case TYPE_ARRAY: gen("[%d]", (int)ast->arr.size); gen_simple_decl_postfix(ast->arr.base); break;
|
||||
case TYPE_LAMBDA:break;
|
||||
case TYPE_ENUM: case TYPE_STRUCT:break;
|
||||
invalid_default_case;
|
||||
default: name(ast);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,13 +311,16 @@ gen_ast(Ast *ast){
|
||||
}
|
||||
}
|
||||
else if(sym->type == type_f64){
|
||||
gen("// constant int %s = %f;", node->name.str, sym->f64_val);
|
||||
gen("// constant F64 %s = %f;", node->name.str, sym->f64_val);
|
||||
}
|
||||
else if(sym->type == type_int){
|
||||
gen("// constant int %s = %lld;", node->name.str, sym->int_val);
|
||||
gen("// constant Int %s = %lld;", node->name.str, sym->int_val);
|
||||
}
|
||||
else if(sym->type == type_string){
|
||||
gen("// String %s = LIT(\"%s\");", node->name.str, sym->intern_val.str);
|
||||
gen("// const String %s = LIT(\"%s\");", node->name.str, sym->intern_val.str);
|
||||
}
|
||||
else if(sym->type == type_bool){
|
||||
gen("// const Bool %s = %d;", node->name.str, sym->bool_val);
|
||||
}
|
||||
else if(sym->type == type_type){
|
||||
if(sym->type_val->kind == TYPE_STRUCT){
|
||||
|
||||
Reference in New Issue
Block a user