|
@@ -67,7 +67,7 @@ ResultType addOperation(INTER_FUNCTIONSIG) {
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
return result->type;
|
|
return result->type;
|
|
|
|
|
|
- setResultOperationBase(result, makeLinkValue(NULL, father, inter), inter);
|
|
|
|
|
|
+ setResultOperationBase(result, makeLinkValue(NULL, father, inter));
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num + right.value->value->data.num.num, inter);
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num + right.value->value->data.num.num, inter);
|
|
else if(left.value->value->type == string && right.value->value->type == string){
|
|
else if(left.value->value->type == string && right.value->value->type == string){
|
|
@@ -76,7 +76,7 @@ ResultType addOperation(INTER_FUNCTIONSIG) {
|
|
memFree(new_string);
|
|
memFree(new_string);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- setResultError(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
freeResult(&left);
|
|
freeResult(&left);
|
|
freeResult(&right);
|
|
freeResult(&right);
|
|
@@ -92,11 +92,11 @@ ResultType subOperation(INTER_FUNCTIONSIG) {
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
return result->type;
|
|
return result->type;
|
|
|
|
|
|
- setResultOperationBase(result, makeLinkValue(NULL, father, inter), inter);
|
|
|
|
|
|
+ setResultOperationBase(result, makeLinkValue(NULL, father, inter));
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num - right.value->value->data.num.num, inter);
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num - right.value->value->data.num.num, inter);
|
|
else
|
|
else
|
|
- setResultError(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
freeResult(&left);
|
|
freeResult(&left);
|
|
freeResult(&right);
|
|
freeResult(&right);
|
|
@@ -112,7 +112,7 @@ ResultType mulOperation(INTER_FUNCTIONSIG) {
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
return result->type;
|
|
return result->type;
|
|
|
|
|
|
- setResultOperationBase(result, makeLinkValue(NULL, father, inter), inter);
|
|
|
|
|
|
+ setResultOperationBase(result, makeLinkValue(NULL, father, inter));
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num * right.value->value->data.num.num, inter);
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num * right.value->value->data.num.num, inter);
|
|
else if(left.value->value->type == number && right.value->value->type == string) {
|
|
else if(left.value->value->type == number && right.value->value->type == string) {
|
|
@@ -127,7 +127,7 @@ ResultType mulOperation(INTER_FUNCTIONSIG) {
|
|
memFree(new_string);
|
|
memFree(new_string);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- setResultError(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
freeResult(&left);
|
|
freeResult(&left);
|
|
freeResult(&right);
|
|
freeResult(&right);
|
|
@@ -143,11 +143,11 @@ ResultType divOperation(INTER_FUNCTIONSIG) {
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
if (getLeftRightValue(&left, &right, CALL_INTER_FUNCTIONSIG(st, var_list, result, father)))
|
|
return result->type;
|
|
return result->type;
|
|
|
|
|
|
- setResultOperationBase(result, makeLinkValue(NULL, father, inter), inter);
|
|
|
|
|
|
+ setResultOperationBase(result, makeLinkValue(NULL, father, inter));
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
if (left.value->value->type == number && right.value->value->type == number)
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num / right.value->value->data.num.num, inter);
|
|
result->value->value = makeNumberValue(left.value->value->data.num.num / right.value->value->data.num.num, inter);
|
|
else
|
|
else
|
|
- setResultError(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "TypeException", "Get Not Support Value", st, father, true);
|
|
|
|
|
|
freeResult(&left);
|
|
freeResult(&left);
|
|
freeResult(&right);
|
|
freeResult(&right);
|
|
@@ -183,9 +183,11 @@ ResultType pointOperation(INTER_FUNCTIONSIG) {
|
|
if (!run_continue(result))
|
|
if (!run_continue(result))
|
|
goto return_;
|
|
goto return_;
|
|
else if ((left->aut == public_aut || left->aut == auto_aut) && (result->value->aut != public_aut && result->value->aut != auto_aut))
|
|
else if ((left->aut == public_aut || left->aut == auto_aut) && (result->value->aut != public_aut && result->value->aut != auto_aut))
|
|
- setResultError(result, inter, "PermissionsException", "Wrong Permissions: access variables as public", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "PermissionsException", "Wrong Permissions: access variables as public", st,
|
|
|
|
+ father, true);
|
|
else if ((left->aut == protect_aut) && (result->value->aut == private_aut))
|
|
else if ((left->aut == protect_aut) && (result->value->aut == private_aut))
|
|
- setResultError(result, inter, "PermissionsException", "Wrong Permissions: access variables as protect", st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "PermissionsException", "Wrong Permissions: access variables as protect", st,
|
|
|
|
+ father, true);
|
|
|
|
|
|
if (result->value->father->value != left->value && checkAttribution(left->value, result->value->father->value)) {
|
|
if (result->value->father->value != left->value && checkAttribution(left->value, result->value->father->value)) {
|
|
/**
|
|
/**
|
|
@@ -245,12 +247,12 @@ ResultType assCore(Statement *name, LinkValue *value, INTER_FUNCTIONSIG_NOT_ST){
|
|
}
|
|
}
|
|
|
|
|
|
freeResult(result);
|
|
freeResult(result);
|
|
- setParameterCore(call, name->u.base_list.list, var_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, father));
|
|
|
|
|
|
+ setParameterCore(name->line, name->code_file, call, name->u.base_list.list, var_list, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, father));
|
|
if (run_continue(result)){
|
|
if (run_continue(result)){
|
|
Argument *tmp = call;
|
|
Argument *tmp = call;
|
|
LinkValue *new_value = makeLinkValue(makeListValue(&tmp, inter, value_tuple), father, inter);
|
|
LinkValue *new_value = makeLinkValue(makeListValue(&tmp, inter, value_tuple), father, inter);
|
|
freeResult(result);
|
|
freeResult(result);
|
|
- setResultOperation(result, new_value, inter);
|
|
|
|
|
|
+ setResultOperation(result, new_value);
|
|
}
|
|
}
|
|
freeArgument(call, false);
|
|
freeArgument(call, false);
|
|
freeParameter(pt, true);
|
|
freeParameter(pt, true);
|
|
@@ -318,23 +320,23 @@ ResultType getVar(INTER_FUNCTIONSIG, VarInfo var_info) {
|
|
result->value = findFromVarList(name, int_times, false, CALL_INTER_FUNCTIONSIG_CORE(var_list));
|
|
result->value = findFromVarList(name, int_times, false, CALL_INTER_FUNCTIONSIG_CORE(var_list));
|
|
if (result->value == NULL) {
|
|
if (result->value == NULL) {
|
|
char *info = memStrcat("Name Not Found: ", name, false, false);
|
|
char *info = memStrcat("Name Not Found: ", name, false, false);
|
|
- setResultError(result, inter, "NameException", info, st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "NameException", info, st, father, true);
|
|
memFree(info);
|
|
memFree(info);
|
|
}
|
|
}
|
|
else if ((st->aut == public_aut) && (result->value->aut != public_aut && result->value->aut != auto_aut)){
|
|
else if ((st->aut == public_aut) && (result->value->aut != public_aut && result->value->aut != auto_aut)){
|
|
setResultCore(result);
|
|
setResultCore(result);
|
|
char *info = memStrcat("Wrong Permissions: access variables as public ", name, false, false);
|
|
char *info = memStrcat("Wrong Permissions: access variables as public ", name, false, false);
|
|
- setResultError(result, inter, "PermissionsException", info, st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "PermissionsException", info, st, father, true);
|
|
memFree(info);
|
|
memFree(info);
|
|
}
|
|
}
|
|
else if ((st->aut == protect_aut) && (result->value->aut == private_aut)){
|
|
else if ((st->aut == protect_aut) && (result->value->aut == private_aut)){
|
|
setResultCore(result);
|
|
setResultCore(result);
|
|
char *info = memStrcat("Wrong Permissions: access variables as protect ", name, false, false);
|
|
char *info = memStrcat("Wrong Permissions: access variables as protect ", name, false, false);
|
|
- setResultError(result, inter, "PermissionsException", info, st, father, true);
|
|
|
|
|
|
+ setResultErrorSt(result, inter, "PermissionsException", info, st, father, true);
|
|
memFree(info);
|
|
memFree(info);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
- setResultOperationBase(result, result->value, inter);
|
|
|
|
|
|
+ setResultOperationBase(result, result->value);
|
|
|
|
|
|
memFree(name);
|
|
memFree(name);
|
|
return result->type;
|
|
return result->type;
|
|
@@ -369,7 +371,7 @@ ResultType getList(INTER_FUNCTIONSIG) {
|
|
}
|
|
}
|
|
|
|
|
|
LinkValue *value = makeLinkValue(makeListValue(&at, inter, st->u.base_list.type), father, inter);
|
|
LinkValue *value = makeLinkValue(makeListValue(&at, inter, st->u.base_list.type), father, inter);
|
|
- setResultOperation(result, value, inter);
|
|
|
|
|
|
+ setResultOperation(result, value);
|
|
freeArgument(at_tmp, false);
|
|
freeArgument(at_tmp, false);
|
|
|
|
|
|
return result->type;
|
|
return result->type;
|
|
@@ -396,7 +398,7 @@ ResultType getDict(INTER_FUNCTIONSIG) {
|
|
|
|
|
|
freeResult(result);
|
|
freeResult(result);
|
|
LinkValue *value = makeLinkValue(tmp_value, father, inter);
|
|
LinkValue *value = makeLinkValue(tmp_value, father, inter);
|
|
- setResultOperation(result, value, inter);
|
|
|
|
|
|
+ setResultOperation(result, value);
|
|
freeArgument(at_tmp, false);
|
|
freeArgument(at_tmp, false);
|
|
|
|
|
|
return result->type;
|
|
return result->type;
|