瀏覽代碼

fix: 提取run_init函数

SongZihuan 4 年之前
父節點
當前提交
990032183d

+ 6 - 6
VirtulMathCore/include/value.h

@@ -3,16 +3,16 @@
 #include "__macro.h"
 #include "__macro.h"
 
 
 // 标准错误信息定义
 // 标准错误信息定义
-#define INSTANCE_ERROR(class) L##"Instance error when calling V_func, call non-"#class" "#class" method"
+#define INSTANCE_ERROR(class) L"Instance error when calling func, call non-"#class" "#class" method"
 #define VALUE_ERROR(value, acc) L###value" value is not a "#acc" (may be modified by an external program)"
 #define VALUE_ERROR(value, acc) L###value" value is not a "#acc" (may be modified by an external program)"
 #define ONLY_ACC(var, value) L###var" only accepts "#value
 #define ONLY_ACC(var, value) L###var" only accepts "#value
 #define ERROR_INIT(class) L###class" get wrong initialization parameters"
 #define ERROR_INIT(class) L###class" get wrong initialization parameters"
-#define MANY_ARG L##"Too many parameters"
-#define FEW_ARG L##"Too few parameters"
+#define MANY_ARG L"Too many parameters"
+#define FEW_ARG L"Too few parameters"
 #define CUL_ERROR(opt) L###opt" operation gets incorrect value"
 #define CUL_ERROR(opt) L###opt" operation gets incorrect value"
-#define OBJ_NOTSUPPORT(opt) L##"Object does not support "#opt" operation"
-#define RETURN_ERROR(func, type) L###func" V_func should return "#type" type data"
-#define KEY_INTERRUPT L##"KeyInterrupt"
+#define OBJ_NOTSUPPORT(opt) L"Object does not support "#opt" operation"
+#define RETURN_ERROR(func, type) L###func" func should return "#type" type data"
+#define KEY_INTERRUPT L"KeyInterrupt"
 
 
 typedef struct Argument Argument;
 typedef struct Argument Argument;
 typedef struct Inter Inter;
 typedef struct Inter Inter;

+ 1 - 8
VirtulMathCore/ofunc/src/bool.c

@@ -15,14 +15,7 @@ ResultType bool_new(OFFICAL_FUNCTIONSIG){
     value = make_new(inter, belong, ap[0].value);
     value = make_new(inter, belong, ap[0].value);
     value->value->type = V_bool;
     value->value->type = V_bool;
     value->value->data.bool_.bool_ = false;
     value->value->data.bool_.bool_ = false;
-    switch (init_new(value, arg, "bool.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "bool.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 

+ 19 - 28
VirtulMathCore/ofunc/src/dict.c

@@ -13,7 +13,7 @@ ResultType dict_new(OFFICAL_FUNCTIONSIG){
     }
     }
 
 
     if (arg != NULL && arg->type == value_arg) {
     if (arg != NULL && arg->type == value_arg) {
-        setResultError(E_ArgumentException, L"Too many argument", 0, "V_dict.new", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_ArgumentException, L"Too many argument", 0, "dict.new", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -29,16 +29,7 @@ ResultType dict_new(OFFICAL_FUNCTIONSIG){
     popVarList(hash);
     popVarList(hash);
 
 
     freeResult(result);
     freeResult(result);
-    switch (init_new(value, NULL, "V_dict.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
-    freeResult(result);
-    setResultOperation(result, value);
+    run_init(value, arg, 0, "dict.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 
@@ -53,7 +44,7 @@ ResultType dict_down(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_dict){
     if (ap[0].value->value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     {
     {
@@ -64,7 +55,7 @@ ResultType dict_down(OFFICAL_FUNCTIONSIG){
             setResultOperationBase(result, copyLinkValue(element, inter));
             setResultOperationBase(result, copyLinkValue(element, inter));
         else {
         else {
             wchar_t *message = memWidecat(L"Dict could not find key value: ", name, false, false);
             wchar_t *message = memWidecat(L"Dict could not find key value: ", name, false, false);
-            setResultError(E_KeyException, message, 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_KeyException, message, 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             memFree(message);
             memFree(message);
         }
         }
         memFree(name);
         memFree(name);
@@ -83,7 +74,7 @@ ResultType dict_down_del(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_dict){
     if (ap[0].value->value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     {
     {
@@ -94,7 +85,7 @@ ResultType dict_down_del(OFFICAL_FUNCTIONSIG){
             setResult(result, inter);
             setResult(result, inter);
         else{
         else{
             wchar_t *message = memWidecat(L"Cannot delete non-existent keys: ", name, false, false);
             wchar_t *message = memWidecat(L"Cannot delete non-existent keys: ", name, false, false);
-            setResultError(E_KeyException, message, 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_KeyException, message, 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             memFree(message);
             memFree(message);
         }
         }
         memFree(name);
         memFree(name);
@@ -115,7 +106,7 @@ ResultType dict_down_assignment(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_dict){
     if (ap[0].value->value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -135,7 +126,7 @@ ResultType dict_keys(OFFICAL_FUNCTIONSIG){
         return result->type;
         return result->type;
     freeResult(result);
     freeResult(result);
     if (ap[0].value->value->type != V_dict){
     if (ap[0].value->value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     for (int index=0; index < MAX_SIZE; index++){
     for (int index=0; index < MAX_SIZE; index++){
@@ -143,7 +134,7 @@ ResultType dict_keys(OFFICAL_FUNCTIONSIG){
         for (PASS; tmp != NULL; tmp = tmp->next)
         for (PASS; tmp != NULL; tmp = tmp->next)
             list = connectValueArgument(copyLinkValue(tmp->name_, inter), list);
             list = connectValueArgument(copyLinkValue(tmp->name_, inter), list);
     }
     }
-    makeListValue(list, 0, "V_dict", L_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    makeListValue(list, 0, "dict", L_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     freeArgument(list, true);
     freeArgument(list, true);
     return result->type;
     return result->type;
 }
 }
@@ -158,12 +149,12 @@ ResultType dict_iter(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_dict){
     if (ap[0].value->value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     {
     {
         Argument *dict_iter_arg = makeValueArgument(ap[0].value);
         Argument *dict_iter_arg = makeValueArgument(ap[0].value);
-        callBackCore(inter->data.dict_iter, dict_iter_arg, 0, "V_dict", 0,
+        callBackCore(inter->data.dict_iter, dict_iter_arg, 0, "dict", 0,
                      CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
                      CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         freeArgument(dict_iter_arg, true);
         freeArgument(dict_iter_arg, true);
     }
     }
@@ -184,7 +175,7 @@ ResultType dictRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
     value = ap[0].value->value;
     value = ap[0].value->value;
 
 
     if (value->type != V_dict){
     if (value->type != V_dict){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_dict), 0, "V_dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(dict), 0, "dict", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     again = findAttributes(is_repo ? L"repo_again" : L"str_again", false, ap[0].value, inter);
     again = findAttributes(is_repo ? L"repo_again" : L"str_again", false, ap[0].value, inter);
@@ -193,12 +184,12 @@ ResultType dictRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
         if (!CHECK_RESULT(result))
         if (!CHECK_RESULT(result))
             return result->type;
             return result->type;
         if (again_) {
         if (again_) {
-            makeStringValue(L"{...}", 0, "V_dict.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            makeStringValue(L"{...}", 0, "dict.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             return result->type;
             return result->type;
         }
         }
     }
     }
 
 
-    setBoolAttrible(true, is_repo ? L"repo_again" : L"str_again", 0, "V_dict.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    setBoolAttrible(true, is_repo ? L"repo_again" : L"str_again", 0, "dict.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     repo = memWidecpy(L"{");
     repo = memWidecpy(L"{");
     for (int i = 0, count = 0; i < MAX_SIZE; i++) {
     for (int i = 0, count = 0; i < MAX_SIZE; i++) {
         for (Var *var = value->data.dict.dict->hashtable[i]; var != NULL; var = var->next, count++) {
         for (Var *var = value->data.dict.dict->hashtable[i]; var != NULL; var = var->next, count++) {
@@ -208,14 +199,14 @@ ResultType dictRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
                 repo = memWidecat(repo, L", ", true, false);
                 repo = memWidecat(repo, L", ", true, false);
 
 
             freeResult(result);
             freeResult(result);
-            name_tmp = getRepoStr(var->name_, is_repo, 0, "V_dict", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            name_tmp = getRepoStr(var->name_, is_repo, 0, "dict", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             if (!CHECK_RESULT(result))
             if (!CHECK_RESULT(result))
                 goto return_;
                 goto return_;
             repo = memWidecat(repo, name_tmp, true, false);
             repo = memWidecat(repo, name_tmp, true, false);
             repo = memWidecat(repo, L": ", true, false);
             repo = memWidecat(repo, L": ", true, false);
 
 
             freeResult(result);
             freeResult(result);
-            value_tmp = getRepoStr(var->value, is_repo, 0, "V_dict", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            value_tmp = getRepoStr(var->value, is_repo, 0, "dict", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             if (!CHECK_RESULT(result))
             if (!CHECK_RESULT(result))
                 goto return_;
                 goto return_;
             repo = memWidecat(repo, value_tmp, true, false);
             repo = memWidecat(repo, value_tmp, true, false);
@@ -224,13 +215,13 @@ ResultType dictRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
 
 
     freeResult(result);
     freeResult(result);
     repo = memWidecat(repo, L"}", true, false);
     repo = memWidecat(repo, L"}", true, false);
-    makeStringValue(repo, 0, "V_dict.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    makeStringValue(repo, 0, "dict.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
 
 
     return_:
     return_:
     {
     {
         Result tmp;
         Result tmp;
         setResultCore(&tmp);
         setResultCore(&tmp);
-        setBoolAttrible(false, is_repo ? L"repo_again" : L"str_again", 0, "V_dict.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, &tmp, belong));
+        setBoolAttrible(false, is_repo ? L"repo_again" : L"str_again", 0, "dict.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, &tmp, belong));
         if (!RUN_TYPE(tmp.type)) {
         if (!RUN_TYPE(tmp.type)) {
             freeResult(result);
             freeResult(result);
             *result = tmp;
             *result = tmp;
@@ -261,7 +252,7 @@ void registeredDict(REGISTERED_FUNCTIONSIG){
                       {inter->data.object_down_del, dict_down_del, object_free_},
                       {inter->data.object_down_del, dict_down_del, object_free_},
                       {NULL, NULL}};
                       {NULL, NULL}};
     gc_addTmpLink(&object->gc_status);
     gc_addTmpLink(&object->gc_status);
-    addBaseClassVar(L"V_dict", object, belong, inter);
+    addBaseClassVar(L"dict", object, belong, inter);
     iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
     iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
     gc_freeTmpLink(&object->gc_status);
     gc_freeTmpLink(&object->gc_status);
 }
 }

+ 2 - 2
VirtulMathCore/ofunc/src/dictiter.c

@@ -12,7 +12,7 @@ ResultType dictiter_init(OFFICAL_FUNCTIONSIG){
         return result->type;
         return result->type;
     freeResult(result);
     freeResult(result);
     if (ap[1].value->value->type != V_dict){
     if (ap[1].value->value->type != V_dict){
-        setResultError(E_TypeException, ONLY_ACC(dictiter, V_dict), 0, "dictiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, ONLY_ACC(dictiter, dict), 0, "dictiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     {
     {
@@ -102,7 +102,7 @@ ResultType dictiter_down(OFFICAL_FUNCTIONSIG){
         return result->type;
         return result->type;
     dict_ = findAttributes(L"__dict", false, ap[0].value, inter);
     dict_ = findAttributes(L"__dict", false, ap[0].value, inter);
     if (dict_ == NULL || dict_->value->type != V_dict){
     if (dict_ == NULL || dict_->value->type != V_dict){
-        setResultError(E_TypeException, VALUE_ERROR(__dict, V_dict), 0, "dictiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, VALUE_ERROR(__dict, dict), 0, "dictiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 

+ 4 - 11
VirtulMathCore/ofunc/src/function.c

@@ -13,7 +13,7 @@ ResultType function_new(OFFICAL_FUNCTIONSIG){
     setResultCore(result);
     setResultCore(result);
     arg = parserValueArgument(ap, arg, &status, NULL);
     arg = parserValueArgument(ap, arg, &status, NULL);
     if (status != 1){
     if (status != 1){
-        setResultError(E_ArgumentException, FEW_ARG, 0, "V_func.new", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_ArgumentException, FEW_ARG, 0, "func.new", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -31,14 +31,7 @@ ResultType function_new(OFFICAL_FUNCTIONSIG){
     value->value->data.function.of = NULL;
     value->value->data.function.of = NULL;
     setFunctionData(value->value, ap->value, inter);
     setFunctionData(value->value, ap->value, inter);
 
 
-    switch (init_new(value, arg, "V_func.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "func.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 
@@ -53,7 +46,7 @@ ResultType function_init(OFFICAL_FUNCTIONSIG){
         return result->type;
         return result->type;
     freeResult(result);
     freeResult(result);
     if ((func = ap[0].value)->value->type != V_func) {
     if ((func = ap[0].value)->value->type != V_func) {
-        setResultError(E_TypeException, INSTANCE_ERROR(V_func), 0, "V_func", true,
+        setResultError(E_TypeException, INSTANCE_ERROR(func), 0, "func", true,
                        CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
                        CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
@@ -73,7 +66,7 @@ void registeredFunction(REGISTERED_FUNCTIONSIG){
     LinkValue *object = inter->data.function;
     LinkValue *object = inter->data.function;
     NameFunc tmp[] = {{NULL, NULL}};
     NameFunc tmp[] = {{NULL, NULL}};
     gc_addTmpLink(&object->gc_status);
     gc_addTmpLink(&object->gc_status);
-    addBaseClassVar(L"V_func", object, belong, inter);
+    addBaseClassVar(L"func", object, belong, inter);
     iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
     iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
     gc_freeTmpLink(&object->gc_status);
     gc_freeTmpLink(&object->gc_status);
 }
 }

+ 29 - 36
VirtulMathCore/ofunc/src/list.c

@@ -23,14 +23,7 @@ ResultType tuple_list_newCore(OFFICAL_FUNCTIONSIG, enum ListType type){
         value->value->data.list.list[value->value->data.list.size - 1] = at->data.value;
         value->value->data.list.list[value->value->data.list.size - 1] = at->data.value;
     }
     }
 
 
-    switch (init_new(value, NULL, "V_list.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }  // TODO-szh 提取成函数
+    run_init(value, arg, 0, "list/tuple.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 
@@ -59,7 +52,7 @@ ResultType list_slice(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list) {
     if (ap[0].value->value->type != V_list) {
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     size = ap[0].value->value->data.list.size;
     size = ap[0].value->value->data.list.size;
@@ -71,7 +64,7 @@ ResultType list_slice(OFFICAL_FUNCTIONSIG){
         if (ap[i + 1].value != NULL && ap[i + 1].value->value->type == V_num)
         if (ap[i + 1].value != NULL && ap[i + 1].value->value->type == V_num)
             *(list[i]) = ap[i + 1].value->value->data.num.num;
             *(list[i]) = ap[i + 1].value->value->data.num.num;
         else if (ap[i + 1].value != NULL && ap[i + 1].value->value->type != V_none) {
         else if (ap[i + 1].value != NULL && ap[i + 1].value->value->type != V_none) {
-            setResultError(E_TypeException, ONLY_ACC(first/second/stride, V_num or V_none), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_TypeException, ONLY_ACC(first/second/stride, V_num or V_none), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             return R_error;
             return R_error;
         }
         }
     }
     }
@@ -85,7 +78,7 @@ ResultType list_slice(OFFICAL_FUNCTIONSIG){
             LinkValue *element = ap[0].value->value->data.list.list[i];
             LinkValue *element = ap[0].value->value->data.list.list[i];
             new_list = connectValueArgument(element, new_list);
             new_list = connectValueArgument(element, new_list);
         }
         }
-        makeListValue(new_list, 0, "V_list.slice", L_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        makeListValue(new_list, 0, "list.slice", L_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         freeArgument(new_list, true);
         freeArgument(new_list, true);
     }
     }
     return result->type;
     return result->type;
@@ -110,11 +103,11 @@ ResultType list_slice_assignment(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list) {
     if (ap[0].value->value->type != V_list) {
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "sys", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "sys", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     size = ap[0].value->value->data.list.size;
     size = ap[0].value->value->data.list.size;
-    getIter(ap[1].value, 1, 0, "V_list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    getIter(ap[1].value, 1, 0, "list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     if (!CHECK_RESULT(result))
     if (!CHECK_RESULT(result))
         return result->type;
         return result->type;
     iter_obj = result->value;
     iter_obj = result->value;
@@ -128,7 +121,7 @@ ResultType list_slice_assignment(OFFICAL_FUNCTIONSIG){
         if (ap[i + 2].value != NULL && ap[i + 2].value->value->type == V_num)
         if (ap[i + 2].value != NULL && ap[i + 2].value->value->type == V_num)
             *(list[i]) = ap[i + 2].value->value->data.num.num;
             *(list[i]) = ap[i + 2].value->value->data.num.num;
         else if (ap[i + 2].value != NULL && ap[i + 2].value->value->type != V_none) {
         else if (ap[i + 2].value != NULL && ap[i + 2].value->value->type != V_none) {
-            setResultError(E_TypeException, ONLY_ACC(first/second/stride, num or null), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_TypeException, ONLY_ACC(first/second/stride, num or null), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             goto return_;
             goto return_;
         }
         }
     }
     }
@@ -139,9 +132,9 @@ ResultType list_slice_assignment(OFFICAL_FUNCTIONSIG){
     {
     {
         for (vnum i = stride > 0 ? first : second; stride > 0 ? (i < second) : (i > first); i += stride) {
         for (vnum i = stride > 0 ? first : second; stride > 0 ? (i < second) : (i > first); i += stride) {
             freeResult(result);
             freeResult(result);
-            getIter(iter_obj, 0, 0, "V_list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            getIter(iter_obj, 0, 0, "list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             if (is_iterStop(result->value, inter)){
             if (is_iterStop(result->value, inter)){
-                setResultError(E_TypeException, L"Iter Object Too Short", 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+                setResultError(E_TypeException, L"Iter Object Too Short", 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
                 goto return_;
                 goto return_;
             }
             }
             else if (!CHECK_RESULT(result))
             else if (!CHECK_RESULT(result))
@@ -149,9 +142,9 @@ ResultType list_slice_assignment(OFFICAL_FUNCTIONSIG){
             ap[0].value->value->data.list.list[i] = result->value;
             ap[0].value->value->data.list.list[i] = result->value;
         }
         }
         freeResult(result);
         freeResult(result);
-        getIter(iter_obj, 0, 0, "V_list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        getIter(iter_obj, 0, 0, "list", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         if (CHECK_RESULT(result)) {
         if (CHECK_RESULT(result)) {
-            setResultError(E_TypeException, L"Iter Object Too Long", 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_TypeException, L"Iter Object Too Long", 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             goto return_;
             goto return_;
         } else if (!is_iterStop(result->value, inter))
         } else if (!is_iterStop(result->value, inter))
             goto return_;
             goto return_;
@@ -179,7 +172,7 @@ ResultType list_slice_del(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list) {
     if (ap[0].value->value->type != V_list) {
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     size = ap[0].value->value->data.list.size;
     size = ap[0].value->value->data.list.size;
@@ -191,7 +184,7 @@ ResultType list_slice_del(OFFICAL_FUNCTIONSIG){
         if (ap[i + 1].value != NULL && ap[i + 1].value->value->type == V_num)
         if (ap[i + 1].value != NULL && ap[i + 1].value->value->type == V_num)
             *(list[i]) = ap[i + 1].value->value->data.num.num;
             *(list[i]) = ap[i + 1].value->value->data.num.num;
         else if (ap[i + 1].value != NULL && ap[i + 1].value->value->type != V_none) {
         else if (ap[i + 1].value != NULL && ap[i + 1].value->value->type != V_none) {
-            setResultError(E_TypeException, ONLY_ACC(first/second/stride, num or null), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_TypeException, ONLY_ACC(first/second/stride, num or null), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             return R_error;
             return R_error;
         }
         }
     }
     }
@@ -234,11 +227,11 @@ ResultType list_down_assignment(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list){
     if (ap[0].value->value->type != V_list){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     if (ap[2].value->value->type != V_num){
     if (ap[2].value->value->type != V_num){
-        setResultError(E_TypeException, ONLY_ACC(V_list index, V_num), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, ONLY_ACC(list index, V_num), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -247,10 +240,10 @@ ResultType list_down_assignment(OFFICAL_FUNCTIONSIG){
     if (index < 0)
     if (index < 0)
         index = size + index;
         index = size + index;
     if (index >= size){
     if (index >= size){
-        setResultError(E_IndexException, L"Index too max", 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_IndexException, L"Index too max", 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     } else if (index < 0){
     } else if (index < 0){
-        setResultError(E_IndexException, L"Index less than 0", 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_IndexException, L"Index less than 0", 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     ap[0].value->value->data.list.list[index] = ap[1].value;
     ap[0].value->value->data.list.list[index] = ap[1].value;
@@ -271,11 +264,11 @@ ResultType list_down_del(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list){
     if (ap[0].value->value->type != V_list){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     if (ap[1].value->value->type != V_num){
     if (ap[1].value->value->type != V_num){
-        setResultError(E_TypeException, ONLY_ACC(V_list index, V_num), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, ONLY_ACC(list index, V_num), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -310,11 +303,11 @@ ResultType list_down(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list){
     if (ap[0].value->value->type != V_list){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     if (ap[1].value->value->type != V_num){
     if (ap[1].value->value->type != V_num){
-        setResultError(E_TypeException, ONLY_ACC(V_list index, V_num), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, ONLY_ACC(list index, V_num), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -337,12 +330,12 @@ ResultType list_iter(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
 
 
     if (ap[0].value->value->type != V_list){
     if (ap[0].value->value->type != V_list){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "V_list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "list", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     {
     {
         Argument *list_iter_arg = makeValueArgument(ap[0].value);
         Argument *list_iter_arg = makeValueArgument(ap[0].value);
-        callBackCore(inter->data.list_iter, list_iter_arg, 0, "V_list", 0,
+        callBackCore(inter->data.list_iter, list_iter_arg, 0, "list", 0,
                      CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
                      CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         freeArgument(list_iter_arg, true);
         freeArgument(list_iter_arg, true);
     }
     }
@@ -364,7 +357,7 @@ ResultType listRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
     value = ap[0].value->value;
     value = ap[0].value->value;
 
 
     if (value->type != V_list){
     if (value->type != V_list){
-        setResultError(E_TypeException, INSTANCE_ERROR(V_list), 0, "sys", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, INSTANCE_ERROR(list), 0, "sys", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     lt = value->data.list.type;
     lt = value->data.list.type;
@@ -374,12 +367,12 @@ ResultType listRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
         if (!CHECK_RESULT(result))
         if (!CHECK_RESULT(result))
             return result->type;
             return result->type;
         if (again_) {
         if (again_) {
-            makeStringValue((lt == L_list ? L"[...]" : L"(...)"), 0, "V_list.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            makeStringValue((lt == L_list ? L"[...]" : L"(...)"), 0, "list.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             return result->type;
             return result->type;
         }
         }
     }
     }
 
 
-    setBoolAttrible(true, is_repo ? L"repo_again" : L"str_again", 0, "V_list.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    setBoolAttrible(true, is_repo ? L"repo_again" : L"str_again", 0, "list.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     if (lt == L_list)
     if (lt == L_list)
         repo = memWidecpy(L"[");
         repo = memWidecpy(L"[");
     else
     else
@@ -400,12 +393,12 @@ ResultType listRepoStrCore(OFFICAL_FUNCTIONSIG, bool is_repo){
         repo = memWidecat(repo, L")", true, false);
         repo = memWidecat(repo, L")", true, false);
 
 
     freeResult(result);
     freeResult(result);
-    makeStringValue(repo, 0, "V_list.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    makeStringValue(repo, 0, "list.repo", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return_:
     return_:
     {
     {
         Result tmp;
         Result tmp;
         setResultCore(&tmp);
         setResultCore(&tmp);
-        setBoolAttrible(false, is_repo ? L"repo_again" : L"str_again", 0, "V_list.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, &tmp, belong));
+        setBoolAttrible(false, is_repo ? L"repo_again" : L"str_again", 0, "list.repo", ap[0].value, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, &tmp, belong));
         if (!RUN_TYPE(tmp.type)) {
         if (!RUN_TYPE(tmp.type)) {
             freeResult(result);
             freeResult(result);
             *result = tmp;
             *result = tmp;
@@ -449,7 +442,7 @@ void registeredList(REGISTERED_FUNCTIONSIG){
                           {inter->data.object_slice_assignment, list_slice_assignment, object_free_},
                           {inter->data.object_slice_assignment, list_slice_assignment, object_free_},
                           {NULL, NULL}};
                           {NULL, NULL}};
         gc_addTmpLink(&object->gc_status);
         gc_addTmpLink(&object->gc_status);
-        addBaseClassVar(L"V_list", object, belong, inter);
+        addBaseClassVar(L"list", object, belong, inter);
         iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
         iterBaseClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
         gc_freeTmpLink(&object->gc_status);
         gc_freeTmpLink(&object->gc_status);
     }
     }

+ 2 - 2
VirtulMathCore/ofunc/src/listiter.c

@@ -11,7 +11,7 @@ ResultType listiter_init(OFFICAL_FUNCTIONSIG){
         return result->type;
         return result->type;
     freeResult(result);
     freeResult(result);
     if (ap[1].value->value->type != V_list){
     if (ap[1].value->value->type != V_list){
-        setResultError(E_TypeException, ONLY_ACC(listiter, V_list), 0, "listiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, ONLY_ACC(listiter, list), 0, "listiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
 
 
@@ -42,7 +42,7 @@ ResultType listiter_next(OFFICAL_FUNCTIONSIG){
     index = findAttributes(L"__index", false, ap[0].value, inter);
     index = findAttributes(L"__index", false, ap[0].value, inter);
 
 
     if (list_->value->type != V_list){
     if (list_->value->type != V_list){
-        setResultError(E_TypeException, VALUE_ERROR(listiter.__list, V_list), 0, "listiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, VALUE_ERROR(listiter.__list, list), 0, "listiter", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     if (index->value->type != V_num){
     if (index->value->type != V_num){

+ 1 - 8
VirtulMathCore/ofunc/src/num.c

@@ -15,14 +15,7 @@ ResultType num_new(OFFICAL_FUNCTIONSIG){
     value = make_new(inter, belong, ap[0].value);
     value = make_new(inter, belong, ap[0].value);
     value->value->type = V_num;
     value->value->type = V_num;
     value->value->data.num.num = 0;
     value->value->data.num.num = 0;
-    switch (init_new(value, arg, "num", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "num.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 

+ 1 - 8
VirtulMathCore/ofunc/src/object.c

@@ -13,14 +13,7 @@ ResultType object_new(OFFICAL_FUNCTIONSIG){
     }
     }
 
 
     value = make_new(inter, belong, ap[0].value);
     value = make_new(inter, belong, ap[0].value);
-    switch (init_new(value, arg, "object.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "obj.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 

+ 1 - 8
VirtulMathCore/ofunc/src/pass.c

@@ -13,14 +13,7 @@ ResultType pass_new(OFFICAL_FUNCTIONSIG){
     }
     }
     value = make_new(inter, belong, ap[0].value);
     value = make_new(inter, belong, ap[0].value);
     value->value->type = V_ell;
     value->value->type = V_ell;
-    switch (init_new(value, arg, "pass.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "pass.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 

+ 2 - 9
VirtulMathCore/ofunc/src/str.c

@@ -14,14 +14,7 @@ ResultType str_new(OFFICAL_FUNCTIONSIG){
     value = make_new(inter, belong, ap[0].value);
     value = make_new(inter, belong, ap[0].value);
     value->value->type = V_str;
     value->value->type = V_str;
     value->value->data.str.str = memWidecpy(L"");
     value->value->data.str.str = memWidecpy(L"");
-    switch (init_new(value, arg, "str.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong))) {
-        case 1:
-            freeResult(result);
-            setResultOperation(result, value);
-            break;
-        default:
-            break;
-    }
+    run_init(value, arg, 0, "str.new", CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
     return result->type;
     return result->type;
 }
 }
 
 
@@ -169,7 +162,7 @@ ResultType str_iter(OFFICAL_FUNCTIONSIG){
     freeResult(result);
     freeResult(result);
     to_list = findAttributes(L"to_list", false, ap[0].value, inter);
     to_list = findAttributes(L"to_list", false, ap[0].value, inter);
     if (to_list == NULL){
     if (to_list == NULL){
-        setResultError(E_TypeException, L"String cannot be converted to V_list", 0, "str", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+        setResultError(E_TypeException, L"String cannot be converted to list", 0, "str", true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
         return R_error;
         return R_error;
     }
     }
     gc_addTmpLink(&to_list->gc_status);
     gc_addTmpLink(&to_list->gc_status);

+ 1 - 1
VirtulMathCore/ofunc/src/vobject.c

@@ -154,7 +154,7 @@ ResultType vobject_repo(OFFICAL_FUNCTIONSIG){
             break;
             break;
         case V_func: {
         case V_func: {
             char str[30] = {};
             char str[30] = {};
-            snprintf(str, 30, "(V_func on %p)", value);
+            snprintf(str, 30, "(func on %p)", value);
             repo = memStrToWcs(str, false);
             repo = memStrToWcs(str, false);
             break;
             break;
         }
         }

+ 14 - 14
VirtulMathCore/parser/grammar.c

@@ -33,7 +33,7 @@ void freeParserMessage(ParserMessage *pm, bool self) {
 void parserCommandList(PASERSSIGNATURE, bool global, bool is_one, Statement *st) {
 void parserCommandList(PASERSSIGNATURE, bool global, bool is_one, Statement *st) {
     int token_type;
     int token_type;
     int save_enter = pm->tm->file->filter_data.enter;
     int save_enter = pm->tm->file->filter_data.enter;
-    char *command_message = global ? "ERROR from command V_list(get parserCommand)" : NULL;
+    char *command_message = global ? "ERROR from command list(get parserCommand)" : NULL;
     void *bak = NULL;
     void *bak = NULL;
     fline line = 0;
     fline line = 0;
     bool should_break = false;
     bool should_break = false;
@@ -75,7 +75,7 @@ void parserCommandList(PASERSSIGNATURE, bool global, bool is_one, Statement *st)
                 if (global) {
                 if (global) {
                     Token *tk = popNewToken(pm->tm);
                     Token *tk = popNewToken(pm->tm);
                     freeToken(tk, true);
                     freeToken(tk, true);
-                    syntaxError(pm, command_list_error, command_token->line, 1, "ERROR from parserCommand V_list(get stop)");
+                    syntaxError(pm, command_list_error, command_token->line, 1, "ERROR from parserCommand list(get stop)");
                     freeToken(command_token, true);
                     freeToken(command_token, true);
                 }
                 }
                 else{
                 else{
@@ -535,7 +535,7 @@ void parserDo(PASERSSIGNATURE){
                 st->u.for_branch.first_do = do_code;
                 st->u.for_branch.first_do = do_code;
                 break;
                 break;
             case MATHER_DEF:
             case MATHER_DEF:
-                if (!callChildStatement(CALLPASERSSIGNATURE, parserDef, FUNCTION, &st, "Don't get a V_func def after do"))
+                if (!callChildStatement(CALLPASERSSIGNATURE, parserDef, FUNCTION, &st, "Don't get a func def after do"))
                     goto error_;
                     goto error_;
                 st->u.set_function.first_do = do_code;
                 st->u.set_function.first_do = do_code;
                 break;
                 break;
@@ -1025,23 +1025,23 @@ void parserDef(PASERSSIGNATURE){
     long int line = delToken(pm);
     long int line = delToken(pm);
 
 
     if (!callChildStatement(CALLPASERSSIGNATURE, parserBaseValue, BASEVALUE, &name_tmp,
     if (!callChildStatement(CALLPASERSSIGNATURE, parserBaseValue, BASEVALUE, &name_tmp,
-                            "Don't get a V_func/V_class name"))
+                            "Don't get a func/V_class name"))
         goto error_;
         goto error_;
 
 
     if (!checkToken(pm, MATHER_LP))
     if (!checkToken(pm, MATHER_LP))
         goto get_code;
         goto get_code;
     if (!parserParameter(CALLPASERSSIGNATURE, &pt, true, true, false, false, MATHER_COMMA, MATHER_ASSIGNMENT, type==MATHER_DEF ? MATHER_SEMICOLON : -1)) {
     if (!parserParameter(CALLPASERSSIGNATURE, &pt, true, true, false, false, MATHER_COMMA, MATHER_ASSIGNMENT, type==MATHER_DEF ? MATHER_SEMICOLON : -1)) {
         lexEnter(pm, false);
         lexEnter(pm, false);
-        syntaxError(pm, syntax_error, line, 1, "Don't get a V_func/V_class parameter");
+        syntaxError(pm, syntax_error, line, 1, "Don't get a func/V_class parameter");
         goto error_;
         goto error_;
     }
     }
     if (!checkToken(pm, MATHER_RP)) {
     if (!checkToken(pm, MATHER_RP)) {
-        syntaxError(pm, syntax_error, line, 1, "Don't get a V_func/V_class ) after parameter");
+        syntaxError(pm, syntax_error, line, 1, "Don't get a func/V_class ) after parameter");
         goto error_;
         goto error_;
     }
     }
     get_code:
     get_code:
-    if (!callParserCode(CALLPASERSSIGNATURE, &code_tmp, "Don't get a V_func code", line)) {
-        syntaxError(pm, syntax_error, line, 1, "Don't get a V_func code");
+    if (!callParserCode(CALLPASERSSIGNATURE, &code_tmp, "Don't get a func code", line)) {
+        syntaxError(pm, syntax_error, line, 1, "Don't get a func code");
         goto error_;
         goto error_;
     }
     }
 
 
@@ -1119,7 +1119,7 @@ void parserOperation(PASERSSIGNATURE){
  */
  */
 bool checkAssignmentLeft(PASERSSIGNATURE, Statement *left){
 bool checkAssignmentLeft(PASERSSIGNATURE, Statement *left){
     if (left->type == call_function && !checkFormal(left->u.call_function.parameter)){
     if (left->type == call_function && !checkFormal(left->u.call_function.parameter)){
-        syntaxError(pm, syntax_error, left->line, 1, "Don't get success V_func definition from Assignment22");
+        syntaxError(pm, syntax_error, left->line, 1, "Don't get success func definition from Assignment22");
         return false;
         return false;
     }
     }
     return true;
     return true;
@@ -1345,9 +1345,9 @@ void parserCallBack(PASERSSIGNATURE){
  * | MATHER_VAR
  * | MATHER_VAR
  * | MATHER_LAMBDA parserParameter MATHER_COLON parserOperation
  * | MATHER_LAMBDA parserParameter MATHER_COLON parserOperation
  * | MATHER_LP parserOperation MATHER_LP
  * | MATHER_LP parserOperation MATHER_LP
- * | MATHER_LP parserOperation MATHER_LP -> V_list
+ * | MATHER_LP parserOperation MATHER_LP -> list
  * | MATHER_LP parserOperation MATHER_LP MATHER_VAR
  * | MATHER_LP parserOperation MATHER_LP MATHER_VAR
- * | MATHER_LC parserParameter(V_dict) MATHER_LC
+ * | MATHER_LC parserParameter(dict) MATHER_LC
  */
  */
 int getOperation(PASERSSIGNATURE, int right_type, Statement **st, char *name){
 int getOperation(PASERSSIGNATURE, int right_type, Statement **st, char *name){
     *st = NULL;
     *st = NULL;
@@ -1452,7 +1452,7 @@ void parserBaseValue(PASERSSIGNATURE){
                 goto return_;
                 goto return_;
             } else if (tmp == -1) {
             } else if (tmp == -1) {
                 freeToken(value_token, true);
                 freeToken(value_token, true);
-                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get ] from V_list/var");
+                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get ] from list/var");
                 goto return_;  // 优化goto return freeToken
                 goto return_;  // 优化goto return freeToken
             }
             }
             if (MATHER_VAR == readBackToken(pm)) {
             if (MATHER_VAR == readBackToken(pm)) {
@@ -1494,13 +1494,13 @@ void parserBaseValue(PASERSSIGNATURE){
                                             MATHER_COLON, -1);
                                             MATHER_COLON, -1);
             if (!parser_status) {
             if (!parser_status) {
                 freeToken(value_token, true);
                 freeToken(value_token, true);
-                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get a V_dict parameter");
+                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get a dict parameter");
                 goto return_;
                 goto return_;
             }
             }
             if (!checkToken(pm, MATHER_RC)) {
             if (!checkToken(pm, MATHER_RC)) {
                 freeToken(value_token, true);
                 freeToken(value_token, true);
                 freeParameter(pt, true);
                 freeParameter(pt, true);
-                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get a } after V_dict");
+                syntaxError(pm, syntax_error, value_token->line, 1, "Don't get a } after dict");
                 goto return_;
                 goto return_;
             }
             }
             st = makeBaseDictStatement(pt, value_token->line, pm->file);
             st = makeBaseDictStatement(pt, value_token->line, pm->file);

+ 14 - 3
VirtulMathCore/src/__run.c

@@ -482,24 +482,35 @@ LinkValue *make_new(Inter *inter, LinkValue *belong, LinkValue *class){
     return makeLinkValue(new_object, belong, inter);
     return makeLinkValue(new_object, belong, inter);
 }
 }
 
 
-int init_new(LinkValue *obj, Argument *arg, char *message, INTER_FUNCTIONSIG_NOT_ST){
+static int init_new(LinkValue *obj, Argument *arg, fline line, char *file, INTER_FUNCTIONSIG_NOT_ST) {
     LinkValue *_init_ = NULL;
     LinkValue *_init_ = NULL;
     _init_ = findAttributes(inter->data.object_init, false, obj, inter);
     _init_ = findAttributes(inter->data.object_init, false, obj, inter);
 
 
     if (_init_ == NULL) {
     if (_init_ == NULL) {
         if (arg != NULL) {
         if (arg != NULL) {
-            setResultError(E_ArgumentException, MANY_ARG, 0, message, true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+            setResultError(E_ArgumentException, MANY_ARG, line, file, true, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
             return 0;
             return 0;
         } else
         } else
             return 1;
             return 1;
     }
     }
     _init_->belong = obj;
     _init_->belong = obj;
     gc_addTmpLink(&_init_->gc_status);
     gc_addTmpLink(&_init_->gc_status);
-    callBackCore(_init_, arg, 0, message, 0, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, obj));
+    callBackCore(_init_, arg, 0, file, 0, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, obj));
     gc_freeTmpLink(&_init_->gc_status);
     gc_freeTmpLink(&_init_->gc_status);
     return CHECK_RESULT(result) ? 1 : -1;
     return CHECK_RESULT(result) ? 1 : -1;
 }
 }
 
 
+int run_init(LinkValue *obj, Argument *arg, fline line, char *file, INTER_FUNCTIONSIG_NOT_ST) {
+    int return_;
+    setResultCore(result);
+    return_ = init_new(obj, arg, line, file, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
+    if (return_ == 1) {
+        freeResult(result);
+        setResultOperation(result, obj);
+    }
+    return return_;
+}
+
 bool setBoolAttrible(bool value, wchar_t *var, fline line, char *file, LinkValue *obj, INTER_FUNCTIONSIG_NOT_ST) {
 bool setBoolAttrible(bool value, wchar_t *var, fline line, char *file, LinkValue *obj, INTER_FUNCTIONSIG_NOT_ST) {
     LinkValue *bool_value = NULL;
     LinkValue *bool_value = NULL;
     setResultCore(result);
     setResultCore(result);

+ 1 - 1
VirtulMathCore/src/include/__run.h

@@ -37,6 +37,6 @@ bool is_iterStop(LinkValue *value, Inter *inter);
 bool is_indexException(LinkValue *value, Inter *inter);
 bool is_indexException(LinkValue *value, Inter *inter);
 bool checkAut(enum ValueAuthority value, enum ValueAuthority base, fline line, char *file, char *name, bool pri_auto, INTER_FUNCTIONSIG_NOT_ST);
 bool checkAut(enum ValueAuthority value, enum ValueAuthority base, fline line, char *file, char *name, bool pri_auto, INTER_FUNCTIONSIG_NOT_ST);
 LinkValue *make_new(Inter *inter, LinkValue *belong, LinkValue *class);
 LinkValue *make_new(Inter *inter, LinkValue *belong, LinkValue *class);
-int init_new(LinkValue *obj, Argument *arg, char *message, INTER_FUNCTIONSIG_NOT_ST);
+int run_init(LinkValue *obj, Argument *arg, fline line, char *file, INTER_FUNCTIONSIG_NOT_ST);
 bool setBoolAttrible(bool value, wchar_t *var, fline line, char *file, LinkValue *obj, INTER_FUNCTIONSIG_NOT_ST);
 bool setBoolAttrible(bool value, wchar_t *var, fline line, char *file, LinkValue *obj, INTER_FUNCTIONSIG_NOT_ST);
 #endif //VIRTUALMATH___RUN_H
 #endif //VIRTUALMATH___RUN_H

+ 4 - 4
VirtulMathCore/src/value.c

@@ -620,9 +620,9 @@ void printValue(Value *value, FILE *debug, bool print_father, bool print_in) {
             break;
             break;
         case V_func:
         case V_func:
             if (print_father)
             if (print_father)
-                fprintf(debug, "V_func");
+                fprintf(debug, "func");
             else
             else
-                fprintf(debug, "(V_func on %p)", value);
+                fprintf(debug, "(func on %p)", value);
             break;
             break;
         case V_list:
         case V_list:
             if (print_in){
             if (print_in){
@@ -634,7 +634,7 @@ void printValue(Value *value, FILE *debug, bool print_father, bool print_in) {
                 }
                 }
                 fprintf(debug, " ]", NULL);
                 fprintf(debug, " ]", NULL);
             } else
             } else
-                fprintf(debug, "[V_list]", NULL);
+                fprintf(debug, "[list]", NULL);
             break;
             break;
         case V_dict:
         case V_dict:
             if (print_in){
             if (print_in){
@@ -654,7 +654,7 @@ void printValue(Value *value, FILE *debug, bool print_father, bool print_in) {
                 }
                 }
                 fprintf(debug, " }", NULL);
                 fprintf(debug, " }", NULL);
             } else
             } else
-                fprintf(debug, "[V_dict]", NULL);
+                fprintf(debug, "[dict]", NULL);
             break;
             break;
         case V_none:
         case V_none:
             fprintf(debug, "(null)", NULL);
             fprintf(debug, "(null)", NULL);

+ 1 - 1
VirtulMathCore/src/var.c

@@ -142,7 +142,7 @@ vnum findDefault(DefaultVar *base, wchar_t *name) {
  * @param key
  * @param key
  * @return
  * @return
  */
  */
-vhashn time33(wchar_t *key){ // hash V_func
+vhashn time33(wchar_t *key){ // hash func
     vhashn hash = 5381;
     vhashn hash = 5381;
     while(*key)
     while(*key)
         hash += (hash << (vhashn)5) + (*key++);
         hash += (hash << (vhashn)5) + (*key++);