diff options
author | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-27 21:38:53 +0000 |
---|---|---|
committer | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-27 21:38:53 +0000 |
commit | 06bd42a7221e85709274830d565157b44e21e964 (patch) | |
tree | ddaa2694fb808c6cee89af4445fda67e20de3845 | |
parent | 99d451f5c5d4d62fb4a4b2e728c74448eef16201 (diff) | |
download | ruby-06bd42a7221e85709274830d565157b44e21e964.tar.gz |
introduce two more uses of create_sequence_node in node_extended_grapheme_cluster
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | regparse.c | 78 |
1 files changed, 27 insertions, 51 deletions
diff --git a/regparse.c b/regparse.c index 5305d182d5..bdc38ef0d1 100644 --- a/regparse.c +++ b/regparse.c @@ -5922,37 +5922,22 @@ node_extended_grapheme_cluster(Node** np, ScanEnv* env) list2 = NULL; /* L* LV V* T* */ - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=T", 0, REPEAT_INFINITE); - if (r != 0) goto err; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=V", 0, REPEAT_INFINITE); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - r = create_property_node(&np1, env, "Grapheme_Cluster_Break=LV"); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; + { + Node* seq[5]; - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=L", 0, REPEAT_INFINITE); - if (r != 0) goto err; + r = quantify_property_node(seq+0, env, "Grapheme_Cluster_Break=T", 0, REPEAT_INFINITE); + if (r != 0) goto err; + r = quantify_property_node(seq+1, env, "Grapheme_Cluster_Break=V", 0, REPEAT_INFINITE); + if (r != 0) goto err; + r = create_property_node(seq+2, env, "Grapheme_Cluster_Break=LV"); + if (r != 0) goto err; + r = quantify_property_node(seq+3, env, "Grapheme_Cluster_Break=L", 0, REPEAT_INFINITE); + if (r != 0) goto err; - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; + seq[4] = NULL_NODE; + r = create_sequence_node(&list2, seq); + if (r != 0) goto err; + } tmp = onig_node_new_alt(list2, alt); if (IS_NULL(tmp)) goto err; @@ -5960,29 +5945,20 @@ node_extended_grapheme_cluster(Node** np, ScanEnv* env) list2 = NULL; /* L* V+ T* */ - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=T", 0, REPEAT_INFINITE); - if (r != 0) goto err; - - tmp = node_new_list(np1, NULL_NODE); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=V", 1, REPEAT_INFINITE); - if (r != 0) goto err; - - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; - - r = quantify_property_node(&np1, env, "Grapheme_Cluster_Break=L", 0, REPEAT_INFINITE); - if (r != 0) goto err; + { + Node* seq[4]; - tmp = node_new_list(np1, list2); - if (IS_NULL(tmp)) goto err; - list2 = tmp; - np1 = NULL; + r = quantify_property_node(seq+0, env, "Grapheme_Cluster_Break=T", 0, REPEAT_INFINITE); + if (r != 0) goto err; + r = quantify_property_node(seq+1, env, "Grapheme_Cluster_Break=V", 1, REPEAT_INFINITE); + if (r != 0) goto err; + r = quantify_property_node(seq+2, env, "Grapheme_Cluster_Break=L", 0, REPEAT_INFINITE); + if (r != 0) goto err; + + seq[3] = NULL_NODE; + r = create_sequence_node(&list2, seq); + if (r != 0) goto err; + } tmp = onig_node_new_alt(list2, alt); if (IS_NULL(tmp)) goto err; |