From: <di...@us...> - 2022-11-29 12:23:37
|
Revision: 3792 http://sourceforge.net/p/ftm/code/3792 Author: diemo Date: 2022-11-29 12:23:35 +0000 (Tue, 29 Nov 2022) Log Message: ----------- untabify Modified Paths: -------------- trunk/ftm/ftmlib/expression.c Modified: trunk/ftm/ftmlib/expression.c =================================================================== --- trunk/ftm/ftmlib/expression.c 2022-11-29 12:20:42 UTC (rev 3791) +++ trunk/ftm/ftmlib/expression.c 2022-11-29 12:23:35 UTC (rev 3792) @@ -254,7 +254,7 @@ else if(sym == sym_strict) error_checking_level = error_checking_strict; else - return -1; + return -1; return error_checking_level; } @@ -280,13 +280,13 @@ { if(return_args == return_varargs) { - if(error_checking_level != error_checking_strict || status == missing_argument_error) - return fts_ok; + if(error_checking_level != error_checking_strict || status == missing_argument_error) + return fts_ok; } else if(error_checking_level <= error_checking_loose) { - expression_stack_push(exp, fts_zero); - return fts_ok; + expression_stack_push(exp, fts_zero); + return fts_ok; } return status; @@ -306,22 +306,22 @@ if(return_args == return_value) { - if(error_checking_level > error_checking_loose) - { - expression_stack_pop_frame( exp); - return status; - } - - return exp_return_value(exp, at); + if(error_checking_level > error_checking_loose) + { + expression_stack_pop_frame( exp); + return status; + } + + return exp_return_value(exp, at); } for(i=0; i<ac; i++) - fts_atom_refer(at + i); + fts_atom_refer(at + i); expression_stack_pop_frame( exp); for(i=0; i<ac; i++) - expression_stack_push(exp, at + i); + expression_stack_push(exp, at + i); return fts_ok; } @@ -330,7 +330,7 @@ exp_return_varargs_or_error(fts_expression_t *exp, fts_atom_t *a, enum return_args_e return_args) { if(fts_is_void(a)) - return exp_return_void_or_error(exp, missing_argument_error, return_args); + return exp_return_void_or_error(exp, missing_argument_error, return_args); else if(fts_is_pointer(a)) { fts_array_t *array = (fts_array_t *)fts_get_pointer(a); @@ -340,11 +340,11 @@ switch(ac) { case 0: - return exp_return_void_or_error(exp, missing_argument_error, return_args); + return exp_return_void_or_error(exp, missing_argument_error, return_args); case 1: - return exp_return_value(exp, at); + return exp_return_value(exp, at); default: - return exp_return_multiple_or_error(exp, ac, at, multiple_arguments_error, return_args); + return exp_return_multiple_or_error(exp, ac, at, multiple_arguments_error, return_args); } } @@ -378,10 +378,10 @@ { if(status == fts_ok) { - if(status == missing_argument_error || status == multiple_arguments_error) - return exp_error_return(exp, error_status, return_args); - - return fts_ok; + if(status == missing_argument_error || status == multiple_arguments_error) + return exp_error_return(exp, error_status, return_args); + + return fts_ok; } return exp_error_return(exp, status, return_args); @@ -394,10 +394,10 @@ if(status == fts_ok) { - if(status == missing_argument_error) - return exp_error_return(exp, error_status, return_args); - - return fts_ok; + if(status == missing_argument_error) + return exp_error_return(exp, error_status, return_args); + + return fts_ok; } return exp_error_return(exp, status, return_args); @@ -414,12 +414,12 @@ { if(status != fts_ok) { - if(status == missing_argument_error) - return exp_error_return_nopop(exp, fts_status_format("missing %s operand for %s", operand, operation), return_args); - else if (status == multiple_arguments_error) - return exp_error_return_nopop(exp, fts_status_format("multiple %s operands for %s", operand, operation), return_args); - - return exp_error_return_nopop(exp, status, return_args); + if(status == missing_argument_error) + return exp_error_return_nopop(exp, fts_status_format("missing %s operand for %s", operand, operation), return_args); + else if (status == multiple_arguments_error) + return exp_error_return_nopop(exp, fts_status_format("multiple %s operands for %s", operand, operation), return_args); + + return exp_error_return_nopop(exp, status, return_args); } return fts_ok; @@ -431,12 +431,12 @@ /* no pop for binary operations */ if(status != fts_ok) { - if(status == missing_argument_error) - return exp_error_return(exp, fts_status_format("missing %s operand for %s", operand, operation), return_args); - else if (status == multiple_arguments_error) - return exp_error_return(exp, fts_status_format("multiple %s operands for %s", operand, operation), return_args); - - return exp_error_return(exp, status, return_args); + if(status == missing_argument_error) + return exp_error_return(exp, fts_status_format("missing %s operand for %s", operand, operation), return_args); + else if (status == multiple_arguments_error) + return exp_error_return(exp, fts_status_format("multiple %s operands for %s", operand, operation), return_args); + + return exp_error_return(exp, status, return_args); } return fts_ok; @@ -934,7 +934,7 @@ expression_stack_pop( exp, 1); #if COMPARE_OBJECTS - else if (fts_is_object(top-1) && fts_is_object(top)) /* object comparision */ \ + else if (fts_is_object(top-1) && fts_is_object(top)) /* object comparision */ \ fts_set_int(top-1, fts_atom_compare(top-1, top) OP 0); #endif @@ -1072,7 +1072,7 @@ case TK_DOLLAR: { - fts_atom_t *ptr = NULL; // atom referred to by $<something> + fts_atom_t *ptr = NULL; // atom referred to by $<something> expression_stack_push_frame(exp); exp_return_clear(exp, &ret); @@ -1123,12 +1123,12 @@ { if(ptr != NULL) { - fts_atom_assign(ptr, &assignment_data->val); + fts_atom_assign(ptr, &assignment_data->val); ret = *ptr; } else return exp_error_return(exp, invalid_assignment_left_value_error, return_args); - + break; } case TK_COLON_EQUAL: @@ -1137,7 +1137,7 @@ ret = *ptr; if(tree_binop_atom_invoke(tree, &ret, fts_s_set, &assignment_data->val) == NULL) - return exp_error_return_invalid_operands(exp, "copy assignement (:=)", return_args); + return exp_error_return_invalid_operands(exp, "copy assignement (:=)", return_args); break; } @@ -1148,7 +1148,7 @@ ptr = &ret; if(tree_op_atom_incr(assignment_data->tree, ptr, assignment_data->tok, &assignment_data->val) == NULL) - return exp_error_return_invalid_operands(exp, "arithmetic/assignment (+=, -=, *=, /=)", return_args); + return exp_error_return_invalid_operands(exp, "arithmetic/assignment (+=, -=, *=, /=)", return_args); ret = *ptr; @@ -1159,97 +1159,97 @@ } else if(ptr != NULL) ret = *ptr; - + return exp_return_varargs_or_error(exp, &ret, return_args); } case TK_ELEMENT: { - enum return_args_e required_return_args = (error_checking_level == error_checking_strict)? return_value: return_varargs; - + enum return_args_e required_return_args = (error_checking_level == error_checking_strict)? return_value: return_varargs; + expression_stack_push_frame( exp); /* get object */ if((status = expression_eval_aux( tree->left, exp, callback, data, NULL, required_return_args)) != fts_ok) - return exp_error_check_value(exp, status, element_invalid_object_error, required_return_args); + return exp_error_check_value(exp, status, element_invalid_object_error, required_return_args); ac = expression_stack_frame_count( exp); at = expression_stack_frame( exp); if(ac == 1) - { - if(fts_is_object(at)) - { - /* get object before braces */ - fts_object_t *obj = fts_get_object(at); - enum return_args_e required_return_args = (error_checking_level == error_checking_strict)? return_non_void: return_varargs; - - /* get index/indices */ - if ((status = expression_eval_aux( tree->right, exp, callback, data, NULL, required_return_args)) != fts_ok) - return exp_error_check_nonvoid(exp, status, element_invalid_index_error, required_return_args); - - ac = expression_stack_frame_count( exp); - - /* skip object (keep reference on stack) */ - ac--; - at++; - - if(ac > 0) - { - fts_set_void(&ret); - - if(assignment_data == NULL) - { - fts_object_get_element(obj, ac, at, &ret); - - if(fts_is_void(&ret)) - return exp_return_void_or_error(exp, element_invalid_return_error, return_args); - } - else - { - /* elemement assignment: $x[...] = ... */ - switch(assignment_data->tok) - { - case TK_EQUAL: - fts_object_set_element(obj, ac, at, &assignment_data->val); - ret = assignment_data->val; - break; - - case TK_COLON_EQUAL: - { - fts_object_get_element(obj, ac, at, &ret); - - if(tree_binop_atom_invoke(tree, &ret, fts_s_set, &assignment_data->val) == NULL) - return exp_error_return_invalid_operands(exp, "copy assignement (:=)", return_args); - - break; - } - - default: - { - fts_object_get_element(obj, ac, at, &ret); - - if(fts_is_void(&ret)) - return exp_return_void_or_error(exp, element_invalid_return_error, return_args); - - if(tree_op_atom_incr(assignment_data->tree, &ret, assignment_data->tok, &assignment_data->val) == NULL) - return exp_error_return_invalid_operands(exp, "arithmetic/assignment (+=, -=, *=, /=)", return_args); - - fts_object_set_element(obj, ac, at, &ret); - - break; - } - } - } - - return exp_return_value(exp, &ret); - } - } - else - return exp_error_return(exp, fts_status_format("cannot get element from %s", fts_symbol_name(fts_get_class_name(at))), return_args); - } - - return exp_return_void_or_error(exp, element_invalid_object_error, return_args); + { + if(fts_is_object(at)) + { + /* get object before braces */ + fts_object_t *obj = fts_get_object(at); + enum return_args_e required_return_args = (error_checking_level == error_checking_strict)? return_non_void: return_varargs; + + /* get index/indices */ + if ((status = expression_eval_aux( tree->right, exp, callback, data, NULL, required_return_args)) != fts_ok) + return exp_error_check_nonvoid(exp, status, element_invalid_index_error, required_return_args); + + ac = expression_stack_frame_count( exp); + + /* skip object (keep reference on stack) */ + ac--; + at++; + + if(ac > 0) + { + fts_set_void(&ret); + + if(assignment_data == NULL) + { + fts_object_get_element(obj, ac, at, &ret); + + if(fts_is_void(&ret)) + return exp_return_void_or_error(exp, element_invalid_return_error, return_args); + } + else + { + /* elemement assignment: $x[...] = ... */ + switch(assignment_data->tok) + { + case TK_EQUAL: + fts_object_set_element(obj, ac, at, &assignment_data->val); + ret = assignment_data->val; + break; + + case TK_COLON_EQUAL: + { + fts_object_get_element(obj, ac, at, &ret); + + if(tree_binop_atom_invoke(tree, &ret, fts_s_set, &assignment_data->val) == NULL) + return exp_error_return_invalid_operands(exp, "copy assignement (:=)", return_args); + + break; + } + + default: + { + fts_object_get_element(obj, ac, at, &ret); + + if(fts_is_void(&ret)) + return exp_return_void_or_error(exp, element_invalid_return_error, return_args); + + if(tree_op_atom_incr(assignment_data->tree, &ret, assignment_data->tok, &assignment_data->val) == NULL) + return exp_error_return_invalid_operands(exp, "arithmetic/assignment (+=, -=, *=, /=)", return_args); + + fts_object_set_element(obj, ac, at, &ret); + + break; + } + } + } + + return exp_return_value(exp, &ret); + } + } + else + return exp_error_return(exp, fts_status_format("cannot get element from %s", fts_symbol_name(fts_get_class_name(at))), return_args); + } + + return exp_return_void_or_error(exp, element_invalid_object_error, return_args); } case TK_PREFIX: @@ -1257,8 +1257,8 @@ expression_stack_push_frame( exp); if((status = expression_eval_aux( tree->left, exp, callback, data, NULL, return_varargs)) != fts_ok) - return exp_error_return(exp, status, return_args); - + return exp_error_return(exp, status, return_args); + ac = expression_stack_frame_count( exp); at = expression_stack_frame( exp); @@ -1271,8 +1271,8 @@ fts_symbol_t fun_name = fts_get_symbol(at); if((status = fts_function_call((fts_object_t *)exp->scope, fun_name, ac - 1, at + 1, &ret)) != fts_ok) - return exp_error_return(exp, status, return_args); - + return exp_error_return(exp, status, return_args); + return exp_return_varargs_or_error(exp, &ret, return_args); } else if (ac > 1 && fts_is_object( at) && fts_is_symbol( at + 1)) @@ -1282,16 +1282,16 @@ fts_symbol_t selector = fts_get_symbol(at + 1); fts_object_refer(obj); - - if((status = fts_method_call(obj, selector, ac - 2, at + 2, &ret)) != fts_ok) - { - fts_object_release(obj); - return exp_error_return(exp, status, return_args); - } + + if((status = fts_method_call(obj, selector, ac - 2, at + 2, &ret)) != fts_ok) + { + fts_object_release(obj); + return exp_error_return(exp, status, return_args); + } status = exp_return_varargs_or_error(exp, &ret, return_args); fts_object_release(obj); - return status; + return status; } else if(ac == 1) { @@ -1299,10 +1299,10 @@ ret = at[0]; return exp_return_value(exp, &ret); } - else if(ac != 0) - return exp_error_return(exp, invalid_parenthesis_expression_error, return_args); + else if(ac != 0) + return exp_error_return(exp, invalid_parenthesis_expression_error, return_args); - return exp_return_void_or_error(exp, fts_ok, return_args); + return exp_return_void_or_error(exp, fts_ok, return_args); } case TK_UPLUS: @@ -1486,7 +1486,7 @@ LBINOP_EVAL(<=); break; - case TK_EQUAL: + case TK_EQUAL: { assignment_data_t assignment_data; @@ -1497,7 +1497,7 @@ return exp_error_check_assignment_operand(exp, status, "right", "assignement (=)", return_args); at = expression_stack_frame( exp); - + assignment_data.tree = tree; assignment_data.tok = tree->token; assignment_data.val = at[0]; @@ -1508,7 +1508,7 @@ ret = at[1]; return exp_return_value(exp, &ret); } - + case TK_COLON_EQUAL: { assignment_data_t assignment_data; @@ -1556,7 +1556,7 @@ ret = at[1]; return exp_return_value(exp, &ret); } - + case TK_SECT: return invalid_operator_sect_error; @@ -1918,7 +1918,7 @@ fts_expression_set_globals(self->expression, globals); fts_expression_set_locals(self->expression, locals); fts_expression_set_env(self->expression, ac, at); - + status = fts_expression_evaluate(self->expression, expr_function_callback, (void *)ret); if(status != fts_ok) @@ -1961,10 +1961,10 @@ { fts_hashtable_t *globals = fts_scope_get_values(fts_global_scope); - fts_expression_set_globals(self->expression, globals); - fts_expression_set_locals(self->expression, locals); - fts_expression_set_env(self->expression, ac, at); - + fts_expression_set_globals(self->expression, globals); + fts_expression_set_locals(self->expression, locals); + fts_expression_set_env(self->expression, ac, at); + fts_array_clear(&self->descr); self->status = fts_expression_evaluate(self->expression, expr_method_callback, self); @@ -2091,11 +2091,11 @@ if(ac > 0) { - self->value = at[0]; - fts_atom_refer(at); + self->value = at[0]; + fts_atom_refer(at); } else - fts_set_int(&self->value, 0); + fts_set_int(&self->value, 0); return fts_ok; } @@ -2136,4 +2136,3 @@ expr_class = fts_class_install(fts_s_expr, expr_instantiate); fts_variable_class = fts_class_install(NULL, variable_instantiate); } - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |