diff --git a/lib.nas b/lib.nas index 7e85c8e..d17da21 100644 --- a/lib.nas +++ b/lib.nas @@ -8,6 +8,12 @@ var print=func(elements...) nasal_call_builtin_std_cout(elements); return nil; }; +var println=func(elements...) +{ + nasal_call_builtin_std_cout(elements); + print('\n'); + return nil; +} var append=func(vector,elements...) { nasal_call_builtin_push_back(vector,elements); @@ -110,58 +116,22 @@ var io= var bits= { - bitxor:func(a,b) - { - return nasal_call_builtin_xor(a,b); - }, - bitand:func(a,b) - { - return nasal_call_builtin_and(a,b); - }, - bitor:func(a,b) - { - return nasal_call_builtin_or(a,b); - }, - bitnand:func(a,b) - { - return nasal_call_builtin_nand(a,b); - }, - bitnot:func(a) - { - return nasal_call_builtin_not(a); - } + bitxor: func(a,b){return nasal_call_builtin_xor(a,b); }, + bitand: func(a,b){return nasal_call_builtin_and(a,b); }, + bitor: func(a,b){return nasal_call_builtin_or(a,b); }, + bitnand: func(a,b){return nasal_call_builtin_nand(a,b);}, + bitnot: func(a) {return nasal_call_builtin_not(a); } }; var math= { - e:2.7182818284590452354, - pi:3.14159265358979323846264338327950288, - sin:func(x) - { - return nasal_call_builtin_sin(x); - }, - cos:func(x) - { - return nasal_call_builtin_cos(x); - }, - tan:func(x) - { - return nasal_call_builtin_tan(x); - }, - exp:func(x) - { - return nasal_call_builtin_exp(x); - }, - ln:func(x) - { - return nasal_call_builtin_cpp_math_ln(x); - }, - sqrt:func(x) - { - return nasal_call_builtin_cpp_math_sqrt(x); - }, - atan2:func(x,y) - { - return nasal_call_builtin_cpp_atan2(x,y); - }, + e: 2.7182818284590452354, + pi: 3.14159265358979323846264338327950288, + sin: func(x) {return nasal_call_builtin_sin(x); }, + cos: func(x) {return nasal_call_builtin_cos(x); }, + tan: func(x) {return nasal_call_builtin_tan(x); }, + exp: func(x) {return nasal_call_builtin_exp(x); }, + ln: func(x) {return nasal_call_builtin_cpp_math_ln(x); }, + sqrt: func(x) {return nasal_call_builtin_cpp_math_sqrt(x);}, + atan2: func(x,y){return nasal_call_builtin_cpp_atan2(x,y); } }; diff --git a/nasal_builtin.h b/nasal_builtin.h index 86f6a6e..c6105c4 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -68,7 +68,7 @@ void builtin_error_occurred(std::string func_name,std::string info) } // register builtin function's name and it's address here in this table below -// this table must and with {"",NULL} +// this table must end with {"",NULL} struct FUNC_TABLE { std::string func_name; @@ -134,10 +134,8 @@ nasal_val* builtin_print(nasal_val* local_scope_addr,nasal_gc& gc) case vm_func: std::cout<<"func(...){...}"; break; } } - std::cout<<"\n"; // generate return value - nasal_val* ret_addr=gc.gc_alloc(vm_nil); - return ret_addr; + return gc.gc_alloc(vm_nil); } nasal_val* builtin_append(nasal_val* local_scope_addr,nasal_gc& gc) { @@ -157,8 +155,7 @@ nasal_val* builtin_append(nasal_val* local_scope_addr,nasal_gc& gc) gc.add_reference(value_address); ref_vector.add_elem(value_address); } - nasal_val* ret_addr=gc.gc_alloc(vm_nil); - return ret_addr; + return gc.gc_alloc(vm_nil); } nasal_val* builtin_setsize(nasal_val* local_scope_addr,nasal_gc& gc) { @@ -335,10 +332,13 @@ nasal_val* builtin_split(nasal_val* local_scope_addr,nasal_gc& gc) } if(check_delimeter) { - nasal_val* str_addr=gc.gc_alloc(vm_str); - str_addr->set_string(tmp); - ref_vec.add_elem(str_addr); - tmp=""; + if(tmp.length()) + { + nasal_val* str_addr=gc.gc_alloc(vm_str); + str_addr->set_string(tmp); + ref_vec.add_elem(str_addr); + tmp=""; + } i+=delimeter_len-1; } else @@ -763,7 +763,7 @@ nasal_val* builtin_substr(nasal_val* local_scope_addr,nasal_gc& gc) std::string str=str_addr->get_string(); int begin=(int)begin_addr->get_number(); int len=(int)length_addr->get_number(); - if(begin+len>=str.length()) + if(begin+len>str.length()) { builtin_error_occurred("susbtr","index out of range"); return NULL;