You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by di...@apache.org on 2011/09/15 17:03:02 UTC

[Lucene.Net] svn commit: r1171121 [1/4] - in /incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball: ./ SF/Snowball/Ext/

Author: digy
Date: Thu Sep 15 15:03:01 2011
New Revision: 1171121

URL: http://svn.apache.org/viewvc?rev=1171121&view=rev
Log:
[LUCENENET-444] Portuguese, Hungarian, Romanian, Turkish stemmers

Added:
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/HungarianStemmer.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/RomanianStemmer.cs
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/TurkishStemmer.cs
Modified:
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/Contrib.Snowball.csproj
    incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/PortugueseStemmer.cs

Modified: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/Contrib.Snowball.csproj
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/Contrib.Snowball.csproj?rev=1171121&r1=1171120&r2=1171121&view=diff
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/Contrib.Snowball.csproj (original)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/Contrib.Snowball.csproj Thu Sep 15 15:03:01 2011
@@ -122,6 +122,7 @@
     <Compile Include="SF\Snowball\Ext\GermanStemmer.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="SF\Snowball\Ext\HungarianStemmer.cs" />
     <Compile Include="SF\Snowball\Ext\ItalianStemmer.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -140,6 +141,7 @@
     <Compile Include="SF\Snowball\Ext\PortugueseStemmer.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="SF\Snowball\Ext\RomanianStemmer.cs" />
     <Compile Include="SF\Snowball\Ext\RussianStemmer.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -149,6 +151,7 @@
     <Compile Include="SF\Snowball\Ext\SwedishStemmer.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="SF\Snowball\Ext\TurkishStemmer.cs" />
     <Compile Include="SF\Snowball\SnowballProgram.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -166,12 +169,6 @@
     <Content Include="Xdocs\Stylesheets\Project.xml" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\..\core\Lucene.Net.csproj">
-      <Project>{5D4AD9BE-1FFB-41AB-9943-25737971BF57}</Project>
-      <Name>Lucene.Net</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
     <BootstrapperPackage Include=".NETFramework,Version=v4.0">
       <Visible>False</Visible>
       <ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
@@ -196,6 +193,12 @@
   <ItemGroup>
     <None Include="Lucene.Net.snk" />
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\core\Lucene.Net.csproj">
+      <Project>{5D4AD9BE-1FFB-41AB-9943-25737971BF57}</Project>
+      <Name>Lucene.Net</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PreBuildEvent />

Added: incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/HungarianStemmer.cs
URL: http://svn.apache.org/viewvc/incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/HungarianStemmer.cs?rev=1171121&view=auto
==============================================================================
--- incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/HungarianStemmer.cs (added)
+++ incubator/lucene.net/branches/Lucene.Net_2_9_4g/src/contrib/Snowball/SF/Snowball/Ext/HungarianStemmer.cs Thu Sep 15 15:03:01 2011
@@ -0,0 +1,1217 @@
+/*
+
+Copyright (c) 2001, Dr Martin Porter
+Copyright (c) 2002, Richard Boulton
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    * notice, this list of conditions and the following disclaimer in the
+    * documentation and/or other materials provided with the distribution.
+    * Neither the name of the copyright holders nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ */
+
+
+using System;
+using Among = SF.Snowball.Among;
+using SnowballProgram = SF.Snowball.SnowballProgram;
+namespace SF.Snowball.Ext
+{
+    /**
+	 * Generated class implementing code defined by a snowball script.
+	 */
+    public class HungarianStemmer : SnowballProgram
+    {
+
+        public HungarianStemmer()
+        {
+            a_0 = new Among[] {
+				new Among("cs", -1, -1, "", null),
+				new Among("dzs", -1, -1, "", null),
+				new Among("gy", -1, -1, "", null),
+				new Among("ly", -1, -1, "", null),
+				new Among("ny", -1, -1, "", null),
+				new Among("sz", -1, -1, "", null),
+				new Among("ty", -1, -1, "", null),
+				new Among("zs", -1, -1, "", null)
+			};
+
+            a_1 = new Among[] {
+				new Among("\u00E1", -1, 1, "", null),
+				new Among("\u00E9", -1, 2, "", null)
+			};
+
+            a_2 = new Among[] {
+				new Among("bb", -1, -1, "", null),
+				new Among("cc", -1, -1, "", null),
+				new Among("dd", -1, -1, "", null),
+				new Among("ff", -1, -1, "", null),
+				new Among("gg", -1, -1, "", null),
+				new Among("jj", -1, -1, "", null),
+				new Among("kk", -1, -1, "", null),
+				new Among("ll", -1, -1, "", null),
+				new Among("mm", -1, -1, "", null),
+				new Among("nn", -1, -1, "", null),
+				new Among("pp", -1, -1, "", null),
+				new Among("rr", -1, -1, "", null),
+				new Among("ccs", -1, -1, "", null),
+				new Among("ss", -1, -1, "", null),
+				new Among("zzs", -1, -1, "", null),
+				new Among("tt", -1, -1, "", null),
+				new Among("vv", -1, -1, "", null),
+				new Among("ggy", -1, -1, "", null),
+				new Among("lly", -1, -1, "", null),
+				new Among("nny", -1, -1, "", null),
+				new Among("tty", -1, -1, "", null),
+				new Among("ssz", -1, -1, "", null),
+				new Among("zz", -1, -1, "", null)
+			};
+
+            a_3 = new Among[] {
+				new Among("al", -1, 1, "", null),
+				new Among("el", -1, 2, "", null)
+			};
+
+            a_4 = new Among[] {
+				new Among("ba", -1, -1, "", null),
+				new Among("ra", -1, -1, "", null),
+				new Among("be", -1, -1, "", null),
+				new Among("re", -1, -1, "", null),
+				new Among("ig", -1, -1, "", null),
+				new Among("nak", -1, -1, "", null),
+				new Among("nek", -1, -1, "", null),
+				new Among("val", -1, -1, "", null),
+				new Among("vel", -1, -1, "", null),
+				new Among("ul", -1, -1, "", null),
+				new Among("n\u00E1l", -1, -1, "", null),
+				new Among("n\u00E9l", -1, -1, "", null),
+				new Among("b\u00F3l", -1, -1, "", null),
+				new Among("r\u00F3l", -1, -1, "", null),
+				new Among("t\u00F3l", -1, -1, "", null),
+				new Among("b\u00F5l", -1, -1, "", null),
+				new Among("r\u00F5l", -1, -1, "", null),
+				new Among("t\u00F5l", -1, -1, "", null),
+				new Among("\u00FCl", -1, -1, "", null),
+				new Among("n", -1, -1, "", null),
+				new Among("an", 19, -1, "", null),
+				new Among("ban", 20, -1, "", null),
+				new Among("en", 19, -1, "", null),
+				new Among("ben", 22, -1, "", null),
+				new Among("k\u00E9ppen", 22, -1, "", null),
+				new Among("on", 19, -1, "", null),
+				new Among("\u00F6n", 19, -1, "", null),
+				new Among("k\u00E9pp", -1, -1, "", null),
+				new Among("kor", -1, -1, "", null),
+				new Among("t", -1, -1, "", null),
+				new Among("at", 29, -1, "", null),
+				new Among("et", 29, -1, "", null),
+				new Among("k\u00E9nt", 29, -1, "", null),
+				new Among("ank\u00E9nt", 32, -1, "", null),
+				new Among("enk\u00E9nt", 32, -1, "", null),
+				new Among("onk\u00E9nt", 32, -1, "", null),
+				new Among("ot", 29, -1, "", null),
+				new Among("\u00E9rt", 29, -1, "", null),
+				new Among("\u00F6t", 29, -1, "", null),
+				new Among("hez", -1, -1, "", null),
+				new Among("hoz", -1, -1, "", null),
+				new Among("h\u00F6z", -1, -1, "", null),
+				new Among("v\u00E1", -1, -1, "", null),
+				new Among("v\u00E9", -1, -1, "", null)
+			};
+
+            a_5 = new Among[] {
+				new Among("\u00E1n", -1, 2, "", null),
+				new Among("\u00E9n", -1, 1, "", null),
+				new Among("\u00E1nk\u00E9nt", -1, 3, "", null)
+			};
+
+            a_6 = new Among[] {
+				new Among("stul", -1, 2, "", null),
+				new Among("astul", 0, 1, "", null),
+				new Among("\u00E1stul", 0, 3, "", null),
+				new Among("st\u00FCl", -1, 2, "", null),
+				new Among("est\u00FCl", 3, 1, "", null),
+				new Among("\u00E9st\u00FCl", 3, 4, "", null)
+			};
+
+            a_7 = new Among[] {
+				new Among("\u00E1", -1, 1, "", null),
+				new Among("\u00E9", -1, 2, "", null)
+			};
+
+            a_8 = new Among[] {
+				new Among("k", -1, 7, "", null),
+				new Among("ak", 0, 4, "", null),
+				new Among("ek", 0, 6, "", null),
+				new Among("ok", 0, 5, "", null),
+				new Among("\u00E1k", 0, 1, "", null),
+				new Among("\u00E9k", 0, 2, "", null),
+				new Among("\u00F6k", 0, 3, "", null)
+			};
+
+            a_9 = new Among[] {
+				new Among("\u00E9i", -1, 7, "", null),
+				new Among("\u00E1\u00E9i", 0, 6, "", null),
+				new Among("\u00E9\u00E9i", 0, 5, "", null),
+				new Among("\u00E9", -1, 9, "", null),
+				new Among("k\u00E9", 3, 4, "", null),
+				new Among("ak\u00E9", 4, 1, "", null),
+				new Among("ek\u00E9", 4, 1, "", null),
+				new Among("ok\u00E9", 4, 1, "", null),
+				new Among("\u00E1k\u00E9", 4, 3, "", null),
+				new Among("\u00E9k\u00E9", 4, 2, "", null),
+				new Among("\u00F6k\u00E9", 4, 1, "", null),
+				new Among("\u00E9\u00E9", 3, 8, "", null)
+			};
+
+            a_10 = new Among[] {
+				new Among("a", -1, 18, "", null),
+				new Among("ja", 0, 17, "", null),
+				new Among("d", -1, 16, "", null),
+				new Among("ad", 2, 13, "", null),
+				new Among("ed", 2, 13, "", null),
+				new Among("od", 2, 13, "", null),
+				new Among("\u00E1d", 2, 14, "", null),
+				new Among("\u00E9d", 2, 15, "", null),
+				new Among("\u00F6d", 2, 13, "", null),
+				new Among("e", -1, 18, "", null),
+				new Among("je", 9, 17, "", null),
+				new Among("nk", -1, 4, "", null),
+				new Among("unk", 11, 1, "", null),
+				new Among("\u00E1nk", 11, 2, "", null),
+				new Among("\u00E9nk", 11, 3, "", null),
+				new Among("\u00FCnk", 11, 1, "", null),
+				new Among("uk", -1, 8, "", null),
+				new Among("juk", 16, 7, "", null),
+				new Among("\u00E1juk", 17, 5, "", null),
+				new Among("\u00FCk", -1, 8, "", null),
+				new Among("j\u00FCk", 19, 7, "", null),
+				new Among("\u00E9j\u00FCk", 20, 6, "", null),
+				new Among("m", -1, 12, "", null),
+				new Among("am", 22, 9, "", null),
+				new Among("em", 22, 9, "", null),
+				new Among("om", 22, 9, "", null),
+				new Among("\u00E1m", 22, 10, "", null),
+				new Among("\u00E9m", 22, 11, "", null),
+				new Among("o", -1, 18, "", null),
+				new Among("\u00E1", -1, 19, "", null),
+				new Among("\u00E9", -1, 20, "", null)
+			};
+
+            a_11 = new Among[] {
+				new Among("id", -1, 10, "", null),
+				new Among("aid", 0, 9, "", null),
+				new Among("jaid", 1, 6, "", null),
+				new Among("eid", 0, 9, "", null),
+				new Among("jeid", 3, 6, "", null),
+				new Among("\u00E1id", 0, 7, "", null),
+				new Among("\u00E9id", 0, 8, "", null),
+				new Among("i", -1, 15, "", null),
+				new Among("ai", 7, 14, "", null),
+				new Among("jai", 8, 11, "", null),
+				new Among("ei", 7, 14, "", null),
+				new Among("jei", 10, 11, "", null),
+				new Among("\u00E1i", 7, 12, "", null),
+				new Among("\u00E9i", 7, 13, "", null),
+				new Among("itek", -1, 24, "", null),
+				new Among("eitek", 14, 21, "", null),
+				new Among("jeitek", 15, 20, "", null),
+				new Among("\u00E9itek", 14, 23, "", null),
+				new Among("ik", -1, 29, "", null),
+				new Among("aik", 18, 26, "", null),
+				new Among("jaik", 19, 25, "", null),
+				new Among("eik", 18, 26, "", null),
+				new Among("jeik", 21, 25, "", null),
+				new Among("\u00E1ik", 18, 27, "", null),
+				new Among("\u00E9ik", 18, 28, "", null),
+				new Among("ink", -1, 20, "", null),
+				new Among("aink", 25, 17, "", null),
+				new Among("jaink", 26, 16, "", null),
+				new Among("eink", 25, 17, "", null),
+				new Among("jeink", 28, 16, "", null),
+				new Among("\u00E1ink", 25, 18, "", null),
+				new Among("\u00E9ink", 25, 19, "", null),
+				new Among("aitok", -1, 21, "", null),
+				new Among("jaitok", 32, 20, "", null),
+				new Among("\u00E1itok", -1, 22, "", null),
+				new Among("im", -1, 5, "", null),
+				new Among("aim", 35, 4, "", null),
+				new Among("jaim", 36, 1, "", null),
+				new Among("eim", 35, 4, "", null),
+				new Among("jeim", 38, 1, "", null),
+				new Among("\u00E1im", 35, 2, "", null),
+				new Among("\u00E9im", 35, 3, "", null)
+			};
+
+        }
+
+        private Among[] a_0;
+        private Among[] a_1;
+        private Among[] a_2;
+        private Among[] a_3;
+        private Among[] a_4;
+        private Among[] a_5;
+        private Among[] a_6;
+        private Among[] a_7;
+        private Among[] a_8;
+        private Among[] a_9;
+        private Among[] a_10;
+        private Among[] a_11;
+        private static readonly char[] g_v = new char[] { (char)17, (char)65, (char)16, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)1, (char)17, (char)52, (char)14 };
+
+        private int I_p1;
+
+        private void copy_from(HungarianStemmer other)
+        {
+            I_p1 = other.I_p1;
+            base.copy_from(other);
+        }
+
+        private bool r_mark_regions()
+        {
+            int v_1;
+            int v_2;
+            int v_3;
+            // (, line 44
+            I_p1 = limit;
+            // or, line 51
+            v_1 = cursor;
+            // (, line 48
+            if (!(in_grouping(g_v, 97, 252)))
+            {
+                goto lab1;
+            }
+            // goto, line 48
+            while (true)
+            {
+                v_2 = cursor;
+                if (!(out_grouping(g_v, 97, 252)))
+                {
+                    goto lab3;
+                }
+                cursor = v_2;
+                goto golab2;
+            lab3:
+                cursor = v_2;
+                if (cursor >= limit)
+                {
+                    goto lab1;
+                }
+                cursor++;
+            }
+        golab2:
+            // or, line 49
+            v_3 = cursor;
+            // among, line 49
+            if (find_among(a_0, 8) == 0)
+            {
+                goto lab5;
+            }
+            goto lab4;
+        lab5:
+            cursor = v_3;
+            // next, line 49
+            if (cursor >= limit)
+            {
+                goto lab1;
+            }
+            cursor++;
+        lab4:
+            // setmark p1, line 50
+            I_p1 = cursor;
+            goto lab0;
+        lab1:
+            cursor = v_1;
+            // (, line 53
+            if (!(out_grouping(g_v, 97, 252)))
+            {
+                return false;
+            }
+            // gopast, line 53
+            while (true)
+            {
+                if (!(in_grouping(g_v, 97, 252)))
+                {
+                    goto lab7;
+                }
+                goto golab6;
+            lab7:
+                if (cursor >= limit)
+                {
+                    return false;
+                }
+                cursor++;
+            }
+        golab6:
+            // setmark p1, line 53
+            I_p1 = cursor;
+        lab0:
+            return true;
+        }
+
+        private bool r_R1()
+        {
+            if (!(I_p1 <= cursor))
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private bool r_v_ending()
+        {
+            int among_var;
+            // (, line 60
+            // [, line 61
+            ket = cursor;
+            // substring, line 61
+            among_var = find_among_b(a_1, 2);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 61
+            bra = cursor;
+            // call R1, line 61
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 62
+                    // <-, line 62
+                    slice_from("a");
+                    break;
+                case 2:
+                    // (, line 63
+                    // <-, line 63
+                    slice_from("e");
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_double()
+        {
+            int v_1;
+            // (, line 67
+            // test, line 68
+            v_1 = limit - cursor;
+            // among, line 68
+            if (find_among_b(a_2, 23) == 0)
+            {
+                return false;
+            }
+            cursor = limit - v_1;
+            return true;
+        }
+
+        private bool r_undouble()
+        {
+            // (, line 72
+            // next, line 73
+            if (cursor <= limit_backward)
+            {
+                return false;
+            }
+            cursor--;
+            // [, line 73
+            ket = cursor;
+            // hop, line 73
+            {
+                int c = cursor - 1;
+                if (limit_backward > c || c > limit)
+                {
+                    return false;
+                }
+                cursor = c;
+            }
+            // ], line 73
+            bra = cursor;
+            // delete, line 73
+            slice_del();
+            return true;
+        }
+
+        private bool r_instrum()
+        {
+            int among_var;
+            // (, line 76
+            // [, line 77
+            ket = cursor;
+            // substring, line 77
+            among_var = find_among_b(a_3, 2);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 77
+            bra = cursor;
+            // call R1, line 77
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 78
+                    // call double, line 78
+                    if (!r_double())
+                    {
+                        return false;
+                    }
+                    break;
+                case 2:
+                    // (, line 79
+                    // call double, line 79
+                    if (!r_double())
+                    {
+                        return false;
+                    }
+                    break;
+            }
+            // delete, line 81
+            slice_del();
+            // call undouble, line 82
+            if (!r_undouble())
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private bool r_case()
+        {
+            // (, line 86
+            // [, line 87
+            ket = cursor;
+            // substring, line 87
+            if (find_among_b(a_4, 44) == 0)
+            {
+                return false;
+            }
+            // ], line 87
+            bra = cursor;
+            // call R1, line 87
+            if (!r_R1())
+            {
+                return false;
+            }
+            // delete, line 111
+            slice_del();
+            // call v_ending, line 112
+            if (!r_v_ending())
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private bool r_case_special()
+        {
+            int among_var;
+            // (, line 115
+            // [, line 116
+            ket = cursor;
+            // substring, line 116
+            among_var = find_among_b(a_5, 3);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 116
+            bra = cursor;
+            // call R1, line 116
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 117
+                    // <-, line 117
+                    slice_from("e");
+                    break;
+                case 2:
+                    // (, line 118
+                    // <-, line 118
+                    slice_from("a");
+                    break;
+                case 3:
+                    // (, line 119
+                    // <-, line 119
+                    slice_from("a");
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_case_other()
+        {
+            int among_var;
+            // (, line 123
+            // [, line 124
+            ket = cursor;
+            // substring, line 124
+            among_var = find_among_b(a_6, 6);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 124
+            bra = cursor;
+            // call R1, line 124
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 125
+                    // delete, line 125
+                    slice_del();
+                    break;
+                case 2:
+                    // (, line 126
+                    // delete, line 126
+                    slice_del();
+                    break;
+                case 3:
+                    // (, line 127
+                    // <-, line 127
+                    slice_from("a");
+                    break;
+                case 4:
+                    // (, line 128
+                    // <-, line 128
+                    slice_from("e");
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_factive()
+        {
+            int among_var;
+            // (, line 132
+            // [, line 133
+            ket = cursor;
+            // substring, line 133
+            among_var = find_among_b(a_7, 2);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 133
+            bra = cursor;
+            // call R1, line 133
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 134
+                    // call double, line 134
+                    if (!r_double())
+                    {
+                        return false;
+                    }
+                    break;
+                case 2:
+                    // (, line 135
+                    // call double, line 135
+                    if (!r_double())
+                    {
+                        return false;
+                    }
+                    break;
+            }
+            // delete, line 137
+            slice_del();
+            // call undouble, line 138
+            if (!r_undouble())
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private bool r_plural()
+        {
+            int among_var;
+            // (, line 141
+            // [, line 142
+            ket = cursor;
+            // substring, line 142
+            among_var = find_among_b(a_8, 7);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 142
+            bra = cursor;
+            // call R1, line 142
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 143
+                    // <-, line 143
+                    slice_from("a");
+                    break;
+                case 2:
+                    // (, line 144
+                    // <-, line 144
+                    slice_from("e");
+                    break;
+                case 3:
+                    // (, line 145
+                    // delete, line 145
+                    slice_del();
+                    break;
+                case 4:
+                    // (, line 146
+                    // delete, line 146
+                    slice_del();
+                    break;
+                case 5:
+                    // (, line 147
+                    // delete, line 147
+                    slice_del();
+                    break;
+                case 6:
+                    // (, line 148
+                    // delete, line 148
+                    slice_del();
+                    break;
+                case 7:
+                    // (, line 149
+                    // delete, line 149
+                    slice_del();
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_owned()
+        {
+            int among_var;
+            // (, line 153
+            // [, line 154
+            ket = cursor;
+            // substring, line 154
+            among_var = find_among_b(a_9, 12);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 154
+            bra = cursor;
+            // call R1, line 154
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 155
+                    // delete, line 155
+                    slice_del();
+                    break;
+                case 2:
+                    // (, line 156
+                    // <-, line 156
+                    slice_from("e");
+                    break;
+                case 3:
+                    // (, line 157
+                    // <-, line 157
+                    slice_from("a");
+                    break;
+                case 4:
+                    // (, line 158
+                    // delete, line 158
+                    slice_del();
+                    break;
+                case 5:
+                    // (, line 159
+                    // <-, line 159
+                    slice_from("e");
+                    break;
+                case 6:
+                    // (, line 160
+                    // <-, line 160
+                    slice_from("a");
+                    break;
+                case 7:
+                    // (, line 161
+                    // delete, line 161
+                    slice_del();
+                    break;
+                case 8:
+                    // (, line 162
+                    // <-, line 162
+                    slice_from("e");
+                    break;
+                case 9:
+                    // (, line 163
+                    // delete, line 163
+                    slice_del();
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_sing_owner()
+        {
+            int among_var;
+            // (, line 167
+            // [, line 168
+            ket = cursor;
+            // substring, line 168
+            among_var = find_among_b(a_10, 31);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 168
+            bra = cursor;
+            // call R1, line 168
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 169
+                    // delete, line 169
+                    slice_del();
+                    break;
+                case 2:
+                    // (, line 170
+                    // <-, line 170
+                    slice_from("a");
+                    break;
+                case 3:
+                    // (, line 171
+                    // <-, line 171
+                    slice_from("e");
+                    break;
+                case 4:
+                    // (, line 172
+                    // delete, line 172
+                    slice_del();
+                    break;
+                case 5:
+                    // (, line 173
+                    // <-, line 173
+                    slice_from("a");
+                    break;
+                case 6:
+                    // (, line 174
+                    // <-, line 174
+                    slice_from("e");
+                    break;
+                case 7:
+                    // (, line 175
+                    // delete, line 175
+                    slice_del();
+                    break;
+                case 8:
+                    // (, line 176
+                    // delete, line 176
+                    slice_del();
+                    break;
+                case 9:
+                    // (, line 177
+                    // delete, line 177
+                    slice_del();
+                    break;
+                case 10:
+                    // (, line 178
+                    // <-, line 178
+                    slice_from("a");
+                    break;
+                case 11:
+                    // (, line 179
+                    // <-, line 179
+                    slice_from("e");
+                    break;
+                case 12:
+                    // (, line 180
+                    // delete, line 180
+                    slice_del();
+                    break;
+                case 13:
+                    // (, line 181
+                    // delete, line 181
+                    slice_del();
+                    break;
+                case 14:
+                    // (, line 182
+                    // <-, line 182
+                    slice_from("a");
+                    break;
+                case 15:
+                    // (, line 183
+                    // <-, line 183
+                    slice_from("e");
+                    break;
+                case 16:
+                    // (, line 184
+                    // delete, line 184
+                    slice_del();
+                    break;
+                case 17:
+                    // (, line 185
+                    // delete, line 185
+                    slice_del();
+                    break;
+                case 18:
+                    // (, line 186
+                    // delete, line 186
+                    slice_del();
+                    break;
+                case 19:
+                    // (, line 187
+                    // <-, line 187
+                    slice_from("a");
+                    break;
+                case 20:
+                    // (, line 188
+                    // <-, line 188
+                    slice_from("e");
+                    break;
+            }
+            return true;
+        }
+
+        private bool r_plur_owner()
+        {
+            int among_var;
+            // (, line 192
+            // [, line 193
+            ket = cursor;
+            // substring, line 193
+            among_var = find_among_b(a_11, 42);
+            if (among_var == 0)
+            {
+                return false;
+            }
+            // ], line 193
+            bra = cursor;
+            // call R1, line 193
+            if (!r_R1())
+            {
+                return false;
+            }
+            switch (among_var)
+            {
+                case 0:
+                    return false;
+                case 1:
+                    // (, line 194
+                    // delete, line 194
+                    slice_del();
+                    break;
+                case 2:
+                    // (, line 195
+                    // <-, line 195
+                    slice_from("a");
+                    break;
+                case 3:
+                    // (, line 196
+                    // <-, line 196
+                    slice_from("e");
+                    break;
+                case 4:
+                    // (, line 197
+                    // delete, line 197
+                    slice_del();
+                    break;
+                case 5:
+                    // (, line 198
+                    // delete, line 198
+                    slice_del();
+                    break;
+                case 6:
+                    // (, line 199
+                    // delete, line 199
+                    slice_del();
+                    break;
+                case 7:
+                    // (, line 200
+                    // <-, line 200
+                    slice_from("a");
+                    break;
+                case 8:
+                    // (, line 201
+                    // <-, line 201
+                    slice_from("e");
+                    break;
+                case 9:
+                    // (, line 202
+                    // delete, line 202
+                    slice_del();
+                    break;
+                case 10:
+                    // (, line 203
+                    // delete, line 203
+                    slice_del();
+                    break;
+                case 11:
+                    // (, line 204
+                    // delete, line 204
+                    slice_del();
+                    break;
+                case 12:
+                    // (, line 205
+                    // <-, line 205
+                    slice_from("a");
+                    break;
+                case 13:
+                    // (, line 206
+                    // <-, line 206
+                    slice_from("e");
+                    break;
+                case 14:
+                    // (, line 207
+                    // delete, line 207
+                    slice_del();
+                    break;
+                case 15:
+                    // (, line 208
+                    // delete, line 208
+                    slice_del();
+                    break;
+                case 16:
+                    // (, line 209
+                    // delete, line 209
+                    slice_del();
+                    break;
+                case 17:
+                    // (, line 210
+                    // delete, line 210
+                    slice_del();
+                    break;
+                case 18:
+                    // (, line 211
+                    // <-, line 211
+                    slice_from("a");
+                    break;
+                case 19:
+                    // (, line 212
+                    // <-, line 212
+                    slice_from("e");
+                    break;
+                case 20:
+                    // (, line 214
+                    // delete, line 214
+                    slice_del();
+                    break;
+                case 21:
+                    // (, line 215
+                    // delete, line 215
+                    slice_del();
+                    break;
+                case 22:
+                    // (, line 216
+                    // <-, line 216
+                    slice_from("a");
+                    break;
+                case 23:
+                    // (, line 217
+                    // <-, line 217
+                    slice_from("e");
+                    break;
+                case 24:
+                    // (, line 218
+                    // delete, line 218
+                    slice_del();
+                    break;
+                case 25:
+                    // (, line 219
+                    // delete, line 219
+                    slice_del();
+                    break;
+                case 26:
+                    // (, line 220
+                    // delete, line 220
+                    slice_del();
+                    break;
+                case 27:
+                    // (, line 221
+                    // <-, line 221
+                    slice_from("a");
+                    break;
+                case 28:
+                    // (, line 222
+                    // <-, line 222
+                    slice_from("e");
+                    break;
+                case 29:
+                    // (, line 223
+                    // delete, line 223
+                    slice_del();
+                    break;
+            }
+            return true;
+        }
+
+        public bool Stem()
+        {
+            int v_1;
+            int v_2;
+            int v_3;
+            int v_4;
+            int v_5;
+            int v_6;
+            int v_7;
+            int v_8;
+            int v_9;
+            int v_10;
+            // (, line 228
+            // do, line 229
+            v_1 = cursor;
+            // call mark_regions, line 229
+            if (!r_mark_regions())
+            {
+                goto lab0;
+            }
+        lab0:
+            cursor = v_1;
+            // backwards, line 230
+            limit_backward = cursor; cursor = limit;
+            // (, line 230
+            // do, line 231
+            v_2 = limit - cursor;
+            // call instrum, line 231
+            if (!r_instrum())
+            {
+                goto lab1;
+            }
+        lab1:
+            cursor = limit - v_2;
+            // do, line 232
+            v_3 = limit - cursor;
+            // call case, line 232
+            if (!r_case())
+            {
+                goto lab2;
+            }
+        lab2:
+            cursor = limit - v_3;
+            // do, line 233
+            v_4 = limit - cursor;
+            // call case_special, line 233
+            if (!r_case_special())
+            {
+                goto lab3;
+            }
+        lab3:
+            cursor = limit - v_4;
+            // do, line 234
+            v_5 = limit - cursor;
+            // call case_other, line 234
+            if (!r_case_other())
+            {
+                goto lab4;
+            }
+        lab4:
+            cursor = limit - v_5;
+            // do, line 235
+            v_6 = limit - cursor;
+            // call factive, line 235
+            if (!r_factive())
+            {
+                goto lab5;
+            }
+        lab5:
+            cursor = limit - v_6;
+            // do, line 236
+            v_7 = limit - cursor;
+            // call owned, line 236
+            if (!r_owned())
+            {
+                goto lab6;
+            }
+        lab6:
+            cursor = limit - v_7;
+            // do, line 237
+            v_8 = limit - cursor;
+            // call sing_owner, line 237
+            if (!r_sing_owner())
+            {
+                goto lab7;
+            }
+        lab7:
+            cursor = limit - v_8;
+            // do, line 238
+            v_9 = limit - cursor;
+            // call plur_owner, line 238
+            if (!r_plur_owner())
+            {
+                goto lab8;
+            }
+        lab8:
+            cursor = limit - v_9;
+            // do, line 239
+            v_10 = limit - cursor;
+            // call plural, line 239
+            if (!r_plural())
+            {
+                goto lab9;
+            }
+        lab9:
+            cursor = limit - v_10;
+            cursor = limit_backward;
+            return true;
+        }
+    }
+}