Generating for stmt
This commit is contained in:
25
ccodegen.cpp
25
ccodegen.cpp
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user