From: K.Kosako Date: Tue, 1 Aug 2017 05:30:00 +0000 (+0900) Subject: remove unused codes X-Git-Tag: v6.5.0^2~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a86f058d82f901cafe82cfe3ed3f0a67ceeeba8;p=onig remove unused codes --- diff --git a/src/regparse.c b/src/regparse.c index 2d639b7..a33d210 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -1636,373 +1636,6 @@ node_new_keep(Node** node, ScanEnv* env) return ONIG_NORMAL; } -#if 0 -static int -node_is_include_enclosure_memory(Node* node) -{ - int t; - int r = 0; - - switch (NODE_TYPE(node)) { - case NODE_LIST: - case NODE_ALT: - do { - t = node_is_include_enclosure_memory(NODE_CAR(node)); - if (t != 0) return t; - } while (IS_NOT_NULL(node = NODE_CDR(node))); - break; - - case NODE_QUANT: - r = node_is_include_enclosure_memory(NODE_BODY(node)); - break; - - case NODE_ENCLOSURE: - { - EnclosureNode* en = ENCLOSURE_(node); - switch (en->type) { - case ENCLOSURE_MEMORY: - return 1; - break; - - case ENCLOSURE_OPTION: - case ENCLOSURE_STOP_BACKTRACK: - r = node_is_include_enclosure_memory(NODE_BODY(node)); - break; - case ENCLOSURE_IF_ELSE: - r = node_is_include_enclosure_memory(NODE_BODY(node)); - if (r != 0) return r; - - if (IS_NOT_NULL(en->te.Then)) { - r = node_is_include_enclosure_memory(en->te.Then); - if (r != 0) return r; - } - if (IS_NOT_NULL(en->te.Else)) { - r = node_is_include_enclosure_memory(en->te.Else); - if (r != 0) return r; - } - break; - } - } - break; - -#ifdef USE_CALL - case NODE_CALL: - /* fall */ -#endif - default: - break; - } - - return r; -} - -static int -make_fail_with_after(Node** rnode, ScanEnv* env, int num, Node* ns[]) -{ - int r; - int i; - int n; - int* used; - Node** us; - Node* f; - Node* x; - - *rnode = NULL_NODE; - r = node_new_fail(&f, env); - if (r != 0) return r; - - if (num <= 0) { - *rnode = f; - return ONIG_NORMAL; - } - - us = (Node** )xmalloc(sizeof(*us) * (num + 1)); - if (IS_NULL(us)) { - onig_node_free(f); - return ONIGERR_MEMORY; - } - - used = (int* )xmalloc(sizeof(*used) * num); - if (IS_NULL(used)) goto err1; - for (i = 0; i < num; i++) used[i] = 0; - - n = 0; - us[n++] = f; - for (i = 0; i < num; i++) { - if (node_is_include_enclosure_memory(ns[i])) { - us[n++] = ns[i]; - used[i] = 1; - } - } - - if (n == 1) { - *rnode = f; - goto end; - } - - x = make_list(n, us); - if (IS_NULL(x)) { - xfree(used); - err1: - xfree(us); - onig_node_free(f); - return ONIGERR_MEMORY; - } - - *rnode = x; - end: - for (i = 0; i < num; i++) { - if (used[i] == 0) onig_node_free(ns[i]); - } - - xfree(used); - xfree(us); - return ONIG_NORMAL; -} - -static int -make_absent_group_repeated_body_tree(Node** node, - Node* absent_body, Node* step_body, - ScanEnv* env, int* rid) -{ - int i; - int r; - int id; - Node* top; - Node* ns1[3]; - Node* ns2[2]; - - *node = NULL_NODE; - - for (i = 0; i < 3; i++) ns1[i] = NULL_NODE; - for (i = 0; i < 2; i++) ns2[i] = NULL_NODE; - - ns1[0] = absent_body; - ns2[1] = step_body; - - r = node_new_update_var_gimmick(&ns1[1], UPDATE_VAR_RIGHT_RANGE_SPREV, 0, env); - if (r != 0) goto err; - *rid = id = GIMMICK_(ns1[1])->id; - - r = node_new_fail(&ns1[2], env); - if (r != 0) goto err; - - ns2[0] = make_list(3, ns1 + 0); - if (IS_NULL(ns2[0])) goto err; - for (i = 0; i < 3; i++) ns1[i] = NULL_NODE; - - top = make_alt(2, ns2 + 0); - if (IS_NULL(top)) goto err; - - *node = top; - return ONIG_NORMAL; - - err: - for (i = 0; i < 3; i++) onig_node_free(ns1[i]); - for (i = 0; i < 2; i++) onig_node_free(ns2[i]); - return ONIGERR_MEMORY; -} - -static int -make_absent_group_restore_fail_for_lower_no_zero(Node** node, Node* repeat_line, - int id, ScanEnv* env) -{ - int r; - Node* restore; - Node* alt; - Node* ns[2]; - - restore = NULL_NODE; - ns[0] = ns[1] = NULL_NODE; - r = node_new_update_var_gimmick(&ns[0], - UPDATE_VAR_RIGHT_RANGE_FROM_STACK, id, env); - if (r != 0) goto err; - - r = node_new_fail(&ns[1], env); - if (r != 0) goto err; - - restore = make_list(2, ns); - if (IS_NULL(restore)) { - r = ONIGERR_MEMORY; - goto err; - } - - ns[0] = repeat_line; - ns[1] = restore; - alt = make_alt(2, ns); - if (IS_NULL(alt)) { - r = ONIGERR_MEMORY; - goto err1; - } - *node = alt; - return ONIG_NORMAL; - - err: - onig_node_free(ns[0]); - onig_node_free(ns[1]); - err1: - onig_node_free(restore); - return r; -} - -static int -make_absent_group_tree(Node** node, Node* absent_body, - Node* generator, ScanEnv* env) -{ - int r; - int invalid_node; - int lower; - int id; - OnigLen min_len; - Node* top; - Node* repeat; - Node* step_body; - Node* repeat_body; - Node* stop_bt; - Node* save; - Node* update; - Node* ns[3]; - - *node = NULL_NODE; - update = stop_bt = save = repeat_body = repeat = step_body = NULL_NODE; - - r = ONIGERR_MEMORY; - if (IS_NULL(generator)) { - /* default generator */ -#if 1 - r = node_new_true_anychar(&step_body, env); - if (r != 0) goto err1; -#else - step_body = node_new_anychar(); - if (IS_NULL(step_body)) goto err1; -#endif - lower = 0; - repeat = node_new_quantifier(lower, REPEAT_INFINITE, 0); - if (IS_NULL(repeat)) goto err1; - } - else { - QuantNode* q; - Node* body; - - r = ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN; - if (NODE_TYPE(generator) != NODE_QUANT) { - if (NODE_TYPE(generator) != NODE_ENCLOSURE || - ENCLOSURE_(generator)->type != ENCLOSURE_STOP_BACKTRACK) - goto err0; - - stop_bt = generator; - generator = NODE_BODY(stop_bt); - NODE_BODY(stop_bt) = NULL_NODE; - if (NODE_TYPE(generator) != NODE_QUANT) goto err0; - } - - q = QUANT_(generator); - if (q->greedy == 0) goto err0; - body = NODE_BODY(generator); - invalid_node = 0; - min_len = onig_get_tiny_min_len(body, (BIT_NODE_CALL), &invalid_node); - if (invalid_node != 0) { - r = ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN; - goto err0; - } - if (min_len == 0) goto err0; - - repeat = generator; - step_body = body; - NODE_BODY(repeat) = NULL_NODE; - generator = NULL_NODE; - lower = QUANT_(repeat)->lower; - } - - invalid_node = 0; - min_len = onig_get_tiny_min_len(absent_body, (BIT_NODE_CALL | BIT_NODE_BACKREF), - &invalid_node); - if (invalid_node != 0) { - r = ONIGERR_INVALID_ABSENT_GROUP_PATTERN; - goto err0; - } - if (min_len == 0) { // (?~) ==> simple fail - Node* fail_with_after; - Node* ns[2]; - - ns[0] = step_body; ns[1] = absent_body; - r = make_fail_with_after(&fail_with_after, env, 2, ns); - if (r != 0) goto err0; - - *node = fail_with_after; - onig_node_free(repeat); - onig_node_free(stop_bt); - return ONIG_NORMAL; - } - - r = make_absent_group_repeated_body_tree(&repeat_body, absent_body, - step_body, env, &id); - if (r != 0) goto err2; - - NODE_BODY(repeat) = repeat_body; - if (IS_NOT_NULL(stop_bt)) { - NODE_BODY(stop_bt) = repeat; - repeat = NULL_NODE; - } - - r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); - if (r != 0) goto err2; - - ns[0] = save; - ns[1] = IS_NULL(stop_bt) ? repeat : stop_bt; - - r = node_new_update_var_gimmick(&update, UPDATE_VAR_RIGHT_RANGE_FROM_STACK, - id, env); - if (r != 0) goto err2; - ns[2] = update; - - if (lower == 0) { - top = make_list(3, ns); - if (IS_NULL(top)) { - r = ONIGERR_MEMORY; - goto err2; - } - } - else { - Node* alt; - Node* repeat_line; - repeat_line = make_list(2, ns + 1); - if (IS_NULL(repeat_line)) { - r = ONIGERR_MEMORY; - goto err2; - } - - r = make_absent_group_restore_fail_for_lower_no_zero(&alt, repeat_line, id, env); - if (r != 0) goto err2; - - ns[1] = alt; - top = make_list(2, ns); - if (IS_NULL(top)) { - NODE_CAR(alt) = NULL_NODE; - onig_node_free(alt); - r = ONIGERR_MEMORY; - goto err2; - } - } - - *node = top; - return ONIG_NORMAL; - - err0: - onig_node_free(generator); - err1: - onig_node_free(absent_body); - onig_node_free(step_body); - err2: - onig_node_free(repeat); - onig_node_free(stop_bt); - onig_node_free(save); - onig_node_free(update); - - return r; -} -#endif - static int make_absent_engine(Node** node, int pre_save_right_id, Node* absent, Node* step_one, int lower, int upper, int possessive,