From 52f581e351aa143dab973fc7bc191f90d7caec51 Mon Sep 17 00:00:00 2001 From: Robert Muir Date: Sat, 14 Nov 2020 09:27:08 -0500 Subject: [PATCH] LUCENE-9605: update snowball to d8cf01ddf37a, adds Yiddish (#2077) --- gradle/generation/snowball.gradle | 6 +- gradle/generation/snowball.patch | 10 +- lucene/CHANGES.txt | 2 + .../tartarus/snowball/ext/SerbianStemmer.java | 237 ++- .../tartarus/snowball/ext/YiddishStemmer.java | 1381 +++++++++++++++++ .../lucene/analysis/snowball/languages.txt | 1 + 6 files changed, 1487 insertions(+), 150 deletions(-) create mode 100644 lucene/analysis/common/src/java/org/tartarus/snowball/ext/YiddishStemmer.java diff --git a/gradle/generation/snowball.gradle b/gradle/generation/snowball.gradle index b7b37c4f38d..db81a563d47 100644 --- a/gradle/generation/snowball.gradle +++ b/gradle/generation/snowball.gradle @@ -31,11 +31,11 @@ configure(rootProject) { configure(project(":lucene:analysis:common")) { ext { // git commit hash of source code https://github.com/snowballstem/snowball/ - snowballStemmerCommit = "53739a805cfa6c77ff8496dc711dc1c106d987c1" + snowballStemmerCommit = "d8cf01ddf37a9c74a78ada44531c08f7952f2a39" // git commit hash of stopwords https://github.com/snowballstem/snowball-website - snowballWebsiteCommit = "5a8cf2451d108217585d8e32d744f8b8fd20c711" + snowballWebsiteCommit = "ee7cee9bc52f22802f21e94f42d887b0dfa7d2a8" // git commit hash of test data https://github.com/snowballstem/snowball-data - snowballDataCommit = "9145f8732ec952c8a3d1066be251da198a8bc792" + snowballDataCommit = "35461050d8f81e8aeac26e38f8a8dbf1afb82721" snowballWorkDir = file("${buildDir}/snowball") diff --git a/gradle/generation/snowball.patch b/gradle/generation/snowball.patch index dc62267f338..a369acb4ef9 100644 --- a/gradle/generation/snowball.patch +++ b/gradle/generation/snowball.patch @@ -570,7 +570,7 @@ index 0000000..0cc2b60 + ) +) diff --git a/compiler/generator_java.c b/compiler/generator_java.c -index 3a18db7..5909f87 100644 +index 2958452..966adb4 100644 --- a/compiler/generator_java.c +++ b/compiler/generator_java.c @@ -272,7 +272,7 @@ static void generate_AE(struct generator * g, struct node * p) { @@ -582,7 +582,7 @@ index 3a18db7..5909f87 100644 break; } } -@@ -1138,6 +1138,7 @@ static void generate_class_begin(struct generator * g) { +@@ -1140,6 +1140,7 @@ static void generate_class_begin(struct generator * g) { w(g, " {~+~N" "~N" "~Mprivate static final long serialVersionUID = 1L;~N" @@ -590,7 +590,7 @@ index 3a18db7..5909f87 100644 "~N"); } -@@ -1184,7 +1185,7 @@ static void generate_among_table(struct generator * g, struct among * x) { +@@ -1186,7 +1187,7 @@ static void generate_among_table(struct generator * g, struct among * x) { if (v->function != 0) { w(g, ", \""); write_varname(g, v->function); @@ -1013,7 +1013,7 @@ index 73a81a9..f7772d3 100644 public abstract boolean stem(); diff --git a/libstemmer/modules.txt b/libstemmer/modules.txt -index cb39621..9fe141e 100644 +index b8ec17a..d2c8e61 100644 --- a/libstemmer/modules.txt +++ b/libstemmer/modules.txt @@ -10,11 +10,13 @@ @@ -1030,7 +1030,7 @@ index cb39621..9fe141e 100644 finnish UTF_8,ISO_8859_1 finnish,fi,fin french UTF_8,ISO_8859_1 french,fr,fre,fra german UTF_8,ISO_8859_1 german,de,ger,deu -@@ -50,12 +52,12 @@ porter UTF_8,ISO_8859_1 porter english +@@ -51,12 +53,12 @@ porter UTF_8,ISO_8859_1 porter english # algorithms are: # # german2 - This is a slight modification of the german stemmer. diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 46d9fd411e7..26f3585133f 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -161,6 +161,8 @@ Improvements * LUCENE-9450: Use BinaryDocValues for the taxonomy index instead of StoredFields. Add backwards compatibility tests for the taxonomy index. (Gautam Worah, Michael McCandless) +* LUCENE-9605: Update snowball to d8cf01ddf37a, adds Yiddish stemmer. (Robert Muir) + Bug fixes * LUCENE-8663: NRTCachingDirectory.slowFileExists may open a file while diff --git a/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SerbianStemmer.java b/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SerbianStemmer.java index 2902b917290..69daf14c915 100644 --- a/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SerbianStemmer.java +++ b/lucene/analysis/common/src/java/org/tartarus/snowball/ext/SerbianStemmer.java @@ -2257,9 +2257,8 @@ private static final char g_ca[] = {119, 95, 23, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 private static final char g_rg[] = {1 }; -private int I_p3; -private int I_p2; private int I_p1; +private boolean B_no_diacritics; private boolean r_cyr_to_lat() { @@ -2516,7 +2515,7 @@ private boolean r_prelude() { } private boolean r_mark_regions() { - I_p3 = 0; + B_no_diacritics = true; int v_1 = cursor; lab0: { golab1: while(true) @@ -2534,11 +2533,10 @@ private boolean r_mark_regions() { } cursor++; } - I_p3 = cursor; + B_no_diacritics = false; } cursor = v_1; I_p1 = limit; - I_p2 = 0; int v_3 = cursor; lab3: { golab4: while(true) @@ -2557,59 +2555,55 @@ private boolean r_mark_regions() { cursor++; } I_p1 = cursor; - } - cursor = v_3; - int v_5 = cursor; - lab6: { - golab7: while(true) + if (!(I_p1 < 2)) { - lab8: { - if (!(eq_s("r"))) + break lab3; + } + golab6: while(true) + { + lab7: { + if (!(out_grouping(g_v, 97, 117))) { - break lab8; + break lab7; } - break golab7; + break golab6; } if (cursor >= limit) { - break lab6; + break lab3; } cursor++; } - I_p2 = cursor; - if (!((I_p1 - I_p2) > 1)) + I_p1 = cursor; + } + cursor = v_3; + int v_6 = cursor; + lab8: { + golab9: while(true) { - break lab6; - } - I_p1 = I_p2; - } - cursor = v_5; - if (!(I_p1 < 2)) - { - return false; - } - lab9: { - int v_7 = cursor; - lab10: { - if (!(I_p1 == I_p2)) - { - break lab10; - } - golab11: while(true) - { - lab12: { - if (!(eq_s("r"))) - { - break lab12; - } - break golab11; - } - if (cursor >= limit) + lab10: { + if (!(eq_s("r"))) { break lab10; } - cursor++; + break golab9; } + if (cursor >= limit) + { + break lab8; + } + cursor++; + } + lab11: { + int v_8 = cursor; + lab12: { + if (!(cursor >= 2)) + { + break lab12; + } + break lab11; + } + cursor = v_8; golab13: while(true) { lab14: { @@ -2621,49 +2615,18 @@ private boolean r_mark_regions() { } if (cursor >= limit) { - break lab10; + break lab8; } cursor++; } - break lab9; } - cursor = v_7; - if (!(I_p1 != I_p2)) + if (!((I_p1 - cursor) > 1)) { - return false; - } - golab15: while(true) - { - lab16: { - if (!(in_grouping(g_v, 97, 117))) - { - break lab16; - } - break golab15; - } - if (cursor >= limit) - { - return false; - } - cursor++; - } - golab17: while(true) - { - lab18: { - if (!(out_grouping(g_v, 97, 117))) - { - break lab18; - } - break golab17; - } - if (cursor >= limit) - { - return false; - } - cursor++; + break lab8; } + I_p1 = cursor; } - I_p1 = cursor; + cursor = v_6; return true; } @@ -2675,14 +2638,6 @@ private boolean r_R1() { return true; } -private boolean r_R2() { - if (!(I_p3 == 0)) - { - return false; - } - return true; -} - private boolean r_Step_1() { int among_var; ket = cursor; @@ -2712,7 +2667,7 @@ private boolean r_Step_1() { slice_from("\u010Dajni"); break; case 7: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2788,7 +2743,7 @@ private boolean r_Step_1() { slice_from("du\u0161ni"); break; case 31: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2855,7 +2810,7 @@ private boolean r_Step_1() { slice_from("\u0161avi"); break; case 52: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2868,7 +2823,7 @@ private boolean r_Step_1() { slice_from("a\u010Dka"); break; case 55: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2878,7 +2833,7 @@ private boolean r_Step_1() { slice_from("u\u0161ka"); break; case 57: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2906,7 +2861,7 @@ private boolean r_Step_1() { slice_from("ti\u010Dni"); break; case 65: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2931,7 +2886,7 @@ private boolean r_Step_1() { slice_from("osti"); break; case 72: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -2992,7 +2947,7 @@ private boolean r_Step_1() { slice_from("a\u0161ni"); break; case 91: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -3377,308 +3332,308 @@ private boolean r_Step_2() { slice_from("at"); break; case 121: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("luc"); break; case 122: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("snj"); break; case 123: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("os"); break; case 124: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ac"); break; case 125: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ec"); break; case 126: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("uc"); break; case 127: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("rosi"); break; case 128: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("aca"); break; case 129: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("jas"); break; case 130: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("tas"); break; case 131: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("gas"); break; case 132: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("nas"); break; case 133: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("kas"); break; case 134: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("vas"); break; case 135: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("bas"); break; case 136: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("as"); break; case 137: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("cin"); break; case 138: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("astaj"); break; case 139: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("istaj"); break; case 140: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ostaj"); break; case 141: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("asta"); break; case 142: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ista"); break; case 143: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("osta"); break; case 144: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ava"); break; case 145: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("eva"); break; case 146: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("iva"); break; case 147: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("uva"); break; case 148: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ova"); break; case 149: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("jeti"); break; case 150: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("inj"); break; case 151: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ist"); break; case 152: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("es"); break; case 153: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("et"); break; case 154: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("is"); break; case 155: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ir"); break; case 156: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ur"); break; case 157: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("uj"); break; case 158: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ni"); break; case 159: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("sn"); break; case 160: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("ta"); break; case 161: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("a"); break; case 162: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("i"); break; case 163: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } slice_from("e"); break; case 164: - if (!r_R2()) + if (!(B_no_diacritics)) { return false; } @@ -3706,9 +3661,7 @@ private boolean r_Step_3() { public boolean stem() { r_cyr_to_lat(); r_prelude(); - int v_3 = cursor; r_mark_regions(); - cursor = v_3; limit_backward = cursor; cursor = limit; int v_4 = limit - cursor; diff --git a/lucene/analysis/common/src/java/org/tartarus/snowball/ext/YiddishStemmer.java b/lucene/analysis/common/src/java/org/tartarus/snowball/ext/YiddishStemmer.java new file mode 100644 index 00000000000..6c50831f23d --- /dev/null +++ b/lucene/analysis/common/src/java/org/tartarus/snowball/ext/YiddishStemmer.java @@ -0,0 +1,1381 @@ +// Generated by Snowball 2.0.0 - https://snowballstem.org/ + +package org.tartarus.snowball.ext; + +import org.tartarus.snowball.Among; + +/** + * This class implements the stemming algorithm defined by a snowball script. + *

+ * Generated by Snowball 2.0.0 - https://snowballstem.org/ + *

+ */ +@SuppressWarnings("unused") +public class YiddishStemmer extends org.tartarus.snowball.SnowballStemmer { + + private static final long serialVersionUID = 1L; + private static final java.lang.invoke.MethodHandles.Lookup methodObject = java.lang.invoke.MethodHandles.lookup(); + +private final static Among a_0[] = { + new Among("\u05D0\u05D3\u05D5\u05E8\u05DB", -1, 1), + new Among("\u05D0\u05D4\u05D9\u05E0", -1, 1), + new Among("\u05D0\u05D4\u05E2\u05E8", -1, 1), + new Among("\u05D0\u05D4\u05F2\u05DE", -1, 1), + new Among("\u05D0\u05D5\u05DE", -1, 1), + new Among("\u05D0\u05D5\u05E0\u05D8\u05E2\u05E8", -1, 1), + new Among("\u05D0\u05D9\u05D1\u05E2\u05E8", -1, 1), + new Among("\u05D0\u05E0", -1, 1), + new Among("\u05D0\u05E0\u05D8", 7, 1), + new Among("\u05D0\u05E0\u05D8\u05E7\u05E2\u05D2\u05E0", 8, 1), + new Among("\u05D0\u05E0\u05D9\u05D3\u05E2\u05E8", 7, 1), + new Among("\u05D0\u05E4", -1, 1), + new Among("\u05D0\u05E4\u05D9\u05E8", 11, 1), + new Among("\u05D0\u05E7\u05E2\u05D2\u05E0", -1, 1), + new Among("\u05D0\u05E8\u05D0\u05E4", -1, 1), + new Among("\u05D0\u05E8\u05D5\u05DE", -1, 1), + new Among("\u05D0\u05E8\u05D5\u05E0\u05D8\u05E2\u05E8", -1, 1), + new Among("\u05D0\u05E8\u05D9\u05D1\u05E2\u05E8", -1, 1), + new Among("\u05D0\u05E8\u05F1\u05E1", -1, 1), + new Among("\u05D0\u05E8\u05F1\u05E4", -1, 1), + new Among("\u05D0\u05E8\u05F2\u05E0", -1, 1), + new Among("\u05D0\u05F0\u05E2\u05E7", -1, 1), + new Among("\u05D0\u05F1\u05E1", -1, 1), + new Among("\u05D0\u05F1\u05E4", -1, 1), + new Among("\u05D0\u05F2\u05E0", -1, 1), + new Among("\u05D1\u05D0", -1, 1), + new Among("\u05D1\u05F2", -1, 1), + new Among("\u05D3\u05D5\u05E8\u05DB", -1, 1), + new Among("\u05D3\u05E2\u05E8", -1, 1), + new Among("\u05DE\u05D9\u05D8", -1, 1), + new Among("\u05E0\u05D0\u05DB", -1, 1), + new Among("\u05E4\u05D0\u05E8", -1, 1), + new Among("\u05E4\u05D0\u05E8\u05D1\u05F2", 31, 1), + new Among("\u05E4\u05D0\u05E8\u05F1\u05E1", 31, 1), + new Among("\u05E4\u05D5\u05E0\u05D0\u05E0\u05D3\u05E2\u05E8", -1, 1), + new Among("\u05E6\u05D5", -1, 1), + new Among("\u05E6\u05D5\u05D6\u05D0\u05DE\u05E2\u05E0", 35, 1), + new Among("\u05E6\u05D5\u05E0\u05F1\u05E4", 35, 1), + new Among("\u05E6\u05D5\u05E8\u05D9\u05E7", 35, 1), + new Among("\u05E6\u05E2", -1, 1) +}; + +private final static Among a_1[] = { + new Among("\u05D3\u05D6\u05E9", -1, -1), + new Among("\u05E9\u05D8\u05E8", -1, -1), + new Among("\u05E9\u05D8\u05E9", -1, -1), + new Among("\u05E9\u05E4\u05E8", -1, -1) +}; + +private final static Among a_2[] = { + new Among("\u05D5\u05E0\u05D2", -1, 1), + new Among("\u05E1\u05D8\u05D5", -1, 1), + new Among("\u05D8", -1, 1), + new Among("\u05D1\u05E8\u05D0\u05DB\u05D8", 2, 31), + new Among("\u05E1\u05D8", 2, 1), + new Among("\u05D9\u05E1\u05D8", 4, 1), + new Among("\u05D2\u05D9\u05E1\u05D8", 5, 33), + new Among("\u05E9\u05D9\u05E1\u05D8", 5, 33), + new Among("\u05E9\u05D0\u05E4\u05D8", 2, 1), + new Among("\u05D4\u05F2\u05D8", 2, 1), + new Among("\u05E7\u05F2\u05D8", 2, 1), + new Among("\u05D9\u05E7\u05F2\u05D8", 10, 1), + new Among("\u05DC\u05E2\u05DB", -1, 1), + new Among("\u05E2\u05DC\u05E2\u05DB", 12, 1), + new Among("\u05D9\u05D6\u05DE", -1, 1), + new Among("\u05D9\u05DE", -1, 1), + new Among("\u05E2\u05DE", -1, 1), + new Among("\u05E2\u05E0\u05E2\u05DE", 16, 3), + new Among("\u05D8\u05E2\u05E0\u05E2\u05DE", 17, 4), + new Among("\u05E0", -1, 1), + new Among("\u05E7\u05DC\u05D9\u05D1\u05E0", 19, 14), + new Among("\u05E8\u05D9\u05D1\u05E0", 19, 15), + new Among("\u05D8\u05E8\u05D9\u05D1\u05E0", 21, 12), + new Among("\u05E9\u05E8\u05D9\u05D1\u05E0", 21, 7), + new Among("\u05D4\u05F1\u05D1\u05E0", 19, 27), + new Among("\u05E9\u05F0\u05D9\u05D2\u05E0", 19, 17), + new Among("\u05D6\u05D5\u05E0\u05D2\u05E0", 19, 22), + new Among("\u05E9\u05DC\u05D5\u05E0\u05D2\u05E0", 19, 25), + new Among("\u05E6\u05F0\u05D5\u05E0\u05D2\u05E0", 19, 24), + new Among("\u05D1\u05F1\u05D2\u05E0", 19, 26), + new Among("\u05D1\u05D5\u05E0\u05D3\u05E0", 19, 20), + new Among("\u05F0\u05D9\u05D6\u05E0", 19, 11), + new Among("\u05D8\u05E0", 19, 4), + new Among("GE\u05D1\u05D9\u05D8\u05E0", 32, 9), + new Among("GE\u05DC\u05D9\u05D8\u05E0", 32, 13), + new Among("GE\u05DE\u05D9\u05D8\u05E0", 32, 8), + new Among("\u05E9\u05E0\u05D9\u05D8\u05E0", 32, 19), + new Among("\u05E1\u05D8\u05E0", 32, 1), + new Among("\u05D9\u05E1\u05D8\u05E0", 37, 1), + new Among("GE\u05D1\u05D9\u05E1\u05E0", 19, 10), + new Among("\u05E9\u05DE\u05D9\u05E1\u05E0", 19, 18), + new Among("GE\u05E8\u05D9\u05E1\u05E0", 19, 16), + new Among("\u05E2\u05E0", 19, 1), + new Among("\u05D2\u05D0\u05E0\u05D2\u05E2\u05E0", 42, 5), + new Among("\u05E2\u05DC\u05E2\u05E0", 42, 1), + new Among("\u05E0\u05D5\u05DE\u05E2\u05E0", 42, 6), + new Among("\u05D9\u05D6\u05DE\u05E2\u05E0", 42, 1), + new Among("\u05E9\u05D8\u05D0\u05E0\u05E2\u05E0", 42, 29), + new Among("\u05D8\u05E8\u05D5\u05E0\u05E7\u05E0", 19, 23), + new Among("\u05E4\u05D0\u05E8\u05DC\u05F1\u05E8\u05E0", 19, 28), + new Among("\u05E9\u05F0\u05F1\u05E8\u05E0", 19, 30), + new Among("\u05F0\u05D5\u05D8\u05E9\u05E0", 19, 21), + new Among("\u05D2\u05F2\u05E0", 19, 5), + new Among("\u05E1", -1, 1), + new Among("\u05D8\u05E1", 53, 4), + new Among("\u05E0\u05E1", 53, 1), + new Among("\u05D8\u05E0\u05E1", 55, 4), + new Among("\u05E2\u05E0\u05E1", 55, 3), + new Among("\u05E2\u05E1", 53, 1), + new Among("\u05D9\u05E2\u05E1", 58, 2), + new Among("\u05E2\u05DC\u05E2\u05E1", 58, 1), + new Among("\u05E2\u05E8\u05E1", 53, 1), + new Among("\u05E2\u05E0\u05E2\u05E8\u05E1", 61, 1), + new Among("\u05E2", -1, 1), + new Among("\u05D8\u05E2", 63, 4), + new Among("\u05E1\u05D8\u05E2", 64, 1), + new Among("\u05D9\u05E2", 63, -1), + new Among("\u05E2\u05DC\u05E2", 63, 1), + new Among("\u05E2\u05E0\u05E2", 63, 3), + new Among("\u05D8\u05E2\u05E0\u05E2", 68, 4), + new Among("\u05E2\u05E8", -1, 1), + new Among("\u05D8\u05E2\u05E8", 70, 4), + new Among("\u05E1\u05D8\u05E2\u05E8", 71, 1), + new Among("\u05E2\u05E0\u05E2\u05E8", 70, 3), + new Among("\u05D8\u05E2\u05E0\u05E2\u05E8", 73, 4), + new Among("\u05D5\u05EA", -1, 32) +}; + +private final static Among a_3[] = { + new Among("\u05D5\u05E0\u05D2", -1, 1), + new Among("\u05E9\u05D0\u05E4\u05D8", -1, 1), + new Among("\u05D4\u05F2\u05D8", -1, 1), + new Among("\u05E7\u05F2\u05D8", -1, 1), + new Among("\u05D9\u05E7\u05F2\u05D8", 3, 1), + new Among("\u05DC", -1, 2) +}; + +private final static Among a_4[] = { + new Among("\u05D9\u05D2", -1, 1), + new Among("\u05D9\u05E7", -1, 1), + new Among("\u05D3\u05D9\u05E7", 1, 1), + new Among("\u05E0\u05D3\u05D9\u05E7", 2, 1), + new Among("\u05E2\u05E0\u05D3\u05D9\u05E7", 3, 2), + new Among("\u05D1\u05DC\u05D9\u05E7", 1, -1), + new Among("\u05D2\u05DC\u05D9\u05E7", 1, -1), + new Among("\u05E0\u05D9\u05E7", 1, 1), + new Among("\u05D9\u05E9", -1, 1) +}; + +private static final char g_niked[] = {255, 155, 6 }; + +private static final char g_vowel[] = {33, 2, 4, 0, 6 }; + +private static final char g_consonant[] = {239, 254, 253, 131 }; + +private int I_x; +private int I_p1; + + +private boolean r_prelude() { + int v_1 = cursor; + lab0: { + while(true) + { + int v_2 = cursor; + lab1: { + golab2: while(true) + { + int v_3 = cursor; + lab3: { + lab4: { + int v_4 = cursor; + lab5: { + bra = cursor; + if (!(eq_s("\u05D5\u05D5"))) + { + break lab5; + } + ket = cursor; + { + int v_5 = cursor; + lab6: { + if (!(eq_s("\u05BC"))) + { + break lab6; + } + break lab5; + } + cursor = v_5; + } + slice_from("\u05F0"); + break lab4; + } + cursor = v_4; + lab7: { + bra = cursor; + if (!(eq_s("\u05D5\u05D9"))) + { + break lab7; + } + ket = cursor; + { + int v_6 = cursor; + lab8: { + if (!(eq_s("\u05B4"))) + { + break lab8; + } + break lab7; + } + cursor = v_6; + } + slice_from("\u05F1"); + break lab4; + } + cursor = v_4; + lab9: { + bra = cursor; + if (!(eq_s("\u05D9\u05D9"))) + { + break lab9; + } + ket = cursor; + { + int v_7 = cursor; + lab10: { + if (!(eq_s("\u05B4"))) + { + break lab10; + } + break lab9; + } + cursor = v_7; + } + slice_from("\u05F2"); + break lab4; + } + cursor = v_4; + lab11: { + bra = cursor; + if (!(eq_s("\u05DA"))) + { + break lab11; + } + ket = cursor; + slice_from("\u05DB"); + break lab4; + } + cursor = v_4; + lab12: { + bra = cursor; + if (!(eq_s("\u05DD"))) + { + break lab12; + } + ket = cursor; + slice_from("\u05DE"); + break lab4; + } + cursor = v_4; + lab13: { + bra = cursor; + if (!(eq_s("\u05DF"))) + { + break lab13; + } + ket = cursor; + slice_from("\u05E0"); + break lab4; + } + cursor = v_4; + lab14: { + bra = cursor; + if (!(eq_s("\u05E3"))) + { + break lab14; + } + ket = cursor; + slice_from("\u05E4"); + break lab4; + } + cursor = v_4; + bra = cursor; + if (!(eq_s("\u05E5"))) + { + break lab3; + } + ket = cursor; + slice_from("\u05E6"); + } + cursor = v_3; + break golab2; + } + cursor = v_3; + if (cursor >= limit) + { + break lab1; + } + cursor++; + } + continue; + } + cursor = v_2; + break; + } + } + cursor = v_1; + int v_8 = cursor; + lab15: { + while(true) + { + int v_9 = cursor; + lab16: { + golab17: while(true) + { + int v_10 = cursor; + lab18: { + bra = cursor; + if (!(in_grouping(g_niked, 1456, 1474))) + { + break lab18; + } + ket = cursor; + slice_del(); + cursor = v_10; + break golab17; + } + cursor = v_10; + if (cursor >= limit) + { + break lab16; + } + cursor++; + } + continue; + } + cursor = v_9; + break; + } + } + cursor = v_8; + return true; +} + +private boolean r_mark_regions() { + I_p1 = limit; + int v_1 = cursor; + lab0: { + bra = cursor; + if (!(eq_s("\u05D2\u05E2"))) + { + cursor = v_1; + break lab0; + } + ket = cursor; + slice_from("GE"); + } + int v_2 = cursor; + lab1: { + if (find_among(a_0) == 0) + { + cursor = v_2; + break lab1; + } + lab2: { + int v_3 = cursor; + lab3: { + lab4: { + int v_4 = cursor; + lab5: { + if (!(eq_s("\u05E6\u05D5\u05D2\u05E0"))) + { + break lab5; + } + break lab4; + } + cursor = v_4; + lab6: { + if (!(eq_s("\u05E6\u05D5\u05E7\u05D8"))) + { + break lab6; + } + break lab4; + } + cursor = v_4; + if (!(eq_s("\u05E6\u05D5\u05E7\u05E0"))) + { + break lab3; + } + } + { + int v_5 = cursor; + lab7: { + { + int c = cursor + 1; + if (0 > c || c > limit) + { + break lab7; + } + cursor = c; + } + break lab3; + } + cursor = v_5; + } + { + int c = cursor + -4; + if (0 > c || c > limit) + { + break lab3; + } + cursor = c; + } + break lab2; + } + cursor = v_3; + lab8: { + bra = cursor; + if (!(eq_s("\u05D2\u05E2"))) + { + break lab8; + } + ket = cursor; + slice_from("GE"); + break lab2; + } + cursor = v_3; + bra = cursor; + if (!(eq_s("\u05E6\u05D5"))) + { + cursor = v_2; + break lab1; + } + ket = cursor; + slice_from("TSU"); + } + } + int v_6 = cursor; + { + int c = cursor + 3; + if (0 > c || c > limit) + { + return false; + } + cursor = c; + } + I_x = cursor; + cursor = v_6; + int v_7 = cursor; + lab9: { + if (find_among(a_1) == 0) + { + cursor = v_7; + break lab9; + } + } + { + int v_8 = cursor; + lab10: { + if (!(in_grouping(g_consonant, 1489, 1520))) + { + break lab10; + } + if (!(in_grouping(g_consonant, 1489, 1520))) + { + break lab10; + } + if (!(in_grouping(g_consonant, 1489, 1520))) + { + break lab10; + } + I_p1 = cursor; + return false; + } + cursor = v_8; + } + golab11: while(true) + { + int v_9 = cursor; + lab12: { + if (!(in_grouping(g_vowel, 1488, 1522))) + { + break lab12; + } + cursor = v_9; + break golab11; + } + cursor = v_9; + if (cursor >= limit) + { + return false; + } + cursor++; + } + while(true) + { + lab13: { + if (!(in_grouping(g_vowel, 1488, 1522))) + { + break lab13; + } + continue; + } + break; + } + I_p1 = cursor; + lab14: { + if (!(I_p1 < I_x)) + { + break lab14; + } + I_p1 = I_x; + } + return true; +} + +private boolean r_R1() { + if (!(I_p1 <= cursor)) + { + return false; + } + return true; +} + +private boolean r_standard_suffix() { + int among_var; + int v_1 = limit - cursor; + lab0: { + ket = cursor; + among_var = find_among_b(a_2); + if (among_var == 0) + { + break lab0; + } + bra = cursor; + switch (among_var) { + case 1: + if (!r_R1()) + { + break lab0; + } + slice_del(); + break; + case 2: + if (!r_R1()) + { + break lab0; + } + slice_from("\u05D9\u05E2"); + break; + case 3: + if (!r_R1()) + { + break lab0; + } + slice_del(); + { + int v_2 = limit - cursor; + lab1: { + ket = cursor; + if (!(eq_s_b("\u05D2\u05D0\u05E0\u05D2"))) + { + break lab1; + } + bra = cursor; + slice_from("\u05D2\u05F2"); + break lab0; + } + cursor = limit - v_2; + } + { + int v_3 = limit - cursor; + lab2: { + ket = cursor; + if (!(eq_s_b("\u05E0\u05D5\u05DE"))) + { + break lab2; + } + bra = cursor; + slice_from("\u05E0\u05E2\u05DE"); + break lab0; + } + cursor = limit - v_3; + } + { + int v_4 = limit - cursor; + lab3: { + ket = cursor; + if (!(eq_s_b("\u05DE\u05D9\u05D8"))) + { + break lab3; + } + bra = cursor; + slice_from("\u05DE\u05F2\u05D3"); + break lab0; + } + cursor = limit - v_4; + } + { + int v_5 = limit - cursor; + lab4: { + ket = cursor; + if (!(eq_s_b("\u05D1\u05D9\u05D8"))) + { + break lab4; + } + bra = cursor; + slice_from("\u05D1\u05F2\u05D8"); + break lab0; + } + cursor = limit - v_5; + } + { + int v_6 = limit - cursor; + lab5: { + ket = cursor; + if (!(eq_s_b("\u05D1\u05D9\u05E1"))) + { + break lab5; + } + bra = cursor; + slice_from("\u05D1\u05F2\u05E1"); + break lab0; + } + cursor = limit - v_6; + } + { + int v_7 = limit - cursor; + lab6: { + ket = cursor; + if (!(eq_s_b("\u05F0\u05D9\u05D6"))) + { + break lab6; + } + bra = cursor; + slice_from("\u05F0\u05F2\u05D6"); + break lab0; + } + cursor = limit - v_7; + } + { + int v_8 = limit - cursor; + lab7: { + ket = cursor; + if (!(eq_s_b("\u05D8\u05E8\u05D9\u05D1"))) + { + break lab7; + } + bra = cursor; + slice_from("\u05D8\u05E8\u05F2\u05D1"); + break lab0; + } + cursor = limit - v_8; + } + { + int v_9 = limit - cursor; + lab8: { + ket = cursor; + if (!(eq_s_b("\u05DC\u05D9\u05D8"))) + { + break lab8; + } + bra = cursor; + slice_from("\u05DC\u05F2\u05D8"); + break lab0; + } + cursor = limit - v_9; + } + { + int v_10 = limit - cursor; + lab9: { + ket = cursor; + if (!(eq_s_b("\u05E7\u05DC\u05D9\u05D1"))) + { + break lab9; + } + bra = cursor; + slice_from("\u05E7\u05DC\u05F2\u05D1"); + break lab0; + } + cursor = limit - v_10; + } + { + int v_11 = limit - cursor; + lab10: { + ket = cursor; + if (!(eq_s_b("\u05E8\u05D9\u05D1"))) + { + break lab10; + } + bra = cursor; + slice_from("\u05E8\u05F2\u05D1"); + break lab0; + } + cursor = limit - v_11; + } + { + int v_12 = limit - cursor; + lab11: { + ket = cursor; + if (!(eq_s_b("\u05E8\u05D9\u05E1"))) + { + break lab11; + } + bra = cursor; + slice_from("\u05E8\u05F2\u05E1"); + break lab0; + } + cursor = limit - v_12; + } + { + int v_13 = limit - cursor; + lab12: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05F0\u05D9\u05D2"))) + { + break lab12; + } + bra = cursor; + slice_from("\u05E9\u05F0\u05F2\u05D2"); + break lab0; + } + cursor = limit - v_13; + } + { + int v_14 = limit - cursor; + lab13: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05DE\u05D9\u05E1"))) + { + break lab13; + } + bra = cursor; + slice_from("\u05E9\u05DE\u05F2\u05E1"); + break lab0; + } + cursor = limit - v_14; + } + { + int v_15 = limit - cursor; + lab14: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05E0\u05D9\u05D8"))) + { + break lab14; + } + bra = cursor; + slice_from("\u05E9\u05E0\u05F2\u05D3"); + break lab0; + } + cursor = limit - v_15; + } + { + int v_16 = limit - cursor; + lab15: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05E8\u05D9\u05D1"))) + { + break lab15; + } + bra = cursor; + slice_from("\u05E9\u05E8\u05F2\u05D1"); + break lab0; + } + cursor = limit - v_16; + } + { + int v_17 = limit - cursor; + lab16: { + ket = cursor; + if (!(eq_s_b("\u05D1\u05D5\u05E0\u05D3"))) + { + break lab16; + } + bra = cursor; + slice_from("\u05D1\u05D9\u05E0\u05D3"); + break lab0; + } + cursor = limit - v_17; + } + { + int v_18 = limit - cursor; + lab17: { + ket = cursor; + if (!(eq_s_b("\u05F0\u05D5\u05D8\u05E9"))) + { + break lab17; + } + bra = cursor; + slice_from("\u05F0\u05D9\u05D8\u05E9"); + break lab0; + } + cursor = limit - v_18; + } + { + int v_19 = limit - cursor; + lab18: { + ket = cursor; + if (!(eq_s_b("\u05D6\u05D5\u05E0\u05D2"))) + { + break lab18; + } + bra = cursor; + slice_from("\u05D6\u05D9\u05E0\u05D2"); + break lab0; + } + cursor = limit - v_19; + } + { + int v_20 = limit - cursor; + lab19: { + ket = cursor; + if (!(eq_s_b("\u05D8\u05E8\u05D5\u05E0\u05E7"))) + { + break lab19; + } + bra = cursor; + slice_from("\u05D8\u05E8\u05D9\u05E0\u05E7"); + break lab0; + } + cursor = limit - v_20; + } + { + int v_21 = limit - cursor; + lab20: { + ket = cursor; + if (!(eq_s_b("\u05E6\u05F0\u05D5\u05E0\u05D2"))) + { + break lab20; + } + bra = cursor; + slice_from("\u05E6\u05F0\u05D9\u05E0\u05D2"); + break lab0; + } + cursor = limit - v_21; + } + { + int v_22 = limit - cursor; + lab21: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05DC\u05D5\u05E0\u05D2"))) + { + break lab21; + } + bra = cursor; + slice_from("\u05E9\u05DC\u05D9\u05E0\u05D2"); + break lab0; + } + cursor = limit - v_22; + } + { + int v_23 = limit - cursor; + lab22: { + ket = cursor; + if (!(eq_s_b("\u05D1\u05F1\u05D2"))) + { + break lab22; + } + bra = cursor; + slice_from("\u05D1\u05F2\u05D2"); + break lab0; + } + cursor = limit - v_23; + } + { + int v_24 = limit - cursor; + lab23: { + ket = cursor; + if (!(eq_s_b("\u05D4\u05F1\u05D1"))) + { + break lab23; + } + bra = cursor; + slice_from("\u05D4\u05F2\u05D1"); + break lab0; + } + cursor = limit - v_24; + } + { + int v_25 = limit - cursor; + lab24: { + ket = cursor; + if (!(eq_s_b("\u05E4\u05D0\u05E8\u05DC\u05F1\u05E8"))) + { + break lab24; + } + bra = cursor; + slice_from("\u05E4\u05D0\u05E8\u05DC\u05D9\u05E8"); + break lab0; + } + cursor = limit - v_25; + } + { + int v_26 = limit - cursor; + lab25: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05D8\u05D0\u05E0"))) + { + break lab25; + } + bra = cursor; + slice_from("\u05E9\u05D8\u05F2"); + break lab0; + } + cursor = limit - v_26; + } + { + int v_27 = limit - cursor; + lab26: { + ket = cursor; + if (!(eq_s_b("\u05E9\u05F0\u05F1\u05E8"))) + { + break lab26; + } + bra = cursor; + slice_from("\u05E9\u05F0\u05E2\u05E8"); + break lab0; + } + cursor = limit - v_27; + } + break; + case 4: + { + int v_28 = limit - cursor; + lab27: { + if (!r_R1()) + { + break lab27; + } + slice_del(); + { + int v_29 = limit - cursor; + lab28: { + ket = cursor; + lab29: { + int v_30 = limit - cursor; + lab30: { + if (!(eq_s_b("\u05D2\u05E2\u05D1\u05E8\u05D0\u05DB"))) + { + break lab30; + } + break lab29; + } + cursor = limit - v_30; + if (!(eq_s_b("\u05D1\u05E8\u05D0\u05DB"))) + { + break lab28; + } + } + bra = cursor; + slice_from("\u05D1\u05E8\u05E2\u05E0\u05D2"); + break lab27; + } + cursor = limit - v_29; + } + break lab0; + } + cursor = limit - v_28; + } + while(true) + { + lab31: { + { + int c = cursor - -1; + if (limit_backward > c || c > limit) + { + break lab31; + } + cursor = c; + } + continue; + } + break; + } + ket = cursor; + lab32: { + int v_32 = limit - cursor; + lab33: { + if (!(eq_s_b("\u05E2\u05E0\u05E2\u05E8"))) + { + break lab33; + } + break lab32; + } + cursor = limit - v_32; + lab34: { + if (!(eq_s_b("\u05E2\u05E0\u05E2\u05DE"))) + { + break lab34; + } + break lab32; + } + cursor = limit - v_32; + lab35: { + if (!(eq_s_b("\u05E2\u05E0\u05E2"))) + { + break lab35; + } + break lab32; + } + cursor = limit - v_32; + lab36: { + if (!(eq_s_b("\u05E0"))) + { + break lab36; + } + break lab32; + } + cursor = limit - v_32; + lab37: { + if (!(eq_s_b("\u05E2\u05E8"))) + { + break lab37; + } + break lab32; + } + cursor = limit - v_32; + lab38: { + if (!(eq_s_b("\u05E0\u05E1"))) + { + break lab38; + } + break lab32; + } + cursor = limit - v_32; + lab39: { + if (!(eq_s_b("\u05E2"))) + { + break lab39; + } + break lab32; + } + cursor = limit - v_32; + if (!(eq_s_b("\u05E1"))) + { + break lab0; + } + } + bra = cursor; + if (!r_R1()) + { + break lab0; + } + slice_del(); + break; + case 5: + slice_from("\u05D2\u05F2"); + break; + case 6: + slice_from("\u05E0\u05E2\u05DE"); + break; + case 7: + slice_from("\u05E9\u05E8\u05F2\u05D1"); + break; + case 8: + slice_from("\u05DE\u05F2\u05D3"); + break; + case 9: + slice_from("\u05D1\u05F2\u05D8"); + break; + case 10: + slice_from("\u05D1\u05F2\u05E1"); + break; + case 11: + slice_from("\u05F0\u05F2\u05D6"); + break; + case 12: + slice_from("\u05D8\u05E8\u05F2\u05D1"); + break; + case 13: + slice_from("\u05DC\u05F2\u05D8"); + break; + case 14: + slice_from("\u05E7\u05DC\u05F2\u05D1"); + break; + case 15: + slice_from("\u05E8\u05F2\u05D1"); + break; + case 16: + slice_from("\u05E8\u05F2\u05E1"); + break; + case 17: + slice_from("\u05E9\u05F0\u05F2\u05D2"); + break; + case 18: + slice_from("\u05E9\u05DE\u05F2\u05E1"); + break; + case 19: + slice_from("\u05E9\u05E0\u05F2\u05D3"); + break; + case 20: + slice_from("\u05D1\u05D9\u05E0\u05D3"); + break; + case 21: + slice_from("\u05F0\u05D9\u05D8\u05E9"); + break; + case 22: + slice_from("\u05D6\u05D9\u05E0\u05D2"); + break; + case 23: + slice_from("\u05D8\u05E8\u05D9\u05E0\u05E7"); + break; + case 24: + slice_from("\u05E6\u05F0\u05D9\u05E0\u05D2"); + break; + case 25: + slice_from("\u05E9\u05DC\u05D9\u05E0\u05D2"); + break; + case 26: + slice_from("\u05D1\u05F2\u05D2"); + break; + case 27: + slice_from("\u05D4\u05F2\u05D1"); + break; + case 28: + slice_from("\u05E4\u05D0\u05E8\u05DC\u05D9\u05E8"); + break; + case 29: + slice_from("\u05E9\u05D8\u05F2"); + break; + case 30: + slice_from("\u05E9\u05F0\u05E2\u05E8"); + break; + case 31: + slice_from("\u05D1\u05E8\u05E2\u05E0\u05D2"); + break; + case 32: + if (!r_R1()) + { + break lab0; + } + slice_from("\u05D4"); + break; + case 33: + { + int c = cursor - -4; + if (limit_backward > c || c > limit) + { + break lab0; + } + cursor = c; + } + ket = cursor; + if (!(eq_s_b("\u05D8"))) + { + break lab0; + } + bra = cursor; + if (!r_R1()) + { + break lab0; + } + slice_del(); + break; + } + } + cursor = limit - v_1; + int v_33 = limit - cursor; + lab40: { + ket = cursor; + among_var = find_among_b(a_3); + if (among_var == 0) + { + break lab40; + } + bra = cursor; + switch (among_var) { + case 1: + if (!r_R1()) + { + break lab40; + } + slice_del(); + break; + case 2: + if (!r_R1()) + { + break lab40; + } + if (!(in_grouping_b(g_consonant, 1489, 1520))) + { + break lab40; + } + slice_del(); + break; + } + } + cursor = limit - v_33; + int v_34 = limit - cursor; + lab41: { + ket = cursor; + among_var = find_among_b(a_4); + if (among_var == 0) + { + break lab41; + } + bra = cursor; + switch (among_var) { + case 1: + if (!r_R1()) + { + break lab41; + } + slice_del(); + break; + case 2: + if (!r_R1()) + { + break lab41; + } + { + int v_35 = limit - cursor; + lab42: { + int v_36 = limit - cursor; + lab43: { + int v_37 = limit - cursor; + lab44: { + if (!(eq_s_b("\u05E0\u05D2"))) + { + break lab44; + } + break lab43; + } + cursor = limit - v_37; + lab45: { + if (!(eq_s_b("\u05E0\u05E7"))) + { + break lab45; + } + break lab43; + } + cursor = limit - v_37; + lab46: { + if (!(eq_s_b("\u05E0"))) + { + break lab46; + } + break lab43; + } + cursor = limit - v_37; + lab47: { + if (!(eq_s_b("\u05DE"))) + { + break lab47; + } + break lab43; + } + cursor = limit - v_37; + lab48: { + if (!(eq_s_b("Lamed"))) + { + break lab48; + } + if (!(in_grouping_b(g_consonant, 1489, 1520))) + { + break lab48; + } + break lab43; + } + cursor = limit - v_37; + if (!(in_grouping_b(g_vowel, 1488, 1522))) + { + break lab42; + } + } + cursor = limit - v_36; + slice_del(); + break lab41; + } + cursor = limit - v_35; + } + { + int c = cursor - -5; + if (limit_backward > c || c > limit) + { + break lab41; + } + cursor = c; + } + if (!(eq_s_b("\u05E0\u05D3\u05D9\u05E7"))) + { + break lab41; + } + slice_del(); + break; + } + } + cursor = limit - v_34; + int v_38 = limit - cursor; + lab49: { + while(true) + { + int v_39 = limit - cursor; + lab50: { + golab51: while(true) + { + int v_40 = limit - cursor; + lab52: { + ket = cursor; + lab53: { + int v_41 = limit - cursor; + lab54: { + if (!(eq_s_b("GE"))) + { + break lab54; + } + break lab53; + } + cursor = limit - v_41; + if (!(eq_s_b("TSU"))) + { + break lab52; + } + } + bra = cursor; + slice_del(); + cursor = limit - v_40; + break golab51; + } + cursor = limit - v_40; + if (cursor <= limit_backward) + { + break lab50; + } + cursor--; + } + continue; + } + cursor = limit - v_39; + break; + } + } + cursor = limit - v_38; + return true; +} + +public boolean stem() { + r_prelude(); + int v_2 = cursor; + r_mark_regions(); + cursor = v_2; + limit_backward = cursor; + cursor = limit; + r_standard_suffix(); + cursor = limit_backward; + return true; +} + +@Override +public boolean equals( Object o ) { + return o instanceof YiddishStemmer; +} + +@Override +public int hashCode() { + return YiddishStemmer.class.getName().hashCode(); +} + + + +} + diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/languages.txt b/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/languages.txt index 35268156621..d60456ddcf5 100644 --- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/languages.txt +++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/snowball/languages.txt @@ -30,3 +30,4 @@ Spanish Swedish Tamil Turkish +Yiddish