update:can use recursion in block def
This commit is contained in:
parent
a2a6ca2f58
commit
94a1359aa2
|
@ -892,11 +892,6 @@ int abstract_syntax_tree::run_block()
|
||||||
++j;
|
++j;
|
||||||
if(j!=i->children.end())
|
if(j!=i->children.end())
|
||||||
new_var=j->calculation();
|
new_var=j->calculation();
|
||||||
if(new_var.get_type()==__var_function)
|
|
||||||
{
|
|
||||||
exit_type=__bad_definition;
|
|
||||||
std::cout<<">>[Runtime-error] line "<<line<<": cannot declare a function in any blocks."<<std::endl;
|
|
||||||
}
|
|
||||||
new_var.set_name(_name);
|
new_var.set_name(_name);
|
||||||
scope.add_new_var(new_var);
|
scope.add_new_var(new_var);
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,7 +175,6 @@ enum runtime_error_type
|
||||||
__find_var_failure,
|
__find_var_failure,
|
||||||
__error_value_type,
|
__error_value_type,
|
||||||
__error_command_use,
|
__error_command_use,
|
||||||
__bad_definition,
|
|
||||||
__sigfpe_arithmetic_exception,
|
__sigfpe_arithmetic_exception,
|
||||||
__sigsegv_segmentation_error,
|
__sigsegv_segmentation_error,
|
||||||
__terminal_interrupt,
|
__terminal_interrupt,
|
||||||
|
@ -193,7 +192,6 @@ void print_exit_type(int type)
|
||||||
case __find_var_failure: context="find_var_failure";break;
|
case __find_var_failure: context="find_var_failure";break;
|
||||||
case __error_value_type: context="value_type_error";break;
|
case __error_value_type: context="value_type_error";break;
|
||||||
case __error_command_use: context="command_use_error(continue/break/return)";break;
|
case __error_command_use: context="command_use_error(continue/break/return)";break;
|
||||||
case __bad_definition: context="bad_definition(func in block)";break;
|
|
||||||
case __sigfpe_arithmetic_exception: context="SIGFPE_arithmetic_exception";break;
|
case __sigfpe_arithmetic_exception: context="SIGFPE_arithmetic_exception";break;
|
||||||
case __sigsegv_segmentation_error: context="SIGSEGV_segmentation_error";break;
|
case __sigsegv_segmentation_error: context="SIGSEGV_segmentation_error";break;
|
||||||
case __terminal_interrupt: context="interrupt";break;
|
case __terminal_interrupt: context="interrupt";break;
|
||||||
|
|
|
@ -8,15 +8,14 @@ var abs=func(__x)
|
||||||
else{return -__x;}
|
else{return -__x;}
|
||||||
};
|
};
|
||||||
|
|
||||||
var __balloon_lib_ln_asr=func(__x,__y)
|
|
||||||
{
|
|
||||||
if(abs(__y-__x)<=0.1){return (1/__x+8/(__x+__y)+1/__y)*(__y-__x)/6;}
|
|
||||||
var __mid=(__x+__y)/2;
|
|
||||||
return __balloon_lib_ln_asr(__x,__mid)+__balloon_lib_ln_asr(__mid,__y);
|
|
||||||
};
|
|
||||||
|
|
||||||
var ln=func(_x)
|
var ln=func(_x)
|
||||||
{
|
{
|
||||||
|
var __balloon_lib_ln_asr=func(__x,__y)
|
||||||
|
{
|
||||||
|
if(abs(__y-__x)<=0.1){return (1/__x+8/(__x+__y)+1/__y)*(__y-__x)/6;}
|
||||||
|
var __mid=(__x+__y)/2;
|
||||||
|
return __balloon_lib_ln_asr(__x,__mid)+__balloon_lib_ln_asr(__mid,__y);
|
||||||
|
};
|
||||||
return __balloon_lib_ln_asr(1,_x);
|
return __balloon_lib_ln_asr(1,_x);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -113,20 +112,19 @@ var sqrt=func(__x)
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __balloon_lib_asin_asr=func(__x,__y)
|
var asin=func(_x)
|
||||||
{
|
{
|
||||||
var __mid=(__x+__y)/2;
|
var __balloon_lib_asin_asr=func(__x,__y)
|
||||||
if(abs(__y-__x)<=0.01){return (1/sqrt(1-__x*__x)+4/sqrt(1-__mid*__mid)+1/sqrt(1-__y*__y))*(__y-__x)/6;}
|
{
|
||||||
return __balloon_lib_asin_asr(__x,__mid)+__balloon_lib_asin_asr(__mid,__y);
|
var __mid=(__x+__y)/2;
|
||||||
};
|
if(abs(__y-__x)<=0.01){return (1/sqrt(1-__x*__x)+4/sqrt(1-__mid*__mid)+1/sqrt(1-__y*__y))*(__y-__x)/6;}
|
||||||
|
return __balloon_lib_asin_asr(__x,__mid)+__balloon_lib_asin_asr(__mid,__y);
|
||||||
var asin=func(__x)
|
};
|
||||||
{
|
if(abs(_x)>1){return -1;}
|
||||||
if(abs(__x)>1){return -1;}
|
|
||||||
var fl=1;
|
var fl=1;
|
||||||
if(__x<0){fl=-fl;__x=-__x;}
|
if(_x<0){fl=-fl;_x=-_x;}
|
||||||
if(abs(__x-1)<0.001){return pi/2;}
|
if(abs(_x-1)<0.001){return pi/2;}
|
||||||
return fl*__balloon_lib_asin_asr(0,__x);
|
return fl*__balloon_lib_asin_asr(0,_x);
|
||||||
};
|
};
|
||||||
|
|
||||||
var acos=func(__x)
|
var acos=func(__x)
|
||||||
|
|
Loading…
Reference in New Issue