From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 04:57:58 +0200 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- .../misc/oktavia/src/stemmer/norwegian-stemmer.jsx | 428 +++++++++++++++++++++ 1 file changed, 428 insertions(+) create mode 100644 web/server/h2o/libh2o/misc/oktavia/src/stemmer/norwegian-stemmer.jsx (limited to 'web/server/h2o/libh2o/misc/oktavia/src/stemmer/norwegian-stemmer.jsx') diff --git a/web/server/h2o/libh2o/misc/oktavia/src/stemmer/norwegian-stemmer.jsx b/web/server/h2o/libh2o/misc/oktavia/src/stemmer/norwegian-stemmer.jsx new file mode 100644 index 00000000..29640bf1 --- /dev/null +++ b/web/server/h2o/libh2o/misc/oktavia/src/stemmer/norwegian-stemmer.jsx @@ -0,0 +1,428 @@ +// This file was generated automatically by the Snowball to JSX compiler + +import "base-stemmer.jsx"; +import "among.jsx"; + + /** + * This class was automatically generated by a Snowball to JSX compiler + * It implements the stemming algorithm defined by a snowball script. + */ + +class NorwegianStemmer extends BaseStemmer +{ + static const serialVersionUID = 1; + static const methodObject = new NorwegianStemmer(); + + static const a_0 = [ + new Among("a", -1, 1), + new Among("e", -1, 1), + new Among("ede", 1, 1), + new Among("ande", 1, 1), + new Among("ende", 1, 1), + new Among("ane", 1, 1), + new Among("ene", 1, 1), + new Among("hetene", 6, 1), + new Among("erte", 1, 3), + new Among("en", -1, 1), + new Among("heten", 9, 1), + new Among("ar", -1, 1), + new Among("er", -1, 1), + new Among("heter", 12, 1), + new Among("s", -1, 2), + new Among("as", 14, 1), + new Among("es", 14, 1), + new Among("edes", 16, 1), + new Among("endes", 16, 1), + new Among("enes", 16, 1), + new Among("hetenes", 19, 1), + new Among("ens", 14, 1), + new Among("hetens", 21, 1), + new Among("ers", 14, 1), + new Among("ets", 14, 1), + new Among("et", -1, 1), + new Among("het", 25, 1), + new Among("ert", -1, 3), + new Among("ast", -1, 1) + ]; + + static const a_1 = [ + new Among("dt", -1, -1), + new Among("vt", -1, -1) + ]; + + static const a_2 = [ + new Among("leg", -1, 1), + new Among("eleg", 0, 1), + new Among("ig", -1, 1), + new Among("eig", 2, 1), + new Among("lig", 2, 1), + new Among("elig", 4, 1), + new Among("els", -1, 1), + new Among("lov", -1, 1), + new Among("elov", 7, 1), + new Among("slov", 7, 1), + new Among("hetslov", 9, 1) + ]; + + static const g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128] : int[]; + + static const g_s_ending = [119, 125, 149, 1] : int[]; + + var I_x : int = 0; + var I_p1 : int = 0; + + function copy_from (other : NorwegianStemmer) : void + { + this.I_x = other.I_x; + this.I_p1 = other.I_p1; + super.copy_from(other); + } + + function r_mark_regions () : boolean + { + var v_1 : int; + var v_2 : int; + // (, line 26 + this.I_p1 = this.limit; + // test, line 30 + v_1 = this.cursor; + // (, line 30 + // hop, line 30 + { + var c : int = this.cursor + 3; + if (0 > c || c > this.limit) + { + return false; + } + this.cursor = c; + } + // setmark x, line 30 + this.I_x = this.cursor; + this.cursor = v_1; + // goto, line 31 + golab0: while(true) + { + v_2 = this.cursor; + var lab1 = true; + lab1: while (lab1 == true) + { + lab1 = false; + if (!(this.in_grouping(NorwegianStemmer.g_v, 97, 248))) + { + break lab1; + } + this.cursor = v_2; + break golab0; + } + this.cursor = v_2; + if (this.cursor >= this.limit) + { + return false; + } + this.cursor++; + } + // gopast, line 31 + golab2: while(true) + { + var lab3 = true; + lab3: while (lab3 == true) + { + lab3 = false; + if (!(this.out_grouping(NorwegianStemmer.g_v, 97, 248))) + { + break lab3; + } + break golab2; + } + if (this.cursor >= this.limit) + { + return false; + } + this.cursor++; + } + // setmark p1, line 31 + this.I_p1 = this.cursor; + // try, line 32 + var lab4 = true; + lab4: while (lab4 == true) + { + lab4 = false; + // (, line 32 + if (!(this.I_p1 < this.I_x)) + { + break lab4; + } + this.I_p1 = this.I_x; + } + return true; + } + + function r_main_suffix () : boolean + { + var among_var : int; + var v_1 : int; + var v_2 : int; + var v_3 : int; + // (, line 37 + // setlimit, line 38 + v_1 = this.limit - this.cursor; + // tomark, line 38 + if (this.cursor < this.I_p1) + { + return false; + } + this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = this.cursor; + this.cursor = this.limit - v_1; + // (, line 38 + // [, line 38 + this.ket = this.cursor; + // substring, line 38 + among_var = this.find_among_b(NorwegianStemmer.a_0, 29); + if (among_var == 0) + { + this.limit_backward = v_2; + return false; + } + // ], line 38 + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + // (, line 44 + // delete, line 44 + if (!this.slice_del()) + { + return false; + } + break; + case 2: + // (, line 46 + // or, line 46 + var lab0 = true; + lab0: while (lab0 == true) + { + lab0 = false; + v_3 = this.limit - this.cursor; + var lab1 = true; + lab1: while (lab1 == true) + { + lab1 = false; + if (!(this.in_grouping_b(NorwegianStemmer.g_s_ending, 98, 122))) + { + break lab1; + } + break lab0; + } + this.cursor = this.limit - v_3; + // (, line 46 + // literal, line 46 + if (!(this.eq_s_b(1, "k"))) + { + return false; + } + if (!(this.out_grouping_b(NorwegianStemmer.g_v, 97, 248))) + { + return false; + } + } + // delete, line 46 + if (!this.slice_del()) + { + return false; + } + break; + case 3: + // (, line 48 + // <-, line 48 + if (!this.slice_from("er")) + { + return false; + } + break; + } + return true; + } + + function r_consonant_pair () : boolean + { + var v_1 : int; + var v_2 : int; + var v_3 : int; + // (, line 52 + // test, line 53 + v_1 = this.limit - this.cursor; + // (, line 53 + // setlimit, line 54 + v_2 = this.limit - this.cursor; + // tomark, line 54 + if (this.cursor < this.I_p1) + { + return false; + } + this.cursor = this.I_p1; + v_3 = this.limit_backward; + this.limit_backward = this.cursor; + this.cursor = this.limit - v_2; + // (, line 54 + // [, line 54 + this.ket = this.cursor; + // substring, line 54 + if (this.find_among_b(NorwegianStemmer.a_1, 2) == 0) + { + this.limit_backward = v_3; + return false; + } + // ], line 54 + this.bra = this.cursor; + this.limit_backward = v_3; + this.cursor = this.limit - v_1; + // next, line 59 + if (this.cursor <= this.limit_backward) + { + return false; + } + this.cursor--; + // ], line 59 + this.bra = this.cursor; + // delete, line 59 + if (!this.slice_del()) + { + return false; + } + return true; + } + + function r_other_suffix () : boolean + { + var among_var : int; + var v_1 : int; + var v_2 : int; + // (, line 62 + // setlimit, line 63 + v_1 = this.limit - this.cursor; + // tomark, line 63 + if (this.cursor < this.I_p1) + { + return false; + } + this.cursor = this.I_p1; + v_2 = this.limit_backward; + this.limit_backward = this.cursor; + this.cursor = this.limit - v_1; + // (, line 63 + // [, line 63 + this.ket = this.cursor; + // substring, line 63 + among_var = this.find_among_b(NorwegianStemmer.a_2, 11); + if (among_var == 0) + { + this.limit_backward = v_2; + return false; + } + // ], line 63 + this.bra = this.cursor; + this.limit_backward = v_2; + switch (among_var) { + case 0: + return false; + case 1: + // (, line 67 + // delete, line 67 + if (!this.slice_del()) + { + return false; + } + break; + } + return true; + } + + override function stem () : boolean + { + var v_1 : int; + var v_2 : int; + var v_3 : int; + var v_4 : int; + // (, line 72 + // do, line 74 + v_1 = this.cursor; + var lab0 = true; + lab0: while (lab0 == true) + { + lab0 = false; + // call mark_regions, line 74 + if (!this.r_mark_regions()) + { + break lab0; + } + } + this.cursor = v_1; + // backwards, line 75 + this.limit_backward = this.cursor; this.cursor = this.limit; + // (, line 75 + // do, line 76 + v_2 = this.limit - this.cursor; + var lab1 = true; + lab1: while (lab1 == true) + { + lab1 = false; + // call main_suffix, line 76 + if (!this.r_main_suffix()) + { + break lab1; + } + } + this.cursor = this.limit - v_2; + // do, line 77 + v_3 = this.limit - this.cursor; + var lab2 = true; + lab2: while (lab2 == true) + { + lab2 = false; + // call consonant_pair, line 77 + if (!this.r_consonant_pair()) + { + break lab2; + } + } + this.cursor = this.limit - v_3; + // do, line 78 + v_4 = this.limit - this.cursor; + var lab3 = true; + lab3: while (lab3 == true) + { + lab3 = false; + // call other_suffix, line 78 + if (!this.r_other_suffix()) + { + break lab3; + } + } + this.cursor = this.limit - v_4; + this.cursor = this.limit_backward; return true; + } + + function equals (o : variant) : boolean { + return o instanceof NorwegianStemmer; + } + + function hashCode() : int + { + //http://stackoverflow.com/questions/194846/is-there-any-kind-of-hashcode-function-in-javascript + var classname = "NorwegianStemmer"; + var hash = 0; + if (classname.length == 0) return hash; + for (var i = 0; i < classname.length; i++) { + var char = classname.charCodeAt(i); + hash = ((hash << 5) - hash) + char; + hash = hash & hash; // Convert to 32bit integer + } + return hash; + } + +} + -- cgit v1.2.3