Generating for stmt

This commit is contained in:
Krzosa Karol
2022-05-31 18:50:41 +02:00
parent 0360086bab
commit 7ea0dfc7a6
4 changed files with 50 additions and 8 deletions

View File

@@ -108,16 +108,15 @@ gen_expr(Ast_Expr *ast){
else gen(".");
gen_expr(node->right);
}
else if(node->op == TK_Comma){
else if(node->op == TK_Colon){ // @todo: I think this needs to be a stmt
Sym *sym = resolved_get(node);
Ast_Atom *atom = (Ast_Atom *)node->left;
assert(atom->kind == AST_ATOM);
assert(is_atom(atom));
gen_simple_decl(sym->type, atom->intern_val);
if(node->right){
gen(" = ");
gen_expr(node->right);
}
gen(";");
}
else{
gen("(");
@@ -249,7 +248,7 @@ gen_ast(Ast *ast){
CASE(IF, If){
For(node->ifs){
if(it->init) gen_ast(it->init);
if(it->init) gen_expr(it->init);
if(node->ifs.is_first(&it)){
genln("if(");
gen_expr(it->expr);
@@ -269,6 +268,24 @@ gen_ast(Ast *ast){
BREAK();
}
CASE(PASS, Pass){
unused(node);
gen("//pass");
BREAK();
}
CASE(FOR, For){
gen("for(");
if(node->init) gen_expr(node->init);
gen(";");
if(node->cond) gen_expr(node->cond);
gen(";");
if(node->iter) gen_expr(node->iter);
gen(")");
gen_block(node->block);
BREAK();
}
CASE(CONST, Const){
Sym *sym = resolved_get(node);