- int call_flag = 0;
- while (w = dfa->ops->pop_word(dfa)) {
- w->next = h;
- h = w;
-
- if (SCF_LEX_WORD_RP != w->type) {
- if (SCF_LEX_WORD_LP == w->type)
- call_flag = 1;
- break;
- }
- }
-
- while (h) {
- w = h;
- h = h->next;
- dfa->ops->push_word(dfa, w);
- }
-
- if (call_flag) {
- w = scf_lex_word_clone(f->node.w);
- if (!w)
- return -ENOMEM;
- w->type = SCF_LEX_WORD_ID;
-
- dfa->ops->push_word(dfa, w);
-
- d->expr = fd->parent_expr;
- fd->parent_expr = NULL;
-
- } else if (fd->parent_expr) {
- if (!fd->parent_var) {
- scf_loge("\n");
- return SCF_DFA_ERROR;
- }
-
- if (SCF_FUNCTION_PTR != fd->parent_var->type) {
- scf_loge("\n");
- return SCF_DFA_ERROR;
- }
-
- fd->parent_var->func_ptr = f;
-
- if (fd->parent_var->member_flag) {
- f->member_flag = 1;
-
- scf_list_del(&f->list);
- scf_node_del_child((scf_node_t*)fd->parent_block, (scf_node_t*)f);
-
- t = fd->parent_var->parent_type;
-
- scf_scope_push_function(t->scope, f);
- scf_node_add_child((scf_node_t*)t, (scf_node_t*)f);
- }
-
- scf_expr_free(fd->parent_expr);
- }
+ w = scf_lex_word_clone(f->node.w);
+ if (!w)
+ return -ENOMEM;
+ w->type = SCF_LEX_WORD_ID;
+ dfa->ops->push_word(dfa, w);