Add DECL_TYPE
This commit is contained in:
57
ccodegen.cpp
57
ccodegen.cpp
@@ -72,8 +72,9 @@ gen_simple_decl(Ast_Resolved_Type *ast, Intern_String name){
|
||||
}
|
||||
}
|
||||
|
||||
function void
|
||||
function B32
|
||||
gen_value(Value a){
|
||||
B32 result = true;
|
||||
switch(a.type->kind){
|
||||
CASE_INT: {
|
||||
Scratch scratch;
|
||||
@@ -83,8 +84,9 @@ gen_value(Value a){
|
||||
CASE_STRING: 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;
|
||||
invalid_default_case;
|
||||
default: result = false;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function void
|
||||
@@ -96,37 +98,20 @@ gen_expr(Ast_Expr *ast){
|
||||
}
|
||||
|
||||
CASE(VALUE, Atom){
|
||||
gen_value(node->value);
|
||||
B32 written = gen_value(node->value);
|
||||
if(!written) gen("%s", node->value.intern_val.str);
|
||||
BREAK();
|
||||
}
|
||||
|
||||
// CASE(INDEX, Index){
|
||||
// Sym *sym = resolved_get(node);
|
||||
// if(is_array(sym->type)){
|
||||
// gen("(");
|
||||
// gen("(");
|
||||
|
||||
// gen("(");
|
||||
// gen_simple_decl(sym->type->arr.base, {});
|
||||
// gen("*)");
|
||||
// gen_expr(node->expr);
|
||||
// gen(".data)");
|
||||
|
||||
|
||||
// gen("[");
|
||||
// gen_expr(node->index);
|
||||
// gen("]");
|
||||
// gen(")");
|
||||
// } else{
|
||||
// gen("(");
|
||||
// gen_expr(node->expr);
|
||||
// gen("[");
|
||||
// gen_expr(node->index);
|
||||
// gen("]");
|
||||
// gen(")");
|
||||
// }
|
||||
// BREAK();
|
||||
// }
|
||||
CASE(INDEX, Index){
|
||||
gen("(");
|
||||
gen_expr(node->expr);
|
||||
gen("[");
|
||||
gen_expr(node->index);
|
||||
gen("]");
|
||||
gen(")");
|
||||
BREAK();
|
||||
}
|
||||
|
||||
CASE(BINARY, Binary){
|
||||
// if(node->op == TK_Dot){
|
||||
@@ -348,6 +333,12 @@ gen_ast(Ast *ast){
|
||||
BREAK();
|
||||
}
|
||||
|
||||
CASE(TYPE, Decl){
|
||||
gen("// Type %s = ", node->name.str);
|
||||
gen_expr(node->expr);
|
||||
BREAK();
|
||||
}
|
||||
|
||||
CASE(CONST, Decl){
|
||||
switch(node->type->kind){
|
||||
CASE_FLOAT:{
|
||||
@@ -367,12 +358,6 @@ gen_ast(Ast *ast){
|
||||
gen_value(node->value);
|
||||
}break;
|
||||
|
||||
case TYPE_LAMBDA:{
|
||||
|
||||
}break;
|
||||
|
||||
case TYPE_TYPE:{
|
||||
}break;
|
||||
// if(sym->type_val->kind == TYPE_STRUCT){
|
||||
// Ast_Struct *agg = (Ast_Struct *)sym->type_val->ast;
|
||||
// if(node->value->kind == AST_STRUCT){
|
||||
|
||||
Reference in New Issue
Block a user