update
This commit is contained in:
parent
2bb0f0bf47
commit
1d941354ca
|
@ -13,6 +13,7 @@ enum op_code
|
||||||
op_pushstr,
|
op_pushstr,
|
||||||
op_newvec,op_newhash,op_newfunc,
|
op_newvec,op_newhash,op_newfunc,
|
||||||
op_vecapp,op_hashapp,
|
op_vecapp,op_hashapp,
|
||||||
|
op_newscope,op_delscope,
|
||||||
op_para,op_defpara,op_dynpara,op_entry,
|
op_para,op_defpara,op_dynpara,op_entry,
|
||||||
op_unot,op_usub,
|
op_unot,op_usub,
|
||||||
op_add,op_sub,op_mul,op_div,op_lnk,
|
op_add,op_sub,op_mul,op_div,op_lnk,
|
||||||
|
@ -46,6 +47,8 @@ struct
|
||||||
{op_newfunc, "newf "},
|
{op_newfunc, "newf "},
|
||||||
{op_vecapp, "vapp "},
|
{op_vecapp, "vapp "},
|
||||||
{op_hashapp, "happ "},
|
{op_hashapp, "happ "},
|
||||||
|
{op_newscope, "nscp "},
|
||||||
|
{op_delscope, "dscp "},
|
||||||
{op_para, "para "},
|
{op_para, "para "},
|
||||||
{op_defpara, "deflt "},
|
{op_defpara, "deflt "},
|
||||||
{op_dynpara, "dyn "},
|
{op_dynpara, "dyn "},
|
||||||
|
@ -365,11 +368,27 @@ void nasal_codegen::multi_assignment_gen(nasal_ast& ast)
|
||||||
|
|
||||||
void nasal_codegen::conditional_gen(nasal_ast& ast)
|
void nasal_codegen::conditional_gen(nasal_ast& ast)
|
||||||
{
|
{
|
||||||
|
opcode op;
|
||||||
|
op.op=op_newscope;
|
||||||
|
op.index=0;
|
||||||
|
exec_code.push_back(op);
|
||||||
|
// unfinished
|
||||||
|
op.op=op_delscope;
|
||||||
|
op.index=0;
|
||||||
|
exec_code.push_back(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nasal_codegen::loop_gen(nasal_ast& ast)
|
void nasal_codegen::loop_gen(nasal_ast& ast)
|
||||||
{
|
{
|
||||||
|
opcode op;
|
||||||
|
op.op=op_newscope;
|
||||||
|
op.index=0;
|
||||||
|
exec_code.push_back(op);
|
||||||
|
// unfinished
|
||||||
|
op.op=op_delscope;
|
||||||
|
op.index=0;
|
||||||
|
exec_code.push_back(op);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -393,6 +412,8 @@ void nasal_codegen::calculation_gen(nasal_ast& ast)
|
||||||
case ast_mult_equal:
|
case ast_mult_equal:
|
||||||
case ast_div_equal:
|
case ast_div_equal:
|
||||||
case ast_link_equal:break;
|
case ast_link_equal:break;
|
||||||
|
case ast_or:
|
||||||
|
case ast_and:break;
|
||||||
case ast_add:
|
case ast_add:
|
||||||
op.op=op_add;
|
op.op=op_add;
|
||||||
calculation_gen(ast.get_children()[0]);
|
calculation_gen(ast.get_children()[0]);
|
||||||
|
|
Loading…
Reference in New Issue