summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx1638
1 files changed, 1638 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx b/web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx
new file mode 100644
index 00000000..901c12c8
--- /dev/null
+++ b/web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx
@@ -0,0 +1,1638 @@
+// 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 EnglishStemmer extends BaseStemmer
+{
+ static const serialVersionUID = 1;
+ static const methodObject = new EnglishStemmer();
+
+ static const a_0 = [
+ new Among("arsen", -1, -1),
+ new Among("commun", -1, -1),
+ new Among("gener", -1, -1)
+ ];
+
+ static const a_1 = [
+ new Among("'", -1, 1),
+ new Among("'s'", 0, 1),
+ new Among("'s", -1, 1)
+ ];
+
+ static const a_2 = [
+ new Among("ied", -1, 2),
+ new Among("s", -1, 3),
+ new Among("ies", 1, 2),
+ new Among("sses", 1, 1),
+ new Among("ss", 1, -1),
+ new Among("us", 1, -1)
+ ];
+
+ static const a_3 = [
+ new Among("", -1, 3),
+ new Among("bb", 0, 2),
+ new Among("dd", 0, 2),
+ new Among("ff", 0, 2),
+ new Among("gg", 0, 2),
+ new Among("bl", 0, 1),
+ new Among("mm", 0, 2),
+ new Among("nn", 0, 2),
+ new Among("pp", 0, 2),
+ new Among("rr", 0, 2),
+ new Among("at", 0, 1),
+ new Among("tt", 0, 2),
+ new Among("iz", 0, 1)
+ ];
+
+ static const a_4 = [
+ new Among("ed", -1, 2),
+ new Among("eed", 0, 1),
+ new Among("ing", -1, 2),
+ new Among("edly", -1, 2),
+ new Among("eedly", 3, 1),
+ new Among("ingly", -1, 2)
+ ];
+
+ static const a_5 = [
+ new Among("anci", -1, 3),
+ new Among("enci", -1, 2),
+ new Among("ogi", -1, 13),
+ new Among("li", -1, 16),
+ new Among("bli", 3, 12),
+ new Among("abli", 4, 4),
+ new Among("alli", 3, 8),
+ new Among("fulli", 3, 14),
+ new Among("lessli", 3, 15),
+ new Among("ousli", 3, 10),
+ new Among("entli", 3, 5),
+ new Among("aliti", -1, 8),
+ new Among("biliti", -1, 12),
+ new Among("iviti", -1, 11),
+ new Among("tional", -1, 1),
+ new Among("ational", 14, 7),
+ new Among("alism", -1, 8),
+ new Among("ation", -1, 7),
+ new Among("ization", 17, 6),
+ new Among("izer", -1, 6),
+ new Among("ator", -1, 7),
+ new Among("iveness", -1, 11),
+ new Among("fulness", -1, 9),
+ new Among("ousness", -1, 10)
+ ];
+
+ static const a_6 = [
+ new Among("icate", -1, 4),
+ new Among("ative", -1, 6),
+ new Among("alize", -1, 3),
+ new Among("iciti", -1, 4),
+ new Among("ical", -1, 4),
+ new Among("tional", -1, 1),
+ new Among("ational", 5, 2),
+ new Among("ful", -1, 5),
+ new Among("ness", -1, 5)
+ ];
+
+ static const a_7 = [
+ new Among("ic", -1, 1),
+ new Among("ance", -1, 1),
+ new Among("ence", -1, 1),
+ new Among("able", -1, 1),
+ new Among("ible", -1, 1),
+ new Among("ate", -1, 1),
+ new Among("ive", -1, 1),
+ new Among("ize", -1, 1),
+ new Among("iti", -1, 1),
+ new Among("al", -1, 1),
+ new Among("ism", -1, 1),
+ new Among("ion", -1, 2),
+ new Among("er", -1, 1),
+ new Among("ous", -1, 1),
+ new Among("ant", -1, 1),
+ new Among("ent", -1, 1),
+ new Among("ment", 15, 1),
+ new Among("ement", 16, 1)
+ ];
+
+ static const a_8 = [
+ new Among("e", -1, 1),
+ new Among("l", -1, 2)
+ ];
+
+ static const a_9 = [
+ new Among("succeed", -1, -1),
+ new Among("proceed", -1, -1),
+ new Among("exceed", -1, -1),
+ new Among("canning", -1, -1),
+ new Among("inning", -1, -1),
+ new Among("earring", -1, -1),
+ new Among("herring", -1, -1),
+ new Among("outing", -1, -1)
+ ];
+
+ static const a_10 = [
+ new Among("andes", -1, -1),
+ new Among("atlas", -1, -1),
+ new Among("bias", -1, -1),
+ new Among("cosmos", -1, -1),
+ new Among("dying", -1, 3),
+ new Among("early", -1, 9),
+ new Among("gently", -1, 7),
+ new Among("howe", -1, -1),
+ new Among("idly", -1, 6),
+ new Among("lying", -1, 4),
+ new Among("news", -1, -1),
+ new Among("only", -1, 10),
+ new Among("singly", -1, 11),
+ new Among("skies", -1, 2),
+ new Among("skis", -1, 1),
+ new Among("sky", -1, -1),
+ new Among("tying", -1, 5),
+ new Among("ugly", -1, 8)
+ ];
+
+ static const g_v = [17, 65, 16, 1] : int[];
+
+ static const g_v_WXY = [1, 17, 65, 208, 1] : int[];
+
+ static const g_valid_LI = [55, 141, 2] : int[];
+
+ var B_Y_found : boolean = false;
+ var I_p2 : int = 0;
+ var I_p1 : int = 0;
+
+ function copy_from (other : EnglishStemmer) : void
+ {
+ this.B_Y_found = other.B_Y_found;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ super.copy_from(other);
+ }
+
+ function r_prelude () : boolean
+ {
+ var v_1 : int;
+ var v_2 : int;
+ var v_3 : int;
+ var v_4 : int;
+ var v_5 : int;
+ // (, line 25
+ // unset Y_found, line 26
+ this.B_Y_found = false;
+ // do, line 27
+ v_1 = this.cursor;
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ // (, line 27
+ // [, line 27
+ this.bra = this.cursor;
+ // literal, line 27
+ if (!(this.eq_s(1, "'")))
+ {
+ break lab0;
+ }
+ // ], line 27
+ this.ket = this.cursor;
+ // delete, line 27
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ }
+ this.cursor = v_1;
+ // do, line 28
+ v_2 = this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // (, line 28
+ // [, line 28
+ this.bra = this.cursor;
+ // literal, line 28
+ if (!(this.eq_s(1, "y")))
+ {
+ break lab1;
+ }
+ // ], line 28
+ this.ket = this.cursor;
+ // <-, line 28
+ if (!this.slice_from("Y"))
+ {
+ return false;
+ }
+ // set Y_found, line 28
+ this.B_Y_found = true;
+ }
+ this.cursor = v_2;
+ // do, line 29
+ v_3 = this.cursor;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // repeat, line 29
+ replab3: while(true)
+ {
+ v_4 = this.cursor;
+ var lab4 = true;
+ lab4: while (lab4 == true)
+ {
+ lab4 = false;
+ // (, line 29
+ // goto, line 29
+ golab5: while(true)
+ {
+ v_5 = this.cursor;
+ var lab6 = true;
+ lab6: while (lab6 == true)
+ {
+ lab6 = false;
+ // (, line 29
+ if (!(this.in_grouping(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab6;
+ }
+ // [, line 29
+ this.bra = this.cursor;
+ // literal, line 29
+ if (!(this.eq_s(1, "y")))
+ {
+ break lab6;
+ }
+ // ], line 29
+ this.ket = this.cursor;
+ this.cursor = v_5;
+ break golab5;
+ }
+ this.cursor = v_5;
+ if (this.cursor >= this.limit)
+ {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ // <-, line 29
+ if (!this.slice_from("Y"))
+ {
+ return false;
+ }
+ // set Y_found, line 29
+ this.B_Y_found = true;
+ continue replab3;
+ }
+ this.cursor = v_4;
+ break replab3;
+ }
+ }
+ this.cursor = v_3;
+ return true;
+ }
+
+ function r_mark_regions () : boolean
+ {
+ var v_1 : int;
+ var v_2 : int;
+ // (, line 32
+ this.I_p1 = this.limit;
+ this.I_p2 = this.limit;
+ // do, line 35
+ v_1 = this.cursor;
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ // (, line 35
+ // or, line 41
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ v_2 = this.cursor;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // among, line 36
+ if (this.find_among(EnglishStemmer.a_0, 3) == 0)
+ {
+ break lab2;
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ // (, line 41
+ // gopast, line 41
+ golab3: while(true)
+ {
+ var lab4 = true;
+ lab4: while (lab4 == true)
+ {
+ lab4 = false;
+ if (!(this.in_grouping(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab4;
+ }
+ break golab3;
+ }
+ if (this.cursor >= this.limit)
+ {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ // gopast, line 41
+ golab5: while(true)
+ {
+ var lab6 = true;
+ lab6: while (lab6 == true)
+ {
+ lab6 = false;
+ if (!(this.out_grouping(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit)
+ {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ // setmark p1, line 42
+ this.I_p1 = this.cursor;
+ // gopast, line 43
+ golab7: while(true)
+ {
+ var lab8 = true;
+ lab8: while (lab8 == true)
+ {
+ lab8 = false;
+ if (!(this.in_grouping(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit)
+ {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ // gopast, line 43
+ golab9: while(true)
+ {
+ var lab10 = true;
+ lab10: while (lab10 == true)
+ {
+ lab10 = false;
+ if (!(this.out_grouping(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab10;
+ }
+ break golab9;
+ }
+ if (this.cursor >= this.limit)
+ {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ // setmark p2, line 43
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_1;
+ return true;
+ }
+
+ function r_shortv () : boolean
+ {
+ var v_1 : int;
+ // (, line 49
+ // or, line 51
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // (, line 50
+ if (!(this.out_grouping_b(EnglishStemmer.g_v_WXY, 89, 121)))
+ {
+ break lab1;
+ }
+ if (!(this.in_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ if (!(this.out_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ // (, line 52
+ if (!(this.out_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ return false;
+ }
+ if (!(this.in_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ return false;
+ }
+ // atlimit, line 52
+ if (this.cursor > this.limit_backward)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ function r_R1 () : boolean
+ {
+ if (!(this.I_p1 <= this.cursor))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ function r_R2 () : boolean
+ {
+ if (!(this.I_p2 <= this.cursor))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ function r_Step_1a () : boolean
+ {
+ var among_var : int;
+ var v_1 : int;
+ var v_2 : int;
+ // (, line 58
+ // try, line 59
+ v_1 = this.limit - this.cursor;
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ // (, line 59
+ // [, line 60
+ this.ket = this.cursor;
+ // substring, line 60
+ among_var = this.find_among_b(EnglishStemmer.a_1, 3);
+ if (among_var == 0)
+ {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ // ], line 60
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_1;
+ break lab0;
+ case 1:
+ // (, line 62
+ // delete, line 62
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ }
+ // [, line 65
+ this.ket = this.cursor;
+ // substring, line 65
+ among_var = this.find_among_b(EnglishStemmer.a_2, 6);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 65
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 66
+ // <-, line 66
+ if (!this.slice_from("ss"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 68
+ // or, line 68
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // (, line 68
+ // hop, line 68
+ {
+ var c : int = this.cursor - 2;
+ if (this.limit_backward > c || c > this.limit)
+ {
+ break lab2;
+ }
+ this.cursor = c;
+ }
+ // <-, line 68
+ if (!this.slice_from("i"))
+ {
+ return false;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ // <-, line 68
+ if (!this.slice_from("ie"))
+ {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ // (, line 69
+ // next, line 69
+ if (this.cursor <= this.limit_backward)
+ {
+ return false;
+ }
+ this.cursor--;
+ // gopast, line 69
+ golab3: while(true)
+ {
+ var lab4 = true;
+ lab4: while (lab4 == true)
+ {
+ lab4 = false;
+ if (!(this.in_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab4;
+ }
+ break golab3;
+ }
+ if (this.cursor <= this.limit_backward)
+ {
+ return false;
+ }
+ this.cursor--;
+ }
+ // delete, line 69
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_Step_1b () : boolean
+ {
+ var among_var : int;
+ var v_1 : int;
+ var v_3 : int;
+ var v_4 : int;
+ // (, line 74
+ // [, line 75
+ this.ket = this.cursor;
+ // substring, line 75
+ among_var = this.find_among_b(EnglishStemmer.a_4, 6);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 75
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 77
+ // call R1, line 77
+ if (!this.r_R1())
+ {
+ return false;
+ }
+ // <-, line 77
+ if (!this.slice_from("ee"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 79
+ // test, line 80
+ v_1 = this.limit - this.cursor;
+ // gopast, line 80
+ golab0: while(true)
+ {
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ if (!(this.in_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ break golab0;
+ }
+ if (this.cursor <= this.limit_backward)
+ {
+ return false;
+ }
+ this.cursor--;
+ }
+ this.cursor = this.limit - v_1;
+ // delete, line 80
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ // test, line 81
+ v_3 = this.limit - this.cursor;
+ // substring, line 81
+ among_var = this.find_among_b(EnglishStemmer.a_3, 13);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 83
+ // <+, line 83
+ {
+ var c : int = this.cursor;
+ this.insert(this.cursor, this.cursor, "e");
+ this.cursor = c;
+ }
+ break;
+ case 2:
+ // (, line 86
+ // [, line 86
+ this.ket = this.cursor;
+ // next, line 86
+ if (this.cursor <= this.limit_backward)
+ {
+ return false;
+ }
+ this.cursor--;
+ // ], line 86
+ this.bra = this.cursor;
+ // delete, line 86
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 3:
+ // (, line 87
+ // atmark, line 87
+ if (this.cursor != this.I_p1)
+ {
+ return false;
+ }
+ // test, line 87
+ v_4 = this.limit - this.cursor;
+ // call shortv, line 87
+ if (!this.r_shortv())
+ {
+ return false;
+ }
+ this.cursor = this.limit - v_4;
+ // <+, line 87
+ {
+ var c : int = this.cursor;
+ this.insert(this.cursor, this.cursor, "e");
+ this.cursor = c;
+ }
+ break;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_Step_1c () : boolean
+ {
+ var v_1 : int;
+ var v_2 : int;
+ // (, line 93
+ // [, line 94
+ this.ket = this.cursor;
+ // or, line 94
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // literal, line 94
+ if (!(this.eq_s_b(1, "y")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ // literal, line 94
+ if (!(this.eq_s_b(1, "Y")))
+ {
+ return false;
+ }
+ }
+ // ], line 94
+ this.bra = this.cursor;
+ if (!(this.out_grouping_b(EnglishStemmer.g_v, 97, 121)))
+ {
+ return false;
+ }
+ // not, line 95
+ {
+ v_2 = this.limit - this.cursor;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // atlimit, line 95
+ if (this.cursor > this.limit_backward)
+ {
+ break lab2;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ }
+ // <-, line 96
+ if (!this.slice_from("i"))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ function r_Step_2 () : boolean
+ {
+ var among_var : int;
+ // (, line 99
+ // [, line 100
+ this.ket = this.cursor;
+ // substring, line 100
+ among_var = this.find_among_b(EnglishStemmer.a_5, 24);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 100
+ this.bra = this.cursor;
+ // call R1, line 100
+ if (!this.r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 101
+ // <-, line 101
+ if (!this.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 102
+ // <-, line 102
+ if (!this.slice_from("ence"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ // (, line 103
+ // <-, line 103
+ if (!this.slice_from("ance"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ // (, line 104
+ // <-, line 104
+ if (!this.slice_from("able"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ // (, line 105
+ // <-, line 105
+ if (!this.slice_from("ent"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ // (, line 107
+ // <-, line 107
+ if (!this.slice_from("ize"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ // (, line 109
+ // <-, line 109
+ if (!this.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 8:
+ // (, line 111
+ // <-, line 111
+ if (!this.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 9:
+ // (, line 112
+ // <-, line 112
+ if (!this.slice_from("ful"))
+ {
+ return false;
+ }
+ break;
+ case 10:
+ // (, line 114
+ // <-, line 114
+ if (!this.slice_from("ous"))
+ {
+ return false;
+ }
+ break;
+ case 11:
+ // (, line 116
+ // <-, line 116
+ if (!this.slice_from("ive"))
+ {
+ return false;
+ }
+ break;
+ case 12:
+ // (, line 118
+ // <-, line 118
+ if (!this.slice_from("ble"))
+ {
+ return false;
+ }
+ break;
+ case 13:
+ // (, line 119
+ // literal, line 119
+ if (!(this.eq_s_b(1, "l")))
+ {
+ return false;
+ }
+ // <-, line 119
+ if (!this.slice_from("og"))
+ {
+ return false;
+ }
+ break;
+ case 14:
+ // (, line 120
+ // <-, line 120
+ if (!this.slice_from("ful"))
+ {
+ return false;
+ }
+ break;
+ case 15:
+ // (, line 121
+ // <-, line 121
+ if (!this.slice_from("less"))
+ {
+ return false;
+ }
+ break;
+ case 16:
+ // (, line 122
+ if (!(this.in_grouping_b(EnglishStemmer.g_valid_LI, 99, 116)))
+ {
+ return false;
+ }
+ // delete, line 122
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_Step_3 () : boolean
+ {
+ var among_var : int;
+ // (, line 126
+ // [, line 127
+ this.ket = this.cursor;
+ // substring, line 127
+ among_var = this.find_among_b(EnglishStemmer.a_6, 9);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 127
+ this.bra = this.cursor;
+ // call R1, line 127
+ if (!this.r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 128
+ // <-, line 128
+ if (!this.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 129
+ // <-, line 129
+ if (!this.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ // (, line 130
+ // <-, line 130
+ if (!this.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ // (, line 132
+ // <-, line 132
+ if (!this.slice_from("ic"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ // (, line 134
+ // delete, line 134
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 6:
+ // (, line 136
+ // call R2, line 136
+ if (!this.r_R2())
+ {
+ return false;
+ }
+ // delete, line 136
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_Step_4 () : boolean
+ {
+ var among_var : int;
+ var v_1 : int;
+ // (, line 140
+ // [, line 141
+ this.ket = this.cursor;
+ // substring, line 141
+ among_var = this.find_among_b(EnglishStemmer.a_7, 18);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 141
+ this.bra = this.cursor;
+ // call R2, line 141
+ if (!this.r_R2())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 144
+ // delete, line 144
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 145
+ // or, line 145
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // literal, line 145
+ if (!(this.eq_s_b(1, "s")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ // literal, line 145
+ if (!(this.eq_s_b(1, "t")))
+ {
+ return false;
+ }
+ }
+ // delete, line 145
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_Step_5 () : boolean
+ {
+ var among_var : int;
+ var v_1 : int;
+ var v_2 : int;
+ // (, line 149
+ // [, line 150
+ this.ket = this.cursor;
+ // substring, line 150
+ among_var = this.find_among_b(EnglishStemmer.a_8, 2);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 150
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 151
+ // or, line 151
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // call R2, line 151
+ if (!this.r_R2())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ // (, line 151
+ // call R1, line 151
+ if (!this.r_R1())
+ {
+ return false;
+ }
+ // not, line 151
+ {
+ v_2 = this.limit - this.cursor;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // call shortv, line 151
+ if (!this.r_shortv())
+ {
+ break lab2;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ }
+ }
+ // delete, line 151
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 152
+ // call R2, line 152
+ if (!this.r_R2())
+ {
+ return false;
+ }
+ // literal, line 152
+ if (!(this.eq_s_b(1, "l")))
+ {
+ return false;
+ }
+ // delete, line 152
+ if (!this.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_exception2 () : boolean
+ {
+ // (, line 156
+ // [, line 158
+ this.ket = this.cursor;
+ // substring, line 158
+ if (this.find_among_b(EnglishStemmer.a_9, 8) == 0)
+ {
+ return false;
+ }
+ // ], line 158
+ this.bra = this.cursor;
+ // atlimit, line 158
+ if (this.cursor > this.limit_backward)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ function r_exception1 () : boolean
+ {
+ var among_var : int;
+ // (, line 168
+ // [, line 170
+ this.bra = this.cursor;
+ // substring, line 170
+ among_var = this.find_among(EnglishStemmer.a_10, 18);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ // ], line 170
+ this.ket = this.cursor;
+ // atlimit, line 170
+ if (this.cursor < this.limit)
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ // (, line 174
+ // <-, line 174
+ if (!this.slice_from("ski"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ // (, line 175
+ // <-, line 175
+ if (!this.slice_from("sky"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ // (, line 176
+ // <-, line 176
+ if (!this.slice_from("die"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ // (, line 177
+ // <-, line 177
+ if (!this.slice_from("lie"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ // (, line 178
+ // <-, line 178
+ if (!this.slice_from("tie"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ // (, line 182
+ // <-, line 182
+ if (!this.slice_from("idl"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ // (, line 183
+ // <-, line 183
+ if (!this.slice_from("gentl"))
+ {
+ return false;
+ }
+ break;
+ case 8:
+ // (, line 184
+ // <-, line 184
+ if (!this.slice_from("ugli"))
+ {
+ return false;
+ }
+ break;
+ case 9:
+ // (, line 185
+ // <-, line 185
+ if (!this.slice_from("earli"))
+ {
+ return false;
+ }
+ break;
+ case 10:
+ // (, line 186
+ // <-, line 186
+ if (!this.slice_from("onli"))
+ {
+ return false;
+ }
+ break;
+ case 11:
+ // (, line 187
+ // <-, line 187
+ if (!this.slice_from("singl"))
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ }
+
+ function r_postlude () : boolean
+ {
+ var v_1 : int;
+ var v_2 : int;
+ // (, line 203
+ // Boolean test Y_found, line 203
+ if (!(this.B_Y_found))
+ {
+ return false;
+ }
+ // repeat, line 203
+ replab0: while(true)
+ {
+ v_1 = this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // (, line 203
+ // goto, line 203
+ golab2: while(true)
+ {
+ v_2 = this.cursor;
+ var lab3 = true;
+ lab3: while (lab3 == true)
+ {
+ lab3 = false;
+ // (, line 203
+ // [, line 203
+ this.bra = this.cursor;
+ // literal, line 203
+ if (!(this.eq_s(1, "Y")))
+ {
+ break lab3;
+ }
+ // ], line 203
+ this.ket = this.cursor;
+ this.cursor = v_2;
+ break golab2;
+ }
+ this.cursor = v_2;
+ if (this.cursor >= this.limit)
+ {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ // <-, line 203
+ if (!this.slice_from("y"))
+ {
+ return false;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+ }
+
+ override function stem () : boolean
+ {
+ var v_1 : int;
+ var v_2 : int;
+ var v_3 : int;
+ var v_4 : int;
+ var v_5 : int;
+ var v_6 : int;
+ var v_7 : int;
+ var v_8 : int;
+ var v_9 : int;
+ var v_10 : int;
+ var v_11 : int;
+ var v_12 : int;
+ var v_13 : int;
+ // (, line 205
+ // or, line 207
+ var lab0 = true;
+ lab0: while (lab0 == true)
+ {
+ lab0 = false;
+ v_1 = this.cursor;
+ var lab1 = true;
+ lab1: while (lab1 == true)
+ {
+ lab1 = false;
+ // call exception1, line 207
+ if (!this.r_exception1())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = v_1;
+ var lab2 = true;
+ lab2: while (lab2 == true)
+ {
+ lab2 = false;
+ // not, line 208
+ {
+ v_2 = this.cursor;
+ var lab3 = true;
+ lab3: while (lab3 == true)
+ {
+ lab3 = false;
+ // hop, line 208
+ {
+ var c : int = this.cursor + 3;
+ if (0 > c || c > this.limit)
+ {
+ break lab3;
+ }
+ this.cursor = c;
+ }
+ break lab2;
+ }
+ this.cursor = v_2;
+ }
+ break lab0;
+ }
+ this.cursor = v_1;
+ // (, line 208
+ // do, line 209
+ v_3 = this.cursor;
+ var lab4 = true;
+ lab4: while (lab4 == true)
+ {
+ lab4 = false;
+ // call prelude, line 209
+ if (!this.r_prelude())
+ {
+ break lab4;
+ }
+ }
+ this.cursor = v_3;
+ // do, line 210
+ v_4 = this.cursor;
+ var lab5 = true;
+ lab5: while (lab5 == true)
+ {
+ lab5 = false;
+ // call mark_regions, line 210
+ if (!this.r_mark_regions())
+ {
+ break lab5;
+ }
+ }
+ this.cursor = v_4;
+ // backwards, line 211
+ this.limit_backward = this.cursor; this.cursor = this.limit;
+ // (, line 211
+ // do, line 213
+ v_5 = this.limit - this.cursor;
+ var lab6 = true;
+ lab6: while (lab6 == true)
+ {
+ lab6 = false;
+ // call Step_1a, line 213
+ if (!this.r_Step_1a())
+ {
+ break lab6;
+ }
+ }
+ this.cursor = this.limit - v_5;
+ // or, line 215
+ var lab7 = true;
+ lab7: while (lab7 == true)
+ {
+ lab7 = false;
+ v_6 = this.limit - this.cursor;
+ var lab8 = true;
+ lab8: while (lab8 == true)
+ {
+ lab8 = false;
+ // call exception2, line 215
+ if (!this.r_exception2())
+ {
+ break lab8;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_6;
+ // (, line 215
+ // do, line 217
+ v_7 = this.limit - this.cursor;
+ var lab9 = true;
+ lab9: while (lab9 == true)
+ {
+ lab9 = false;
+ // call Step_1b, line 217
+ if (!this.r_Step_1b())
+ {
+ break lab9;
+ }
+ }
+ this.cursor = this.limit - v_7;
+ // do, line 218
+ v_8 = this.limit - this.cursor;
+ var lab10 = true;
+ lab10: while (lab10 == true)
+ {
+ lab10 = false;
+ // call Step_1c, line 218
+ if (!this.r_Step_1c())
+ {
+ break lab10;
+ }
+ }
+ this.cursor = this.limit - v_8;
+ // do, line 220
+ v_9 = this.limit - this.cursor;
+ var lab11 = true;
+ lab11: while (lab11 == true)
+ {
+ lab11 = false;
+ // call Step_2, line 220
+ if (!this.r_Step_2())
+ {
+ break lab11;
+ }
+ }
+ this.cursor = this.limit - v_9;
+ // do, line 221
+ v_10 = this.limit - this.cursor;
+ var lab12 = true;
+ lab12: while (lab12 == true)
+ {
+ lab12 = false;
+ // call Step_3, line 221
+ if (!this.r_Step_3())
+ {
+ break lab12;
+ }
+ }
+ this.cursor = this.limit - v_10;
+ // do, line 222
+ v_11 = this.limit - this.cursor;
+ var lab13 = true;
+ lab13: while (lab13 == true)
+ {
+ lab13 = false;
+ // call Step_4, line 222
+ if (!this.r_Step_4())
+ {
+ break lab13;
+ }
+ }
+ this.cursor = this.limit - v_11;
+ // do, line 224
+ v_12 = this.limit - this.cursor;
+ var lab14 = true;
+ lab14: while (lab14 == true)
+ {
+ lab14 = false;
+ // call Step_5, line 224
+ if (!this.r_Step_5())
+ {
+ break lab14;
+ }
+ }
+ this.cursor = this.limit - v_12;
+ }
+ this.cursor = this.limit_backward; // do, line 227
+ v_13 = this.cursor;
+ var lab15 = true;
+ lab15: while (lab15 == true)
+ {
+ lab15 = false;
+ // call postlude, line 227
+ if (!this.r_postlude())
+ {
+ break lab15;
+ }
+ }
+ this.cursor = v_13;
+ }
+ return true;
+ }
+
+ function equals (o : variant) : boolean {
+ return o instanceof EnglishStemmer;
+ }
+
+ function hashCode() : int
+ {
+ //http://stackoverflow.com/questions/194846/is-there-any-kind-of-hashcode-function-in-javascript
+ var classname = "EnglishStemmer";
+ 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;
+ }
+
+}
+