From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001
From: Daniel Baumann <daniel.baumann@progress-linux.org>
Date: Fri, 19 Apr 2024 04:57:58 +0200
Subject: Adding upstream version 1.44.3.

Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
---
 .../misc/oktavia/src/stemmer/english-stemmer.jsx   | 1638 ++++++++++++++++++++
 1 file changed, 1638 insertions(+)
 create mode 100644 web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx

(limited to 'web/server/h2o/libh2o/misc/oktavia/src/stemmer/english-stemmer.jsx')

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;
+    }
+
+}
+
-- 
cgit v1.2.3

