Update to latest Snowball sources.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 5 Jan 2026 20:22:12 +0000 (15:22 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 5 Jan 2026 20:22:37 +0000 (15:22 -0500)
It's been almost a year since we last did this, and upstream has
been busy.  They've added stemmers for Polish and Esperanto,
and also deprecated their old Dutch stemmer in favor of the
Kraaij-Pohlmann algorithm.  (The "dutch" stemmer is now the
latter, and "dutch_porter" is the old algorithm.)

Upstream also decided to rename their internal header "header.h"
to something less generic: "snowball_runtime.h".  Seems like a good
thing, but it complicates this patch a bit because we were relying on
interposing our own version of "header.h" to control system header
inclusion order.  (We're partially failing at that now, because now the
generated stemmer files include <stddef.h> before snowball_runtime.h.
I think that'll be okay, but if the buildfarm complains then we'll
have to do more-extensive editing of the generated files.)

I realized that we weren't documenting the available stemmers in
any user-visible place, except indirectly through sample \dFd output.
That's incomplete because we only provide built-in dictionaries for
the recommended stemmers for each language, not alternative stemmers
such as dutch_porter.  So I added a list to the documentation.

I did not do anything with the stopword lists.  If those are still
available from snowballstem.org, they are mighty well hidden.

Discussion: https://postgr.es/m/1185975.1767569534@sss.pgh.pa.us

119 files changed:
doc/src/sgml/textsearch.sgml
src/backend/snowball/Makefile
src/backend/snowball/README
src/backend/snowball/dict_snowball.c
src/backend/snowball/libstemmer/api.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_basque.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_catalan.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_danish.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.c [new file with mode: 0644]
src/backend/snowball/libstemmer/stem_ISO_8859_1_english.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_finnish.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_french.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_german.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_indonesian.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_irish.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_italian.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_norwegian.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_porter.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_portuguese.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_spanish.c
src/backend/snowball/libstemmer/stem_ISO_8859_1_swedish.c
src/backend/snowball/libstemmer/stem_ISO_8859_2_hungarian.c
src/backend/snowball/libstemmer/stem_ISO_8859_2_polish.c [new file with mode: 0644]
src/backend/snowball/libstemmer/stem_KOI8_R_russian.c
src/backend/snowball/libstemmer/stem_UTF_8_arabic.c
src/backend/snowball/libstemmer/stem_UTF_8_armenian.c
src/backend/snowball/libstemmer/stem_UTF_8_basque.c
src/backend/snowball/libstemmer/stem_UTF_8_catalan.c
src/backend/snowball/libstemmer/stem_UTF_8_danish.c
src/backend/snowball/libstemmer/stem_UTF_8_dutch.c
src/backend/snowball/libstemmer/stem_UTF_8_dutch_porter.c [new file with mode: 0644]
src/backend/snowball/libstemmer/stem_UTF_8_english.c
src/backend/snowball/libstemmer/stem_UTF_8_esperanto.c [new file with mode: 0644]
src/backend/snowball/libstemmer/stem_UTF_8_estonian.c
src/backend/snowball/libstemmer/stem_UTF_8_finnish.c
src/backend/snowball/libstemmer/stem_UTF_8_french.c
src/backend/snowball/libstemmer/stem_UTF_8_german.c
src/backend/snowball/libstemmer/stem_UTF_8_greek.c
src/backend/snowball/libstemmer/stem_UTF_8_hindi.c
src/backend/snowball/libstemmer/stem_UTF_8_hungarian.c
src/backend/snowball/libstemmer/stem_UTF_8_indonesian.c
src/backend/snowball/libstemmer/stem_UTF_8_irish.c
src/backend/snowball/libstemmer/stem_UTF_8_italian.c
src/backend/snowball/libstemmer/stem_UTF_8_lithuanian.c
src/backend/snowball/libstemmer/stem_UTF_8_nepali.c
src/backend/snowball/libstemmer/stem_UTF_8_norwegian.c
src/backend/snowball/libstemmer/stem_UTF_8_polish.c [new file with mode: 0644]
src/backend/snowball/libstemmer/stem_UTF_8_porter.c
src/backend/snowball/libstemmer/stem_UTF_8_portuguese.c
src/backend/snowball/libstemmer/stem_UTF_8_romanian.c
src/backend/snowball/libstemmer/stem_UTF_8_russian.c
src/backend/snowball/libstemmer/stem_UTF_8_serbian.c
src/backend/snowball/libstemmer/stem_UTF_8_spanish.c
src/backend/snowball/libstemmer/stem_UTF_8_swedish.c
src/backend/snowball/libstemmer/stem_UTF_8_tamil.c
src/backend/snowball/libstemmer/stem_UTF_8_turkish.c
src/backend/snowball/libstemmer/stem_UTF_8_yiddish.c
src/backend/snowball/libstemmer/utilities.c
src/backend/snowball/meson.build
src/backend/snowball/snowball_create.pl
src/bin/initdb/initdb.c
src/include/snowball/libstemmer/api.h
src/include/snowball/libstemmer/header.h [deleted file]
src/include/snowball/libstemmer/snowball_runtime.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_ISO_8859_1_basque.h
src/include/snowball/libstemmer/stem_ISO_8859_1_catalan.h
src/include/snowball/libstemmer/stem_ISO_8859_1_danish.h
src/include/snowball/libstemmer/stem_ISO_8859_1_dutch.h
src/include/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_ISO_8859_1_english.h
src/include/snowball/libstemmer/stem_ISO_8859_1_finnish.h
src/include/snowball/libstemmer/stem_ISO_8859_1_french.h
src/include/snowball/libstemmer/stem_ISO_8859_1_german.h
src/include/snowball/libstemmer/stem_ISO_8859_1_indonesian.h
src/include/snowball/libstemmer/stem_ISO_8859_1_irish.h
src/include/snowball/libstemmer/stem_ISO_8859_1_italian.h
src/include/snowball/libstemmer/stem_ISO_8859_1_norwegian.h
src/include/snowball/libstemmer/stem_ISO_8859_1_porter.h
src/include/snowball/libstemmer/stem_ISO_8859_1_portuguese.h
src/include/snowball/libstemmer/stem_ISO_8859_1_spanish.h
src/include/snowball/libstemmer/stem_ISO_8859_1_swedish.h
src/include/snowball/libstemmer/stem_ISO_8859_2_hungarian.h
src/include/snowball/libstemmer/stem_ISO_8859_2_polish.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_KOI8_R_russian.h
src/include/snowball/libstemmer/stem_UTF_8_arabic.h
src/include/snowball/libstemmer/stem_UTF_8_armenian.h
src/include/snowball/libstemmer/stem_UTF_8_basque.h
src/include/snowball/libstemmer/stem_UTF_8_catalan.h
src/include/snowball/libstemmer/stem_UTF_8_danish.h
src/include/snowball/libstemmer/stem_UTF_8_dutch.h
src/include/snowball/libstemmer/stem_UTF_8_dutch_porter.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_UTF_8_english.h
src/include/snowball/libstemmer/stem_UTF_8_esperanto.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_UTF_8_estonian.h
src/include/snowball/libstemmer/stem_UTF_8_finnish.h
src/include/snowball/libstemmer/stem_UTF_8_french.h
src/include/snowball/libstemmer/stem_UTF_8_german.h
src/include/snowball/libstemmer/stem_UTF_8_greek.h
src/include/snowball/libstemmer/stem_UTF_8_hindi.h
src/include/snowball/libstemmer/stem_UTF_8_hungarian.h
src/include/snowball/libstemmer/stem_UTF_8_indonesian.h
src/include/snowball/libstemmer/stem_UTF_8_irish.h
src/include/snowball/libstemmer/stem_UTF_8_italian.h
src/include/snowball/libstemmer/stem_UTF_8_lithuanian.h
src/include/snowball/libstemmer/stem_UTF_8_nepali.h
src/include/snowball/libstemmer/stem_UTF_8_norwegian.h
src/include/snowball/libstemmer/stem_UTF_8_polish.h [new file with mode: 0644]
src/include/snowball/libstemmer/stem_UTF_8_porter.h
src/include/snowball/libstemmer/stem_UTF_8_portuguese.h
src/include/snowball/libstemmer/stem_UTF_8_romanian.h
src/include/snowball/libstemmer/stem_UTF_8_russian.h
src/include/snowball/libstemmer/stem_UTF_8_serbian.h
src/include/snowball/libstemmer/stem_UTF_8_spanish.h
src/include/snowball/libstemmer/stem_UTF_8_swedish.h
src/include/snowball/libstemmer/stem_UTF_8_tamil.h
src/include/snowball/libstemmer/stem_UTF_8_turkish.h
src/include/snowball/libstemmer/stem_UTF_8_yiddish.h
src/include/snowball/snowball_runtime.h [moved from src/include/snowball/header.h with 70% similarity]

index d20484cb232f4f68501b7407eb9cb9b7afed3326..e68d43227d7b18b79ab163c683864ce625757bd2 100644 (file)
@@ -3145,6 +3145,56 @@ largehearted
     <literal>stopword</literal> file name that gives a list of words to eliminate.
     (<productname>PostgreSQL</productname>'s standard stopword lists are also
     provided by the Snowball project.)
+   </para>
+
+   <para>
+    The available values of the <literal>language</literal> parameter are:
+
+    <literal>arabic</literal>,
+    <literal>armenian</literal>,
+    <literal>basque</literal>,
+    <literal>catalan</literal>,
+    <literal>danish</literal>,
+    <literal>dutch</literal>,
+    <literal>dutch_porter</literal>,
+    <literal>english</literal>,
+    <literal>esperanto</literal>,
+    <literal>estonian</literal>,
+    <literal>finnish</literal>,
+    <literal>french</literal>,
+    <literal>german</literal>,
+    <literal>greek</literal>,
+    <literal>hindi</literal>,
+    <literal>hungarian</literal>,
+    <literal>indonesian</literal>,
+    <literal>irish</literal>,
+    <literal>italian</literal>,
+    <literal>lithuanian</literal>,
+    <literal>nepali</literal>,
+    <literal>norwegian</literal>,
+    <literal>polish</literal>,
+    <literal>porter</literal>,
+    <literal>portuguese</literal>,
+    <literal>romanian</literal>,
+    <literal>russian</literal>,
+    <literal>serbian</literal>,
+    <literal>spanish</literal>,
+    <literal>swedish</literal>,
+    <literal>tamil</literal>,
+    <literal>turkish</literal>,
+    and
+    <literal>yiddish</literal>.
+
+    The <literal>porter</literal> algorithm is an old stemmer for English,
+    and the <literal>dutch_porter</literal> algorithm is an old stemmer
+    for Dutch (it was called <literal>dutch</literal>
+    in <productname>PostgreSQL</productname> releases before 19).
+    The rest are the currently-recommended stemmers for their
+    respective languages.
+
+    All these algorithms except <literal>porter</literal>
+    and <literal>dutch_porter</literal> have built-in dictionaries
+    provided, most with stopword lists attached.
     For example, there is a built-in definition equivalent to
 
 <programlisting>
@@ -3879,6 +3929,7 @@ Parser: "pg_catalog.default"
  pg_catalog | danish_stem     | snowball stemmer for danish language
  pg_catalog | dutch_stem      | snowball stemmer for dutch language
  pg_catalog | english_stem    | snowball stemmer for english language
+ pg_catalog | esperanto_stem  | snowball stemmer for esperanto language
  pg_catalog | estonian_stem   | snowball stemmer for estonian language
  pg_catalog | finnish_stem    | snowball stemmer for finnish language
  pg_catalog | french_stem     | snowball stemmer for french language
@@ -3892,6 +3943,7 @@ Parser: "pg_catalog.default"
  pg_catalog | lithuanian_stem | snowball stemmer for lithuanian language
  pg_catalog | nepali_stem     | snowball stemmer for nepali language
  pg_catalog | norwegian_stem  | snowball stemmer for norwegian language
+ pg_catalog | polish_stem     | snowball stemmer for polish language
  pg_catalog | portuguese_stem | snowball stemmer for portuguese language
  pg_catalog | romanian_stem   | snowball stemmer for romanian language
  pg_catalog | russian_stem    | snowball stemmer for russian language
index 0398c9bb14ceb1a6f8d7fd1bb62aeec90fdaf994..ecfae121565bb8d71478bffc65c775e273b2b102 100644 (file)
@@ -27,6 +27,7 @@ OBJS += \
    stem_ISO_8859_1_catalan.o \
    stem_ISO_8859_1_danish.o \
    stem_ISO_8859_1_dutch.o \
+   stem_ISO_8859_1_dutch_porter.o \
    stem_ISO_8859_1_english.o \
    stem_ISO_8859_1_finnish.o \
    stem_ISO_8859_1_french.o \
@@ -40,6 +41,7 @@ OBJS += \
    stem_ISO_8859_1_spanish.o \
    stem_ISO_8859_1_swedish.o \
    stem_ISO_8859_2_hungarian.o \
+   stem_ISO_8859_2_polish.o \
    stem_KOI8_R_russian.o \
    stem_UTF_8_arabic.o \
    stem_UTF_8_armenian.o \
@@ -47,7 +49,9 @@ OBJS += \
    stem_UTF_8_catalan.o \
    stem_UTF_8_danish.o \
    stem_UTF_8_dutch.o \
+   stem_UTF_8_dutch_porter.o \
    stem_UTF_8_english.o \
+   stem_UTF_8_esperanto.o \
    stem_UTF_8_estonian.o \
    stem_UTF_8_finnish.o \
    stem_UTF_8_french.o \
@@ -61,6 +65,7 @@ OBJS += \
    stem_UTF_8_lithuanian.o \
    stem_UTF_8_nepali.o \
    stem_UTF_8_norwegian.o \
+   stem_UTF_8_polish.o \
    stem_UTF_8_porter.o \
    stem_UTF_8_portuguese.o \
    stem_UTF_8_romanian.o \
index 2e41bee11423ea602106451960494c5f97e52030..d4ababe9b38ede78a362685894375bea2664ccf2 100644 (file)
@@ -29,27 +29,28 @@ We choose to include the derived files in the PostgreSQL distribution
 because most installations will not have the Snowball compiler available.
 
 We are currently synced with the Snowball git commit
-d19326ac6c1b9a417fc872f7c2f845265a5e9ece
-of 2025-02-19.
+2d2e312df56f2ede014a4ffb3e91e6dea43c24be
+of 2025-12-15.
 
 To update the PostgreSQL sources from a new Snowball version:
 
 0. If you didn't do it already, "make -C snowball".
 
 1. Copy the *.c files in snowball/src_c/ to src/backend/snowball/libstemmer
-with replacement of "../runtime/header.h" by "header.h", for example
+with replacement of "../runtime/snowball_runtime.h" by "snowball_runtime.h",
+for example
 
 for f in .../snowball/src_c/*.c
 do
-    sed 's|\.\./runtime/header\.h|header.h|' $f >libstemmer/`basename $f`
+    sed 's|\.\./runtime/snowball_runtime\.h|snowball_runtime.h|' $f >libstemmer/`basename $f`
 done
 
 Do not copy stemmers that are listed in their libstemmer/modules.txt as
-nonstandard, such as "kraaij_pohlmann" or "lovins".
+nonstandard, such as "lovins".
 
-2. Copy the *.c files in snowball/runtime/ to
-src/backend/snowball/libstemmer, and edit them to remove direct inclusions
-of system headers such as <stdio.h> --- they should only include "header.h".
+2. Copy the *.c files in snowball/runtime/ to src/backend/snowball/libstemmer,
+and edit them to remove direct inclusions of system headers such as <stdio.h>
+--- they should only include "snowball_runtime.h".
 (This removal avoids portability problems on some platforms where <stdio.h>
 is sensitive to largefile compilation options.)
 
@@ -61,9 +62,12 @@ stemmers.
 4. Check whether any stemmer modules have been added or removed.  If so, edit
 the OBJS list in Makefile, the dict_snowball_sources list in meson.build,
 the list of #include's and the stemmer_modules[] table in dict_snowball.c,
+the list of valid language parameters in the documentation in textsearch.sgml,
 and the sample \dFd output in the documentation in textsearch.sgml.
 You might also need to change the @languages array in snowball_create.pl
-and the tsearch_config_languages[] table in initdb.c.
+and the tsearch_config_languages[] table in initdb.c.  Typically, the latter
+two should be extended when a stemmer for an entirely new language is added,
+but alternative stemmers for existing languages are not represented in them.
 
 5. The various stopword files in stopwords/ must be downloaded
 individually from pages on the snowballstem.org website.
index 984a7a04f6df5e15e49394841b533f068a51d1bf..182bd156995e17e681cc693c9c43aaf855895938 100644 (file)
 #undef MININT
 #endif
 
-/* Now we can include the original Snowball header.h */
-#include "snowball/libstemmer/header.h"
+/* Now we can include the original Snowball snowball_runtime.h */
+#include "snowball/libstemmer/snowball_runtime.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_basque.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_catalan.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_danish.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_dutch.h"
+#include "snowball/libstemmer/stem_ISO_8859_1_dutch_porter.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_english.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_finnish.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_french.h"
@@ -45,6 +46,7 @@
 #include "snowball/libstemmer/stem_ISO_8859_1_spanish.h"
 #include "snowball/libstemmer/stem_ISO_8859_1_swedish.h"
 #include "snowball/libstemmer/stem_ISO_8859_2_hungarian.h"
+#include "snowball/libstemmer/stem_ISO_8859_2_polish.h"
 #include "snowball/libstemmer/stem_KOI8_R_russian.h"
 #include "snowball/libstemmer/stem_UTF_8_arabic.h"
 #include "snowball/libstemmer/stem_UTF_8_armenian.h"
@@ -52,7 +54,9 @@
 #include "snowball/libstemmer/stem_UTF_8_catalan.h"
 #include "snowball/libstemmer/stem_UTF_8_danish.h"
 #include "snowball/libstemmer/stem_UTF_8_dutch.h"
+#include "snowball/libstemmer/stem_UTF_8_dutch_porter.h"
 #include "snowball/libstemmer/stem_UTF_8_english.h"
+#include "snowball/libstemmer/stem_UTF_8_esperanto.h"
 #include "snowball/libstemmer/stem_UTF_8_estonian.h"
 #include "snowball/libstemmer/stem_UTF_8_finnish.h"
 #include "snowball/libstemmer/stem_UTF_8_french.h"
@@ -66,6 +70,7 @@
 #include "snowball/libstemmer/stem_UTF_8_lithuanian.h"
 #include "snowball/libstemmer/stem_UTF_8_nepali.h"
 #include "snowball/libstemmer/stem_UTF_8_norwegian.h"
+#include "snowball/libstemmer/stem_UTF_8_polish.h"
 #include "snowball/libstemmer/stem_UTF_8_porter.h"
 #include "snowball/libstemmer/stem_UTF_8_portuguese.h"
 #include "snowball/libstemmer/stem_UTF_8_romanian.h"
@@ -109,6 +114,7 @@ static const stemmer_module stemmer_modules[] =
    STEMMER_MODULE(catalan, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(danish, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(dutch, PG_LATIN1, ISO_8859_1),
+   STEMMER_MODULE(dutch_porter, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(english, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(finnish, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(french, PG_LATIN1, ISO_8859_1),
@@ -122,6 +128,7 @@ static const stemmer_module stemmer_modules[] =
    STEMMER_MODULE(spanish, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(swedish, PG_LATIN1, ISO_8859_1),
    STEMMER_MODULE(hungarian, PG_LATIN2, ISO_8859_2),
+   STEMMER_MODULE(polish, PG_LATIN2, ISO_8859_2),
    STEMMER_MODULE(russian, PG_KOI8R, KOI8_R),
    STEMMER_MODULE(arabic, PG_UTF8, UTF_8),
    STEMMER_MODULE(armenian, PG_UTF8, UTF_8),
@@ -129,7 +136,9 @@ static const stemmer_module stemmer_modules[] =
    STEMMER_MODULE(catalan, PG_UTF8, UTF_8),
    STEMMER_MODULE(danish, PG_UTF8, UTF_8),
    STEMMER_MODULE(dutch, PG_UTF8, UTF_8),
+   STEMMER_MODULE(dutch_porter, PG_UTF8, UTF_8),
    STEMMER_MODULE(english, PG_UTF8, UTF_8),
+   STEMMER_MODULE(esperanto, PG_UTF8, UTF_8),
    STEMMER_MODULE(estonian, PG_UTF8, UTF_8),
    STEMMER_MODULE(finnish, PG_UTF8, UTF_8),
    STEMMER_MODULE(french, PG_UTF8, UTF_8),
@@ -144,6 +153,7 @@ static const stemmer_module stemmer_modules[] =
    STEMMER_MODULE(nepali, PG_UTF8, UTF_8),
    STEMMER_MODULE(norwegian, PG_UTF8, UTF_8),
    STEMMER_MODULE(porter, PG_UTF8, UTF_8),
+   STEMMER_MODULE(polish, PG_UTF8, UTF_8),
    STEMMER_MODULE(portuguese, PG_UTF8, UTF_8),
    STEMMER_MODULE(romanian, PG_UTF8, UTF_8),
    STEMMER_MODULE(russian, PG_UTF8, UTF_8),
index 358f5633b28fea5a45f008b74f161cc0ca5e0010..9890f6664f94584062c8a71c08b98c60c4589d33 100644 (file)
@@ -1,56 +1,30 @@
-#include "header.h"
+#include "snowball_runtime.h"
 
-extern struct SN_env * SN_create_env(int S_size, int I_size)
+static const struct SN_env default_SN_env;
+
+extern struct SN_env * SN_new_env(int alloc_size)
 {
-    struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
+    struct SN_env * z = (struct SN_env *) malloc(alloc_size);
     if (z == NULL) return NULL;
+    *z = default_SN_env;
     z->p = create_s();
-    if (z->p == NULL) goto error;
-    if (S_size)
-    {
-        int i;
-        z->S = (symbol * *) calloc(S_size, sizeof(symbol *));
-        if (z->S == NULL) goto error;
-
-        for (i = 0; i < S_size; i++)
-        {
-            z->S[i] = create_s();
-            if (z->S[i] == NULL) goto error;
-        }
-    }
-
-    if (I_size)
-    {
-        z->I = (int *) calloc(I_size, sizeof(int));
-        if (z->I == NULL) goto error;
+    if (z->p == NULL) {
+        SN_delete_env(z);
+        return NULL;
     }
-
     return z;
-error:
-    SN_close_env(z, S_size);
-    return NULL;
 }
 
-extern void SN_close_env(struct SN_env * z, int S_size)
+extern void SN_delete_env(struct SN_env * z)
 {
     if (z == NULL) return;
-    if (z->S)
-    {
-        int i;
-        for (i = 0; i < S_size; i++)
-        {
-            lose_s(z->S[i]);
-        }
-        free(z->S);
-    }
-    free(z->I);
     if (z->p) lose_s(z->p);
     free(z);
 }
 
 extern int SN_set_current(struct SN_env * z, int size, const symbol * s)
 {
-    int err = replace_s(z, 0, z->l, size, s, NULL);
+    int err = replace_s(z, 0, z->l, size, s);
     z->c = 0;
     return err;
 }
index ec2d4e7482eccddf2a5b08a779e13557d643b82d..865793837c14113a785ee172c0cadf22bfa820fa 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from basque.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_basque.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int basque_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_R1(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_RV(struct SN_env * z);
@@ -16,18 +30,12 @@ static int r_mark_regions(struct SN_env * z);
 static int r_adjetiboak(struct SN_env * z);
 static int r_izenak(struct SN_env * z);
 static int r_aditzak(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 
-extern struct SN_env * basque_ISO_8859_1_create_env(void);
-extern void basque_ISO_8859_1_close_env(struct SN_env * z);
+static const symbol s_0[] = { 'j', 'o', 'k' };
+static const symbol s_1[] = { 't', 'r', 'a' };
+static const symbol s_2[] = { 'm', 'i', 'n', 'u', 't', 'u' };
+static const symbol s_3[] = { 'z' };
 
-
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[4] = { 'i', 'd', 'e', 'a' };
 static const symbol s_0_1[5] = { 'b', 'i', 'd', 'e', 'a' };
 static const symbol s_0_2[5] = { 'k', 'i', 'd', 'e', 'a' };
@@ -137,118 +145,116 @@ static const symbol s_0_105[5] = { 'e', 'r', 'r', 'e', 'z' };
 static const symbol s_0_106[4] = { 't', 'z', 'e', 'z' };
 static const symbol s_0_107[5] = { 'g', 'a', 'i', 't', 'z' };
 static const symbol s_0_108[5] = { 'k', 'a', 'i', 't', 'z' };
-
-static const struct among a_0[109] =
-{
-{ 4, s_0_0, -1, 1, 0},
-{ 5, s_0_1, 0, 1, 0},
-{ 5, s_0_2, 0, 1, 0},
-{ 5, s_0_3, 0, 1, 0},
-{ 6, s_0_4, -1, 1, 0},
-{ 5, s_0_5, -1, 1, 0},
-{ 6, s_0_6, -1, 1, 0},
-{ 7, s_0_7, -1, 1, 0},
-{ 5, s_0_8, -1, 1, 0},
-{ 5, s_0_9, -1, 1, 0},
-{ 5, s_0_10, -1, 1, 0},
-{ 4, s_0_11, -1, 1, 0},
-{ 5, s_0_12, -1, 1, 0},
-{ 6, s_0_13, 12, 1, 0},
-{ 5, s_0_14, -1, 1, 0},
-{ 6, s_0_15, -1, 2, 0},
-{ 6, s_0_16, -1, 1, 0},
-{ 2, s_0_17, -1, 1, 0},
-{ 5, s_0_18, 17, 1, 0},
-{ 2, s_0_19, -1, 1, 0},
-{ 4, s_0_20, -1, 1, 0},
-{ 4, s_0_21, -1, 1, 0},
-{ 4, s_0_22, -1, 1, 0},
-{ 5, s_0_23, -1, 1, 0},
-{ 6, s_0_24, 23, 1, 0},
-{ 4, s_0_25, -1, 1, 0},
-{ 4, s_0_26, -1, 1, 0},
-{ 6, s_0_27, -1, 1, 0},
-{ 3, s_0_28, -1, 1, 0},
-{ 4, s_0_29, 28, 1, 0},
-{ 7, s_0_30, 29, 4, 0},
-{ 4, s_0_31, 28, 1, 0},
-{ 4, s_0_32, 28, 1, 0},
-{ 4, s_0_33, -1, 1, 0},
-{ 5, s_0_34, 33, 1, 0},
-{ 4, s_0_35, -1, 1, 0},
-{ 4, s_0_36, -1, 1, 0},
-{ 4, s_0_37, -1, 1, 0},
-{ 4, s_0_38, -1, 1, 0},
-{ 3, s_0_39, -1, 1, 0},
-{ 4, s_0_40, 39, 1, 0},
-{ 6, s_0_41, -1, 1, 0},
-{ 3, s_0_42, -1, 1, 0},
-{ 6, s_0_43, 42, 1, 0},
-{ 3, s_0_44, -1, 2, 0},
-{ 6, s_0_45, 44, 1, 0},
-{ 6, s_0_46, 44, 1, 0},
-{ 6, s_0_47, 44, 1, 0},
-{ 3, s_0_48, -1, 1, 0},
-{ 4, s_0_49, 48, 1, 0},
-{ 4, s_0_50, 48, 1, 0},
-{ 4, s_0_51, 48, 1, 0},
-{ 5, s_0_52, -1, 1, 0},
-{ 5, s_0_53, -1, 1, 0},
-{ 5, s_0_54, -1, 1, 0},
-{ 2, s_0_55, -1, 1, 0},
-{ 4, s_0_56, 55, 1, 0},
-{ 5, s_0_57, 55, 1, 0},
-{ 6, s_0_58, 55, 1, 0},
-{ 4, s_0_59, -1, 1, 0},
-{ 4, s_0_60, -1, 1, 0},
-{ 3, s_0_61, -1, 1, 0},
-{ 4, s_0_62, 61, 1, 0},
-{ 3, s_0_63, -1, 1, 0},
-{ 4, s_0_64, -1, 1, 0},
-{ 5, s_0_65, 64, 1, 0},
-{ 2, s_0_66, -1, 1, 0},
-{ 3, s_0_67, -1, 1, 0},
-{ 4, s_0_68, 67, 1, 0},
-{ 4, s_0_69, 67, 1, 0},
-{ 4, s_0_70, 67, 1, 0},
-{ 5, s_0_71, 70, 1, 0},
-{ 5, s_0_72, -1, 2, 0},
-{ 5, s_0_73, -1, 1, 0},
-{ 5, s_0_74, -1, 1, 0},
-{ 6, s_0_75, 74, 1, 0},
-{ 2, s_0_76, -1, 1, 0},
-{ 3, s_0_77, 76, 1, 0},
-{ 4, s_0_78, 77, 1, 0},
-{ 3, s_0_79, 76, 1, 0},
-{ 4, s_0_80, 76, 1, 0},
-{ 7, s_0_81, -1, 3, 0},
-{ 3, s_0_82, -1, 1, 0},
-{ 3, s_0_83, -1, 1, 0},
-{ 3, s_0_84, -1, 1, 0},
-{ 5, s_0_85, 84, 1, 0},
-{ 4, s_0_86, -1, 1, 0},
-{ 5, s_0_87, 86, 1, 0},
-{ 3, s_0_88, -1, 1, 0},
-{ 5, s_0_89, -1, 1, 0},
-{ 2, s_0_90, -1, 1, 0},
-{ 3, s_0_91, 90, 1, 0},
-{ 3, s_0_92, -1, 1, 0},
-{ 4, s_0_93, -1, 1, 0},
-{ 2, s_0_94, -1, 1, 0},
-{ 3, s_0_95, 94, 1, 0},
-{ 4, s_0_96, -1, 1, 0},
-{ 2, s_0_97, -1, 1, 0},
-{ 5, s_0_98, -1, 1, 0},
-{ 2, s_0_99, -1, 1, 0},
-{ 3, s_0_100, 99, 1, 0},
-{ 6, s_0_101, 100, 1, 0},
-{ 4, s_0_102, 100, 1, 0},
-{ 6, s_0_103, 99, 5, 0},
-{ 2, s_0_104, -1, 1, 0},
-{ 5, s_0_105, 104, 1, 0},
-{ 4, s_0_106, 104, 1, 0},
-{ 5, s_0_107, -1, 1, 0},
-{ 5, s_0_108, -1, 1, 0}
+static const struct among a_0[109] = {
+{ 4, s_0_0, 0, 1, 0},
+{ 5, s_0_1, -1, 1, 0},
+{ 5, s_0_2, -2, 1, 0},
+{ 5, s_0_3, -3, 1, 0},
+{ 6, s_0_4, 0, 1, 0},
+{ 5, s_0_5, 0, 1, 0},
+{ 6, s_0_6, 0, 1, 0},
+{ 7, s_0_7, 0, 1, 0},
+{ 5, s_0_8, 0, 1, 0},
+{ 5, s_0_9, 0, 1, 0},
+{ 5, s_0_10, 0, 1, 0},
+{ 4, s_0_11, 0, 1, 0},
+{ 5, s_0_12, 0, 1, 0},
+{ 6, s_0_13, -1, 1, 0},
+{ 5, s_0_14, 0, 1, 0},
+{ 6, s_0_15, 0, 2, 0},
+{ 6, s_0_16, 0, 1, 0},
+{ 2, s_0_17, 0, 1, 0},
+{ 5, s_0_18, -1, 1, 0},
+{ 2, s_0_19, 0, 1, 0},
+{ 4, s_0_20, 0, 1, 0},
+{ 4, s_0_21, 0, 1, 0},
+{ 4, s_0_22, 0, 1, 0},
+{ 5, s_0_23, 0, 1, 0},
+{ 6, s_0_24, -1, 1, 0},
+{ 4, s_0_25, 0, 1, 0},
+{ 4, s_0_26, 0, 1, 0},
+{ 6, s_0_27, 0, 1, 0},
+{ 3, s_0_28, 0, 1, 0},
+{ 4, s_0_29, -1, 1, 0},
+{ 7, s_0_30, -1, -1, 0},
+{ 4, s_0_31, -3, 1, 0},
+{ 4, s_0_32, -4, 1, 0},
+{ 4, s_0_33, 0, 1, 0},
+{ 5, s_0_34, -1, 1, 0},
+{ 4, s_0_35, 0, 1, 0},
+{ 4, s_0_36, 0, 1, 0},
+{ 4, s_0_37, 0, 1, 0},
+{ 4, s_0_38, 0, 1, 0},
+{ 3, s_0_39, 0, 1, 0},
+{ 4, s_0_40, -1, 1, 0},
+{ 6, s_0_41, 0, 1, 0},
+{ 3, s_0_42, 0, 1, 0},
+{ 6, s_0_43, -1, 1, 0},
+{ 3, s_0_44, 0, 2, 0},
+{ 6, s_0_45, -1, 1, 0},
+{ 6, s_0_46, -2, 1, 0},
+{ 6, s_0_47, -3, 1, 0},
+{ 3, s_0_48, 0, 1, 0},
+{ 4, s_0_49, -1, 1, 0},
+{ 4, s_0_50, -2, 1, 0},
+{ 4, s_0_51, -3, 1, 0},
+{ 5, s_0_52, 0, 1, 0},
+{ 5, s_0_53, 0, 1, 0},
+{ 5, s_0_54, 0, 1, 0},
+{ 2, s_0_55, 0, 1, 0},
+{ 4, s_0_56, -1, 1, 0},
+{ 5, s_0_57, -2, 1, 0},
+{ 6, s_0_58, -3, 1, 0},
+{ 4, s_0_59, 0, 1, 0},
+{ 4, s_0_60, 0, 1, 0},
+{ 3, s_0_61, 0, 1, 0},
+{ 4, s_0_62, -1, 1, 0},
+{ 3, s_0_63, 0, 1, 0},
+{ 4, s_0_64, 0, 1, 0},
+{ 5, s_0_65, -1, 1, 0},
+{ 2, s_0_66, 0, 1, 0},
+{ 3, s_0_67, 0, 1, 0},
+{ 4, s_0_68, -1, 1, 0},
+{ 4, s_0_69, -2, 1, 0},
+{ 4, s_0_70, -3, 1, 0},
+{ 5, s_0_71, -1, 1, 0},
+{ 5, s_0_72, 0, 2, 0},
+{ 5, s_0_73, 0, 1, 0},
+{ 5, s_0_74, 0, 1, 0},
+{ 6, s_0_75, -1, 1, 0},
+{ 2, s_0_76, 0, 1, 0},
+{ 3, s_0_77, -1, 1, 0},
+{ 4, s_0_78, -1, 1, 0},
+{ 3, s_0_79, -3, 1, 0},
+{ 4, s_0_80, -4, 1, 0},
+{ 7, s_0_81, 0, -1, 0},
+{ 3, s_0_82, 0, 1, 0},
+{ 3, s_0_83, 0, 1, 0},
+{ 3, s_0_84, 0, 1, 0},
+{ 5, s_0_85, -1, 1, 0},
+{ 4, s_0_86, 0, 1, 0},
+{ 5, s_0_87, -1, 1, 0},
+{ 3, s_0_88, 0, 1, 0},
+{ 5, s_0_89, 0, 1, 0},
+{ 2, s_0_90, 0, 1, 0},
+{ 3, s_0_91, -1, 1, 0},
+{ 3, s_0_92, 0, 1, 0},
+{ 4, s_0_93, 0, 1, 0},
+{ 2, s_0_94, 0, 1, 0},
+{ 3, s_0_95, -1, 1, 0},
+{ 4, s_0_96, 0, 1, 0},
+{ 2, s_0_97, 0, 1, 0},
+{ 5, s_0_98, 0, 1, 0},
+{ 2, s_0_99, 0, 1, 0},
+{ 3, s_0_100, -1, 1, 0},
+{ 6, s_0_101, -1, 1, 0},
+{ 4, s_0_102, -2, 1, 0},
+{ 6, s_0_103, -4, -1, 0},
+{ 2, s_0_104, 0, 1, 0},
+{ 5, s_0_105, -1, 1, 0},
+{ 4, s_0_106, -2, 1, 0},
+{ 5, s_0_107, 0, 1, 0},
+{ 5, s_0_108, 0, 1, 0}
 };
 
 static const symbol s_1_0[3] = { 'a', 'd', 'a' };
@@ -546,304 +552,302 @@ static const symbol s_1_291[2] = { 'e', 'z' };
 static const symbol s_1_292[4] = { 'e', 'r', 'o', 'z' };
 static const symbol s_1_293[2] = { 't', 'z' };
 static const symbol s_1_294[5] = { 'k', 'o', 'i', 't', 'z' };
-
-static const struct among a_1[295] =
-{
-{ 3, s_1_0, -1, 1, 0},
-{ 4, s_1_1, 0, 1, 0},
-{ 4, s_1_2, -1, 1, 0},
-{ 5, s_1_3, -1, 1, 0},
-{ 5, s_1_4, -1, 1, 0},
-{ 5, s_1_5, -1, 1, 0},
-{ 5, s_1_6, -1, 1, 0},
-{ 6, s_1_7, 6, 1, 0},
-{ 6, s_1_8, 6, 1, 0},
-{ 5, s_1_9, -1, 1, 0},
-{ 5, s_1_10, -1, 1, 0},
-{ 6, s_1_11, 10, 1, 0},
-{ 5, s_1_12, -1, 1, 0},
-{ 4, s_1_13, -1, 1, 0},
-{ 5, s_1_14, -1, 1, 0},
-{ 3, s_1_15, -1, 1, 0},
-{ 4, s_1_16, 15, 1, 0},
-{ 6, s_1_17, 15, 1, 0},
-{ 4, s_1_18, 15, 1, 0},
-{ 5, s_1_19, 18, 1, 0},
-{ 3, s_1_20, -1, 1, 0},
-{ 6, s_1_21, -1, 1, 0},
-{ 3, s_1_22, -1, 1, 0},
-{ 5, s_1_23, 22, 1, 0},
-{ 5, s_1_24, 22, 1, 0},
-{ 5, s_1_25, 22, 1, 0},
-{ 5, s_1_26, -1, 1, 0},
-{ 2, s_1_27, -1, 1, 0},
-{ 4, s_1_28, 27, 1, 0},
-{ 4, s_1_29, -1, 1, 0},
-{ 5, s_1_30, -1, 1, 0},
-{ 6, s_1_31, 30, 1, 0},
-{ 6, s_1_32, -1, 1, 0},
-{ 6, s_1_33, -1, 1, 0},
-{ 4, s_1_34, -1, 1, 0},
-{ 4, s_1_35, -1, 1, 0},
-{ 5, s_1_36, 35, 1, 0},
-{ 5, s_1_37, 35, 1, 0},
-{ 5, s_1_38, -1, 1, 0},
-{ 4, s_1_39, -1, 1, 0},
-{ 3, s_1_40, -1, 1, 0},
-{ 5, s_1_41, 40, 1, 0},
-{ 3, s_1_42, -1, 1, 0},
-{ 4, s_1_43, 42, 1, 0},
-{ 4, s_1_44, -1, 1, 0},
-{ 5, s_1_45, 44, 1, 0},
-{ 5, s_1_46, 44, 1, 0},
-{ 5, s_1_47, 44, 1, 0},
-{ 4, s_1_48, -1, 1, 0},
-{ 5, s_1_49, 48, 1, 0},
-{ 5, s_1_50, 48, 1, 0},
-{ 6, s_1_51, -1, 2, 0},
-{ 6, s_1_52, -1, 1, 0},
-{ 6, s_1_53, -1, 1, 0},
-{ 5, s_1_54, -1, 1, 0},
-{ 4, s_1_55, -1, 1, 0},
-{ 3, s_1_56, -1, 1, 0},
-{ 4, s_1_57, -1, 1, 0},
-{ 5, s_1_58, -1, 1, 0},
-{ 6, s_1_59, -1, 1, 0},
-{ 2, s_1_60, -1, 1, 0},
-{ 4, s_1_61, 60, 3, 0},
-{ 5, s_1_62, 60, 10, 0},
-{ 3, s_1_63, 60, 1, 0},
-{ 3, s_1_64, 60, 1, 0},
-{ 3, s_1_65, 60, 1, 0},
-{ 6, s_1_66, -1, 1, 0},
-{ 4, s_1_67, -1, 1, 0},
-{ 5, s_1_68, -1, 1, 0},
-{ 5, s_1_69, -1, 1, 0},
-{ 4, s_1_70, -1, 1, 0},
-{ 3, s_1_71, -1, 1, 0},
-{ 2, s_1_72, -1, 1, 0},
-{ 4, s_1_73, 72, 1, 0},
-{ 3, s_1_74, 72, 1, 0},
-{ 7, s_1_75, 74, 1, 0},
-{ 7, s_1_76, 74, 1, 0},
-{ 6, s_1_77, 74, 1, 0},
-{ 5, s_1_78, 72, 1, 0},
-{ 6, s_1_79, 78, 1, 0},
-{ 4, s_1_80, 72, 1, 0},
-{ 4, s_1_81, 72, 1, 0},
-{ 5, s_1_82, 72, 1, 0},
-{ 3, s_1_83, 72, 1, 0},
-{ 4, s_1_84, 83, 1, 0},
-{ 5, s_1_85, 83, 1, 0},
-{ 6, s_1_86, 85, 1, 0},
-{ 5, s_1_87, -1, 1, 0},
-{ 6, s_1_88, 87, 1, 0},
-{ 4, s_1_89, -1, 1, 0},
-{ 4, s_1_90, -1, 1, 0},
-{ 3, s_1_91, -1, 1, 0},
-{ 5, s_1_92, 91, 1, 0},
-{ 4, s_1_93, 91, 1, 0},
-{ 3, s_1_94, -1, 1, 0},
-{ 5, s_1_95, 94, 1, 0},
-{ 4, s_1_96, -1, 1, 0},
-{ 5, s_1_97, 96, 1, 0},
-{ 5, s_1_98, 96, 1, 0},
-{ 4, s_1_99, -1, 1, 0},
-{ 4, s_1_100, -1, 1, 0},
-{ 4, s_1_101, -1, 1, 0},
-{ 3, s_1_102, -1, 1, 0},
-{ 4, s_1_103, 102, 1, 0},
-{ 4, s_1_104, 102, 1, 0},
-{ 4, s_1_105, -1, 1, 0},
-{ 4, s_1_106, -1, 1, 0},
-{ 3, s_1_107, -1, 1, 0},
-{ 2, s_1_108, -1, 1, 0},
-{ 3, s_1_109, 108, 1, 0},
-{ 4, s_1_110, 109, 1, 0},
-{ 5, s_1_111, 109, 1, 0},
-{ 5, s_1_112, 109, 1, 0},
-{ 4, s_1_113, 109, 1, 0},
-{ 5, s_1_114, 113, 1, 0},
-{ 5, s_1_115, 109, 1, 0},
-{ 4, s_1_116, 108, 1, 0},
-{ 4, s_1_117, 108, 1, 0},
-{ 4, s_1_118, 108, 1, 0},
-{ 3, s_1_119, 108, 2, 0},
-{ 6, s_1_120, 108, 1, 0},
-{ 5, s_1_121, 108, 1, 0},
-{ 3, s_1_122, 108, 1, 0},
-{ 2, s_1_123, -1, 1, 0},
-{ 3, s_1_124, 123, 1, 0},
-{ 2, s_1_125, -1, 1, 0},
-{ 3, s_1_126, 125, 1, 0},
-{ 4, s_1_127, 126, 1, 0},
-{ 3, s_1_128, 125, 1, 0},
-{ 3, s_1_129, -1, 1, 0},
-{ 6, s_1_130, 129, 1, 0},
-{ 5, s_1_131, 129, 1, 0},
-{ 5, s_1_132, -1, 1, 0},
-{ 5, s_1_133, -1, 1, 0},
-{ 5, s_1_134, -1, 1, 0},
-{ 4, s_1_135, -1, 1, 0},
-{ 3, s_1_136, -1, 1, 0},
-{ 6, s_1_137, 136, 1, 0},
-{ 5, s_1_138, 136, 1, 0},
-{ 4, s_1_139, -1, 1, 0},
-{ 3, s_1_140, -1, 1, 0},
-{ 4, s_1_141, 140, 1, 0},
-{ 2, s_1_142, -1, 1, 0},
-{ 3, s_1_143, 142, 1, 0},
-{ 5, s_1_144, 142, 1, 0},
-{ 3, s_1_145, 142, 2, 0},
-{ 6, s_1_146, 145, 1, 0},
-{ 5, s_1_147, 145, 1, 0},
-{ 6, s_1_148, 145, 1, 0},
-{ 6, s_1_149, 145, 1, 0},
-{ 6, s_1_150, 145, 1, 0},
-{ 4, s_1_151, -1, 1, 0},
-{ 4, s_1_152, -1, 1, 0},
-{ 4, s_1_153, -1, 1, 0},
-{ 4, s_1_154, -1, 1, 0},
-{ 5, s_1_155, 154, 1, 0},
-{ 5, s_1_156, 154, 1, 0},
-{ 4, s_1_157, -1, 1, 0},
-{ 2, s_1_158, -1, 1, 0},
-{ 4, s_1_159, -1, 1, 0},
-{ 5, s_1_160, 159, 1, 0},
-{ 4, s_1_161, -1, 1, 0},
-{ 3, s_1_162, -1, 1, 0},
-{ 4, s_1_163, -1, 1, 0},
-{ 2, s_1_164, -1, 1, 0},
-{ 5, s_1_165, 164, 1, 0},
-{ 3, s_1_166, 164, 1, 0},
-{ 4, s_1_167, 166, 1, 0},
-{ 2, s_1_168, -1, 1, 0},
-{ 5, s_1_169, -1, 1, 0},
-{ 2, s_1_170, -1, 1, 0},
-{ 4, s_1_171, 170, 1, 0},
-{ 4, s_1_172, 170, 1, 0},
-{ 4, s_1_173, 170, 1, 0},
-{ 4, s_1_174, -1, 1, 0},
-{ 3, s_1_175, -1, 1, 0},
-{ 2, s_1_176, -1, 1, 0},
-{ 4, s_1_177, 176, 1, 0},
-{ 5, s_1_178, 177, 1, 0},
-{ 5, s_1_179, 176, 8, 0},
-{ 5, s_1_180, 176, 1, 0},
-{ 5, s_1_181, 176, 1, 0},
-{ 3, s_1_182, -1, 1, 0},
-{ 3, s_1_183, -1, 1, 0},
-{ 4, s_1_184, 183, 1, 0},
-{ 4, s_1_185, 183, 1, 0},
-{ 4, s_1_186, -1, 1, 0},
-{ 3, s_1_187, -1, 1, 0},
-{ 2, s_1_188, -1, 1, 0},
-{ 4, s_1_189, 188, 1, 0},
-{ 2, s_1_190, -1, 1, 0},
-{ 3, s_1_191, 190, 1, 0},
-{ 3, s_1_192, 190, 1, 0},
-{ 3, s_1_193, -1, 1, 0},
-{ 4, s_1_194, 193, 1, 0},
-{ 4, s_1_195, 193, 1, 0},
-{ 4, s_1_196, 193, 1, 0},
-{ 5, s_1_197, -1, 2, 0},
-{ 5, s_1_198, -1, 1, 0},
-{ 5, s_1_199, -1, 1, 0},
-{ 4, s_1_200, -1, 1, 0},
-{ 3, s_1_201, -1, 1, 0},
-{ 2, s_1_202, -1, 1, 0},
-{ 5, s_1_203, -1, 1, 0},
-{ 2, s_1_204, -1, 1, 0},
-{ 2, s_1_205, -1, 1, 0},
-{ 2, s_1_206, -1, 1, 0},
-{ 5, s_1_207, -1, 1, 0},
-{ 5, s_1_208, -1, 1, 0},
-{ 3, s_1_209, -1, 1, 0},
-{ 4, s_1_210, 209, 1, 0},
-{ 3, s_1_211, -1, 1, 0},
-{ 3, s_1_212, -1, 1, 0},
-{ 4, s_1_213, 212, 1, 0},
-{ 2, s_1_214, -1, 4, 0},
-{ 3, s_1_215, 214, 2, 0},
-{ 6, s_1_216, 215, 1, 0},
-{ 6, s_1_217, 215, 1, 0},
-{ 5, s_1_218, 215, 1, 0},
-{ 3, s_1_219, 214, 4, 0},
-{ 4, s_1_220, 214, 4, 0},
-{ 4, s_1_221, -1, 1, 0},
-{ 5, s_1_222, 221, 1, 0},
-{ 3, s_1_223, -1, 1, 0},
-{ 3, s_1_224, -1, 1, 0},
-{ 3, s_1_225, -1, 1, 0},
-{ 4, s_1_226, -1, 1, 0},
-{ 5, s_1_227, 226, 1, 0},
-{ 5, s_1_228, -1, 1, 0},
-{ 4, s_1_229, -1, 1, 0},
-{ 5, s_1_230, 229, 1, 0},
-{ 2, s_1_231, -1, 1, 0},
-{ 3, s_1_232, 231, 1, 0},
-{ 3, s_1_233, -1, 1, 0},
-{ 2, s_1_234, -1, 1, 0},
-{ 5, s_1_235, 234, 5, 0},
-{ 4, s_1_236, 234, 1, 0},
-{ 5, s_1_237, 236, 1, 0},
-{ 3, s_1_238, 234, 1, 0},
-{ 6, s_1_239, 234, 1, 0},
-{ 3, s_1_240, 234, 1, 0},
-{ 4, s_1_241, 234, 1, 0},
-{ 8, s_1_242, 241, 6, 0},
-{ 3, s_1_243, 234, 1, 0},
-{ 2, s_1_244, -1, 1, 0},
-{ 4, s_1_245, 244, 1, 0},
-{ 2, s_1_246, -1, 1, 0},
-{ 3, s_1_247, 246, 1, 0},
-{ 5, s_1_248, 247, 9, 0},
-{ 4, s_1_249, 247, 1, 0},
-{ 4, s_1_250, 247, 1, 0},
-{ 3, s_1_251, 246, 1, 0},
-{ 4, s_1_252, 246, 1, 0},
-{ 3, s_1_253, 246, 1, 0},
-{ 3, s_1_254, -1, 1, 0},
-{ 2, s_1_255, -1, 1, 0},
-{ 3, s_1_256, 255, 1, 0},
-{ 3, s_1_257, 255, 1, 0},
-{ 3, s_1_258, -1, 1, 0},
-{ 3, s_1_259, -1, 1, 0},
-{ 6, s_1_260, 259, 1, 0},
-{ 2, s_1_261, -1, 1, 0},
-{ 2, s_1_262, -1, 1, 0},
-{ 2, s_1_263, -1, 1, 0},
-{ 3, s_1_264, 263, 1, 0},
-{ 5, s_1_265, 263, 1, 0},
-{ 5, s_1_266, 263, 7, 0},
-{ 4, s_1_267, 263, 1, 0},
-{ 4, s_1_268, 263, 1, 0},
-{ 3, s_1_269, 263, 1, 0},
-{ 4, s_1_270, 263, 1, 0},
-{ 2, s_1_271, -1, 2, 0},
-{ 3, s_1_272, 271, 1, 0},
-{ 2, s_1_273, -1, 1, 0},
-{ 3, s_1_274, -1, 1, 0},
-{ 2, s_1_275, -1, 1, 0},
-{ 5, s_1_276, 275, 1, 0},
-{ 4, s_1_277, 275, 1, 0},
-{ 4, s_1_278, -1, 1, 0},
-{ 4, s_1_279, -1, 2, 0},
-{ 4, s_1_280, -1, 1, 0},
-{ 3, s_1_281, -1, 1, 0},
-{ 2, s_1_282, -1, 1, 0},
-{ 4, s_1_283, 282, 4, 0},
-{ 5, s_1_284, 282, 1, 0},
-{ 4, s_1_285, 282, 1, 0},
-{ 3, s_1_286, -1, 1, 0},
-{ 2, s_1_287, -1, 1, 0},
-{ 3, s_1_288, 287, 1, 0},
-{ 6, s_1_289, 288, 1, 0},
-{ 1, s_1_290, -1, 1, 0},
-{ 2, s_1_291, 290, 1, 0},
-{ 4, s_1_292, 290, 1, 0},
-{ 2, s_1_293, 290, 1, 0},
-{ 5, s_1_294, 293, 1, 0}
+static const struct among a_1[295] = {
+{ 3, s_1_0, 0, 1, 0},
+{ 4, s_1_1, -1, 1, 0},
+{ 4, s_1_2, 0, 1, 0},
+{ 5, s_1_3, 0, 1, 0},
+{ 5, s_1_4, 0, 1, 0},
+{ 5, s_1_5, 0, 1, 0},
+{ 5, s_1_6, 0, 1, 0},
+{ 6, s_1_7, -1, 1, 0},
+{ 6, s_1_8, -2, 1, 0},
+{ 5, s_1_9, 0, 1, 0},
+{ 5, s_1_10, 0, 1, 0},
+{ 6, s_1_11, -1, 1, 0},
+{ 5, s_1_12, 0, 1, 0},
+{ 4, s_1_13, 0, 1, 0},
+{ 5, s_1_14, 0, 1, 0},
+{ 3, s_1_15, 0, 1, 0},
+{ 4, s_1_16, -1, 1, 0},
+{ 6, s_1_17, -2, 1, 0},
+{ 4, s_1_18, -3, 1, 0},
+{ 5, s_1_19, -1, 1, 0},
+{ 3, s_1_20, 0, 1, 0},
+{ 6, s_1_21, 0, 1, 0},
+{ 3, s_1_22, 0, 1, 0},
+{ 5, s_1_23, -1, 1, 0},
+{ 5, s_1_24, -2, 1, 0},
+{ 5, s_1_25, -3, 1, 0},
+{ 5, s_1_26, 0, 1, 0},
+{ 2, s_1_27, 0, 1, 0},
+{ 4, s_1_28, -1, 1, 0},
+{ 4, s_1_29, 0, 1, 0},
+{ 5, s_1_30, 0, 1, 0},
+{ 6, s_1_31, -1, 1, 0},
+{ 6, s_1_32, 0, 1, 0},
+{ 6, s_1_33, 0, 1, 0},
+{ 4, s_1_34, 0, 1, 0},
+{ 4, s_1_35, 0, 1, 0},
+{ 5, s_1_36, -1, 1, 0},
+{ 5, s_1_37, -2, 1, 0},
+{ 5, s_1_38, 0, 1, 0},
+{ 4, s_1_39, 0, 1, 0},
+{ 3, s_1_40, 0, 1, 0},
+{ 5, s_1_41, -1, 1, 0},
+{ 3, s_1_42, 0, 1, 0},
+{ 4, s_1_43, -1, 1, 0},
+{ 4, s_1_44, 0, 1, 0},
+{ 5, s_1_45, -1, 1, 0},
+{ 5, s_1_46, -2, 1, 0},
+{ 5, s_1_47, -3, 1, 0},
+{ 4, s_1_48, 0, 1, 0},
+{ 5, s_1_49, -1, 1, 0},
+{ 5, s_1_50, -2, 1, 0},
+{ 6, s_1_51, 0, 2, 0},
+{ 6, s_1_52, 0, 1, 0},
+{ 6, s_1_53, 0, 1, 0},
+{ 5, s_1_54, 0, 1, 0},
+{ 4, s_1_55, 0, 1, 0},
+{ 3, s_1_56, 0, 1, 0},
+{ 4, s_1_57, 0, 1, 0},
+{ 5, s_1_58, 0, 1, 0},
+{ 6, s_1_59, 0, 1, 0},
+{ 2, s_1_60, 0, 1, 0},
+{ 4, s_1_61, -1, 3, 0},
+{ 5, s_1_62, -2, -1, 0},
+{ 3, s_1_63, -3, 1, 0},
+{ 3, s_1_64, -4, 1, 0},
+{ 3, s_1_65, -5, 1, 0},
+{ 6, s_1_66, 0, 1, 0},
+{ 4, s_1_67, 0, 1, 0},
+{ 5, s_1_68, 0, 1, 0},
+{ 5, s_1_69, 0, 1, 0},
+{ 4, s_1_70, 0, 1, 0},
+{ 3, s_1_71, 0, 1, 0},
+{ 2, s_1_72, 0, 1, 0},
+{ 4, s_1_73, -1, 1, 0},
+{ 3, s_1_74, -2, 1, 0},
+{ 7, s_1_75, -1, 1, 0},
+{ 7, s_1_76, -2, 1, 0},
+{ 6, s_1_77, -3, 1, 0},
+{ 5, s_1_78, -6, 1, 0},
+{ 6, s_1_79, -1, 1, 0},
+{ 4, s_1_80, -8, 1, 0},
+{ 4, s_1_81, -9, 1, 0},
+{ 5, s_1_82, -10, 1, 0},
+{ 3, s_1_83, -11, 1, 0},
+{ 4, s_1_84, -1, 1, 0},
+{ 5, s_1_85, -2, 1, 0},
+{ 6, s_1_86, -1, 1, 0},
+{ 5, s_1_87, 0, 1, 0},
+{ 6, s_1_88, -1, 1, 0},
+{ 4, s_1_89, 0, 1, 0},
+{ 4, s_1_90, 0, 1, 0},
+{ 3, s_1_91, 0, 1, 0},
+{ 5, s_1_92, -1, 1, 0},
+{ 4, s_1_93, -2, 1, 0},
+{ 3, s_1_94, 0, 1, 0},
+{ 5, s_1_95, -1, 1, 0},
+{ 4, s_1_96, 0, 1, 0},
+{ 5, s_1_97, -1, 1, 0},
+{ 5, s_1_98, -2, 1, 0},
+{ 4, s_1_99, 0, 1, 0},
+{ 4, s_1_100, 0, 1, 0},
+{ 4, s_1_101, 0, 1, 0},
+{ 3, s_1_102, 0, 1, 0},
+{ 4, s_1_103, -1, 1, 0},
+{ 4, s_1_104, -2, 1, 0},
+{ 4, s_1_105, 0, 1, 0},
+{ 4, s_1_106, 0, 1, 0},
+{ 3, s_1_107, 0, 1, 0},
+{ 2, s_1_108, 0, 1, 0},
+{ 3, s_1_109, -1, 1, 0},
+{ 4, s_1_110, -1, 1, 0},
+{ 5, s_1_111, -2, 1, 0},
+{ 5, s_1_112, -3, 1, 0},
+{ 4, s_1_113, -4, 1, 0},
+{ 5, s_1_114, -1, 1, 0},
+{ 5, s_1_115, -6, 1, 0},
+{ 4, s_1_116, -8, 1, 0},
+{ 4, s_1_117, -9, 1, 0},
+{ 4, s_1_118, -10, 1, 0},
+{ 3, s_1_119, -11, 2, 0},
+{ 6, s_1_120, -12, 1, 0},
+{ 5, s_1_121, -13, 1, 0},
+{ 3, s_1_122, -14, 1, 0},
+{ 2, s_1_123, 0, 1, 0},
+{ 3, s_1_124, -1, 1, 0},
+{ 2, s_1_125, 0, 1, 0},
+{ 3, s_1_126, -1, 1, 0},
+{ 4, s_1_127, -1, 1, 0},
+{ 3, s_1_128, -3, 1, 0},
+{ 3, s_1_129, 0, 1, 0},
+{ 6, s_1_130, -1, 1, 0},
+{ 5, s_1_131, -2, 1, 0},
+{ 5, s_1_132, 0, 1, 0},
+{ 5, s_1_133, 0, 1, 0},
+{ 5, s_1_134, 0, 1, 0},
+{ 4, s_1_135, 0, 1, 0},
+{ 3, s_1_136, 0, 1, 0},
+{ 6, s_1_137, -1, 1, 0},
+{ 5, s_1_138, -2, 1, 0},
+{ 4, s_1_139, 0, 1, 0},
+{ 3, s_1_140, 0, 1, 0},
+{ 4, s_1_141, -1, 1, 0},
+{ 2, s_1_142, 0, 1, 0},
+{ 3, s_1_143, -1, 1, 0},
+{ 5, s_1_144, -2, 1, 0},
+{ 3, s_1_145, -3, 2, 0},
+{ 6, s_1_146, -1, 1, 0},
+{ 5, s_1_147, -2, 1, 0},
+{ 6, s_1_148, -3, 1, 0},
+{ 6, s_1_149, -4, 1, 0},
+{ 6, s_1_150, -5, 1, 0},
+{ 4, s_1_151, 0, 1, 0},
+{ 4, s_1_152, 0, 1, 0},
+{ 4, s_1_153, 0, 1, 0},
+{ 4, s_1_154, 0, 1, 0},
+{ 5, s_1_155, -1, 1, 0},
+{ 5, s_1_156, -2, 1, 0},
+{ 4, s_1_157, 0, 1, 0},
+{ 2, s_1_158, 0, 1, 0},
+{ 4, s_1_159, 0, 1, 0},
+{ 5, s_1_160, -1, 1, 0},
+{ 4, s_1_161, 0, 1, 0},
+{ 3, s_1_162, 0, 1, 0},
+{ 4, s_1_163, 0, 1, 0},
+{ 2, s_1_164, 0, 1, 0},
+{ 5, s_1_165, -1, 1, 0},
+{ 3, s_1_166, -2, 1, 0},
+{ 4, s_1_167, -1, 1, 0},
+{ 2, s_1_168, 0, 1, 0},
+{ 5, s_1_169, 0, 1, 0},
+{ 2, s_1_170, 0, 1, 0},
+{ 4, s_1_171, -1, 1, 0},
+{ 4, s_1_172, -2, 1, 0},
+{ 4, s_1_173, -3, 1, 0},
+{ 4, s_1_174, 0, 1, 0},
+{ 3, s_1_175, 0, 1, 0},
+{ 2, s_1_176, 0, 1, 0},
+{ 4, s_1_177, -1, 1, 0},
+{ 5, s_1_178, -1, 1, 0},
+{ 5, s_1_179, -3, -1, 0},
+{ 5, s_1_180, -4, 1, 0},
+{ 5, s_1_181, -5, 1, 0},
+{ 3, s_1_182, 0, 1, 0},
+{ 3, s_1_183, 0, 1, 0},
+{ 4, s_1_184, -1, 1, 0},
+{ 4, s_1_185, -2, 1, 0},
+{ 4, s_1_186, 0, 1, 0},
+{ 3, s_1_187, 0, 1, 0},
+{ 2, s_1_188, 0, 1, 0},
+{ 4, s_1_189, -1, 1, 0},
+{ 2, s_1_190, 0, 1, 0},
+{ 3, s_1_191, -1, 1, 0},
+{ 3, s_1_192, -2, 1, 0},
+{ 3, s_1_193, 0, 1, 0},
+{ 4, s_1_194, -1, 1, 0},
+{ 4, s_1_195, -2, 1, 0},
+{ 4, s_1_196, -3, 1, 0},
+{ 5, s_1_197, 0, 2, 0},
+{ 5, s_1_198, 0, 1, 0},
+{ 5, s_1_199, 0, 1, 0},
+{ 4, s_1_200, 0, 1, 0},
+{ 3, s_1_201, 0, 1, 0},
+{ 2, s_1_202, 0, 1, 0},
+{ 5, s_1_203, 0, 1, 0},
+{ 2, s_1_204, 0, 1, 0},
+{ 2, s_1_205, 0, 1, 0},
+{ 2, s_1_206, 0, 1, 0},
+{ 5, s_1_207, 0, 1, 0},
+{ 5, s_1_208, 0, 1, 0},
+{ 3, s_1_209, 0, 1, 0},
+{ 4, s_1_210, -1, 1, 0},
+{ 3, s_1_211, 0, 1, 0},
+{ 3, s_1_212, 0, 1, 0},
+{ 4, s_1_213, -1, 1, 0},
+{ 2, s_1_214, 0, 4, 0},
+{ 3, s_1_215, -1, 2, 0},
+{ 6, s_1_216, -1, 1, 0},
+{ 6, s_1_217, -2, 1, 0},
+{ 5, s_1_218, -3, 1, 0},
+{ 3, s_1_219, -5, 4, 0},
+{ 4, s_1_220, -6, 4, 0},
+{ 4, s_1_221, 0, 1, 0},
+{ 5, s_1_222, -1, 1, 0},
+{ 3, s_1_223, 0, 1, 0},
+{ 3, s_1_224, 0, 1, 0},
+{ 3, s_1_225, 0, 1, 0},
+{ 4, s_1_226, 0, 1, 0},
+{ 5, s_1_227, -1, 1, 0},
+{ 5, s_1_228, 0, 1, 0},
+{ 4, s_1_229, 0, 1, 0},
+{ 5, s_1_230, -1, 1, 0},
+{ 2, s_1_231, 0, 1, 0},
+{ 3, s_1_232, -1, 1, 0},
+{ 3, s_1_233, 0, 1, 0},
+{ 2, s_1_234, 0, 1, 0},
+{ 5, s_1_235, -1, 5, 0},
+{ 4, s_1_236, -2, 1, 0},
+{ 5, s_1_237, -1, 1, 0},
+{ 3, s_1_238, -4, 1, 0},
+{ 6, s_1_239, -5, 1, 0},
+{ 3, s_1_240, -6, 1, 0},
+{ 4, s_1_241, -7, 1, 0},
+{ 8, s_1_242, -1, 6, 0},
+{ 3, s_1_243, -9, 1, 0},
+{ 2, s_1_244, 0, 1, 0},
+{ 4, s_1_245, -1, 1, 0},
+{ 2, s_1_246, 0, 1, 0},
+{ 3, s_1_247, -1, 1, 0},
+{ 5, s_1_248, -1, -1, 0},
+{ 4, s_1_249, -2, 1, 0},
+{ 4, s_1_250, -3, 1, 0},
+{ 3, s_1_251, -5, 1, 0},
+{ 4, s_1_252, -6, 1, 0},
+{ 3, s_1_253, -7, 1, 0},
+{ 3, s_1_254, 0, 1, 0},
+{ 2, s_1_255, 0, 1, 0},
+{ 3, s_1_256, -1, 1, 0},
+{ 3, s_1_257, -2, 1, 0},
+{ 3, s_1_258, 0, 1, 0},
+{ 3, s_1_259, 0, 1, 0},
+{ 6, s_1_260, -1, 1, 0},
+{ 2, s_1_261, 0, 1, 0},
+{ 2, s_1_262, 0, 1, 0},
+{ 2, s_1_263, 0, 1, 0},
+{ 3, s_1_264, -1, 1, 0},
+{ 5, s_1_265, -2, 1, 0},
+{ 5, s_1_266, -3, -1, 0},
+{ 4, s_1_267, -4, 1, 0},
+{ 4, s_1_268, -5, 1, 0},
+{ 3, s_1_269, -6, 1, 0},
+{ 4, s_1_270, -7, 1, 0},
+{ 2, s_1_271, 0, 2, 0},
+{ 3, s_1_272, -1, 1, 0},
+{ 2, s_1_273, 0, 1, 0},
+{ 3, s_1_274, 0, 1, 0},
+{ 2, s_1_275, 0, 1, 0},
+{ 5, s_1_276, -1, 1, 0},
+{ 4, s_1_277, -2, 1, 0},
+{ 4, s_1_278, 0, 1, 0},
+{ 4, s_1_279, 0, 2, 0},
+{ 4, s_1_280, 0, 1, 0},
+{ 3, s_1_281, 0, 1, 0},
+{ 2, s_1_282, 0, 1, 0},
+{ 4, s_1_283, -1, 4, 0},
+{ 5, s_1_284, -2, 1, 0},
+{ 4, s_1_285, -3, 1, 0},
+{ 3, s_1_286, 0, 1, 0},
+{ 2, s_1_287, 0, 1, 0},
+{ 3, s_1_288, -1, 1, 0},
+{ 6, s_1_289, -1, 1, 0},
+{ 1, s_1_290, 0, 1, 0},
+{ 2, s_1_291, -1, 1, 0},
+{ 4, s_1_292, -2, 1, 0},
+{ 2, s_1_293, -3, 1, 0},
+{ 5, s_1_294, -1, 1, 0}
 };
 
 static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' };
@@ -865,179 +869,148 @@ static const symbol s_2_15[2] = { 'g', 'o' };
 static const symbol s_2_16[2] = { 'r', 'o' };
 static const symbol s_2_17[3] = { 'e', 'r', 'o' };
 static const symbol s_2_18[2] = { 't', 'o' };
-
-static const struct among a_2[19] =
-{
-{ 4, s_2_0, -1, 2, 0},
-{ 5, s_2_1, -1, 1, 0},
-{ 2, s_2_2, -1, 1, 0},
-{ 3, s_2_3, -1, 1, 0},
-{ 4, s_2_4, -1, 1, 0},
-{ 4, s_2_5, -1, 1, 0},
-{ 4, s_2_6, -1, 1, 0},
-{ 4, s_2_7, -1, 1, 0},
-{ 2, s_2_8, -1, 1, 0},
-{ 2, s_2_9, -1, 1, 0},
-{ 2, s_2_10, -1, 1, 0},
-{ 5, s_2_11, 10, 1, 0},
-{ 3, s_2_12, 10, 1, 0},
-{ 5, s_2_13, 12, 1, 0},
-{ 4, s_2_14, 10, 1, 0},
-{ 2, s_2_15, -1, 1, 0},
-{ 2, s_2_16, -1, 1, 0},
-{ 3, s_2_17, 16, 1, 0},
-{ 2, s_2_18, -1, 1, 0}
+static const struct among a_2[19] = {
+{ 4, s_2_0, 0, 2, 0},
+{ 5, s_2_1, 0, 1, 0},
+{ 2, s_2_2, 0, 1, 0},
+{ 3, s_2_3, 0, 1, 0},
+{ 4, s_2_4, 0, 1, 0},
+{ 4, s_2_5, 0, 1, 0},
+{ 4, s_2_6, 0, 1, 0},
+{ 4, s_2_7, 0, 1, 0},
+{ 2, s_2_8, 0, 1, 0},
+{ 2, s_2_9, 0, 1, 0},
+{ 2, s_2_10, 0, 1, 0},
+{ 5, s_2_11, -1, 1, 0},
+{ 3, s_2_12, -2, 1, 0},
+{ 5, s_2_13, -1, 1, 0},
+{ 4, s_2_14, -4, 1, 0},
+{ 2, s_2_15, 0, 1, 0},
+{ 2, s_2_16, 0, 1, 0},
+{ 3, s_2_17, -1, 1, 0},
+{ 2, s_2_18, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16 };
 
-static const symbol s_0[] = { 'a', 't', 's', 'e', 'd', 'e', 'n' };
-static const symbol s_1[] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' };
-static const symbol s_2[] = { 'b', 'a', 'd', 'i', 't', 'u' };
-static const symbol s_3[] = { 'j', 'o', 'k' };
-static const symbol s_4[] = { 't', 'r', 'a' };
-static const symbol s_5[] = { 'm', 'i', 'n', 'u', 't', 'u' };
-static const symbol s_6[] = { 'z', 'e', 'h', 'a', 'r' };
-static const symbol s_7[] = { 'g', 'e', 'l', 'd', 'i' };
-static const symbol s_8[] = { 'i', 'g', 'a', 'r', 'o' };
-static const symbol s_9[] = { 'a', 'u', 'r', 'k', 'a' };
-static const symbol s_10[] = { 'z' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping(z, g_v, 97, 117, 0)) goto lab2;
-            {   int c3 = z->c;
-                if (out_grouping(z, g_v, 97, 117, 0)) goto lab4;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping(z, g_v, 97, 117, 0)) goto lab1;
+            do {
+                int v_3 = z->c;
+                if (out_grouping(z, g_v, 97, 117, 0)) goto lab2;
                 {
                     int ret = out_grouping(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab4;
+                    if (ret < 0) goto lab2;
                     z->c += ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c3;
-                if (in_grouping(z, g_v, 97, 117, 0)) goto lab2;
-
+                break;
+            lab2:
+                z->c = v_3;
+                if (in_grouping(z, g_v, 97, 117, 0)) goto lab1;
                 {
                     int ret = in_grouping(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab2;
+                    if (ret < 0) goto lab1;
                     z->c += ret;
                 }
-            }
-        lab3:
-            goto lab1;
-        lab2:
-            z->c = c2;
+            } while (0);
+            break;
+        lab1:
+            z->c = v_2;
             if (out_grouping(z, g_v, 97, 117, 0)) goto lab0;
-            {   int c4 = z->c;
-                if (out_grouping(z, g_v, 97, 117, 0)) goto lab6;
-
+            do {
+                int v_4 = z->c;
+                if (out_grouping(z, g_v, 97, 117, 0)) goto lab3;
                 {
                     int ret = out_grouping(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab6;
+                    if (ret < 0) goto lab3;
                     z->c += ret;
                 }
-                goto lab5;
-            lab6:
-                z->c = c4;
+                break;
+            lab3:
+                z->c = v_4;
                 if (in_grouping(z, g_v, 97, 117, 0)) goto lab0;
                 if (z->c >= z->l) goto lab0;
                 z->c++;
-            }
-        lab5:
-            ;
-        }
-    lab1:
-        z->I[2] = z->c;
+            } while (0);
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c5 = z->c;
-
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab7:
-        z->c = c5;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab4:
+        z->c = v_5;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_aditzak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((70566434 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_0, 109);
+    among_var = find_among_b(z, a_0, 109, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 3:
-            {   int ret = slice_from_s(z, 7, s_0);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 4:
-            {   int ret = slice_from_s(z, 7, s_1);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 5:
-            {   int ret = slice_from_s(z, 6, s_2);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1049,66 +1022,55 @@ static int r_izenak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((71162402 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_1, 295);
+    among_var = find_among_b(z, a_1, 295, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 3, s_3);
+            {
+                int ret = slice_from_s(z, 3, s_0);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 3, s_4);
+            {
+                int ret = slice_from_s(z, 3, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 6, s_5);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 7:
-            {   int ret = slice_from_s(z, 5, s_6);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 8:
-            {   int ret = slice_from_s(z, 5, s_7);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 9:
-            {   int ret = slice_from_s(z, 5, s_8);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 10:
-            {   int ret = slice_from_s(z, 5, s_9);
+            {
+                int ret = slice_from_s(z, 6, s_2);
                 if (ret < 0) return ret;
             }
             break;
@@ -1120,20 +1082,23 @@ static int r_adjetiboak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((35362 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_2, 19);
+    among_var = find_among_b(z, a_2, 19, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_10);
+            {
+                int ret = slice_from_s(z, 1, s_3);
                 if (ret < 0) return ret;
             }
             break;
@@ -1142,45 +1107,58 @@ static int r_adjetiboak(struct SN_env * z) {
 }
 
 extern int basque_ISO_8859_1_stem(struct SN_env * z) {
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    while(1) {
-        int m1 = z->l - z->c; (void)m1;
-        {   int ret = r_aditzak(z);
+    while (1) {
+        int v_1 = z->l - z->c;
+        {
+            int ret = r_aditzak(z);
             if (ret == 0) goto lab0;
             if (ret < 0) return ret;
         }
         continue;
     lab0:
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
         break;
     }
-    while(1) {
-        int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_izenak(z);
+    while (1) {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_izenak(z);
             if (ret == 0) goto lab1;
             if (ret < 0) return ret;
         }
         continue;
     lab1:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
         break;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_adjetiboak(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_adjetiboak(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * basque_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * basque_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void basque_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void basque_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index f2710534d62749ad7bb2d6020333ba01bc6bce6c..ef82a92548e61e6c70ac0e61acb5b25fe4f5ae3b 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from catalan.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_catalan.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +21,7 @@ extern int catalan_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_residual_suffix(struct SN_env * z);
 static int r_verb_suffix(struct SN_env * z);
 static int r_standard_suffix(struct SN_env * z);
@@ -17,18 +30,18 @@ static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_cleaning(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * catalan_ISO_8859_1_create_env(void);
-extern void catalan_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'a' };
+static const symbol s_1[] = { 'e' };
+static const symbol s_2[] = { 'i' };
+static const symbol s_3[] = { 'o' };
+static const symbol s_4[] = { 'u' };
+static const symbol s_5[] = { '.' };
+static const symbol s_6[] = { 'l', 'o', 'g' };
+static const symbol s_7[] = { 'i', 'c' };
+static const symbol s_8[] = { 'c' };
+static const symbol s_9[] = { 'i', 'c' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[1] = { 0xB7 };
 static const symbol s_0_2[1] = { 0xE0 };
 static const symbol s_0_3[1] = { 0xE1 };
@@ -41,22 +54,20 @@ static const symbol s_0_9[1] = { 0xF2 };
 static const symbol s_0_10[1] = { 0xF3 };
 static const symbol s_0_11[1] = { 0xFA };
 static const symbol s_0_12[1] = { 0xFC };
-
-static const struct among a_0[13] =
-{
-{ 0, 0, -1, 7, 0},
-{ 1, s_0_1, 0, 6, 0},
-{ 1, s_0_2, 0, 1, 0},
-{ 1, s_0_3, 0, 1, 0},
-{ 1, s_0_4, 0, 2, 0},
-{ 1, s_0_5, 0, 2, 0},
-{ 1, s_0_6, 0, 3, 0},
-{ 1, s_0_7, 0, 3, 0},
-{ 1, s_0_8, 0, 3, 0},
-{ 1, s_0_9, 0, 4, 0},
-{ 1, s_0_10, 0, 4, 0},
-{ 1, s_0_11, 0, 5, 0},
-{ 1, s_0_12, 0, 5, 0}
+static const struct among a_0[13] = {
+{ 0, 0, 0, 7, 0},
+{ 1, s_0_1, -1, 6, 0},
+{ 1, s_0_2, -2, 1, 0},
+{ 1, s_0_3, -3, 1, 0},
+{ 1, s_0_4, -4, 2, 0},
+{ 1, s_0_5, -5, 2, 0},
+{ 1, s_0_6, -6, 3, 0},
+{ 1, s_0_7, -7, 3, 0},
+{ 1, s_0_8, -8, 3, 0},
+{ 1, s_0_9, -9, 4, 0},
+{ 1, s_0_10, -10, 4, 0},
+{ 1, s_0_11, -11, 5, 0},
+{ 1, s_0_12, -12, 5, 0}
 };
 
 static const symbol s_1_0[2] = { 'l', 'a' };
@@ -98,48 +109,46 @@ static const symbol s_1_35[3] = { 'v', 'o', 's' };
 static const symbol s_1_36[2] = { 'u', 's' };
 static const symbol s_1_37[3] = { '-', 'u', 's' };
 static const symbol s_1_38[2] = { '\'', 't' };
-
-static const struct among a_1[39] =
-{
-{ 2, s_1_0, -1, 1, 0},
-{ 3, s_1_1, 0, 1, 0},
-{ 4, s_1_2, 0, 1, 0},
-{ 2, s_1_3, -1, 1, 0},
-{ 2, s_1_4, -1, 1, 0},
-{ 3, s_1_5, 4, 1, 0},
-{ 2, s_1_6, -1, 1, 0},
-{ 3, s_1_7, -1, 1, 0},
-{ 2, s_1_8, -1, 1, 0},
-{ 3, s_1_9, 8, 1, 0},
-{ 2, s_1_10, -1, 1, 0},
-{ 3, s_1_11, 10, 1, 0},
-{ 2, s_1_12, -1, 1, 0},
-{ 2, s_1_13, -1, 1, 0},
-{ 2, s_1_14, -1, 1, 0},
-{ 2, s_1_15, -1, 1, 0},
-{ 2, s_1_16, -1, 1, 0},
-{ 2, s_1_17, -1, 1, 0},
-{ 3, s_1_18, 17, 1, 0},
-{ 2, s_1_19, -1, 1, 0},
-{ 4, s_1_20, 19, 1, 0},
-{ 2, s_1_21, -1, 1, 0},
-{ 3, s_1_22, -1, 1, 0},
-{ 5, s_1_23, 22, 1, 0},
-{ 3, s_1_24, -1, 1, 0},
-{ 4, s_1_25, 24, 1, 0},
-{ 3, s_1_26, -1, 1, 0},
-{ 3, s_1_27, -1, 1, 0},
-{ 3, s_1_28, -1, 1, 0},
-{ 3, s_1_29, -1, 1, 0},
-{ 3, s_1_30, -1, 1, 0},
-{ 3, s_1_31, -1, 1, 0},
-{ 5, s_1_32, 31, 1, 0},
-{ 3, s_1_33, -1, 1, 0},
-{ 4, s_1_34, 33, 1, 0},
-{ 3, s_1_35, -1, 1, 0},
-{ 2, s_1_36, -1, 1, 0},
-{ 3, s_1_37, 36, 1, 0},
-{ 2, s_1_38, -1, 1, 0}
+static const struct among a_1[39] = {
+{ 2, s_1_0, 0, 1, 0},
+{ 3, s_1_1, -1, 1, 0},
+{ 4, s_1_2, -2, 1, 0},
+{ 2, s_1_3, 0, 1, 0},
+{ 2, s_1_4, 0, 1, 0},
+{ 3, s_1_5, -1, 1, 0},
+{ 2, s_1_6, 0, 1, 0},
+{ 3, s_1_7, 0, 1, 0},
+{ 2, s_1_8, 0, 1, 0},
+{ 3, s_1_9, -1, 1, 0},
+{ 2, s_1_10, 0, 1, 0},
+{ 3, s_1_11, -1, 1, 0},
+{ 2, s_1_12, 0, 1, 0},
+{ 2, s_1_13, 0, 1, 0},
+{ 2, s_1_14, 0, 1, 0},
+{ 2, s_1_15, 0, 1, 0},
+{ 2, s_1_16, 0, 1, 0},
+{ 2, s_1_17, 0, 1, 0},
+{ 3, s_1_18, -1, 1, 0},
+{ 2, s_1_19, 0, 1, 0},
+{ 4, s_1_20, -1, 1, 0},
+{ 2, s_1_21, 0, 1, 0},
+{ 3, s_1_22, 0, 1, 0},
+{ 5, s_1_23, -1, 1, 0},
+{ 3, s_1_24, 0, 1, 0},
+{ 4, s_1_25, -1, 1, 0},
+{ 3, s_1_26, 0, 1, 0},
+{ 3, s_1_27, 0, 1, 0},
+{ 3, s_1_28, 0, 1, 0},
+{ 3, s_1_29, 0, 1, 0},
+{ 3, s_1_30, 0, 1, 0},
+{ 3, s_1_31, 0, 1, 0},
+{ 5, s_1_32, -1, 1, 0},
+{ 3, s_1_33, 0, 1, 0},
+{ 4, s_1_34, -1, 1, 0},
+{ 3, s_1_35, 0, 1, 0},
+{ 2, s_1_36, 0, 1, 0},
+{ 3, s_1_37, -1, 1, 0},
+{ 2, s_1_38, 0, 1, 0}
 };
 
 static const symbol s_2_0[3] = { 'i', 'c', 'a' };
@@ -342,209 +351,207 @@ static const symbol s_2_196[1] = { 0xF3 };
 static const symbol s_2_197[2] = { 'i', 0xF3 };
 static const symbol s_2_198[3] = { 'c', 'i', 0xF3 };
 static const symbol s_2_199[4] = { 'a', 'c', 'i', 0xF3 };
-
-static const struct among a_2[200] =
-{
-{ 3, s_2_0, -1, 4, 0},
-{ 6, s_2_1, 0, 3, 0},
-{ 4, s_2_2, -1, 1, 0},
-{ 3, s_2_3, -1, 2, 0},
-{ 5, s_2_4, -1, 1, 0},
-{ 5, s_2_5, -1, 1, 0},
-{ 5, s_2_6, -1, 1, 0},
-{ 4, s_2_7, -1, 1, 0},
-{ 5, s_2_8, -1, 3, 0},
-{ 4, s_2_9, -1, 1, 0},
-{ 5, s_2_10, 9, 1, 0},
-{ 4, s_2_11, -1, 1, 0},
-{ 4, s_2_12, -1, 1, 0},
-{ 6, s_2_13, -1, 1, 0},
-{ 4, s_2_14, -1, 1, 0},
-{ 4, s_2_15, -1, 1, 0},
-{ 5, s_2_16, -1, 1, 0},
-{ 3, s_2_17, -1, 1, 0},
-{ 6, s_2_18, 17, 1, 0},
-{ 8, s_2_19, 18, 5, 0},
-{ 3, s_2_20, -1, 1, 0},
-{ 3, s_2_21, -1, 1, 0},
-{ 3, s_2_22, -1, 1, 0},
-{ 5, s_2_23, 22, 1, 0},
-{ 3, s_2_24, -1, 1, 0},
-{ 4, s_2_25, 24, 1, 0},
-{ 5, s_2_26, 25, 1, 0},
-{ 5, s_2_27, -1, 1, 0},
-{ 3, s_2_28, -1, 1, 0},
-{ 3, s_2_29, -1, 1, 0},
-{ 4, s_2_30, -1, 1, 0},
-{ 4, s_2_31, -1, 1, 0},
-{ 4, s_2_32, -1, 1, 0},
-{ 3, s_2_33, -1, 1, 0},
-{ 3, s_2_34, -1, 1, 0},
-{ 3, s_2_35, -1, 1, 0},
-{ 4, s_2_36, -1, 1, 0},
-{ 7, s_2_37, 36, 1, 0},
-{ 7, s_2_38, 36, 1, 0},
-{ 3, s_2_39, -1, 1, 0},
-{ 5, s_2_40, 39, 1, 0},
-{ 3, s_2_41, -1, 1, 0},
-{ 5, s_2_42, -1, 3, 0},
-{ 2, s_2_43, -1, 4, 0},
-{ 5, s_2_44, 43, 1, 0},
-{ 3, s_2_45, -1, 1, 0},
-{ 3, s_2_46, -1, 1, 0},
-{ 2, s_2_47, -1, 1, 0},
-{ 4, s_2_48, -1, 1, 0},
-{ 3, s_2_49, -1, 1, 0},
-{ 4, s_2_50, 49, 1, 0},
-{ 4, s_2_51, 49, 1, 0},
-{ 4, s_2_52, -1, 1, 0},
-{ 7, s_2_53, 52, 1, 0},
-{ 7, s_2_54, 52, 1, 0},
-{ 6, s_2_55, 52, 1, 0},
-{ 4, s_2_56, -1, 1, 0},
-{ 4, s_2_57, -1, 1, 0},
-{ 4, s_2_58, -1, 1, 0},
-{ 3, s_2_59, -1, 1, 0},
-{ 3, s_2_60, -1, 1, 0},
-{ 4, s_2_61, -1, 3, 0},
-{ 3, s_2_62, -1, 1, 0},
-{ 4, s_2_63, -1, 1, 0},
-{ 2, s_2_64, -1, 1, 0},
-{ 2, s_2_65, -1, 1, 0},
-{ 3, s_2_66, -1, 1, 0},
-{ 3, s_2_67, -1, 1, 0},
-{ 4, s_2_68, -1, 1, 0},
-{ 4, s_2_69, -1, 1, 0},
-{ 5, s_2_70, -1, 1, 0},
-{ 5, s_2_71, -1, 1, 0},
-{ 5, s_2_72, -1, 1, 0},
-{ 5, s_2_73, -1, 1, 0},
-{ 7, s_2_74, 73, 5, 0},
-{ 4, s_2_75, -1, 1, 0},
-{ 5, s_2_76, -1, 1, 0},
-{ 2, s_2_77, -1, 1, 0},
-{ 6, s_2_78, 77, 1, 0},
-{ 4, s_2_79, 77, 1, 0},
-{ 4, s_2_80, 77, 1, 0},
-{ 4, s_2_81, 77, 1, 0},
-{ 5, s_2_82, 77, 1, 0},
-{ 3, s_2_83, -1, 1, 0},
-{ 2, s_2_84, -1, 1, 0},
-{ 3, s_2_85, 84, 1, 0},
-{ 3, s_2_86, -1, 1, 0},
-{ 5, s_2_87, -1, 1, 0},
-{ 3, s_2_88, -1, 4, 0},
-{ 6, s_2_89, 88, 3, 0},
-{ 3, s_2_90, -1, 1, 0},
-{ 4, s_2_91, -1, 1, 0},
-{ 4, s_2_92, -1, 2, 0},
-{ 6, s_2_93, -1, 1, 0},
-{ 6, s_2_94, -1, 1, 0},
-{ 6, s_2_95, -1, 1, 0},
-{ 5, s_2_96, -1, 1, 0},
-{ 6, s_2_97, -1, 3, 0},
-{ 5, s_2_98, -1, 1, 0},
-{ 5, s_2_99, -1, 1, 0},
-{ 5, s_2_100, -1, 1, 0},
-{ 5, s_2_101, -1, 1, 0},
-{ 7, s_2_102, -1, 1, 0},
-{ 4, s_2_103, -1, 1, 0},
-{ 5, s_2_104, 103, 1, 0},
-{ 5, s_2_105, 103, 1, 0},
-{ 4, s_2_106, -1, 1, 0},
-{ 7, s_2_107, 106, 1, 0},
-{ 9, s_2_108, 107, 5, 0},
-{ 6, s_2_109, -1, 1, 0},
-{ 5, s_2_110, -1, 1, 0},
-{ 8, s_2_111, 110, 1, 0},
-{ 4, s_2_112, -1, 1, 0},
-{ 4, s_2_113, -1, 1, 0},
-{ 4, s_2_114, -1, 1, 0},
-{ 5, s_2_115, 114, 1, 0},
-{ 6, s_2_116, 115, 1, 0},
-{ 5, s_2_117, -1, 1, 0},
-{ 4, s_2_118, -1, 1, 0},
-{ 4, s_2_119, -1, 1, 0},
-{ 5, s_2_120, -1, 1, 0},
-{ 5, s_2_121, -1, 1, 0},
-{ 4, s_2_122, -1, 1, 0},
-{ 4, s_2_123, -1, 1, 0},
-{ 5, s_2_124, -1, 1, 0},
-{ 8, s_2_125, 124, 1, 0},
-{ 8, s_2_126, 124, 1, 0},
-{ 5, s_2_127, -1, 4, 0},
-{ 8, s_2_128, 127, 3, 0},
-{ 4, s_2_129, -1, 1, 0},
-{ 6, s_2_130, 129, 1, 0},
-{ 6, s_2_131, -1, 3, 0},
-{ 9, s_2_132, -1, 1, 0},
-{ 4, s_2_133, -1, 1, 0},
-{ 4, s_2_134, -1, 1, 0},
-{ 5, s_2_135, -1, 3, 0},
-{ 4, s_2_136, -1, 1, 0},
-{ 5, s_2_137, -1, 1, 0},
-{ 2, s_2_138, -1, 1, 0},
-{ 3, s_2_139, 138, 1, 0},
-{ 4, s_2_140, 138, 1, 0},
-{ 3, s_2_141, -1, 1, 0},
-{ 6, s_2_142, 141, 1, 0},
-{ 8, s_2_143, 142, 5, 0},
-{ 4, s_2_144, -1, 1, 0},
-{ 5, s_2_145, 144, 1, 0},
-{ 6, s_2_146, 145, 2, 0},
-{ 4, s_2_147, -1, 1, 0},
-{ 4, s_2_148, -1, 1, 0},
-{ 5, s_2_149, -1, 1, 0},
-{ 5, s_2_150, -1, 1, 0},
-{ 3, s_2_151, -1, 1, 0},
-{ 3, s_2_152, -1, 1, 0},
-{ 4, s_2_153, 152, 1, 0},
-{ 5, s_2_154, 153, 1, 0},
-{ 5, s_2_155, 153, 1, 0},
-{ 3, s_2_156, -1, 1, 0},
-{ 5, s_2_157, 156, 1, 0},
-{ 8, s_2_158, 157, 1, 0},
-{ 7, s_2_159, 157, 1, 0},
-{ 9, s_2_160, 159, 1, 0},
-{ 5, s_2_161, 156, 1, 0},
-{ 3, s_2_162, -1, 1, 0},
-{ 4, s_2_163, -1, 1, 0},
-{ 4, s_2_164, -1, 1, 0},
-{ 5, s_2_165, 164, 1, 0},
-{ 6, s_2_166, 165, 1, 0},
-{ 3, s_2_167, -1, 1, 0},
-{ 3, s_2_168, -1, 1, 0},
-{ 3, s_2_169, -1, 1, 0},
-{ 5, s_2_170, 169, 1, 0},
-{ 5, s_2_171, 169, 1, 0},
-{ 2, s_2_172, -1, 1, 0},
-{ 2, s_2_173, -1, 1, 0},
-{ 2, s_2_174, -1, 1, 0},
-{ 3, s_2_175, 174, 1, 0},
-{ 2, s_2_176, -1, 1, 0},
-{ 4, s_2_177, -1, 1, 0},
-{ 7, s_2_178, 177, 1, 0},
-{ 6, s_2_179, 177, 1, 0},
-{ 8, s_2_180, 179, 1, 0},
-{ 4, s_2_181, -1, 1, 0},
-{ 2, s_2_182, -1, 1, 0},
-{ 3, s_2_183, -1, 1, 0},
-{ 3, s_2_184, -1, 1, 0},
-{ 4, s_2_185, 184, 1, 0},
-{ 4, s_2_186, 184, 1, 0},
-{ 5, s_2_187, 186, 1, 0},
-{ 7, s_2_188, 187, 1, 0},
-{ 2, s_2_189, -1, 1, 0},
-{ 5, s_2_190, -1, 1, 0},
-{ 5, s_2_191, -1, 1, 0},
-{ 5, s_2_192, -1, 1, 0},
-{ 4, s_2_193, -1, 1, 0},
-{ 5, s_2_194, -1, 1, 0},
-{ 4, s_2_195, -1, 1, 0},
-{ 1, s_2_196, -1, 1, 0},
-{ 2, s_2_197, 196, 1, 0},
-{ 3, s_2_198, 197, 1, 0},
-{ 4, s_2_199, 198, 1, 0}
+static const struct among a_2[200] = {
+{ 3, s_2_0, 0, 4, 0},
+{ 6, s_2_1, -1, 3, 0},
+{ 4, s_2_2, 0, 1, 0},
+{ 3, s_2_3, 0, 2, 0},
+{ 5, s_2_4, 0, 1, 0},
+{ 5, s_2_5, 0, 1, 0},
+{ 5, s_2_6, 0, 1, 0},
+{ 4, s_2_7, 0, 1, 0},
+{ 5, s_2_8, 0, 3, 0},
+{ 4, s_2_9, 0, 1, 0},
+{ 5, s_2_10, -1, 1, 0},
+{ 4, s_2_11, 0, 1, 0},
+{ 4, s_2_12, 0, 1, 0},
+{ 6, s_2_13, 0, 1, 0},
+{ 4, s_2_14, 0, 1, 0},
+{ 4, s_2_15, 0, 1, 0},
+{ 5, s_2_16, 0, 1, 0},
+{ 3, s_2_17, 0, 1, 0},
+{ 6, s_2_18, -1, 1, 0},
+{ 8, s_2_19, -1, 5, 0},
+{ 3, s_2_20, 0, 1, 0},
+{ 3, s_2_21, 0, 1, 0},
+{ 3, s_2_22, 0, 1, 0},
+{ 5, s_2_23, -1, 1, 0},
+{ 3, s_2_24, 0, 1, 0},
+{ 4, s_2_25, -1, 1, 0},
+{ 5, s_2_26, -1, 1, 0},
+{ 5, s_2_27, 0, 1, 0},
+{ 3, s_2_28, 0, 1, 0},
+{ 3, s_2_29, 0, 1, 0},
+{ 4, s_2_30, 0, 1, 0},
+{ 4, s_2_31, 0, 1, 0},
+{ 4, s_2_32, 0, 1, 0},
+{ 3, s_2_33, 0, 1, 0},
+{ 3, s_2_34, 0, 1, 0},
+{ 3, s_2_35, 0, 1, 0},
+{ 4, s_2_36, 0, 1, 0},
+{ 7, s_2_37, -1, 1, 0},
+{ 7, s_2_38, -2, 1, 0},
+{ 3, s_2_39, 0, 1, 0},
+{ 5, s_2_40, -1, 1, 0},
+{ 3, s_2_41, 0, 1, 0},
+{ 5, s_2_42, 0, 3, 0},
+{ 2, s_2_43, 0, 4, 0},
+{ 5, s_2_44, -1, 1, 0},
+{ 3, s_2_45, 0, 1, 0},
+{ 3, s_2_46, 0, 1, 0},
+{ 2, s_2_47, 0, 1, 0},
+{ 4, s_2_48, 0, 1, 0},
+{ 3, s_2_49, 0, 1, 0},
+{ 4, s_2_50, -1, 1, 0},
+{ 4, s_2_51, -2, 1, 0},
+{ 4, s_2_52, 0, 1, 0},
+{ 7, s_2_53, -1, 1, 0},
+{ 7, s_2_54, -2, 1, 0},
+{ 6, s_2_55, -3, 1, 0},
+{ 4, s_2_56, 0, 1, 0},
+{ 4, s_2_57, 0, 1, 0},
+{ 4, s_2_58, 0, 1, 0},
+{ 3, s_2_59, 0, 1, 0},
+{ 3, s_2_60, 0, 1, 0},
+{ 4, s_2_61, 0, 3, 0},
+{ 3, s_2_62, 0, 1, 0},
+{ 4, s_2_63, 0, 1, 0},
+{ 2, s_2_64, 0, 1, 0},
+{ 2, s_2_65, 0, 1, 0},
+{ 3, s_2_66, 0, 1, 0},
+{ 3, s_2_67, 0, 1, 0},
+{ 4, s_2_68, 0, 1, 0},
+{ 4, s_2_69, 0, 1, 0},
+{ 5, s_2_70, 0, 1, 0},
+{ 5, s_2_71, 0, 1, 0},
+{ 5, s_2_72, 0, 1, 0},
+{ 5, s_2_73, 0, 1, 0},
+{ 7, s_2_74, -1, 5, 0},
+{ 4, s_2_75, 0, 1, 0},
+{ 5, s_2_76, 0, 1, 0},
+{ 2, s_2_77, 0, 1, 0},
+{ 6, s_2_78, -1, 1, 0},
+{ 4, s_2_79, -2, 1, 0},
+{ 4, s_2_80, -3, 1, 0},
+{ 4, s_2_81, -4, 1, 0},
+{ 5, s_2_82, -5, 1, 0},
+{ 3, s_2_83, 0, 1, 0},
+{ 2, s_2_84, 0, 1, 0},
+{ 3, s_2_85, -1, 1, 0},
+{ 3, s_2_86, 0, 1, 0},
+{ 5, s_2_87, 0, 1, 0},
+{ 3, s_2_88, 0, 4, 0},
+{ 6, s_2_89, -1, 3, 0},
+{ 3, s_2_90, 0, 1, 0},
+{ 4, s_2_91, 0, 1, 0},
+{ 4, s_2_92, 0, 2, 0},
+{ 6, s_2_93, 0, 1, 0},
+{ 6, s_2_94, 0, 1, 0},
+{ 6, s_2_95, 0, 1, 0},
+{ 5, s_2_96, 0, 1, 0},
+{ 6, s_2_97, 0, 3, 0},
+{ 5, s_2_98, 0, 1, 0},
+{ 5, s_2_99, 0, 1, 0},
+{ 5, s_2_100, 0, 1, 0},
+{ 5, s_2_101, 0, 1, 0},
+{ 7, s_2_102, 0, 1, 0},
+{ 4, s_2_103, 0, 1, 0},
+{ 5, s_2_104, -1, 1, 0},
+{ 5, s_2_105, -2, 1, 0},
+{ 4, s_2_106, 0, 1, 0},
+{ 7, s_2_107, -1, 1, 0},
+{ 9, s_2_108, -1, 5, 0},
+{ 6, s_2_109, 0, 1, 0},
+{ 5, s_2_110, 0, 1, 0},
+{ 8, s_2_111, -1, 1, 0},
+{ 4, s_2_112, 0, 1, 0},
+{ 4, s_2_113, 0, 1, 0},
+{ 4, s_2_114, 0, 1, 0},
+{ 5, s_2_115, -1, 1, 0},
+{ 6, s_2_116, -1, 1, 0},
+{ 5, s_2_117, 0, 1, 0},
+{ 4, s_2_118, 0, 1, 0},
+{ 4, s_2_119, 0, 1, 0},
+{ 5, s_2_120, 0, 1, 0},
+{ 5, s_2_121, 0, 1, 0},
+{ 4, s_2_122, 0, 1, 0},
+{ 4, s_2_123, 0, 1, 0},
+{ 5, s_2_124, 0, 1, 0},
+{ 8, s_2_125, -1, 1, 0},
+{ 8, s_2_126, -2, 1, 0},
+{ 5, s_2_127, 0, 4, 0},
+{ 8, s_2_128, -1, 3, 0},
+{ 4, s_2_129, 0, 1, 0},
+{ 6, s_2_130, -1, 1, 0},
+{ 6, s_2_131, 0, 3, 0},
+{ 9, s_2_132, 0, 1, 0},
+{ 4, s_2_133, 0, 1, 0},
+{ 4, s_2_134, 0, 1, 0},
+{ 5, s_2_135, 0, 3, 0},
+{ 4, s_2_136, 0, 1, 0},
+{ 5, s_2_137, 0, 1, 0},
+{ 2, s_2_138, 0, 1, 0},
+{ 3, s_2_139, -1, 1, 0},
+{ 4, s_2_140, -2, 1, 0},
+{ 3, s_2_141, 0, 1, 0},
+{ 6, s_2_142, -1, 1, 0},
+{ 8, s_2_143, -1, 5, 0},
+{ 4, s_2_144, 0, 1, 0},
+{ 5, s_2_145, -1, 1, 0},
+{ 6, s_2_146, -1, 2, 0},
+{ 4, s_2_147, 0, 1, 0},
+{ 4, s_2_148, 0, 1, 0},
+{ 5, s_2_149, 0, 1, 0},
+{ 5, s_2_150, 0, 1, 0},
+{ 3, s_2_151, 0, 1, 0},
+{ 3, s_2_152, 0, 1, 0},
+{ 4, s_2_153, -1, 1, 0},
+{ 5, s_2_154, -1, 1, 0},
+{ 5, s_2_155, -2, 1, 0},
+{ 3, s_2_156, 0, 1, 0},
+{ 5, s_2_157, -1, 1, 0},
+{ 8, s_2_158, -1, 1, 0},
+{ 7, s_2_159, -2, 1, 0},
+{ 9, s_2_160, -1, 1, 0},
+{ 5, s_2_161, -5, 1, 0},
+{ 3, s_2_162, 0, 1, 0},
+{ 4, s_2_163, 0, 1, 0},
+{ 4, s_2_164, 0, 1, 0},
+{ 5, s_2_165, -1, 1, 0},
+{ 6, s_2_166, -1, 1, 0},
+{ 3, s_2_167, 0, 1, 0},
+{ 3, s_2_168, 0, 1, 0},
+{ 3, s_2_169, 0, 1, 0},
+{ 5, s_2_170, -1, 1, 0},
+{ 5, s_2_171, -2, 1, 0},
+{ 2, s_2_172, 0, 1, 0},
+{ 2, s_2_173, 0, 1, 0},
+{ 2, s_2_174, 0, 1, 0},
+{ 3, s_2_175, -1, 1, 0},
+{ 2, s_2_176, 0, 1, 0},
+{ 4, s_2_177, 0, 1, 0},
+{ 7, s_2_178, -1, 1, 0},
+{ 6, s_2_179, -2, 1, 0},
+{ 8, s_2_180, -1, 1, 0},
+{ 4, s_2_181, 0, 1, 0},
+{ 2, s_2_182, 0, 1, 0},
+{ 3, s_2_183, 0, 1, 0},
+{ 3, s_2_184, 0, 1, 0},
+{ 4, s_2_185, -1, 1, 0},
+{ 4, s_2_186, -2, 1, 0},
+{ 5, s_2_187, -1, 1, 0},
+{ 7, s_2_188, -1, 1, 0},
+{ 2, s_2_189, 0, 1, 0},
+{ 5, s_2_190, 0, 1, 0},
+{ 5, s_2_191, 0, 1, 0},
+{ 5, s_2_192, 0, 1, 0},
+{ 4, s_2_193, 0, 1, 0},
+{ 5, s_2_194, 0, 1, 0},
+{ 4, s_2_195, 0, 1, 0},
+{ 1, s_2_196, 0, 1, 0},
+{ 2, s_2_197, -1, 1, 0},
+{ 3, s_2_198, -1, 1, 0},
+{ 4, s_2_199, -1, 1, 0}
 };
 
 static const symbol s_3_0[3] = { 'a', 'b', 'a' };
@@ -830,292 +837,290 @@ static const symbol s_3_279[3] = { 'i', 'r', 0xE9 };
 static const symbol s_3_280[1] = { 0xED };
 static const symbol s_3_281[2] = { 'i', 0xEF };
 static const symbol s_3_282[2] = { 'i', 0xF3 };
-
-static const struct among a_3[283] =
-{
-{ 3, s_3_0, -1, 1, 0},
-{ 4, s_3_1, -1, 1, 0},
-{ 4, s_3_2, -1, 1, 0},
-{ 4, s_3_3, -1, 1, 0},
-{ 3, s_3_4, -1, 1, 0},
-{ 3, s_3_5, -1, 1, 0},
-{ 3, s_3_6, -1, 1, 0},
-{ 3, s_3_7, -1, 1, 0},
-{ 2, s_3_8, -1, 1, 0},
-{ 4, s_3_9, 8, 1, 0},
-{ 4, s_3_10, 8, 1, 0},
-{ 3, s_3_11, -1, 1, 0},
-{ 4, s_3_12, -1, 1, 0},
-{ 3, s_3_13, -1, 1, 0},
-{ 5, s_3_14, -1, 1, 0},
-{ 3, s_3_15, -1, 1, 0},
-{ 3, s_3_16, -1, 1, 0},
-{ 3, s_3_17, -1, 1, 0},
-{ 4, s_3_18, -1, 1, 0},
-{ 2, s_3_19, -1, 1, 0},
-{ 4, s_3_20, 19, 1, 0},
-{ 4, s_3_21, 19, 1, 0},
-{ 4, s_3_22, 19, 1, 0},
-{ 2, s_3_23, -1, 1, 0},
-{ 3, s_3_24, -1, 1, 0},
-{ 3, s_3_25, -1, 1, 0},
-{ 2, s_3_26, -1, 1, 0},
-{ 2, s_3_27, -1, 1, 0},
-{ 2, s_3_28, -1, 1, 0},
-{ 2, s_3_29, -1, 1, 0},
-{ 2, s_3_30, -1, 1, 0},
-{ 3, s_3_31, 30, 1, 0},
-{ 3, s_3_32, -1, 1, 0},
-{ 4, s_3_33, -1, 1, 0},
-{ 4, s_3_34, -1, 1, 0},
-{ 4, s_3_35, -1, 1, 0},
-{ 2, s_3_36, -1, 1, 0},
-{ 3, s_3_37, -1, 1, 0},
-{ 5, s_3_38, -1, 1, 0},
-{ 4, s_3_39, -1, 1, 0},
-{ 4, s_3_40, -1, 1, 0},
-{ 2, s_3_41, -1, 1, 0},
-{ 2, s_3_42, -1, 1, 0},
-{ 4, s_3_43, 42, 1, 0},
-{ 4, s_3_44, 42, 1, 0},
-{ 4, s_3_45, 42, 1, 0},
-{ 4, s_3_46, 42, 1, 0},
-{ 5, s_3_47, 42, 1, 0},
-{ 5, s_3_48, 42, 1, 0},
-{ 5, s_3_49, 42, 1, 0},
-{ 5, s_3_50, 42, 1, 0},
-{ 4, s_3_51, 42, 1, 0},
-{ 4, s_3_52, 42, 1, 0},
-{ 4, s_3_53, 42, 1, 0},
-{ 5, s_3_54, 42, 1, 0},
-{ 3, s_3_55, 42, 1, 0},
-{ 5, s_3_56, 55, 1, 0},
-{ 5, s_3_57, 55, 1, 0},
-{ 5, s_3_58, -1, 1, 0},
-{ 5, s_3_59, -1, 1, 0},
-{ 5, s_3_60, -1, 1, 0},
-{ 5, s_3_61, -1, 1, 0},
-{ 5, s_3_62, -1, 1, 0},
-{ 5, s_3_63, -1, 1, 0},
-{ 5, s_3_64, -1, 1, 0},
-{ 2, s_3_65, -1, 1, 0},
-{ 2, s_3_66, -1, 1, 0},
-{ 4, s_3_67, 66, 1, 0},
-{ 5, s_3_68, 66, 1, 0},
-{ 4, s_3_69, 66, 1, 0},
-{ 5, s_3_70, 66, 1, 0},
-{ 4, s_3_71, 66, 1, 0},
-{ 3, s_3_72, 66, 1, 0},
-{ 5, s_3_73, 72, 1, 0},
-{ 5, s_3_74, 72, 1, 0},
-{ 5, s_3_75, 72, 1, 0},
-{ 2, s_3_76, -1, 1, 0},
-{ 3, s_3_77, 76, 1, 0},
-{ 5, s_3_78, 77, 1, 0},
-{ 5, s_3_79, 77, 1, 0},
-{ 4, s_3_80, 76, 1, 0},
-{ 4, s_3_81, 76, 1, 0},
-{ 4, s_3_82, 76, 1, 0},
-{ 4, s_3_83, 76, 1, 0},
-{ 4, s_3_84, 76, 1, 0},
-{ 4, s_3_85, 76, 1, 0},
-{ 5, s_3_86, 76, 1, 0},
-{ 5, s_3_87, 76, 1, 0},
-{ 5, s_3_88, 76, 1, 0},
-{ 5, s_3_89, 76, 1, 0},
-{ 5, s_3_90, 76, 1, 0},
-{ 5, s_3_91, 76, 1, 0},
-{ 6, s_3_92, 76, 1, 0},
-{ 6, s_3_93, 76, 1, 0},
-{ 6, s_3_94, 76, 1, 0},
-{ 4, s_3_95, 76, 1, 0},
-{ 4, s_3_96, 76, 1, 0},
-{ 5, s_3_97, 96, 1, 0},
-{ 4, s_3_98, 76, 1, 0},
-{ 3, s_3_99, 76, 1, 0},
-{ 2, s_3_100, -1, 1, 0},
-{ 4, s_3_101, 100, 1, 0},
-{ 3, s_3_102, 100, 1, 0},
-{ 4, s_3_103, 102, 1, 0},
-{ 5, s_3_104, 102, 1, 0},
-{ 5, s_3_105, 102, 1, 0},
-{ 5, s_3_106, 102, 1, 0},
-{ 5, s_3_107, 102, 1, 0},
-{ 6, s_3_108, 100, 1, 0},
-{ 5, s_3_109, 100, 1, 0},
-{ 4, s_3_110, -1, 1, 0},
-{ 5, s_3_111, -1, 1, 0},
-{ 4, s_3_112, -1, 1, 0},
-{ 4, s_3_113, -1, 1, 0},
-{ 4, s_3_114, -1, 1, 0},
-{ 3, s_3_115, -1, 1, 0},
-{ 3, s_3_116, -1, 1, 0},
-{ 3, s_3_117, -1, 1, 0},
-{ 4, s_3_118, -1, 2, 0},
-{ 5, s_3_119, -1, 1, 0},
-{ 2, s_3_120, -1, 1, 0},
-{ 3, s_3_121, -1, 1, 0},
-{ 4, s_3_122, 121, 1, 0},
-{ 3, s_3_123, -1, 1, 0},
-{ 4, s_3_124, -1, 1, 0},
-{ 2, s_3_125, -1, 1, 0},
-{ 4, s_3_126, 125, 1, 0},
-{ 2, s_3_127, -1, 1, 0},
-{ 5, s_3_128, 127, 1, 0},
-{ 2, s_3_129, -1, 1, 0},
-{ 4, s_3_130, -1, 1, 0},
-{ 2, s_3_131, -1, 1, 0},
-{ 4, s_3_132, 131, 1, 0},
-{ 4, s_3_133, 131, 1, 0},
-{ 4, s_3_134, 131, 1, 0},
-{ 4, s_3_135, 131, 1, 0},
-{ 5, s_3_136, 131, 1, 0},
-{ 3, s_3_137, 131, 1, 0},
-{ 5, s_3_138, 137, 1, 0},
-{ 5, s_3_139, 137, 1, 0},
-{ 5, s_3_140, 137, 1, 0},
-{ 3, s_3_141, -1, 1, 0},
-{ 2, s_3_142, -1, 1, 0},
-{ 4, s_3_143, 142, 1, 0},
-{ 4, s_3_144, 142, 1, 0},
-{ 4, s_3_145, 142, 1, 0},
-{ 4, s_3_146, 142, 1, 0},
-{ 5, s_3_147, 142, 1, 0},
-{ 3, s_3_148, 142, 1, 0},
-{ 5, s_3_149, 148, 1, 0},
-{ 5, s_3_150, 148, 1, 0},
-{ 4, s_3_151, 142, 1, 0},
-{ 4, s_3_152, 142, 1, 0},
-{ 6, s_3_153, 142, 1, 0},
-{ 4, s_3_154, 142, 1, 0},
-{ 4, s_3_155, 142, 1, 0},
-{ 5, s_3_156, 142, 1, 0},
-{ 5, s_3_157, 142, 1, 0},
-{ 5, s_3_158, 142, 1, 0},
-{ 5, s_3_159, 142, 1, 0},
-{ 5, s_3_160, 142, 1, 0},
-{ 4, s_3_161, 142, 1, 0},
-{ 6, s_3_162, 161, 1, 0},
-{ 6, s_3_163, 161, 1, 0},
-{ 4, s_3_164, 142, 1, 0},
-{ 4, s_3_165, 142, 1, 0},
-{ 5, s_3_166, 165, 1, 0},
-{ 4, s_3_167, 142, 1, 0},
-{ 3, s_3_168, 142, 1, 0},
-{ 5, s_3_169, -1, 1, 0},
-{ 5, s_3_170, -1, 1, 0},
-{ 6, s_3_171, -1, 1, 0},
-{ 4, s_3_172, -1, 1, 0},
-{ 6, s_3_173, 172, 1, 0},
-{ 6, s_3_174, 172, 1, 0},
-{ 6, s_3_175, 172, 1, 0},
-{ 5, s_3_176, -1, 1, 0},
-{ 6, s_3_177, -1, 1, 0},
-{ 6, s_3_178, -1, 1, 0},
-{ 6, s_3_179, -1, 1, 0},
-{ 4, s_3_180, -1, 1, 0},
-{ 3, s_3_181, -1, 1, 0},
-{ 4, s_3_182, 181, 1, 0},
-{ 5, s_3_183, 181, 1, 0},
-{ 5, s_3_184, 181, 1, 0},
-{ 5, s_3_185, 181, 1, 0},
-{ 5, s_3_186, 181, 1, 0},
-{ 6, s_3_187, -1, 1, 0},
-{ 5, s_3_188, -1, 1, 0},
-{ 5, s_3_189, -1, 1, 0},
-{ 3, s_3_190, -1, 1, 0},
-{ 5, s_3_191, -1, 1, 0},
-{ 5, s_3_192, -1, 1, 0},
-{ 5, s_3_193, -1, 1, 0},
-{ 3, s_3_194, -1, 1, 0},
-{ 4, s_3_195, -1, 1, 0},
-{ 4, s_3_196, -1, 1, 0},
-{ 4, s_3_197, -1, 1, 0},
-{ 6, s_3_198, 197, 1, 0},
-{ 6, s_3_199, 197, 1, 0},
-{ 7, s_3_200, 197, 1, 0},
-{ 5, s_3_201, 197, 1, 0},
-{ 7, s_3_202, 201, 1, 0},
-{ 7, s_3_203, 201, 1, 0},
-{ 7, s_3_204, 201, 1, 0},
-{ 6, s_3_205, -1, 1, 0},
-{ 6, s_3_206, -1, 1, 0},
-{ 6, s_3_207, -1, 1, 0},
-{ 6, s_3_208, -1, 1, 0},
-{ 7, s_3_209, -1, 1, 0},
-{ 4, s_3_210, -1, 1, 0},
-{ 5, s_3_211, -1, 1, 0},
-{ 3, s_3_212, -1, 1, 0},
-{ 5, s_3_213, 212, 1, 0},
-{ 3, s_3_214, -1, 1, 0},
-{ 3, s_3_215, -1, 1, 0},
-{ 3, s_3_216, -1, 1, 0},
-{ 4, s_3_217, -1, 1, 0},
-{ 2, s_3_218, -1, 1, 0},
-{ 4, s_3_219, 218, 1, 0},
-{ 4, s_3_220, 218, 1, 0},
-{ 4, s_3_221, -1, 1, 0},
-{ 4, s_3_222, -1, 1, 0},
-{ 4, s_3_223, -1, 1, 0},
-{ 2, s_3_224, -1, 1, 0},
-{ 4, s_3_225, 224, 1, 0},
-{ 2, s_3_226, -1, 1, 0},
-{ 3, s_3_227, -1, 1, 0},
-{ 2, s_3_228, -1, 1, 0},
-{ 2, s_3_229, -1, 1, 0},
-{ 3, s_3_230, -1, 1, 0},
-{ 3, s_3_231, -1, 1, 0},
-{ 3, s_3_232, -1, 1, 0},
-{ 2, s_3_233, -1, 1, 0},
-{ 2, s_3_234, -1, 1, 0},
-{ 2, s_3_235, -1, 1, 0},
-{ 4, s_3_236, 235, 1, 0},
-{ 3, s_3_237, -1, 1, 0},
-{ 4, s_3_238, -1, 1, 0},
-{ 4, s_3_239, -1, 1, 0},
-{ 4, s_3_240, -1, 1, 0},
-{ 4, s_3_241, -1, 1, 0},
-{ 4, s_3_242, -1, 1, 0},
-{ 5, s_3_243, -1, 1, 0},
-{ 5, s_3_244, -1, 1, 0},
-{ 7, s_3_245, 244, 1, 0},
-{ 5, s_3_246, -1, 1, 0},
-{ 5, s_3_247, -1, 1, 0},
-{ 5, s_3_248, -1, 1, 0},
-{ 5, s_3_249, -1, 1, 0},
-{ 4, s_3_250, -1, 1, 0},
-{ 4, s_3_251, -1, 1, 0},
-{ 5, s_3_252, -1, 1, 0},
-{ 3, s_3_253, -1, 1, 0},
-{ 5, s_3_254, 253, 1, 0},
-{ 3, s_3_255, -1, 1, 0},
-{ 5, s_3_256, 255, 1, 0},
-{ 5, s_3_257, 255, 1, 0},
-{ 5, s_3_258, -1, 1, 0},
-{ 5, s_3_259, -1, 1, 0},
-{ 5, s_3_260, -1, 1, 0},
-{ 5, s_3_261, -1, 1, 0},
-{ 5, s_3_262, -1, 1, 0},
-{ 5, s_3_263, -1, 1, 0},
-{ 2, s_3_264, -1, 1, 0},
-{ 2, s_3_265, -1, 1, 0},
-{ 3, s_3_266, 265, 1, 0},
-{ 2, s_3_267, -1, 1, 0},
-{ 3, s_3_268, -1, 1, 0},
-{ 2, s_3_269, -1, 1, 0},
-{ 3, s_3_270, -1, 1, 0},
-{ 3, s_3_271, -1, 1, 0},
-{ 4, s_3_272, -1, 1, 0},
-{ 3, s_3_273, -1, 1, 0},
-{ 3, s_3_274, -1, 1, 0},
-{ 3, s_3_275, -1, 1, 0},
-{ 3, s_3_276, -1, 1, 0},
-{ 3, s_3_277, -1, 1, 0},
-{ 3, s_3_278, -1, 1, 0},
-{ 3, s_3_279, -1, 1, 0},
-{ 1, s_3_280, -1, 1, 0},
-{ 2, s_3_281, -1, 1, 0},
-{ 2, s_3_282, -1, 1, 0}
+static const struct among a_3[283] = {
+{ 3, s_3_0, 0, 1, 0},
+{ 4, s_3_1, 0, 1, 0},
+{ 4, s_3_2, 0, 1, 0},
+{ 4, s_3_3, 0, 1, 0},
+{ 3, s_3_4, 0, 1, 0},
+{ 3, s_3_5, 0, 1, 0},
+{ 3, s_3_6, 0, 1, 0},
+{ 3, s_3_7, 0, 1, 0},
+{ 2, s_3_8, 0, 1, 0},
+{ 4, s_3_9, -1, 1, 0},
+{ 4, s_3_10, -2, 1, 0},
+{ 3, s_3_11, 0, 1, 0},
+{ 4, s_3_12, 0, 1, 0},
+{ 3, s_3_13, 0, 1, 0},
+{ 5, s_3_14, 0, 1, 0},
+{ 3, s_3_15, 0, 1, 0},
+{ 3, s_3_16, 0, 1, 0},
+{ 3, s_3_17, 0, 1, 0},
+{ 4, s_3_18, 0, 1, 0},
+{ 2, s_3_19, 0, 1, 0},
+{ 4, s_3_20, -1, 1, 0},
+{ 4, s_3_21, -2, 1, 0},
+{ 4, s_3_22, -3, 1, 0},
+{ 2, s_3_23, 0, 1, 0},
+{ 3, s_3_24, 0, 1, 0},
+{ 3, s_3_25, 0, 1, 0},
+{ 2, s_3_26, 0, 1, 0},
+{ 2, s_3_27, 0, 1, 0},
+{ 2, s_3_28, 0, 1, 0},
+{ 2, s_3_29, 0, 1, 0},
+{ 2, s_3_30, 0, 1, 0},
+{ 3, s_3_31, -1, 1, 0},
+{ 3, s_3_32, 0, 1, 0},
+{ 4, s_3_33, 0, 1, 0},
+{ 4, s_3_34, 0, 1, 0},
+{ 4, s_3_35, 0, 1, 0},
+{ 2, s_3_36, 0, 1, 0},
+{ 3, s_3_37, 0, 1, 0},
+{ 5, s_3_38, 0, 1, 0},
+{ 4, s_3_39, 0, 1, 0},
+{ 4, s_3_40, 0, 1, 0},
+{ 2, s_3_41, 0, 1, 0},
+{ 2, s_3_42, 0, 1, 0},
+{ 4, s_3_43, -1, 1, 0},
+{ 4, s_3_44, -2, 1, 0},
+{ 4, s_3_45, -3, 1, 0},
+{ 4, s_3_46, -4, 1, 0},
+{ 5, s_3_47, -5, 1, 0},
+{ 5, s_3_48, -6, 1, 0},
+{ 5, s_3_49, -7, 1, 0},
+{ 5, s_3_50, -8, 1, 0},
+{ 4, s_3_51, -9, 1, 0},
+{ 4, s_3_52, -10, 1, 0},
+{ 4, s_3_53, -11, 1, 0},
+{ 5, s_3_54, -12, 1, 0},
+{ 3, s_3_55, -13, 1, 0},
+{ 5, s_3_56, -1, 1, 0},
+{ 5, s_3_57, -2, 1, 0},
+{ 5, s_3_58, 0, 1, 0},
+{ 5, s_3_59, 0, 1, 0},
+{ 5, s_3_60, 0, 1, 0},
+{ 5, s_3_61, 0, 1, 0},
+{ 5, s_3_62, 0, 1, 0},
+{ 5, s_3_63, 0, 1, 0},
+{ 5, s_3_64, 0, 1, 0},
+{ 2, s_3_65, 0, 1, 0},
+{ 2, s_3_66, 0, 1, 0},
+{ 4, s_3_67, -1, 1, 0},
+{ 5, s_3_68, -2, 1, 0},
+{ 4, s_3_69, -3, 1, 0},
+{ 5, s_3_70, -4, 1, 0},
+{ 4, s_3_71, -5, 1, 0},
+{ 3, s_3_72, -6, 1, 0},
+{ 5, s_3_73, -1, 1, 0},
+{ 5, s_3_74, -2, 1, 0},
+{ 5, s_3_75, -3, 1, 0},
+{ 2, s_3_76, 0, 1, 0},
+{ 3, s_3_77, -1, 1, 0},
+{ 5, s_3_78, -1, 1, 0},
+{ 5, s_3_79, -2, 1, 0},
+{ 4, s_3_80, -4, 1, 0},
+{ 4, s_3_81, -5, 1, 0},
+{ 4, s_3_82, -6, 1, 0},
+{ 4, s_3_83, -7, 1, 0},
+{ 4, s_3_84, -8, 1, 0},
+{ 4, s_3_85, -9, 1, 0},
+{ 5, s_3_86, -10, 1, 0},
+{ 5, s_3_87, -11, 1, 0},
+{ 5, s_3_88, -12, 1, 0},
+{ 5, s_3_89, -13, 1, 0},
+{ 5, s_3_90, -14, 1, 0},
+{ 5, s_3_91, -15, 1, 0},
+{ 6, s_3_92, -16, 1, 0},
+{ 6, s_3_93, -17, 1, 0},
+{ 6, s_3_94, -18, 1, 0},
+{ 4, s_3_95, -19, 1, 0},
+{ 4, s_3_96, -20, 1, 0},
+{ 5, s_3_97, -1, 1, 0},
+{ 4, s_3_98, -22, 1, 0},
+{ 3, s_3_99, -23, 1, 0},
+{ 2, s_3_100, 0, 1, 0},
+{ 4, s_3_101, -1, 1, 0},
+{ 3, s_3_102, -2, 1, 0},
+{ 4, s_3_103, -1, 1, 0},
+{ 5, s_3_104, -2, 1, 0},
+{ 5, s_3_105, -3, 1, 0},
+{ 5, s_3_106, -4, 1, 0},
+{ 5, s_3_107, -5, 1, 0},
+{ 6, s_3_108, -8, 1, 0},
+{ 5, s_3_109, -9, 1, 0},
+{ 4, s_3_110, 0, 1, 0},
+{ 5, s_3_111, 0, 1, 0},
+{ 4, s_3_112, 0, 1, 0},
+{ 4, s_3_113, 0, 1, 0},
+{ 4, s_3_114, 0, 1, 0},
+{ 3, s_3_115, 0, 1, 0},
+{ 3, s_3_116, 0, 1, 0},
+{ 3, s_3_117, 0, 1, 0},
+{ 4, s_3_118, 0, 2, 0},
+{ 5, s_3_119, 0, 1, 0},
+{ 2, s_3_120, 0, 1, 0},
+{ 3, s_3_121, 0, 1, 0},
+{ 4, s_3_122, -1, 1, 0},
+{ 3, s_3_123, 0, 1, 0},
+{ 4, s_3_124, 0, 1, 0},
+{ 2, s_3_125, 0, 1, 0},
+{ 4, s_3_126, -1, 1, 0},
+{ 2, s_3_127, 0, 1, 0},
+{ 5, s_3_128, -1, 1, 0},
+{ 2, s_3_129, 0, 1, 0},
+{ 4, s_3_130, 0, 1, 0},
+{ 2, s_3_131, 0, 1, 0},
+{ 4, s_3_132, -1, 1, 0},
+{ 4, s_3_133, -2, 1, 0},
+{ 4, s_3_134, -3, 1, 0},
+{ 4, s_3_135, -4, 1, 0},
+{ 5, s_3_136, -5, 1, 0},
+{ 3, s_3_137, -6, 1, 0},
+{ 5, s_3_138, -1, 1, 0},
+{ 5, s_3_139, -2, 1, 0},
+{ 5, s_3_140, -3, 1, 0},
+{ 3, s_3_141, 0, 1, 0},
+{ 2, s_3_142, 0, 1, 0},
+{ 4, s_3_143, -1, 1, 0},
+{ 4, s_3_144, -2, 1, 0},
+{ 4, s_3_145, -3, 1, 0},
+{ 4, s_3_146, -4, 1, 0},
+{ 5, s_3_147, -5, 1, 0},
+{ 3, s_3_148, -6, 1, 0},
+{ 5, s_3_149, -1, 1, 0},
+{ 5, s_3_150, -2, 1, 0},
+{ 4, s_3_151, -9, 1, 0},
+{ 4, s_3_152, -10, 1, 0},
+{ 6, s_3_153, -11, 1, 0},
+{ 4, s_3_154, -12, 1, 0},
+{ 4, s_3_155, -13, 1, 0},
+{ 5, s_3_156, -14, 1, 0},
+{ 5, s_3_157, -15, 1, 0},
+{ 5, s_3_158, -16, 1, 0},
+{ 5, s_3_159, -17, 1, 0},
+{ 5, s_3_160, -18, 1, 0},
+{ 4, s_3_161, -19, 1, 0},
+{ 6, s_3_162, -1, 1, 0},
+{ 6, s_3_163, -2, 1, 0},
+{ 4, s_3_164, -22, 1, 0},
+{ 4, s_3_165, -23, 1, 0},
+{ 5, s_3_166, -1, 1, 0},
+{ 4, s_3_167, -25, 1, 0},
+{ 3, s_3_168, -26, 1, 0},
+{ 5, s_3_169, 0, 1, 0},
+{ 5, s_3_170, 0, 1, 0},
+{ 6, s_3_171, 0, 1, 0},
+{ 4, s_3_172, 0, 1, 0},
+{ 6, s_3_173, -1, 1, 0},
+{ 6, s_3_174, -2, 1, 0},
+{ 6, s_3_175, -3, 1, 0},
+{ 5, s_3_176, 0, 1, 0},
+{ 6, s_3_177, 0, 1, 0},
+{ 6, s_3_178, 0, 1, 0},
+{ 6, s_3_179, 0, 1, 0},
+{ 4, s_3_180, 0, 1, 0},
+{ 3, s_3_181, 0, 1, 0},
+{ 4, s_3_182, -1, 1, 0},
+{ 5, s_3_183, -2, 1, 0},
+{ 5, s_3_184, -3, 1, 0},
+{ 5, s_3_185, -4, 1, 0},
+{ 5, s_3_186, -5, 1, 0},
+{ 6, s_3_187, 0, 1, 0},
+{ 5, s_3_188, 0, 1, 0},
+{ 5, s_3_189, 0, 1, 0},
+{ 3, s_3_190, 0, 1, 0},
+{ 5, s_3_191, 0, 1, 0},
+{ 5, s_3_192, 0, 1, 0},
+{ 5, s_3_193, 0, 1, 0},
+{ 3, s_3_194, 0, 1, 0},
+{ 4, s_3_195, 0, 1, 0},
+{ 4, s_3_196, 0, 1, 0},
+{ 4, s_3_197, 0, 1, 0},
+{ 6, s_3_198, -1, 1, 0},
+{ 6, s_3_199, -2, 1, 0},
+{ 7, s_3_200, -3, 1, 0},
+{ 5, s_3_201, -4, 1, 0},
+{ 7, s_3_202, -1, 1, 0},
+{ 7, s_3_203, -2, 1, 0},
+{ 7, s_3_204, -3, 1, 0},
+{ 6, s_3_205, 0, 1, 0},
+{ 6, s_3_206, 0, 1, 0},
+{ 6, s_3_207, 0, 1, 0},
+{ 6, s_3_208, 0, 1, 0},
+{ 7, s_3_209, 0, 1, 0},
+{ 4, s_3_210, 0, 1, 0},
+{ 5, s_3_211, 0, 1, 0},
+{ 3, s_3_212, 0, 1, 0},
+{ 5, s_3_213, -1, 1, 0},
+{ 3, s_3_214, 0, 1, 0},
+{ 3, s_3_215, 0, 1, 0},
+{ 3, s_3_216, 0, 1, 0},
+{ 4, s_3_217, 0, 1, 0},
+{ 2, s_3_218, 0, 1, 0},
+{ 4, s_3_219, -1, 1, 0},
+{ 4, s_3_220, -2, 1, 0},
+{ 4, s_3_221, 0, 1, 0},
+{ 4, s_3_222, 0, 1, 0},
+{ 4, s_3_223, 0, 1, 0},
+{ 2, s_3_224, 0, 1, 0},
+{ 4, s_3_225, -1, 1, 0},
+{ 2, s_3_226, 0, 1, 0},
+{ 3, s_3_227, 0, 1, 0},
+{ 2, s_3_228, 0, 1, 0},
+{ 2, s_3_229, 0, 1, 0},
+{ 3, s_3_230, 0, 1, 0},
+{ 3, s_3_231, 0, 1, 0},
+{ 3, s_3_232, 0, 1, 0},
+{ 2, s_3_233, 0, 1, 0},
+{ 2, s_3_234, 0, 1, 0},
+{ 2, s_3_235, 0, 1, 0},
+{ 4, s_3_236, -1, 1, 0},
+{ 3, s_3_237, 0, 1, 0},
+{ 4, s_3_238, 0, 1, 0},
+{ 4, s_3_239, 0, 1, 0},
+{ 4, s_3_240, 0, 1, 0},
+{ 4, s_3_241, 0, 1, 0},
+{ 4, s_3_242, 0, 1, 0},
+{ 5, s_3_243, 0, 1, 0},
+{ 5, s_3_244, 0, 1, 0},
+{ 7, s_3_245, -1, 1, 0},
+{ 5, s_3_246, 0, 1, 0},
+{ 5, s_3_247, 0, 1, 0},
+{ 5, s_3_248, 0, 1, 0},
+{ 5, s_3_249, 0, 1, 0},
+{ 4, s_3_250, 0, 1, 0},
+{ 4, s_3_251, 0, 1, 0},
+{ 5, s_3_252, 0, 1, 0},
+{ 3, s_3_253, 0, 1, 0},
+{ 5, s_3_254, -1, 1, 0},
+{ 3, s_3_255, 0, 1, 0},
+{ 5, s_3_256, -1, 1, 0},
+{ 5, s_3_257, -2, 1, 0},
+{ 5, s_3_258, 0, 1, 0},
+{ 5, s_3_259, 0, 1, 0},
+{ 5, s_3_260, 0, 1, 0},
+{ 5, s_3_261, 0, 1, 0},
+{ 5, s_3_262, 0, 1, 0},
+{ 5, s_3_263, 0, 1, 0},
+{ 2, s_3_264, 0, 1, 0},
+{ 2, s_3_265, 0, 1, 0},
+{ 3, s_3_266, -1, 1, 0},
+{ 2, s_3_267, 0, 1, 0},
+{ 3, s_3_268, 0, 1, 0},
+{ 2, s_3_269, 0, 1, 0},
+{ 3, s_3_270, 0, 1, 0},
+{ 3, s_3_271, 0, 1, 0},
+{ 4, s_3_272, 0, 1, 0},
+{ 3, s_3_273, 0, 1, 0},
+{ 3, s_3_274, 0, 1, 0},
+{ 3, s_3_275, 0, 1, 0},
+{ 3, s_3_276, 0, 1, 0},
+{ 3, s_3_277, 0, 1, 0},
+{ 3, s_3_278, 0, 1, 0},
+{ 3, s_3_279, 0, 1, 0},
+{ 1, s_3_280, 0, 1, 0},
+{ 2, s_3_281, 0, 1, 0},
+{ 2, s_3_282, 0, 1, 0}
 };
 
 static const symbol s_4_0[1] = { 'a' };
@@ -1140,117 +1145,107 @@ static const symbol s_4_18[1] = { 0xEC };
 static const symbol s_4_19[1] = { 0xED };
 static const symbol s_4_20[1] = { 0xEF };
 static const symbol s_4_21[1] = { 0xF3 };
-
-static const struct among a_4[22] =
-{
-{ 1, s_4_0, -1, 1, 0},
-{ 1, s_4_1, -1, 1, 0},
-{ 1, s_4_2, -1, 1, 0},
-{ 2, s_4_3, -1, 1, 0},
-{ 1, s_4_4, -1, 1, 0},
-{ 2, s_4_5, -1, 1, 0},
-{ 1, s_4_6, -1, 1, 0},
-{ 2, s_4_7, 6, 1, 0},
-{ 2, s_4_8, 6, 1, 0},
-{ 2, s_4_9, 6, 1, 0},
-{ 2, s_4_10, -1, 1, 0},
-{ 2, s_4_11, -1, 1, 0},
-{ 2, s_4_12, -1, 1, 0},
-{ 3, s_4_13, -1, 2, 0},
-{ 3, s_4_14, -1, 1, 0},
-{ 1, s_4_15, -1, 1, 0},
-{ 1, s_4_16, -1, 1, 0},
-{ 1, s_4_17, -1, 1, 0},
-{ 1, s_4_18, -1, 1, 0},
-{ 1, s_4_19, -1, 1, 0},
-{ 1, s_4_20, -1, 1, 0},
-{ 1, s_4_21, -1, 1, 0}
+static const struct among a_4[22] = {
+{ 1, s_4_0, 0, 1, 0},
+{ 1, s_4_1, 0, 1, 0},
+{ 1, s_4_2, 0, 1, 0},
+{ 2, s_4_3, 0, 1, 0},
+{ 1, s_4_4, 0, 1, 0},
+{ 2, s_4_5, 0, 1, 0},
+{ 1, s_4_6, 0, 1, 0},
+{ 2, s_4_7, -1, 1, 0},
+{ 2, s_4_8, -2, 1, 0},
+{ 2, s_4_9, -3, 1, 0},
+{ 2, s_4_10, 0, 1, 0},
+{ 2, s_4_11, 0, 1, 0},
+{ 2, s_4_12, 0, 1, 0},
+{ 3, s_4_13, 0, 2, 0},
+{ 3, s_4_14, 0, 1, 0},
+{ 1, s_4_15, 0, 1, 0},
+{ 1, s_4_16, 0, 1, 0},
+{ 1, s_4_17, 0, 1, 0},
+{ 1, s_4_18, 0, 1, 0},
+{ 1, s_4_19, 0, 1, 0},
+{ 1, s_4_20, 0, 1, 0},
+{ 1, s_4_21, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, 81, 6, 10 };
 
-static const symbol s_0[] = { 'a' };
-static const symbol s_1[] = { 'e' };
-static const symbol s_2[] = { 'i' };
-static const symbol s_3[] = { 'o' };
-static const symbol s_4[] = { 'u' };
-static const symbol s_5[] = { '.' };
-static const symbol s_6[] = { 'l', 'o', 'g' };
-static const symbol s_7[] = { 'i', 'c' };
-static const symbol s_8[] = { 'c' };
-static const symbol s_9[] = { 'i', 'c' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 252, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 252, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 252, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 252, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
 
 static int r_cleaning(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
-        among_var = find_among(z, a_0, 13);
+        among_var = find_among(z, a_0, 13, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_0);
+                {
+                    int ret = slice_from_s(z, 1, s_0);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_1);
+                {
+                    int ret = slice_from_s(z, 1, s_1);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_from_s(z, 1, s_2);
+                {
+                    int ret = slice_from_s(z, 1, s_2);
                     if (ret < 0) return ret;
                 }
                 break;
             case 4:
-                {   int ret = slice_from_s(z, 1, s_3);
+                {
+                    int ret = slice_from_s(z, 1, s_3);
                     if (ret < 0) return ret;
                 }
                 break;
             case 5:
-                {   int ret = slice_from_s(z, 1, s_4);
+                {
+                    int ret = slice_from_s(z, 1, s_4);
                     if (ret < 0) return ret;
                 }
                 break;
             case 6:
-                {   int ret = slice_from_s(z, 1, s_5);
+                {
+                    int ret = slice_from_s(z, 1, s_5);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -1261,29 +1256,31 @@ static int r_cleaning(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_attached_pronoun(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1634850 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    if (!find_among_b(z, a_1, 39)) return 0;
+    if (!find_among_b(z, a_1, 39, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1292,47 +1289,57 @@ static int r_attached_pronoun(struct SN_env * z) {
 static int r_standard_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_2, 200);
+    among_var = find_among_b(z, a_2, 200, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_6);
+            {
+                int ret = slice_from_s(z, 3, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 2, s_7);
+            {
+                int ret = slice_from_s(z, 2, s_7);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 1, s_8);
+            {
+                int ret = slice_from_s(z, 1, s_8);
                 if (ret < 0) return ret;
             }
             break;
@@ -1343,23 +1350,27 @@ static int r_standard_suffix(struct SN_env * z) {
 static int r_verb_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_3, 283);
+    among_var = find_among_b(z, a_3, 283, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1370,23 +1381,27 @@ static int r_verb_suffix(struct SN_env * z) {
 static int r_residual_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_4, 22);
+    among_var = find_among_b(z, a_4, 22, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 2, s_9);
+            {
+                int ret = slice_from_s(z, 2, s_9);
                 if (ret < 0) return ret;
             }
             break;
@@ -1395,53 +1410,70 @@ static int r_residual_suffix(struct SN_env * z) {
 }
 
 extern int catalan_ISO_8859_1_stem(struct SN_env * z) {
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m1 = z->l - z->c; (void)m1;
-        {   int ret = r_attached_pronoun(z);
+    {
+        int v_1 = z->l - z->c;
+        {
+            int ret = r_attached_pronoun(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
     }
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int ret = r_standard_suffix(z);
-                if (ret == 0) goto lab2;
+    {
+        int v_2 = z->l - z->c;
+        do {
+            int v_3 = z->l - z->c;
+            {
+                int ret = r_standard_suffix(z);
+                if (ret == 0) goto lab1;
                 if (ret < 0) return ret;
             }
-            goto lab1;
-        lab2:
-            z->c = z->l - m3;
-            {   int ret = r_verb_suffix(z);
+            break;
+        lab1:
+            z->c = z->l - v_3;
+            {
+                int ret = r_verb_suffix(z);
                 if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-        }
-    lab1:
+        } while (0);
     lab0:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_residual_suffix(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_residual_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
-    {   int c5 = z->c;
-        {   int ret = r_cleaning(z);
+    {
+        int v_5 = z->c;
+        {
+            int ret = r_cleaning(z);
             if (ret < 0) return ret;
         }
-        z->c = c5;
+        z->c = v_5;
     }
     return 1;
 }
 
-extern struct SN_env * catalan_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * catalan_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void catalan_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void catalan_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 372902d495c7b1861142ffdec2a08d4c96d83e92..30bfe059e8b1a56d7606cd8f9e2e32fad551bd23 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from danish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_danish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p1;
+    symbol * s_ch;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,23 +21,17 @@ extern int danish_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_undouble(struct SN_env * z);
 static int r_other_suffix(struct SN_env * z);
 static int r_consonant_pair(struct SN_env * z);
 static int r_main_suffix(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * danish_ISO_8859_1_create_env(void);
-extern void danish_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 's', 't' };
+static const symbol s_1[] = { 'i', 'g' };
+static const symbol s_2[] = { 'l', 0xF8, 's' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[3] = { 'h', 'e', 'd' };
 static const symbol s_0_1[5] = { 'e', 't', 'h', 'e', 'd' };
 static const symbol s_0_2[4] = { 'e', 'r', 'e', 'd' };
@@ -58,54 +64,50 @@ static const symbol s_0_28[3] = { 'e', 't', 's' };
 static const symbol s_0_29[5] = { 'e', 'r', 'e', 't', 's' };
 static const symbol s_0_30[2] = { 'e', 't' };
 static const symbol s_0_31[4] = { 'e', 'r', 'e', 't' };
-
-static const struct among a_0[32] =
-{
-{ 3, s_0_0, -1, 1, 0},
-{ 5, s_0_1, 0, 1, 0},
-{ 4, s_0_2, -1, 1, 0},
-{ 1, s_0_3, -1, 1, 0},
-{ 5, s_0_4, 3, 1, 0},
-{ 4, s_0_5, 3, 1, 0},
-{ 6, s_0_6, 5, 1, 0},
-{ 3, s_0_7, 3, 1, 0},
-{ 4, s_0_8, 3, 1, 0},
-{ 3, s_0_9, 3, 1, 0},
-{ 2, s_0_10, -1, 1, 0},
-{ 5, s_0_11, 10, 1, 0},
-{ 4, s_0_12, 10, 1, 0},
-{ 2, s_0_13, -1, 1, 0},
-{ 5, s_0_14, 13, 1, 0},
-{ 4, s_0_15, 13, 1, 0},
-{ 1, s_0_16, -1, 2, 0},
-{ 4, s_0_17, 16, 1, 0},
-{ 2, s_0_18, 16, 1, 0},
-{ 5, s_0_19, 18, 1, 0},
-{ 7, s_0_20, 19, 1, 0},
-{ 4, s_0_21, 18, 1, 0},
-{ 5, s_0_22, 18, 1, 0},
-{ 4, s_0_23, 18, 1, 0},
-{ 3, s_0_24, 16, 1, 0},
-{ 6, s_0_25, 24, 1, 0},
-{ 5, s_0_26, 24, 1, 0},
-{ 3, s_0_27, 16, 1, 0},
-{ 3, s_0_28, 16, 1, 0},
-{ 5, s_0_29, 28, 1, 0},
-{ 2, s_0_30, -1, 1, 0},
-{ 4, s_0_31, 30, 1, 0}
+static const struct among a_0[32] = {
+{ 3, s_0_0, 0, 1, 0},
+{ 5, s_0_1, -1, 1, 0},
+{ 4, s_0_2, 0, 1, 0},
+{ 1, s_0_3, 0, 1, 0},
+{ 5, s_0_4, -1, 1, 0},
+{ 4, s_0_5, -2, 1, 0},
+{ 6, s_0_6, -1, 1, 0},
+{ 3, s_0_7, -4, 1, 0},
+{ 4, s_0_8, -5, 1, 0},
+{ 3, s_0_9, -6, 1, 0},
+{ 2, s_0_10, 0, 1, 0},
+{ 5, s_0_11, -1, 1, 0},
+{ 4, s_0_12, -2, 1, 0},
+{ 2, s_0_13, 0, 1, 0},
+{ 5, s_0_14, -1, 1, 0},
+{ 4, s_0_15, -2, 1, 0},
+{ 1, s_0_16, 0, 2, 0},
+{ 4, s_0_17, -1, 1, 0},
+{ 2, s_0_18, -2, 1, 0},
+{ 5, s_0_19, -1, 1, 0},
+{ 7, s_0_20, -1, 1, 0},
+{ 4, s_0_21, -3, 1, 0},
+{ 5, s_0_22, -4, 1, 0},
+{ 4, s_0_23, -5, 1, 0},
+{ 3, s_0_24, -8, 1, 0},
+{ 6, s_0_25, -1, 1, 0},
+{ 5, s_0_26, -2, 1, 0},
+{ 3, s_0_27, -11, 1, 0},
+{ 3, s_0_28, -12, 1, 0},
+{ 5, s_0_29, -1, 1, 0},
+{ 2, s_0_30, 0, 1, 0},
+{ 4, s_0_31, -1, 1, 0}
 };
 
 static const symbol s_1_0[2] = { 'g', 'd' };
 static const symbol s_1_1[2] = { 'd', 't' };
 static const symbol s_1_2[2] = { 'g', 't' };
 static const symbol s_1_3[2] = { 'k', 't' };
-
-static const struct among a_1[4] =
-{
-{ 2, s_1_0, -1, -1, 0},
-{ 2, s_1_1, -1, -1, 0},
-{ 2, s_1_2, -1, -1, 0},
-{ 2, s_1_3, -1, -1, 0}
+static const struct among a_1[4] = {
+{ 2, s_1_0, 0, -1, 0},
+{ 2, s_1_1, 0, -1, 0},
+{ 2, s_1_2, 0, -1, 0},
+{ 2, s_1_3, 0, -1, 0}
 };
 
 static const symbol s_2_0[2] = { 'i', 'g' };
@@ -113,14 +115,12 @@ static const symbol s_2_1[3] = { 'l', 'i', 'g' };
 static const symbol s_2_2[4] = { 'e', 'l', 'i', 'g' };
 static const symbol s_2_3[3] = { 'e', 'l', 's' };
 static const symbol s_2_4[4] = { 'l', 0xF8, 's', 't' };
-
-static const struct among a_2[5] =
-{
-{ 2, s_2_0, -1, 1, 0},
-{ 3, s_2_1, 0, 1, 0},
-{ 4, s_2_2, 1, 1, 0},
-{ 3, s_2_3, -1, 1, 0},
-{ 4, s_2_4, -1, 2, 0}
+static const struct among a_2[5] = {
+{ 2, s_2_0, 0, 1, 0},
+{ 3, s_2_1, -1, 1, 0},
+{ 4, s_2_2, -1, 1, 0},
+{ 3, s_2_3, 0, 1, 0},
+{ 4, s_2_4, 0, 2, 0}
 };
 
 static const unsigned char g_c[] = { 119, 223, 119, 1 };
@@ -129,56 +129,57 @@ static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 
 static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 };
 
-static const symbol s_0[] = { 's', 't' };
-static const symbol s_1[] = { 'i', 'g' };
-static const symbol s_2[] = { 'l', 0xF8, 's' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    {   int c_test1 = z->c;
-z->c = z->c + 3;
-        if (z->c > z->l) return 0;
-        z->I[0] = z->c;
-        z->c = c_test1;
+    int i_x;
+    ((SN_local *)z)->i_p1 = z->l;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        i_x = z->c;
+        z->c = v_1;
+    }
+    {
+        int ret = out_grouping(z, g_v, 97, 248, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
     }
-
-    if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0;
-
     {
         int ret = in_grouping(z, g_v, 97, 248, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[1] = z->c;
-
-    if (z->I[1] >= z->I[0]) goto lab0;
-    z->I[1] = z->I[0];
+    ((SN_local *)z)->i_p1 = z->c;
+    if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
+    ((SN_local *)z)->i_p1 = i_x;
 lab0:
     return 1;
 }
 
 static int r_main_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        among_var = find_among_b(z, a_0, 32);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        among_var = find_among_b(z, a_0, 32, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (in_grouping_b(z, g_s_ending, 97, 229, 0)) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -187,23 +188,25 @@ static int r_main_suffix(struct SN_env * z) {
 }
 
 static int r_consonant_pair(struct SN_env * z) {
-    {   int m_test1 = z->l - z->c;
-
-        {   int mlimit2;
-            if (z->c < z->I[1]) return 0;
-            mlimit2 = z->lb; z->lb = z->I[1];
+    {
+        int v_1 = z->l - z->c;
+        {
+            int v_2;
+            if (z->c < ((SN_local *)z)->i_p1) return 0;
+            v_2 = z->lb; z->lb = ((SN_local *)z)->i_p1;
             z->ket = z->c;
-            if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; }
-            if (!find_among_b(z, a_1, 4)) { z->lb = mlimit2; return 0; }
+            if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = v_2; return 0; }
+            if (!find_among_b(z, a_1, 4, 0)) { z->lb = v_2; return 0; }
             z->bra = z->c;
-            z->lb = mlimit2;
+            z->lb = v_2;
         }
-        z->c = z->l - m_test1;
+        z->c = z->l - v_1;
     }
     if (z->c <= z->lb) return 0;
     z->c--;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -211,42 +214,48 @@ static int r_consonant_pair(struct SN_env * z) {
 
 static int r_other_suffix(struct SN_env * z) {
     int among_var;
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
         if (!(eq_s_b(z, 2, s_0))) goto lab0;
         z->bra = z->c;
         if (!(eq_s_b(z, 2, s_1))) goto lab0;
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab0:
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
     }
-
-    {   int mlimit2;
-        if (z->c < z->I[1]) return 0;
-        mlimit2 = z->lb; z->lb = z->I[1];
+    {
+        int v_2;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_2 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; }
-        among_var = find_among_b(z, a_2, 5);
-        if (!among_var) { z->lb = mlimit2; return 0; }
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_2; return 0; }
+        among_var = find_among_b(z, a_2, 5, 0);
+        if (!among_var) { z->lb = v_2; return 0; }
         z->bra = z->c;
-        z->lb = mlimit2;
+        z->lb = v_2;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m3 = z->l - z->c; (void)m3;
-                {   int ret = r_consonant_pair(z);
+            {
+                int v_3 = z->l - z->c;
+                {
+                    int ret = r_consonant_pair(z);
                     if (ret < 0) return ret;
                 }
-                z->c = z->l - m3;
+                z->c = z->l - v_3;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 3, s_2);
+            {
+                int ret = slice_from_s(z, 3, s_2);
                 if (ret < 0) return ret;
             }
             break;
@@ -255,62 +264,91 @@ static int r_other_suffix(struct SN_env * z) {
 }
 
 static int r_undouble(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (in_grouping_b(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; }
+        if (in_grouping_b(z, g_c, 98, 122, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->S[0] = slice_to(z, z->S[0]);
-        if (z->S[0] == 0) return -1;
-        z->lb = mlimit1;
+        {
+            int ret = slice_to(z, &((SN_local *)z)->s_ch);
+            if (ret < 0) return ret;
+        }
+        z->lb = v_1;
     }
-    if (!(eq_v_b(z, z->S[0]))) return 0;
-    {   int ret = slice_del(z);
+    if (!(eq_v_b(z, ((SN_local *)z)->s_ch))) return 0;
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int danish_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_main_suffix(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_main_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_consonant_pair(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_consonant_pair(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_other_suffix(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_other_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
-    {   int m5 = z->l - z->c; (void)m5;
-        {   int ret = r_undouble(z);
+    {
+        int v_5 = z->l - z->c;
+        {
+            int ret = r_undouble(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m5;
+        z->c = z->l - v_5;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * danish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2); }
+extern struct SN_env * danish_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->s_ch = NULL;
 
-extern void danish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); }
+        if ((((SN_local *)z)->s_ch = create_s()) == NULL) {
+            danish_ISO_8859_1_close_env(z);
+            return NULL;
+        }
+    }
+    return z;
+}
+
+extern void danish_ISO_8859_1_close_env(struct SN_env * z) {
+    if (z) {
+        lose_s(((SN_local *)z)->s_ch);
+    }
+    SN_delete_env(z);
+}
 
index d2bc1baebef1020e33e5ad51f9e40b0a2ac84a54..424bff8258cfbb1031517bc5726112d586f92c1f 100644 (file)
@@ -1,6 +1,20 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from dutch.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_dutch.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    unsigned char b_GE_removed;
+    symbol * s_ch;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,601 +23,2003 @@ extern int dutch_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
-static int r_standard_suffix(struct SN_env * z);
-static int r_undouble(struct SN_env * z);
+
+static int r_measure(struct SN_env * z);
+static int r_Lose_infix(struct SN_env * z);
+static int r_Lose_prefix(struct SN_env * z);
+static int r_Step_1c(struct SN_env * z);
+static int r_Step_6(struct SN_env * z);
+static int r_Step_7(struct SN_env * z);
+static int r_Step_4(struct SN_env * z);
+static int r_Step_3(struct SN_env * z);
+static int r_Step_2(struct SN_env * z);
+static int r_Step_1(struct SN_env * z);
+static int r_lengthen_V(struct SN_env * z);
+static int r_VX(struct SN_env * z);
+static int r_V(struct SN_env * z);
+static int r_C(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_en_ending(struct SN_env * z);
-static int r_e_ending(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * dutch_ISO_8859_1_create_env(void);
-extern void dutch_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'i', 'j' };
+static const symbol s_1[] = { 'i', 'j' };
+static const symbol s_2[] = { 'i', 'j' };
+static const symbol s_3[] = { 'e', 0xEB, 'e' };
+static const symbol s_4[] = { 'i', 'e', 'e' };
+static const symbol s_5[] = { 'i', 'e' };
+static const symbol s_6[] = { 'a', 'r' };
+static const symbol s_7[] = { 'e', 'r' };
+static const symbol s_8[] = { 'e' };
+static const symbol s_9[] = { 0xE9 };
+static const symbol s_10[] = { 'a', 'u' };
+static const symbol s_11[] = { 'h', 'e', 'd' };
+static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
+static const symbol s_13[] = { 'n', 'd' };
+static const symbol s_14[] = { 'n', 'd' };
+static const symbol s_15[] = { '\'', 't' };
+static const symbol s_16[] = { 'e', 't' };
+static const symbol s_17[] = { 'r', 'n', 't' };
+static const symbol s_18[] = { 'r', 'n' };
+static const symbol s_19[] = { 'i', 'n', 'k' };
+static const symbol s_20[] = { 'i', 'n', 'g' };
+static const symbol s_21[] = { 'm', 'p' };
+static const symbol s_22[] = { 'm' };
+static const symbol s_23[] = { 'g' };
+static const symbol s_24[] = { 'l', 'i', 'j', 'k' };
+static const symbol s_25[] = { 'i', 's', 'c', 'h' };
+static const symbol s_26[] = { 't' };
+static const symbol s_27[] = { 's' };
+static const symbol s_28[] = { 'r' };
+static const symbol s_29[] = { 'l' };
+static const symbol s_30[] = { 'e', 'n' };
+static const symbol s_31[] = { 'i', 'e', 'f' };
+static const symbol s_32[] = { 'e', 'e', 'r' };
+static const symbol s_33[] = { 'r' };
+static const symbol s_34[] = { 'i', 'l', 'd' };
+static const symbol s_35[] = { 'e', 'r' };
+static const symbol s_36[] = { 'a', 'a', 'r' };
+static const symbol s_37[] = { 'f' };
+static const symbol s_38[] = { 'g' };
+static const symbol s_39[] = { 't' };
+static const symbol s_40[] = { 'd' };
+static const symbol s_41[] = { 'i', 'e' };
+static const symbol s_42[] = { 'e', 'e', 'r' };
+static const symbol s_43[] = { 'n' };
+static const symbol s_44[] = { 'l' };
+static const symbol s_45[] = { 'r' };
+static const symbol s_46[] = { 't', 'e', 'e', 'r' };
+static const symbol s_47[] = { 'l', 'i', 'j', 'k' };
+static const symbol s_48[] = { 'i', 'n', 'n' };
+static const symbol s_49[] = { 'k' };
+static const symbol s_50[] = { 'f' };
+static const symbol s_51[] = { 'p' };
+static const symbol s_52[] = { 'b' };
+static const symbol s_53[] = { 'c' };
+static const symbol s_54[] = { 'd' };
+static const symbol s_55[] = { 'f' };
+static const symbol s_56[] = { 'g' };
+static const symbol s_57[] = { 'h' };
+static const symbol s_58[] = { 'j' };
+static const symbol s_59[] = { 'k' };
+static const symbol s_60[] = { 'l' };
+static const symbol s_61[] = { 'm' };
+static const symbol s_62[] = { 'n' };
+static const symbol s_63[] = { 'p' };
+static const symbol s_64[] = { 'q' };
+static const symbol s_65[] = { 'r' };
+static const symbol s_66[] = { 's' };
+static const symbol s_67[] = { 't' };
+static const symbol s_68[] = { 'v' };
+static const symbol s_69[] = { 'w' };
+static const symbol s_70[] = { 'x' };
+static const symbol s_71[] = { 'z' };
+static const symbol s_72[] = { 'i', 'n' };
+static const symbol s_73[] = { 'n' };
+static const symbol s_74[] = { 'e', 'n' };
+static const symbol s_75[] = { 'g', 'e' };
+static const symbol s_76[] = { 'i', 'j' };
+static const symbol s_77[] = { 'i', 'j' };
+static const symbol s_78[] = { 'e' };
+static const symbol s_79[] = { 'i' };
+static const symbol s_80[] = { 'g', 'e' };
+static const symbol s_81[] = { 'i', 'j' };
+static const symbol s_82[] = { 'i', 'j' };
+static const symbol s_83[] = { 'e' };
+static const symbol s_84[] = { 'i' };
+static const symbol s_85[] = { 'i', 'j' };
+static const symbol s_86[] = { 'i', 'j' };
 
-#ifdef __cplusplus
-}
-#endif
-static const symbol s_0_1[1] = { 0xE1 };
-static const symbol s_0_2[1] = { 0xE4 };
-static const symbol s_0_3[1] = { 0xE9 };
-static const symbol s_0_4[1] = { 0xEB };
-static const symbol s_0_5[1] = { 0xED };
-static const symbol s_0_6[1] = { 0xEF };
-static const symbol s_0_7[1] = { 0xF3 };
-static const symbol s_0_8[1] = { 0xF6 };
-static const symbol s_0_9[1] = { 0xFA };
-static const symbol s_0_10[1] = { 0xFC };
-
-static const struct among a_0[11] =
-{
-{ 0, 0, -1, 6, 0},
-{ 1, s_0_1, 0, 1, 0},
+static const symbol s_0_0[1] = { 'a' };
+static const symbol s_0_1[1] = { 'e' };
+static const symbol s_0_2[1] = { 'o' };
+static const symbol s_0_3[1] = { 'u' };
+static const symbol s_0_4[1] = { 0xE0 };
+static const symbol s_0_5[1] = { 0xE1 };
+static const symbol s_0_6[1] = { 0xE2 };
+static const symbol s_0_7[1] = { 0xE4 };
+static const symbol s_0_8[1] = { 0xE8 };
+static const symbol s_0_9[1] = { 0xE9 };
+static const symbol s_0_10[1] = { 0xEA };
+static const symbol s_0_11[2] = { 'e', 0xEB };
+static const symbol s_0_12[2] = { 'i', 0xEB };
+static const symbol s_0_13[1] = { 0xF2 };
+static const symbol s_0_14[1] = { 0xF3 };
+static const symbol s_0_15[1] = { 0xF4 };
+static const symbol s_0_16[1] = { 0xF6 };
+static const symbol s_0_17[1] = { 0xF9 };
+static const symbol s_0_18[1] = { 0xFA };
+static const symbol s_0_19[1] = { 0xFB };
+static const symbol s_0_20[1] = { 0xFC };
+static const struct among a_0[21] = {
+{ 1, s_0_0, 0, 1, 0},
+{ 1, s_0_1, 0, 2, 0},
 { 1, s_0_2, 0, 1, 0},
-{ 1, s_0_3, 0, 2, 0},
-{ 1, s_0_4, 0, 2, 0},
-{ 1, s_0_5, 0, 3, 0},
-{ 1, s_0_6, 0, 3, 0},
-{ 1, s_0_7, 0, 4, 0},
-{ 1, s_0_8, 0, 4, 0},
-{ 1, s_0_9, 0, 5, 0},
-{ 1, s_0_10, 0, 5, 0}
+{ 1, s_0_3, 0, 1, 0},
+{ 1, s_0_4, 0, 1, 0},
+{ 1, s_0_5, 0, 1, 0},
+{ 1, s_0_6, 0, 1, 0},
+{ 1, s_0_7, 0, 1, 0},
+{ 1, s_0_8, 0, 2, 0},
+{ 1, s_0_9, 0, 2, 0},
+{ 1, s_0_10, 0, 2, 0},
+{ 2, s_0_11, 0, 3, 0},
+{ 2, s_0_12, 0, 4, 0},
+{ 1, s_0_13, 0, 1, 0},
+{ 1, s_0_14, 0, 1, 0},
+{ 1, s_0_15, 0, 1, 0},
+{ 1, s_0_16, 0, 1, 0},
+{ 1, s_0_17, 0, 1, 0},
+{ 1, s_0_18, 0, 1, 0},
+{ 1, s_0_19, 0, 1, 0},
+{ 1, s_0_20, 0, 1, 0}
 };
 
-static const symbol s_1_1[1] = { 'I' };
-static const symbol s_1_2[1] = { 'Y' };
-
-static const struct among a_1[3] =
-{
-{ 0, 0, -1, 3, 0},
-{ 1, s_1_1, 0, 2, 0},
-{ 1, s_1_2, 0, 1, 0}
+static const symbol s_1_0[3] = { 'n', 'd', 'e' };
+static const symbol s_1_1[2] = { 'e', 'n' };
+static const symbol s_1_2[1] = { 's' };
+static const symbol s_1_3[2] = { '\'', 's' };
+static const symbol s_1_4[2] = { 'e', 's' };
+static const symbol s_1_5[3] = { 'i', 'e', 's' };
+static const symbol s_1_6[3] = { 'a', 'u', 's' };
+static const symbol s_1_7[2] = { 0xE9, 's' };
+static const struct among a_1[8] = {
+{ 3, s_1_0, 0, 8, 0},
+{ 2, s_1_1, 0, 7, 0},
+{ 1, s_1_2, 0, 2, 0},
+{ 2, s_1_3, -1, 1, 0},
+{ 2, s_1_4, -2, 4, 0},
+{ 3, s_1_5, -1, 3, 0},
+{ 3, s_1_6, -4, 6, 0},
+{ 2, s_1_7, -5, 5, 0}
 };
 
-static const symbol s_2_0[2] = { 'd', 'd' };
-static const symbol s_2_1[2] = { 'k', 'k' };
-static const symbol s_2_2[2] = { 't', 't' };
-
-static const struct among a_2[3] =
-{
-{ 2, s_2_0, -1, -1, 0},
-{ 2, s_2_1, -1, -1, 0},
-{ 2, s_2_2, -1, -1, 0}
+static const symbol s_2_0[2] = { 'd', 'e' };
+static const symbol s_2_1[2] = { 'g', 'e' };
+static const symbol s_2_2[5] = { 'i', 's', 'c', 'h', 'e' };
+static const symbol s_2_3[2] = { 'j', 'e' };
+static const symbol s_2_4[5] = { 'l', 'i', 'j', 'k', 'e' };
+static const symbol s_2_5[2] = { 'l', 'e' };
+static const symbol s_2_6[3] = { 'e', 'n', 'e' };
+static const symbol s_2_7[2] = { 'r', 'e' };
+static const symbol s_2_8[2] = { 's', 'e' };
+static const symbol s_2_9[2] = { 't', 'e' };
+static const symbol s_2_10[4] = { 'i', 'e', 'v', 'e' };
+static const struct among a_2[11] = {
+{ 2, s_2_0, 0, 5, 0},
+{ 2, s_2_1, 0, 2, 0},
+{ 5, s_2_2, 0, 4, 0},
+{ 2, s_2_3, 0, 1, 0},
+{ 5, s_2_4, 0, 3, 0},
+{ 2, s_2_5, 0, 9, 0},
+{ 3, s_2_6, 0, 10, 0},
+{ 2, s_2_7, 0, 8, 0},
+{ 2, s_2_8, 0, 7, 0},
+{ 2, s_2_9, 0, 6, 0},
+{ 4, s_2_10, 0, 11, 0}
 };
 
-static const symbol s_3_0[3] = { 'e', 'n', 'e' };
-static const symbol s_3_1[2] = { 's', 'e' };
-static const symbol s_3_2[2] = { 'e', 'n' };
-static const symbol s_3_3[5] = { 'h', 'e', 'd', 'e', 'n' };
-static const symbol s_3_4[1] = { 's' };
-
-static const struct among a_3[5] =
-{
-{ 3, s_3_0, -1, 2, 0},
-{ 2, s_3_1, -1, 3, 0},
-{ 2, s_3_2, -1, 2, 0},
-{ 5, s_3_3, 2, 1, 0},
-{ 1, s_3_4, -1, 3, 0}
+static const symbol s_3_0[4] = { 'h', 'e', 'i', 'd' };
+static const symbol s_3_1[3] = { 'f', 'i', 'e' };
+static const symbol s_3_2[3] = { 'g', 'i', 'e' };
+static const symbol s_3_3[4] = { 'a', 't', 'i', 'e' };
+static const symbol s_3_4[4] = { 'i', 's', 'm', 'e' };
+static const symbol s_3_5[3] = { 'i', 'n', 'g' };
+static const symbol s_3_6[4] = { 'a', 'r', 'i', 'j' };
+static const symbol s_3_7[4] = { 'e', 'r', 'i', 'j' };
+static const symbol s_3_8[3] = { 's', 'e', 'l' };
+static const symbol s_3_9[4] = { 'r', 'd', 'e', 'r' };
+static const symbol s_3_10[4] = { 's', 't', 'e', 'r' };
+static const symbol s_3_11[5] = { 'i', 't', 'e', 'i', 't' };
+static const symbol s_3_12[3] = { 'd', 's', 't' };
+static const symbol s_3_13[3] = { 't', 's', 't' };
+static const struct among a_3[14] = {
+{ 4, s_3_0, 0, 3, 0},
+{ 3, s_3_1, 0, 7, 0},
+{ 3, s_3_2, 0, 8, 0},
+{ 4, s_3_3, 0, 1, 0},
+{ 4, s_3_4, 0, 5, 0},
+{ 3, s_3_5, 0, 5, 0},
+{ 4, s_3_6, 0, 6, 0},
+{ 4, s_3_7, 0, 5, 0},
+{ 3, s_3_8, 0, 3, 0},
+{ 4, s_3_9, 0, 4, 0},
+{ 4, s_3_10, 0, 3, 0},
+{ 5, s_3_11, 0, 2, 0},
+{ 3, s_3_12, 0, 10, 0},
+{ 3, s_3_13, 0, 9, 0}
 };
 
 static const symbol s_4_0[3] = { 'e', 'n', 'd' };
-static const symbol s_4_1[2] = { 'i', 'g' };
-static const symbol s_4_2[3] = { 'i', 'n', 'g' };
-static const symbol s_4_3[4] = { 'l', 'i', 'j', 'k' };
-static const symbol s_4_4[4] = { 'b', 'a', 'a', 'r' };
-static const symbol s_4_5[3] = { 'b', 'a', 'r' };
-
-static const struct among a_4[6] =
-{
-{ 3, s_4_0, -1, 1, 0},
-{ 2, s_4_1, -1, 2, 0},
-{ 3, s_4_2, -1, 1, 0},
-{ 4, s_4_3, -1, 3, 0},
-{ 4, s_4_4, -1, 4, 0},
-{ 3, s_4_5, -1, 5, 0}
+static const symbol s_4_1[5] = { 'a', 't', 'i', 'e', 'f' };
+static const symbol s_4_2[4] = { 'e', 'r', 'i', 'g' };
+static const symbol s_4_3[6] = { 'a', 'c', 'h', 't', 'i', 'g' };
+static const symbol s_4_4[6] = { 'i', 'o', 'n', 'e', 'e', 'l' };
+static const symbol s_4_5[4] = { 'b', 'a', 'a', 'r' };
+static const symbol s_4_6[4] = { 'l', 'a', 'a', 'r' };
+static const symbol s_4_7[4] = { 'n', 'a', 'a', 'r' };
+static const symbol s_4_8[4] = { 'r', 'a', 'a', 'r' };
+static const symbol s_4_9[6] = { 'e', 'r', 'i', 'g', 'e', 'r' };
+static const symbol s_4_10[8] = { 'a', 'c', 'h', 't', 'i', 'g', 'e', 'r' };
+static const symbol s_4_11[6] = { 'l', 'i', 'j', 'k', 'e', 'r' };
+static const symbol s_4_12[4] = { 't', 'a', 'n', 't' };
+static const symbol s_4_13[6] = { 'e', 'r', 'i', 'g', 's', 't' };
+static const symbol s_4_14[8] = { 'a', 'c', 'h', 't', 'i', 'g', 's', 't' };
+static const symbol s_4_15[6] = { 'l', 'i', 'j', 'k', 's', 't' };
+static const struct among a_4[16] = {
+{ 3, s_4_0, 0, 9, 0},
+{ 5, s_4_1, 0, 2, 0},
+{ 4, s_4_2, 0, 9, 0},
+{ 6, s_4_3, 0, 3, 0},
+{ 6, s_4_4, 0, 1, 0},
+{ 4, s_4_5, 0, 3, 0},
+{ 4, s_4_6, 0, 5, 0},
+{ 4, s_4_7, 0, 4, 0},
+{ 4, s_4_8, 0, 6, 0},
+{ 6, s_4_9, 0, 9, 0},
+{ 8, s_4_10, 0, 3, 0},
+{ 6, s_4_11, 0, 8, 0},
+{ 4, s_4_12, 0, 7, 0},
+{ 6, s_4_13, 0, 9, 0},
+{ 8, s_4_14, 0, 3, 0},
+{ 6, s_4_15, 0, 8, 0}
 };
 
-static const symbol s_5_0[2] = { 'a', 'a' };
-static const symbol s_5_1[2] = { 'e', 'e' };
-static const symbol s_5_2[2] = { 'o', 'o' };
-static const symbol s_5_3[2] = { 'u', 'u' };
-
-static const struct among a_5[4] =
-{
-{ 2, s_5_0, -1, -1, 0},
-{ 2, s_5_1, -1, -1, 0},
-{ 2, s_5_2, -1, -1, 0},
-{ 2, s_5_3, -1, -1, 0}
+static const symbol s_5_0[2] = { 'i', 'g' };
+static const symbol s_5_1[4] = { 'i', 'g', 'e', 'r' };
+static const symbol s_5_2[4] = { 'i', 'g', 's', 't' };
+static const struct among a_5[3] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 4, s_5_1, 0, 1, 0},
+{ 4, s_5_2, 0, 1, 0}
 };
 
-static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
-
-static const unsigned char g_v_I[] = { 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+static const symbol s_6_0[2] = { 'f', 't' };
+static const symbol s_6_1[2] = { 'k', 't' };
+static const symbol s_6_2[2] = { 'p', 't' };
+static const struct among a_6[3] = {
+{ 2, s_6_0, 0, 2, 0},
+{ 2, s_6_1, 0, 1, 0},
+{ 2, s_6_2, 0, 3, 0}
+};
 
-static const unsigned char g_v_j[] = { 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+static const symbol s_7_0[2] = { 'b', 'b' };
+static const symbol s_7_1[2] = { 'c', 'c' };
+static const symbol s_7_2[2] = { 'd', 'd' };
+static const symbol s_7_3[2] = { 'f', 'f' };
+static const symbol s_7_4[2] = { 'g', 'g' };
+static const symbol s_7_5[2] = { 'h', 'h' };
+static const symbol s_7_6[2] = { 'j', 'j' };
+static const symbol s_7_7[2] = { 'k', 'k' };
+static const symbol s_7_8[2] = { 'l', 'l' };
+static const symbol s_7_9[2] = { 'm', 'm' };
+static const symbol s_7_10[2] = { 'n', 'n' };
+static const symbol s_7_11[2] = { 'p', 'p' };
+static const symbol s_7_12[2] = { 'q', 'q' };
+static const symbol s_7_13[2] = { 'r', 'r' };
+static const symbol s_7_14[2] = { 's', 's' };
+static const symbol s_7_15[2] = { 't', 't' };
+static const symbol s_7_16[1] = { 'v' };
+static const symbol s_7_17[2] = { 'v', 'v' };
+static const symbol s_7_18[2] = { 'w', 'w' };
+static const symbol s_7_19[2] = { 'x', 'x' };
+static const symbol s_7_20[1] = { 'z' };
+static const symbol s_7_21[2] = { 'z', 'z' };
+static const struct among a_7[22] = {
+{ 2, s_7_0, 0, 1, 0},
+{ 2, s_7_1, 0, 2, 0},
+{ 2, s_7_2, 0, 3, 0},
+{ 2, s_7_3, 0, 4, 0},
+{ 2, s_7_4, 0, 5, 0},
+{ 2, s_7_5, 0, 6, 0},
+{ 2, s_7_6, 0, 7, 0},
+{ 2, s_7_7, 0, 8, 0},
+{ 2, s_7_8, 0, 9, 0},
+{ 2, s_7_9, 0, 10, 0},
+{ 2, s_7_10, 0, 11, 0},
+{ 2, s_7_11, 0, 12, 0},
+{ 2, s_7_12, 0, 13, 0},
+{ 2, s_7_13, 0, 14, 0},
+{ 2, s_7_14, 0, 15, 0},
+{ 2, s_7_15, 0, 16, 0},
+{ 1, s_7_16, 0, 4, 0},
+{ 2, s_7_17, -1, 17, 0},
+{ 2, s_7_18, 0, 18, 0},
+{ 2, s_7_19, 0, 19, 0},
+{ 1, s_7_20, 0, 15, 0},
+{ 2, s_7_21, -1, 20, 0}
+};
 
-static const symbol s_0[] = { 'a' };
-static const symbol s_1[] = { 'e' };
-static const symbol s_2[] = { 'i' };
-static const symbol s_3[] = { 'o' };
-static const symbol s_4[] = { 'u' };
-static const symbol s_5[] = { 'Y' };
-static const symbol s_6[] = { 'I' };
-static const symbol s_7[] = { 'Y' };
-static const symbol s_8[] = { 'y' };
-static const symbol s_9[] = { 'i' };
-static const symbol s_10[] = { 'g', 'e', 'm' };
-static const symbol s_11[] = { 'h', 'e', 'i', 'd' };
-static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
-static const symbol s_13[] = { 'e', 'n' };
-static const symbol s_14[] = { 'i', 'g' };
+static const symbol s_8_0[1] = { 'd' };
+static const symbol s_8_1[1] = { 't' };
+static const struct among a_8[2] = {
+{ 1, s_8_0, 0, 1, 0},
+{ 1, s_8_1, 0, 2, 0}
+};
 
-static int r_prelude(struct SN_env * z) {
-    int among_var;
-    {   int c_test1 = z->c;
-        while(1) {
-            int c2 = z->c;
-            z->bra = z->c;
-            if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((340306450 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else
-            among_var = find_among(z, a_0, 11);
-            z->ket = z->c;
-            switch (among_var) {
-                case 1:
-                    {   int ret = slice_from_s(z, 1, s_0);
-                        if (ret < 0) return ret;
-                    }
-                    break;
-                case 2:
-                    {   int ret = slice_from_s(z, 1, s_1);
-                        if (ret < 0) return ret;
-                    }
-                    break;
-                case 3:
-                    {   int ret = slice_from_s(z, 1, s_2);
-                        if (ret < 0) return ret;
-                    }
-                    break;
-                case 4:
-                    {   int ret = slice_from_s(z, 1, s_3);
-                        if (ret < 0) return ret;
-                    }
-                    break;
-                case 5:
-                    {   int ret = slice_from_s(z, 1, s_4);
-                        if (ret < 0) return ret;
-                    }
-                    break;
-                case 6:
-                    if (z->c >= z->l) goto lab0;
-                    z->c++;
-                    break;
-            }
-            continue;
-        lab0:
-            z->c = c2;
-            break;
-        }
-        z->c = c_test1;
-    }
-    {   int c3 = z->c;
-        z->bra = z->c;
-        if (z->c == z->l || z->p[z->c] != 'y') { z->c = c3; goto lab1; }
-        z->c++;
-        z->ket = z->c;
-        {   int ret = slice_from_s(z, 1, s_5);
-            if (ret < 0) return ret;
-        }
-    lab1:
-        ;
-    }
-    while(1) {
-        int c4 = z->c;
-        while(1) {
-            int c5 = z->c;
-            if (in_grouping(z, g_v, 97, 232, 0)) goto lab3;
-            z->bra = z->c;
-            {   int c6 = z->c;
-                if (z->c == z->l || z->p[z->c] != 'i') goto lab5;
-                z->c++;
-                z->ket = z->c;
-                if (in_grouping(z, g_v, 97, 232, 0)) goto lab5;
-                {   int ret = slice_from_s(z, 1, s_6);
-                    if (ret < 0) return ret;
-                }
-                goto lab4;
-            lab5:
-                z->c = c6;
-                if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
-                z->c++;
-                z->ket = z->c;
-                {   int ret = slice_from_s(z, 1, s_7);
-                    if (ret < 0) return ret;
-                }
-            }
-        lab4:
-            z->c = c5;
-            break;
-        lab3:
-            z->c = c5;
-            if (z->c >= z->l) goto lab2;
-            z->c++;
-        }
-        continue;
-    lab2:
-        z->c = c4;
-        break;
-    }
-    return 1;
-}
+static const symbol s_9_1[3] = { 'e', 'f', 't' };
+static const symbol s_9_2[3] = { 'v', 'a', 'a' };
+static const symbol s_9_3[3] = { 'v', 'a', 'l' };
+static const symbol s_9_4[4] = { 'v', 'a', 'l', 'i' };
+static const symbol s_9_5[4] = { 'v', 'a', 'r', 'e' };
+static const struct among a_9[6] = {
+{ 0, 0, 0, -1, 0},
+{ 3, s_9_1, -1, 1, 0},
+{ 3, s_9_2, -2, 1, 0},
+{ 3, s_9_3, -3, 1, 0},
+{ 4, s_9_4, -1, -1, 0},
+{ 4, s_9_5, -5, 1, 0}
+};
 
-static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    {   int c_test1 = z->c;
-z->c = z->c + 3;
-        if (z->c > z->l) return 0;
-        z->I[0] = z->c;
-        z->c = c_test1;
-    }
+static const symbol s_10_0[1] = { 0xEB };
+static const symbol s_10_1[1] = { 0xEF };
+static const struct among a_10[2] = {
+{ 1, s_10_0, 0, 1, 0},
+{ 1, s_10_1, 0, 2, 0}
+};
 
-    {
-        int ret = out_grouping(z, g_v, 97, 232, 1);
-        if (ret < 0) return 0;
-        z->c += ret;
-    }
+static const symbol s_11_0[1] = { 0xEB };
+static const symbol s_11_1[1] = { 0xEF };
+static const struct among a_11[2] = {
+{ 1, s_11_0, 0, 1, 0},
+{ 1, s_11_1, 0, 2, 0}
+};
 
-    {
-        int ret = in_grouping(z, g_v, 97, 232, 1);
-        if (ret < 0) return 0;
-        z->c += ret;
-    }
-    z->I[2] = z->c;
+static const unsigned char g_E[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120 };
 
-    if (z->I[2] >= z->I[0]) goto lab0;
-    z->I[2] = z->I[0];
-lab0:
+static const unsigned char g_AIOU[] = { 1, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 11, 120, 46, 15 };
 
-    {
-        int ret = out_grouping(z, g_v, 97, 232, 1);
-        if (ret < 0) return 0;
-        z->c += ret;
-    }
+static const unsigned char g_AEIOU[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15 };
 
-    {
-        int ret = in_grouping(z, g_v, 97, 232, 1);
-        if (ret < 0) return 0;
-        z->c += ret;
-    }
-    z->I[1] = z->c;
-    return 1;
-}
+static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15 };
 
-static int r_postlude(struct SN_env * z) {
-    int among_var;
-    while(1) {
-        int c1 = z->c;
-        z->bra = z->c;
-        if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else
-        among_var = find_among(z, a_1, 3);
-        z->ket = z->c;
-        switch (among_var) {
-            case 1:
-                {   int ret = slice_from_s(z, 1, s_8);
-                    if (ret < 0) return ret;
-                }
-                break;
-            case 2:
-                {   int ret = slice_from_s(z, 1, s_9);
-                    if (ret < 0) return ret;
-                }
-                break;
-            case 3:
-                if (z->c >= z->l) goto lab0;
-                z->c++;
-                break;
-        }
-        continue;
-    lab0:
-        z->c = c1;
-        break;
-    }
-    return 1;
-}
+static const unsigned char g_v_WX[] = { 17, 65, 208, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 139, 127, 46, 15 };
 
 static int r_R1(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
-static int r_undouble(struct SN_env * z) {
-    {   int m_test1 = z->l - z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-        if (!find_among_b(z, a_2, 3)) return 0;
-        z->c = z->l - m_test1;
-    }
-    z->ket = z->c;
-    if (z->c <= z->lb) return 0;
-    z->c--;
-    z->bra = z->c;
-    {   int ret = slice_del(z);
-        if (ret < 0) return ret;
+static int r_V(struct SN_env * z) {
+    {
+        int v_1 = z->l - z->c;
+        do {
+            int v_2 = z->l - z->c;
+            if (in_grouping_b(z, g_v, 97, 252, 0)) goto lab0;
+            break;
+        lab0:
+            z->c = z->l - v_2;
+            if (!(eq_s_b(z, 2, s_0))) return 0;
+        } while (0);
+        z->c = z->l - v_1;
     }
     return 1;
 }
 
-static int r_e_ending(struct SN_env * z) {
-    z->I[3] = 0;
-    z->ket = z->c;
-    if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
-    z->c--;
-    z->bra = z->c;
-    {   int ret = r_R1(z);
-        if (ret <= 0) return ret;
-    }
-    {   int m_test1 = z->l - z->c;
-        if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
-        z->c = z->l - m_test1;
-    }
-    {   int ret = slice_del(z);
-        if (ret < 0) return ret;
-    }
-    z->I[3] = 1;
-    {   int ret = r_undouble(z);
-        if (ret <= 0) return ret;
+static int r_VX(struct SN_env * z) {
+    {
+        int v_1 = z->l - z->c;
+        if (z->c <= z->lb) return 0;
+        z->c--;
+        do {
+            int v_2 = z->l - z->c;
+            if (in_grouping_b(z, g_v, 97, 252, 0)) goto lab0;
+            break;
+        lab0:
+            z->c = z->l - v_2;
+            if (!(eq_s_b(z, 2, s_1))) return 0;
+        } while (0);
+        z->c = z->l - v_1;
     }
     return 1;
 }
 
-static int r_en_ending(struct SN_env * z) {
-    {   int ret = r_R1(z);
-        if (ret <= 0) return ret;
-    }
-    {   int m1 = z->l - z->c; (void)m1;
-        if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
-        z->c = z->l - m1;
-        {   int m2 = z->l - z->c; (void)m2;
-            if (!(eq_s_b(z, 3, s_10))) goto lab0;
+static int r_C(struct SN_env * z) {
+    {
+        int v_1 = z->l - z->c;
+        {
+            int v_2 = z->l - z->c;
+            if (!(eq_s_b(z, 2, s_2))) goto lab0;
             return 0;
         lab0:
-            z->c = z->l - m2;
+            z->c = z->l - v_2;
         }
-    }
-    {   int ret = slice_del(z);
-        if (ret < 0) return ret;
-    }
-    {   int ret = r_undouble(z);
-        if (ret <= 0) return ret;
+        if (out_grouping_b(z, g_v, 97, 252, 0)) return 0;
+        z->c = z->l - v_1;
     }
     return 1;
 }
 
-static int r_standard_suffix(struct SN_env * z) {
+static int r_lengthen_V(struct SN_env * z) {
     int among_var;
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
+        if (out_grouping_b(z, g_v_WX, 97, 252, 0)) goto lab0;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
-        among_var = find_among_b(z, a_3, 5);
+        among_var = find_among_b(z, a_0, 21, 0);
         if (!among_var) goto lab0;
         z->bra = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = r_R1(z);
-                    if (ret == 0) goto lab0;
+                {
+                    int v_2 = z->l - z->c;
+                    do {
+                        int v_3 = z->l - z->c;
+                        if (out_grouping_b(z, g_AEIOU, 97, 252, 0)) goto lab1;
+                        break;
+                    lab1:
+                        z->c = z->l - v_3;
+                        if (z->c > z->lb) goto lab0;
+                    } while (0);
+                    z->c = z->l - v_2;
+                }
+                {
+                    int ret = slice_to(z, &((SN_local *)z)->s_ch);
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_from_s(z, 4, s_11);
+                {
+                    int saved_c = z->c;
+                    int ret = insert_v(z, z->c, z->c, ((SN_local *)z)->s_ch);
+                    z->c = saved_c;
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = r_en_ending(z);
-                    if (ret == 0) goto lab0;
+                {
+                    int v_4 = z->l - z->c;
+                    do {
+                        int v_5 = z->l - z->c;
+                        if (out_grouping_b(z, g_AEIOU, 97, 252, 0)) goto lab2;
+                        break;
+                    lab2:
+                        z->c = z->l - v_5;
+                        if (z->c > z->lb) goto lab0;
+                    } while (0);
+                    {
+                        int v_6 = z->l - z->c;
+                        do {
+                            int v_7 = z->l - z->c;
+                            if (in_grouping_b(z, g_AIOU, 97, 252, 0)) goto lab4;
+                            break;
+                        lab4:
+                            z->c = z->l - v_7;
+                            if (in_grouping_b(z, g_E, 101, 235, 0)) goto lab3;
+                            if (z->c > z->lb) goto lab3;
+                        } while (0);
+                        goto lab0;
+                    lab3:
+                        z->c = z->l - v_6;
+                    }
+                    {
+                        int v_8 = z->l - z->c;
+                        if (z->c <= z->lb) goto lab5;
+                        z->c--;
+                        if (in_grouping_b(z, g_AIOU, 97, 252, 0)) goto lab5;
+                        if (out_grouping_b(z, g_AEIOU, 97, 252, 0)) goto lab5;
+                        goto lab0;
+                    lab5:
+                        z->c = z->l - v_8;
+                    }
+                    z->c = z->l - v_4;
+                }
+                {
+                    int ret = slice_to(z, &((SN_local *)z)->s_ch);
+                    if (ret < 0) return ret;
+                }
+                {
+                    int saved_c = z->c;
+                    int ret = insert_v(z, z->c, z->c, ((SN_local *)z)->s_ch);
+                    z->c = saved_c;
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = r_R1(z);
-                    if (ret == 0) goto lab0;
+                {
+                    int ret = slice_from_s(z, 3, s_3);
                     if (ret < 0) return ret;
                 }
-                if (out_grouping_b(z, g_v_j, 97, 232, 0)) goto lab0;
-                {   int ret = slice_del(z);
+                break;
+            case 4:
+                {
+                    int ret = slice_from_s(z, 3, s_4);
                     if (ret < 0) return ret;
                 }
                 break;
         }
     lab0:
-        z->c = z->l - m1;
-    }
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_e_ending(z);
-            if (ret < 0) return ret;
-        }
-        z->c = z->l - m2;
-    }
-    {   int m3 = z->l - z->c; (void)m3;
-        z->ket = z->c;
-        if (!(eq_s_b(z, 4, s_12))) goto lab1;
-        z->bra = z->c;
-        {   int ret = r_R2(z);
-            if (ret == 0) goto lab1;
-            if (ret < 0) return ret;
-        }
-        {   int m4 = z->l - z->c; (void)m4;
-            if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2;
-            z->c--;
-            goto lab1;
-        lab2:
-            z->c = z->l - m4;
-        }
-        {   int ret = slice_del(z);
-            if (ret < 0) return ret;
-        }
-        z->ket = z->c;
-        if (!(eq_s_b(z, 2, s_13))) goto lab1;
-        z->bra = z->c;
-        {   int ret = r_en_ending(z);
-            if (ret == 0) goto lab1;
-            if (ret < 0) return ret;
-        }
-    lab1:
-        z->c = z->l - m3;
+        z->c = z->l - v_1;
     }
-    {   int m5 = z->l - z->c; (void)m5;
-        z->ket = z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
-        among_var = find_among_b(z, a_4, 6);
-        if (!among_var) goto lab3;
-        z->bra = z->c;
-        switch (among_var) {
-            case 1:
-                {   int ret = r_R2(z);
-                    if (ret == 0) goto lab3;
-                    if (ret < 0) return ret;
-                }
-                {   int ret = slice_del(z);
+    return 1;
+}
+
+static int r_Step_1(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+    among_var = find_among_b(z, a_1, 8, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 't') goto lab0;
+                z->c--;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
                     if (ret < 0) return ret;
                 }
-                {   int m6 = z->l - z->c; (void)m6;
-                    z->ket = z->c;
-                    if (!(eq_s_b(z, 2, s_14))) goto lab5;
-                    z->bra = z->c;
-                    {   int ret = r_R2(z);
-                        if (ret == 0) goto lab5;
+                return 0;
+            lab0:
+                z->c = z->l - v_1;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 2, s_5);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            do {
+                int v_2 = z->l - z->c;
+                {
+                    int v_3 = z->l - z->c;
+                    if (!(eq_s_b(z, 2, s_6))) goto lab1;
+                    {
+                        int ret = r_R1(z);
+                        if (ret == 0) goto lab1;
                         if (ret < 0) return ret;
                     }
-                    {   int m7 = z->l - z->c; (void)m7;
-                        if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
-                        z->c--;
-                        goto lab5;
-                    lab6:
-                        z->c = z->l - m7;
+                    {
+                        int ret = r_C(z);
+                        if (ret == 0) goto lab1;
+                        if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    z->c = z->l - v_3;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_lengthen_V(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab1:
+                z->c = z->l - v_2;
+                {
+                    int v_4 = z->l - z->c;
+                    if (!(eq_s_b(z, 2, s_7))) goto lab2;
+                    {
+                        int ret = r_R1(z);
+                        if (ret == 0) goto lab2;
                         if (ret < 0) return ret;
                     }
-                    goto lab4;
-                lab5:
-                    z->c = z->l - m6;
-                    {   int ret = r_undouble(z);
-                        if (ret == 0) goto lab3;
+                    {
+                        int ret = r_C(z);
+                        if (ret == 0) goto lab2;
                         if (ret < 0) return ret;
                     }
+                    z->c = z->l - v_4;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
                 }
-            lab4:
                 break;
-            case 2:
-                {   int ret = r_R2(z);
+            lab2:
+                z->c = z->l - v_2;
+                {
+                    int ret = r_R1(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 1, s_8);
+                    if (ret < 0) return ret;
+                }
+            } while (0);
+            break;
+        case 5:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_9);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 6:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_V(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 2, s_10);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 7:
+            do {
+                int v_5 = z->l - z->c;
+                if (!(eq_s_b(z, 3, s_11))) goto lab3;
+                {
+                    int ret = r_R1(z);
                     if (ret == 0) goto lab3;
                     if (ret < 0) return ret;
                 }
-                {   int m8 = z->l - z->c; (void)m8;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
+                z->bra = z->c;
+                {
+                    int ret = slice_from_s(z, 4, s_12);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab3:
+                z->c = z->l - v_5;
+                if (!(eq_s_b(z, 2, s_13))) goto lab4;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab4:
+                z->c = z->l - v_5;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'd') goto lab5;
+                z->c--;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab5;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret == 0) goto lab5;
+                    if (ret < 0) return ret;
+                }
+                z->bra = z->c;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab5:
+                z->c = z->l - v_5;
+                do {
+                    int v_6 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab7;
                     z->c--;
-                    goto lab3;
+                    break;
                 lab7:
-                    z->c = z->l - m8;
+                    z->c = z->l - v_6;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab6;
+                    z->c--;
+                } while (0);
+                {
+                    int ret = r_V(z);
+                    if (ret == 0) goto lab6;
+                    if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
-            case 3:
-                {   int ret = r_R2(z);
-                    if (ret == 0) goto lab3;
+            lab6:
+                z->c = z->l - v_5;
+                {
+                    int ret = r_R1(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = r_lengthen_V(z);
+                    if (ret <= 0) return ret;
+                }
+            } while (0);
+            break;
+        case 8:
+            {
+                int ret = slice_from_s(z, 2, s_14);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Step_2(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 101) return 0;
+    among_var = find_among_b(z, a_2, 11, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            do {
+                int v_1 = z->l - z->c;
+                if (!(eq_s_b(z, 2, s_15))) goto lab0;
+                z->bra = z->c;
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int ret = r_e_ending(z);
-                    if (ret == 0) goto lab3;
+                break;
+            lab0:
+                z->c = z->l - v_1;
+                if (!(eq_s_b(z, 2, s_16))) goto lab1;
+                z->bra = z->c;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab1;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret == 0) goto lab1;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
-            case 4:
-                {   int ret = r_R2(z);
+            lab1:
+                z->c = z->l - v_1;
+                if (!(eq_s_b(z, 3, s_17))) goto lab2;
+                z->bra = z->c;
+                {
+                    int ret = slice_from_s(z, 2, s_18);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab2:
+                z->c = z->l - v_1;
+                if (z->c <= z->lb || z->p[z->c - 1] != 't') goto lab3;
+                z->c--;
+                z->bra = z->c;
+                {
+                    int ret = r_R1(z);
                     if (ret == 0) goto lab3;
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = r_VX(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
-            case 5:
-                {   int ret = r_R2(z);
-                    if (ret == 0) goto lab3;
+            lab3:
+                z->c = z->l - v_1;
+                if (!(eq_s_b(z, 3, s_19))) goto lab4;
+                z->bra = z->c;
+                {
+                    int ret = slice_from_s(z, 3, s_20);
                     if (ret < 0) return ret;
                 }
-                if (!(z->I[3])) goto lab3;
-                {   int ret = slice_del(z);
+                break;
+            lab4:
+                z->c = z->l - v_1;
+                if (!(eq_s_b(z, 2, s_21))) goto lab5;
+                z->bra = z->c;
+                {
+                    int ret = slice_from_s(z, 1, s_22);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab5:
+                z->c = z->l - v_1;
+                if (z->c <= z->lb || z->p[z->c - 1] != '\'') goto lab6;
+                z->c--;
+                z->bra = z->c;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab6;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab6:
+                z->c = z->l - v_1;
+                z->bra = z->c;
+                {
+                    int ret = r_R1(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+            } while (0);
+            break;
+        case 2:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_23);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 4, s_24);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 4, s_25);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 5:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 6:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_26);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 7:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_27);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 8:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_28);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 9:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = insert_s(z, z->c, z->c, 1, s_29);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = r_lengthen_V(z);
+                if (ret <= 0) return ret;
+            }
+            break;
+        case 10:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = insert_s(z, z->c, z->c, 2, s_30);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = r_lengthen_V(z);
+                if (ret <= 0) return ret;
+            }
+            break;
+        case 11:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 3, s_31);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Step_3(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1316016 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+    among_var = find_among_b(z, a_3, 14, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 3, s_32);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = r_lengthen_V(z);
+                if (ret <= 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            {
+                int ret = slice_from_s(z, 1, s_33);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 5:
+            do {
+                int v_1 = z->l - z->c;
+                if (!(eq_s_b(z, 3, s_34))) goto lab0;
+                {
+                    int ret = slice_from_s(z, 2, s_35);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab0:
+                z->c = z->l - v_1;
+                {
+                    int ret = r_R1(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_lengthen_V(z);
+                    if (ret <= 0) return ret;
+                }
+            } while (0);
+            break;
+        case 6:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 3, s_36);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 7:
+            {
+                int ret = r_R2(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = insert_s(z, z->c, z->c, 1, s_37);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = r_lengthen_V(z);
+                if (ret <= 0) return ret;
+            }
+            break;
+        case 8:
+            {
+                int ret = r_R2(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = insert_s(z, z->c, z->c, 1, s_38);
+                if (ret < 0) return ret;
+            }
+            {
+                int ret = r_lengthen_V(z);
+                if (ret <= 0) return ret;
+            }
+            break;
+        case 9:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_39);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 10:
+            {
+                int ret = r_R1(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = r_C(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_40);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Step_4(struct SN_env * z) {
+    int among_var;
+    do {
+        int v_1 = z->l - z->c;
+        z->ket = z->c;
+        if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1315024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
+        among_var = find_among_b(z, a_4, 16, 0);
+        if (!among_var) goto lab0;
+        z->bra = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 2, s_41);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 2:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 3, s_42);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 3:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 4:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_V(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 1, s_43);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 5:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_V(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 1, s_44);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 6:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_V(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 1, s_45);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 7:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 4, s_46);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 8:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 4, s_47);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 9:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_C(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_lengthen_V(z);
                     if (ret < 0) return ret;
                 }
                 break;
         }
-    lab3:
-        z->c = z->l - m5;
-    }
-    {   int m9 = z->l - z->c; (void)m9;
-        if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab8;
-        {   int m_test10 = z->l - z->c;
-            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab8;
-            if (!find_among_b(z, a_5, 4)) goto lab8;
-            if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab8;
-            z->c = z->l - m_test10;
-        }
+        break;
+    lab0:
+        z->c = z->l - v_1;
         z->ket = z->c;
-        if (z->c <= z->lb) goto lab8;
-        z->c--;
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1310848 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+        if (!find_among_b(z, a_5, 3, 0)) return 0;
         z->bra = z->c;
-        {   int ret = slice_del(z);
+        {
+            int ret = r_R1(z);
+            if (ret <= 0) return ret;
+        }
+        {
+            int v_2 = z->l - z->c;
+            if (!(eq_s_b(z, 3, s_48))) goto lab1;
+            if (z->c > z->lb) goto lab1;
+            return 0;
+        lab1:
+            z->c = z->l - v_2;
+        }
+        {
+            int ret = r_C(z);
+            if (ret <= 0) return ret;
+        }
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
-    lab8:
-        z->c = z->l - m9;
+        {
+            int ret = r_lengthen_V(z);
+            if (ret <= 0) return ret;
+        }
+    } while (0);
+    return 1;
+}
+
+static int r_Step_7(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) return 0;
+    among_var = find_among_b(z, a_6, 3, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            {
+                int ret = slice_from_s(z, 1, s_49);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = slice_from_s(z, 1, s_50);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = slice_from_s(z, 1, s_51);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Step_6(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((98532828 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+    among_var = find_among_b(z, a_7, 22, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            {
+                int ret = slice_from_s(z, 1, s_52);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = slice_from_s(z, 1, s_53);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = slice_from_s(z, 1, s_54);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            {
+                int ret = slice_from_s(z, 1, s_55);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 5:
+            {
+                int ret = slice_from_s(z, 1, s_56);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 6:
+            {
+                int ret = slice_from_s(z, 1, s_57);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 7:
+            {
+                int ret = slice_from_s(z, 1, s_58);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 8:
+            {
+                int ret = slice_from_s(z, 1, s_59);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 9:
+            {
+                int ret = slice_from_s(z, 1, s_60);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 10:
+            {
+                int ret = slice_from_s(z, 1, s_61);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 11:
+            {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab0;
+                z->c--;
+                if (z->c > z->lb) goto lab0;
+                return 0;
+            lab0:
+                z->c = z->l - v_1;
+            }
+            {
+                int ret = slice_from_s(z, 1, s_62);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 12:
+            {
+                int ret = slice_from_s(z, 1, s_63);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 13:
+            {
+                int ret = slice_from_s(z, 1, s_64);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 14:
+            {
+                int ret = slice_from_s(z, 1, s_65);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 15:
+            {
+                int ret = slice_from_s(z, 1, s_66);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 16:
+            {
+                int ret = slice_from_s(z, 1, s_67);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 17:
+            {
+                int ret = slice_from_s(z, 1, s_68);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 18:
+            {
+                int ret = slice_from_s(z, 1, s_69);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 19:
+            {
+                int ret = slice_from_s(z, 1, s_70);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 20:
+            {
+                int ret = slice_from_s(z, 1, s_71);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Step_1c(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    if (z->c <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) return 0;
+    among_var = find_among_b(z, a_8, 2, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    {
+        int ret = r_R1(z);
+        if (ret <= 0) return ret;
+    }
+    {
+        int ret = r_C(z);
+        if (ret <= 0) return ret;
+    }
+    switch (among_var) {
+        case 1:
+            {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'n') goto lab0;
+                z->c--;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                return 0;
+            lab0:
+                z->c = z->l - v_1;
+            }
+            do {
+                int v_2 = z->l - z->c;
+                if (!(eq_s_b(z, 2, s_72))) goto lab1;
+                if (z->c > z->lb) goto lab1;
+                {
+                    int ret = slice_from_s(z, 1, s_73);
+                    if (ret < 0) return ret;
+                }
+                break;
+            lab1:
+                z->c = z->l - v_2;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+            } while (0);
+            break;
+        case 2:
+            {
+                int v_3 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'h') goto lab2;
+                z->c--;
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab2;
+                    if (ret < 0) return ret;
+                }
+                return 0;
+            lab2:
+                z->c = z->l - v_3;
+            }
+            {
+                int v_4 = z->l - z->c;
+                if (!(eq_s_b(z, 2, s_74))) goto lab3;
+                if (z->c > z->lb) goto lab3;
+                return 0;
+            lab3:
+                z->c = z->l - v_4;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_Lose_prefix(struct SN_env * z) {
+    int among_var;
+    z->bra = z->c;
+    if (!(eq_s(z, 2, s_75))) return 0;
+    z->ket = z->c;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        z->c = v_1;
+    }
+    {
+        int v_2 = z->c;
+        while (1) {
+            int v_3 = z->c;
+            do {
+                int v_4 = z->c;
+                if (!(eq_s(z, 2, s_76))) goto lab1;
+                break;
+            lab1:
+                z->c = v_4;
+                if (in_grouping(z, g_v, 97, 252, 0)) goto lab0;
+            } while (0);
+            break;
+        lab0:
+            z->c = v_3;
+            if (z->c >= z->l) return 0;
+            z->c++;
+        }
+        while (1) {
+            int v_5 = z->c;
+            do {
+                int v_6 = z->c;
+                if (!(eq_s(z, 2, s_77))) goto lab3;
+                break;
+            lab3:
+                z->c = v_6;
+                if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
+            } while (0);
+            continue;
+        lab2:
+            z->c = v_5;
+            break;
+        }
+        if (z->c < z->l) goto lab4;
+        return 0;
+    lab4:
+        z->c = v_2;
+    }
+    if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((1314818 >> (z->p[z->c + 2] & 0x1f)) & 1)) among_var = -1; else
+    among_var = find_among(z, a_9, 6, 0);
+    switch (among_var) {
+        case 1:
+            return 0;
+            break;
+    }
+    ((SN_local *)z)->b_GE_removed = 1;
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
+    {
+        int v_7 = z->c;
+        z->bra = z->c;
+        if (z->c >= z->l || (z->p[z->c + 0] != 235 && z->p[z->c + 0] != 239)) goto lab5;
+        among_var = find_among(z, a_10, 2, 0);
+        if (!among_var) goto lab5;
+        z->ket = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = slice_from_s(z, 1, s_78);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 2:
+                {
+                    int ret = slice_from_s(z, 1, s_79);
+                    if (ret < 0) return ret;
+                }
+                break;
+        }
+    lab5:
+        z->c = v_7;
+    }
+    return 1;
+}
+
+static int r_Lose_infix(struct SN_env * z) {
+    int among_var;
+    if (z->c >= z->l) return 0;
+    z->c++;
+    while (1) {
+        z->bra = z->c;
+        if (!(eq_s(z, 2, s_80))) goto lab0;
+        z->ket = z->c;
+        break;
+    lab0:
+        if (z->c >= z->l) return 0;
+        z->c++;
+    }
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        z->c = v_1;
+    }
+    {
+        int v_2 = z->c;
+        while (1) {
+            int v_3 = z->c;
+            do {
+                int v_4 = z->c;
+                if (!(eq_s(z, 2, s_81))) goto lab2;
+                break;
+            lab2:
+                z->c = v_4;
+                if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
+            } while (0);
+            break;
+        lab1:
+            z->c = v_3;
+            if (z->c >= z->l) return 0;
+            z->c++;
+        }
+        while (1) {
+            int v_5 = z->c;
+            do {
+                int v_6 = z->c;
+                if (!(eq_s(z, 2, s_82))) goto lab4;
+                break;
+            lab4:
+                z->c = v_6;
+                if (in_grouping(z, g_v, 97, 252, 0)) goto lab3;
+            } while (0);
+            continue;
+        lab3:
+            z->c = v_5;
+            break;
+        }
+        if (z->c < z->l) goto lab5;
+        return 0;
+    lab5:
+        z->c = v_2;
+    }
+    ((SN_local *)z)->b_GE_removed = 1;
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
+    {
+        int v_7 = z->c;
+        z->bra = z->c;
+        if (z->c >= z->l || (z->p[z->c + 0] != 235 && z->p[z->c + 0] != 239)) goto lab6;
+        among_var = find_among(z, a_11, 2, 0);
+        if (!among_var) goto lab6;
+        z->ket = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = slice_from_s(z, 1, s_83);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 2:
+                {
+                    int ret = slice_from_s(z, 1, s_84);
+                    if (ret < 0) return ret;
+                }
+                break;
+        }
+    lab6:
+        z->c = v_7;
+    }
+    return 1;
+}
+
+static int r_measure(struct SN_env * z) {
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        while (1) {
+            if (out_grouping(z, g_v, 97, 252, 0)) goto lab1;
+            continue;
+        lab1:
+            break;
+        }
+        {
+            int v_2 = 1;
+            while (1) {
+                int v_3 = z->c;
+                do {
+                    int v_4 = z->c;
+                    if (!(eq_s(z, 2, s_85))) goto lab3;
+                    break;
+                lab3:
+                    z->c = v_4;
+                    if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
+                } while (0);
+                v_2--;
+                continue;
+            lab2:
+                z->c = v_3;
+                break;
+            }
+            if (v_2 > 0) goto lab0;
+        }
+        if (out_grouping(z, g_v, 97, 252, 0)) goto lab0;
+        ((SN_local *)z)->i_p1 = z->c;
+        while (1) {
+            if (out_grouping(z, g_v, 97, 252, 0)) goto lab4;
+            continue;
+        lab4:
+            break;
+        }
+        {
+            int v_5 = 1;
+            while (1) {
+                int v_6 = z->c;
+                do {
+                    int v_7 = z->c;
+                    if (!(eq_s(z, 2, s_86))) goto lab6;
+                    break;
+                lab6:
+                    z->c = v_7;
+                    if (in_grouping(z, g_v, 97, 252, 0)) goto lab5;
+                } while (0);
+                v_5--;
+                continue;
+            lab5:
+                z->c = v_6;
+                break;
+            }
+            if (v_5 > 0) goto lab0;
+        }
+        if (out_grouping(z, g_v, 97, 252, 0)) goto lab0;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab0:
+        z->c = v_1;
     }
     return 1;
 }
 
 extern int dutch_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_prelude(z);
+    int b_stemmed;
+    b_stemmed = 0;
+    {
+        int ret = r_measure(z);
+        if (ret <= 0) return ret;
+    }
+    z->lb = z->c; z->c = z->l;
+    {
+        int v_1 = z->l - z->c;
+        {
+            int ret = r_Step_1(z);
+            if (ret == 0) goto lab0;
+            if (ret < 0) return ret;
+        }
+        b_stemmed = 1;
+    lab0:
+        z->c = z->l - v_1;
+    }
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_Step_2(z);
+            if (ret == 0) goto lab1;
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        b_stemmed = 1;
+    lab1:
+        z->c = z->l - v_2;
     }
-    {   int c2 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_Step_3(z);
+            if (ret == 0) goto lab2;
             if (ret < 0) return ret;
         }
-        z->c = c2;
+        b_stemmed = 1;
+    lab2:
+        z->c = z->l - v_3;
+    }
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_Step_4(z);
+            if (ret == 0) goto lab3;
+            if (ret < 0) return ret;
+        }
+        b_stemmed = 1;
+    lab3:
+        z->c = z->l - v_4;
+    }
+    z->c = z->lb;
+    ((SN_local *)z)->b_GE_removed = 0;
+    {
+        int v_5 = z->c;
+        {
+            int v_6 = z->c;
+            {
+                int ret = r_Lose_prefix(z);
+                if (ret == 0) goto lab4;
+                if (ret < 0) return ret;
+            }
+            z->c = v_6;
+            {
+                int ret = r_measure(z);
+                if (ret < 0) return ret;
+            }
+        }
+    lab4:
+        z->c = v_5;
     }
     z->lb = z->c; z->c = z->l;
-
-
-    {   int ret = r_standard_suffix(z);
-        if (ret < 0) return ret;
+    {
+        int v_7 = z->l - z->c;
+        if (!((SN_local *)z)->b_GE_removed) goto lab5;
+        b_stemmed = 1;
+        {
+            int ret = r_Step_1c(z);
+            if (ret == 0) goto lab5;
+            if (ret < 0) return ret;
+        }
+    lab5:
+        z->c = z->l - v_7;
     }
     z->c = z->lb;
-    {   int c3 = z->c;
-        {   int ret = r_postlude(z);
+    ((SN_local *)z)->b_GE_removed = 0;
+    {
+        int v_8 = z->c;
+        {
+            int v_9 = z->c;
+            {
+                int ret = r_Lose_infix(z);
+                if (ret == 0) goto lab6;
+                if (ret < 0) return ret;
+            }
+            z->c = v_9;
+            {
+                int ret = r_measure(z);
+                if (ret < 0) return ret;
+            }
+        }
+    lab6:
+        z->c = v_8;
+    }
+    z->lb = z->c; z->c = z->l;
+    {
+        int v_10 = z->l - z->c;
+        if (!((SN_local *)z)->b_GE_removed) goto lab7;
+        b_stemmed = 1;
+        {
+            int ret = r_Step_1c(z);
+            if (ret == 0) goto lab7;
             if (ret < 0) return ret;
         }
-        z->c = c3;
+    lab7:
+        z->c = z->l - v_10;
     }
+    z->c = z->lb;
+    z->lb = z->c; z->c = z->l;
+    {
+        int v_11 = z->l - z->c;
+        {
+            int ret = r_Step_7(z);
+            if (ret == 0) goto lab8;
+            if (ret < 0) return ret;
+        }
+        b_stemmed = 1;
+    lab8:
+        z->c = z->l - v_11;
+    }
+    {
+        int v_12 = z->l - z->c;
+        if (!b_stemmed) goto lab9;
+        {
+            int ret = r_Step_6(z);
+            if (ret == 0) goto lab9;
+            if (ret < 0) return ret;
+        }
+    lab9:
+        z->c = z->l - v_12;
+    }
+    z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * dutch_ISO_8859_1_create_env(void) { return SN_create_env(0, 4); }
+extern struct SN_env * dutch_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->b_GE_removed = 0;
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->s_ch = NULL;
 
-extern void dutch_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+        if ((((SN_local *)z)->s_ch = create_s()) == NULL) {
+            dutch_ISO_8859_1_close_env(z);
+            return NULL;
+        }
+    }
+    return z;
+}
+
+extern void dutch_ISO_8859_1_close_env(struct SN_env * z) {
+    if (z) {
+        lose_s(((SN_local *)z)->s_ch);
+    }
+    SN_delete_env(z);
+}
 
diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.c b/src/backend/snowball/libstemmer/stem_ISO_8859_1_dutch_porter.c
new file mode 100644 (file)
index 0000000..64e8bbe
--- /dev/null
@@ -0,0 +1,665 @@
+/* Generated from dutch_porter.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
+
+#include "stem_ISO_8859_1_dutch_porter.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    unsigned char b_e_found;
+};
+
+typedef struct SN_local SN_local;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int dutch_porter_ISO_8859_1_stem(struct SN_env * z);
+#ifdef __cplusplus
+}
+#endif
+
+static int r_standard_suffix(struct SN_env * z);
+static int r_undouble(struct SN_env * z);
+static int r_R2(struct SN_env * z);
+static int r_R1(struct SN_env * z);
+static int r_mark_regions(struct SN_env * z);
+static int r_en_ending(struct SN_env * z);
+static int r_e_ending(struct SN_env * z);
+static int r_postlude(struct SN_env * z);
+static int r_prelude(struct SN_env * z);
+
+static const symbol s_0[] = { 'a' };
+static const symbol s_1[] = { 'e' };
+static const symbol s_2[] = { 'i' };
+static const symbol s_3[] = { 'o' };
+static const symbol s_4[] = { 'u' };
+static const symbol s_5[] = { 'Y' };
+static const symbol s_6[] = { 'I' };
+static const symbol s_7[] = { 'Y' };
+static const symbol s_8[] = { 'y' };
+static const symbol s_9[] = { 'i' };
+static const symbol s_10[] = { 'g', 'e', 'm' };
+static const symbol s_11[] = { 'h', 'e', 'i', 'd' };
+static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
+static const symbol s_13[] = { 'e', 'n' };
+static const symbol s_14[] = { 'i', 'g' };
+
+static const symbol s_0_1[1] = { 0xE1 };
+static const symbol s_0_2[1] = { 0xE4 };
+static const symbol s_0_3[1] = { 0xE9 };
+static const symbol s_0_4[1] = { 0xEB };
+static const symbol s_0_5[1] = { 0xED };
+static const symbol s_0_6[1] = { 0xEF };
+static const symbol s_0_7[1] = { 0xF3 };
+static const symbol s_0_8[1] = { 0xF6 };
+static const symbol s_0_9[1] = { 0xFA };
+static const symbol s_0_10[1] = { 0xFC };
+static const struct among a_0[11] = {
+{ 0, 0, 0, 6, 0},
+{ 1, s_0_1, -1, 1, 0},
+{ 1, s_0_2, -2, 1, 0},
+{ 1, s_0_3, -3, 2, 0},
+{ 1, s_0_4, -4, 2, 0},
+{ 1, s_0_5, -5, 3, 0},
+{ 1, s_0_6, -6, 3, 0},
+{ 1, s_0_7, -7, 4, 0},
+{ 1, s_0_8, -8, 4, 0},
+{ 1, s_0_9, -9, 5, 0},
+{ 1, s_0_10, -10, 5, 0}
+};
+
+static const symbol s_1_1[1] = { 'I' };
+static const symbol s_1_2[1] = { 'Y' };
+static const struct among a_1[3] = {
+{ 0, 0, 0, 3, 0},
+{ 1, s_1_1, -1, 2, 0},
+{ 1, s_1_2, -2, 1, 0}
+};
+
+static const symbol s_2_0[2] = { 'd', 'd' };
+static const symbol s_2_1[2] = { 'k', 'k' };
+static const symbol s_2_2[2] = { 't', 't' };
+static const struct among a_2[3] = {
+{ 2, s_2_0, 0, -1, 0},
+{ 2, s_2_1, 0, -1, 0},
+{ 2, s_2_2, 0, -1, 0}
+};
+
+static const symbol s_3_0[3] = { 'e', 'n', 'e' };
+static const symbol s_3_1[2] = { 's', 'e' };
+static const symbol s_3_2[2] = { 'e', 'n' };
+static const symbol s_3_3[5] = { 'h', 'e', 'd', 'e', 'n' };
+static const symbol s_3_4[1] = { 's' };
+static const struct among a_3[5] = {
+{ 3, s_3_0, 0, 2, 0},
+{ 2, s_3_1, 0, 3, 0},
+{ 2, s_3_2, 0, 2, 0},
+{ 5, s_3_3, -1, 1, 0},
+{ 1, s_3_4, 0, 3, 0}
+};
+
+static const symbol s_4_0[3] = { 'e', 'n', 'd' };
+static const symbol s_4_1[2] = { 'i', 'g' };
+static const symbol s_4_2[3] = { 'i', 'n', 'g' };
+static const symbol s_4_3[4] = { 'l', 'i', 'j', 'k' };
+static const symbol s_4_4[4] = { 'b', 'a', 'a', 'r' };
+static const symbol s_4_5[3] = { 'b', 'a', 'r' };
+static const struct among a_4[6] = {
+{ 3, s_4_0, 0, 1, 0},
+{ 2, s_4_1, 0, 2, 0},
+{ 3, s_4_2, 0, 1, 0},
+{ 4, s_4_3, 0, 3, 0},
+{ 4, s_4_4, 0, 4, 0},
+{ 3, s_4_5, 0, 5, 0}
+};
+
+static const symbol s_5_0[2] = { 'a', 'a' };
+static const symbol s_5_1[2] = { 'e', 'e' };
+static const symbol s_5_2[2] = { 'o', 'o' };
+static const symbol s_5_3[2] = { 'u', 'u' };
+static const struct among a_5[4] = {
+{ 2, s_5_0, 0, -1, 0},
+{ 2, s_5_1, 0, -1, 0},
+{ 2, s_5_2, 0, -1, 0},
+{ 2, s_5_3, 0, -1, 0}
+};
+
+static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+
+static const unsigned char g_v_I[] = { 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+
+static const unsigned char g_v_j[] = { 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+
+static int r_prelude(struct SN_env * z) {
+    int among_var;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
+            z->bra = z->c;
+            if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((340306450 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else
+            among_var = find_among(z, a_0, 11, 0);
+            z->ket = z->c;
+            switch (among_var) {
+                case 1:
+                    {
+                        int ret = slice_from_s(z, 1, s_0);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                case 2:
+                    {
+                        int ret = slice_from_s(z, 1, s_1);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                case 3:
+                    {
+                        int ret = slice_from_s(z, 1, s_2);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                case 4:
+                    {
+                        int ret = slice_from_s(z, 1, s_3);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                case 5:
+                    {
+                        int ret = slice_from_s(z, 1, s_4);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                case 6:
+                    if (z->c >= z->l) goto lab0;
+                    z->c++;
+                    break;
+            }
+            continue;
+        lab0:
+            z->c = v_2;
+            break;
+        }
+        z->c = v_1;
+    }
+    {
+        int v_3 = z->c;
+        z->bra = z->c;
+        if (z->c == z->l || z->p[z->c] != 'y') { z->c = v_3; goto lab1; }
+        z->c++;
+        z->ket = z->c;
+        {
+            int ret = slice_from_s(z, 1, s_5);
+            if (ret < 0) return ret;
+        }
+    lab1:
+        ;
+    }
+    while (1) {
+        int v_4 = z->c;
+        {
+            int ret = out_grouping(z, g_v, 97, 232, 1);
+            if (ret < 0) goto lab2;
+            z->c += ret;
+        }
+        {
+            int v_5 = z->c;
+            z->bra = z->c;
+            do {
+                int v_6 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'i') goto lab4;
+                z->c++;
+                z->ket = z->c;
+                {
+                    int v_7 = z->c;
+                    if (in_grouping(z, g_v, 97, 232, 0)) goto lab5;
+                    {
+                        int ret = slice_from_s(z, 1, s_6);
+                        if (ret < 0) return ret;
+                    }
+                lab5:
+                    z->c = v_7;
+                }
+                break;
+            lab4:
+                z->c = v_6;
+                if (z->c == z->l || z->p[z->c] != 'y') { z->c = v_5; goto lab3; }
+                z->c++;
+                z->ket = z->c;
+                {
+                    int ret = slice_from_s(z, 1, s_7);
+                    if (ret < 0) return ret;
+                }
+            } while (0);
+        lab3:
+            ;
+        }
+        continue;
+    lab2:
+        z->c = v_4;
+        break;
+    }
+    return 1;
+}
+
+static int r_mark_regions(struct SN_env * z) {
+    int i_x;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        i_x = z->c;
+        z->c = v_1;
+    }
+    {
+        int ret = out_grouping(z, g_v, 97, 232, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    {
+        int ret = in_grouping(z, g_v, 97, 232, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    ((SN_local *)z)->i_p1 = z->c;
+    if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
+    ((SN_local *)z)->i_p1 = i_x;
+lab0:
+    {
+        int ret = out_grouping(z, g_v, 97, 232, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    {
+        int ret = in_grouping(z, g_v, 97, 232, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    ((SN_local *)z)->i_p2 = z->c;
+    return 1;
+}
+
+static int r_postlude(struct SN_env * z) {
+    int among_var;
+    while (1) {
+        int v_1 = z->c;
+        z->bra = z->c;
+        if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else
+        among_var = find_among(z, a_1, 3, 0);
+        z->ket = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = slice_from_s(z, 1, s_8);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 2:
+                {
+                    int ret = slice_from_s(z, 1, s_9);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 3:
+                if (z->c >= z->l) goto lab0;
+                z->c++;
+                break;
+        }
+        continue;
+    lab0:
+        z->c = v_1;
+        break;
+    }
+    return 1;
+}
+
+static int r_R1(struct SN_env * z) {
+    return ((SN_local *)z)->i_p1 <= z->c;
+}
+
+static int r_R2(struct SN_env * z) {
+    return ((SN_local *)z)->i_p2 <= z->c;
+}
+
+static int r_undouble(struct SN_env * z) {
+    {
+        int v_1 = z->l - z->c;
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+        if (!find_among_b(z, a_2, 3, 0)) return 0;
+        z->c = z->l - v_1;
+    }
+    z->ket = z->c;
+    if (z->c <= z->lb) return 0;
+    z->c--;
+    z->bra = z->c;
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
+    return 1;
+}
+
+static int r_e_ending(struct SN_env * z) {
+    ((SN_local *)z)->b_e_found = 0;
+    z->ket = z->c;
+    if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
+    z->c--;
+    z->bra = z->c;
+    {
+        int ret = r_R1(z);
+        if (ret <= 0) return ret;
+    }
+    {
+        int v_1 = z->l - z->c;
+        if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
+        z->c = z->l - v_1;
+    }
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
+    ((SN_local *)z)->b_e_found = 1;
+    return r_undouble(z);
+}
+
+static int r_en_ending(struct SN_env * z) {
+    {
+        int ret = r_R1(z);
+        if (ret <= 0) return ret;
+    }
+    {
+        int v_1 = z->l - z->c;
+        if (out_grouping_b(z, g_v, 97, 232, 0)) return 0;
+        z->c = z->l - v_1;
+        {
+            int v_2 = z->l - z->c;
+            if (!(eq_s_b(z, 3, s_10))) goto lab0;
+            return 0;
+        lab0:
+            z->c = z->l - v_2;
+        }
+    }
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
+    return r_undouble(z);
+}
+
+static int r_standard_suffix(struct SN_env * z) {
+    int among_var;
+    {
+        int v_1 = z->l - z->c;
+        z->ket = z->c;
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
+        among_var = find_among_b(z, a_3, 5, 0);
+        if (!among_var) goto lab0;
+        z->bra = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_from_s(z, 4, s_11);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 2:
+                {
+                    int ret = r_en_ending(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 3:
+                {
+                    int ret = r_R1(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                if (out_grouping_b(z, g_v_j, 97, 232, 0)) goto lab0;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+        }
+    lab0:
+        z->c = z->l - v_1;
+    }
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_e_ending(z);
+            if (ret < 0) return ret;
+        }
+        z->c = z->l - v_2;
+    }
+    {
+        int v_3 = z->l - z->c;
+        z->ket = z->c;
+        if (!(eq_s_b(z, 4, s_12))) goto lab1;
+        z->bra = z->c;
+        {
+            int ret = r_R2(z);
+            if (ret == 0) goto lab1;
+            if (ret < 0) return ret;
+        }
+        {
+            int v_4 = z->l - z->c;
+            if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2;
+            z->c--;
+            goto lab1;
+        lab2:
+            z->c = z->l - v_4;
+        }
+        {
+            int ret = slice_del(z);
+            if (ret < 0) return ret;
+        }
+        z->ket = z->c;
+        if (!(eq_s_b(z, 2, s_13))) goto lab1;
+        z->bra = z->c;
+        {
+            int ret = r_en_ending(z);
+            if (ret == 0) goto lab1;
+            if (ret < 0) return ret;
+        }
+    lab1:
+        z->c = z->l - v_3;
+    }
+    {
+        int v_5 = z->l - z->c;
+        z->ket = z->c;
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
+        among_var = find_among_b(z, a_4, 6, 0);
+        if (!among_var) goto lab3;
+        z->bra = z->c;
+        switch (among_var) {
+            case 1:
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                do {
+                    int v_6 = z->l - z->c;
+                    z->ket = z->c;
+                    if (!(eq_s_b(z, 2, s_14))) goto lab4;
+                    z->bra = z->c;
+                    {
+                        int ret = r_R2(z);
+                        if (ret == 0) goto lab4;
+                        if (ret < 0) return ret;
+                    }
+                    {
+                        int v_7 = z->l - z->c;
+                        if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5;
+                        z->c--;
+                        goto lab4;
+                    lab5:
+                        z->c = z->l - v_7;
+                    }
+                    {
+                        int ret = slice_del(z);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+                lab4:
+                    z->c = z->l - v_6;
+                    {
+                        int ret = r_undouble(z);
+                        if (ret == 0) goto lab3;
+                        if (ret < 0) return ret;
+                    }
+                } while (0);
+                break;
+            case 2:
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int v_8 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
+                    z->c--;
+                    goto lab3;
+                lab6:
+                    z->c = z->l - v_8;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 3:
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = r_e_ending(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 4:
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 5:
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab3;
+                    if (ret < 0) return ret;
+                }
+                if (!((SN_local *)z)->b_e_found) goto lab3;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+        }
+    lab3:
+        z->c = z->l - v_5;
+    }
+    {
+        int v_9 = z->l - z->c;
+        if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab7;
+        {
+            int v_10 = z->l - z->c;
+            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab7;
+            if (!find_among_b(z, a_5, 4, 0)) goto lab7;
+            if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab7;
+            z->c = z->l - v_10;
+        }
+        z->ket = z->c;
+        if (z->c <= z->lb) goto lab7;
+        z->c--;
+        z->bra = z->c;
+        {
+            int ret = slice_del(z);
+            if (ret < 0) return ret;
+        }
+    lab7:
+        z->c = z->l - v_9;
+    }
+    return 1;
+}
+
+extern int dutch_porter_ISO_8859_1_stem(struct SN_env * z) {
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_prelude(z);
+            if (ret < 0) return ret;
+        }
+        z->c = v_1;
+    }
+    {
+        int v_2 = z->c;
+        {
+            int ret = r_mark_regions(z);
+            if (ret < 0) return ret;
+        }
+        z->c = v_2;
+    }
+    z->lb = z->c; z->c = z->l;
+    {
+        int ret = r_standard_suffix(z);
+        if (ret < 0) return ret;
+    }
+    z->c = z->lb;
+    {
+        int v_3 = z->c;
+        {
+            int ret = r_postlude(z);
+            if (ret < 0) return ret;
+        }
+        z->c = v_3;
+    }
+    return 1;
+}
+
+extern struct SN_env * dutch_porter_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->b_e_found = 0;
+    }
+    return z;
+}
+
+extern void dutch_porter_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
+
index ac36c163f93121a8aeb094e1c970982f528406f1..cb9ea3ae1c33ac5b47507dc49e20bb5d6da4b56a 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from english.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_english.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    unsigned char b_Y_found;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,7 +22,7 @@ extern int english_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
-static int r_exception2(struct SN_env * z);
+
 static int r_exception1(struct SN_env * z);
 static int r_Step_5(struct SN_env * z);
 static int r_Step_4(struct SN_env * z);
@@ -24,38 +37,75 @@ static int r_shortv(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
 static int r_prelude(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * english_ISO_8859_1_create_env(void);
-extern void english_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'Y' };
+static const symbol s_1[] = { 'Y' };
+static const symbol s_2[] = { 'p', 'a', 's', 't' };
+static const symbol s_3[] = { 's', 's' };
+static const symbol s_4[] = { 'i' };
+static const symbol s_5[] = { 'i', 'e' };
+static const symbol s_6[] = { 'e', 'e' };
+static const symbol s_7[] = { 'i', 'e' };
+static const symbol s_8[] = { 'e' };
+static const symbol s_9[] = { 'e' };
+static const symbol s_10[] = { 'i' };
+static const symbol s_11[] = { 't', 'i', 'o', 'n' };
+static const symbol s_12[] = { 'e', 'n', 'c', 'e' };
+static const symbol s_13[] = { 'a', 'n', 'c', 'e' };
+static const symbol s_14[] = { 'a', 'b', 'l', 'e' };
+static const symbol s_15[] = { 'e', 'n', 't' };
+static const symbol s_16[] = { 'i', 'z', 'e' };
+static const symbol s_17[] = { 'a', 't', 'e' };
+static const symbol s_18[] = { 'a', 'l' };
+static const symbol s_19[] = { 'f', 'u', 'l' };
+static const symbol s_20[] = { 'o', 'u', 's' };
+static const symbol s_21[] = { 'i', 'v', 'e' };
+static const symbol s_22[] = { 'b', 'l', 'e' };
+static const symbol s_23[] = { 'o', 'g' };
+static const symbol s_24[] = { 'o', 'g' };
+static const symbol s_25[] = { 'l', 'e', 's', 's' };
+static const symbol s_26[] = { 't', 'i', 'o', 'n' };
+static const symbol s_27[] = { 'a', 't', 'e' };
+static const symbol s_28[] = { 'a', 'l' };
+static const symbol s_29[] = { 'i', 'c' };
+static const symbol s_30[] = { 's', 'k', 'i' };
+static const symbol s_31[] = { 's', 'k', 'y' };
+static const symbol s_32[] = { 'i', 'd', 'l' };
+static const symbol s_33[] = { 'g', 'e', 'n', 't', 'l' };
+static const symbol s_34[] = { 'u', 'g', 'l', 'i' };
+static const symbol s_35[] = { 'e', 'a', 'r', 'l', 'i' };
+static const symbol s_36[] = { 'o', 'n', 'l', 'i' };
+static const symbol s_37[] = { 's', 'i', 'n', 'g', 'l' };
+static const symbol s_38[] = { 'y' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[5] = { 'a', 'r', 's', 'e', 'n' };
 static const symbol s_0_1[6] = { 'c', 'o', 'm', 'm', 'u', 'n' };
-static const symbol s_0_2[5] = { 'g', 'e', 'n', 'e', 'r' };
-
-static const struct among a_0[3] =
-{
-{ 5, s_0_0, -1, -1, 0},
-{ 6, s_0_1, -1, -1, 0},
-{ 5, s_0_2, -1, -1, 0}
+static const symbol s_0_2[5] = { 'e', 'm', 'e', 'r', 'g' };
+static const symbol s_0_3[5] = { 'g', 'e', 'n', 'e', 'r' };
+static const symbol s_0_4[5] = { 'i', 'n', 't', 'e', 'r' };
+static const symbol s_0_5[5] = { 'l', 'a', 't', 'e', 'r' };
+static const symbol s_0_6[5] = { 'o', 'r', 'g', 'a', 'n' };
+static const symbol s_0_7[4] = { 'p', 'a', 's', 't' };
+static const symbol s_0_8[7] = { 'u', 'n', 'i', 'v', 'e', 'r', 's' };
+static const struct among a_0[9] = {
+{ 5, s_0_0, 0, -1, 0},
+{ 6, s_0_1, 0, -1, 0},
+{ 5, s_0_2, 0, -1, 0},
+{ 5, s_0_3, 0, -1, 0},
+{ 5, s_0_4, 0, -1, 0},
+{ 5, s_0_5, 0, -1, 0},
+{ 5, s_0_6, 0, -1, 0},
+{ 4, s_0_7, 0, -1, 0},
+{ 7, s_0_8, 0, -1, 0}
 };
 
 static const symbol s_1_0[1] = { '\'' };
 static const symbol s_1_1[3] = { '\'', 's', '\'' };
 static const symbol s_1_2[2] = { '\'', 's' };
-
-static const struct among a_1[3] =
-{
-{ 1, s_1_0, -1, 1, 0},
-{ 3, s_1_1, 0, 1, 0},
-{ 2, s_1_2, -1, 1, 0}
+static const struct among a_1[3] = {
+{ 1, s_1_0, 0, 1, 0},
+{ 3, s_1_1, -1, 1, 0},
+{ 2, s_1_2, 0, 1, 0}
 };
 
 static const symbol s_2_0[3] = { 'i', 'e', 'd' };
@@ -64,250 +114,236 @@ static const symbol s_2_2[3] = { 'i', 'e', 's' };
 static const symbol s_2_3[4] = { 's', 's', 'e', 's' };
 static const symbol s_2_4[2] = { 's', 's' };
 static const symbol s_2_5[2] = { 'u', 's' };
-
-static const struct among a_2[6] =
-{
-{ 3, s_2_0, -1, 2, 0},
-{ 1, s_2_1, -1, 3, 0},
-{ 3, s_2_2, 1, 2, 0},
-{ 4, s_2_3, 1, 1, 0},
-{ 2, s_2_4, 1, -1, 0},
-{ 2, s_2_5, 1, -1, 0}
+static const struct among a_2[6] = {
+{ 3, s_2_0, 0, 2, 0},
+{ 1, s_2_1, 0, 3, 0},
+{ 3, s_2_2, -1, 2, 0},
+{ 4, s_2_3, -2, 1, 0},
+{ 2, s_2_4, -3, -1, 0},
+{ 2, s_2_5, -4, -1, 0}
 };
 
-static const symbol s_3_1[2] = { 'b', 'b' };
-static const symbol s_3_2[2] = { 'd', 'd' };
-static const symbol s_3_3[2] = { 'f', 'f' };
-static const symbol s_3_4[2] = { 'g', 'g' };
-static const symbol s_3_5[2] = { 'b', 'l' };
-static const symbol s_3_6[2] = { 'm', 'm' };
-static const symbol s_3_7[2] = { 'n', 'n' };
-static const symbol s_3_8[2] = { 'p', 'p' };
-static const symbol s_3_9[2] = { 'r', 'r' };
-static const symbol s_3_10[2] = { 'a', 't' };
-static const symbol s_3_11[2] = { 't', 't' };
-static const symbol s_3_12[2] = { 'i', 'z' };
-
-static const struct among a_3[13] =
-{
-{ 0, 0, -1, 3, 0},
-{ 2, s_3_1, 0, 2, 0},
-{ 2, s_3_2, 0, 2, 0},
-{ 2, s_3_3, 0, 2, 0},
-{ 2, s_3_4, 0, 2, 0},
-{ 2, s_3_5, 0, 1, 0},
-{ 2, s_3_6, 0, 2, 0},
-{ 2, s_3_7, 0, 2, 0},
-{ 2, s_3_8, 0, 2, 0},
-{ 2, s_3_9, 0, 2, 0},
-{ 2, s_3_10, 0, 1, 0},
-{ 2, s_3_11, 0, 2, 0},
-{ 2, s_3_12, 0, 1, 0}
+static const symbol s_3_0[4] = { 's', 'u', 'c', 'c' };
+static const symbol s_3_1[4] = { 'p', 'r', 'o', 'c' };
+static const symbol s_3_2[3] = { 'e', 'x', 'c' };
+static const struct among a_3[3] = {
+{ 4, s_3_0, 0, 1, 0},
+{ 4, s_3_1, 0, 1, 0},
+{ 3, s_3_2, 0, 1, 0}
 };
 
-static const symbol s_4_0[2] = { 'e', 'd' };
-static const symbol s_4_1[3] = { 'e', 'e', 'd' };
-static const symbol s_4_2[3] = { 'i', 'n', 'g' };
-static const symbol s_4_3[4] = { 'e', 'd', 'l', 'y' };
-static const symbol s_4_4[5] = { 'e', 'e', 'd', 'l', 'y' };
-static const symbol s_4_5[5] = { 'i', 'n', 'g', 'l', 'y' };
-
-static const struct among a_4[6] =
-{
-{ 2, s_4_0, -1, 2, 0},
-{ 3, s_4_1, 0, 1, 0},
-{ 3, s_4_2, -1, 2, 0},
-{ 4, s_4_3, -1, 2, 0},
-{ 5, s_4_4, 3, 1, 0},
-{ 5, s_4_5, -1, 2, 0}
+static const symbol s_4_0[4] = { 'e', 'v', 'e', 'n' };
+static const symbol s_4_1[4] = { 'c', 'a', 'n', 'n' };
+static const symbol s_4_2[3] = { 'i', 'n', 'n' };
+static const symbol s_4_3[4] = { 'e', 'a', 'r', 'r' };
+static const symbol s_4_4[4] = { 'h', 'e', 'r', 'r' };
+static const symbol s_4_5[3] = { 'o', 'u', 't' };
+static const symbol s_4_6[1] = { 'y' };
+static const struct among a_4[7] = {
+{ 4, s_4_0, 0, 2, 0},
+{ 4, s_4_1, 0, 2, 0},
+{ 3, s_4_2, 0, 2, 0},
+{ 4, s_4_3, 0, 2, 0},
+{ 4, s_4_4, 0, 2, 0},
+{ 3, s_4_5, 0, 2, 0},
+{ 1, s_4_6, 0, 1, 0}
 };
 
-static const symbol s_5_0[4] = { 'a', 'n', 'c', 'i' };
-static const symbol s_5_1[4] = { 'e', 'n', 'c', 'i' };
-static const symbol s_5_2[3] = { 'o', 'g', 'i' };
-static const symbol s_5_3[2] = { 'l', 'i' };
-static const symbol s_5_4[3] = { 'b', 'l', 'i' };
-static const symbol s_5_5[4] = { 'a', 'b', 'l', 'i' };
-static const symbol s_5_6[4] = { 'a', 'l', 'l', 'i' };
-static const symbol s_5_7[5] = { 'f', 'u', 'l', 'l', 'i' };
-static const symbol s_5_8[6] = { 'l', 'e', 's', 's', 'l', 'i' };
-static const symbol s_5_9[5] = { 'o', 'u', 's', 'l', 'i' };
-static const symbol s_5_10[5] = { 'e', 'n', 't', 'l', 'i' };
-static const symbol s_5_11[5] = { 'a', 'l', 'i', 't', 'i' };
-static const symbol s_5_12[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
-static const symbol s_5_13[5] = { 'i', 'v', 'i', 't', 'i' };
-static const symbol s_5_14[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static const symbol s_5_15[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static const symbol s_5_16[5] = { 'a', 'l', 'i', 's', 'm' };
-static const symbol s_5_17[5] = { 'a', 't', 'i', 'o', 'n' };
-static const symbol s_5_18[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
-static const symbol s_5_19[4] = { 'i', 'z', 'e', 'r' };
-static const symbol s_5_20[4] = { 'a', 't', 'o', 'r' };
-static const symbol s_5_21[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
-static const symbol s_5_22[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
-static const symbol s_5_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
-
-static const struct among a_5[24] =
-{
-{ 4, s_5_0, -1, 3, 0},
-{ 4, s_5_1, -1, 2, 0},
-{ 3, s_5_2, -1, 13, 0},
-{ 2, s_5_3, -1, 15, 0},
-{ 3, s_5_4, 3, 12, 0},
-{ 4, s_5_5, 4, 4, 0},
-{ 4, s_5_6, 3, 8, 0},
-{ 5, s_5_7, 3, 9, 0},
-{ 6, s_5_8, 3, 14, 0},
-{ 5, s_5_9, 3, 10, 0},
-{ 5, s_5_10, 3, 5, 0},
-{ 5, s_5_11, -1, 8, 0},
-{ 6, s_5_12, -1, 12, 0},
-{ 5, s_5_13, -1, 11, 0},
-{ 6, s_5_14, -1, 1, 0},
-{ 7, s_5_15, 14, 7, 0},
-{ 5, s_5_16, -1, 8, 0},
-{ 5, s_5_17, -1, 7, 0},
-{ 7, s_5_18, 17, 6, 0},
-{ 4, s_5_19, -1, 6, 0},
-{ 4, s_5_20, -1, 7, 0},
-{ 7, s_5_21, -1, 11, 0},
-{ 7, s_5_22, -1, 9, 0},
-{ 7, s_5_23, -1, 10, 0}
+static const symbol s_5_1[2] = { 'e', 'd' };
+static const symbol s_5_2[3] = { 'e', 'e', 'd' };
+static const symbol s_5_3[3] = { 'i', 'n', 'g' };
+static const symbol s_5_4[4] = { 'e', 'd', 'l', 'y' };
+static const symbol s_5_5[5] = { 'e', 'e', 'd', 'l', 'y' };
+static const symbol s_5_6[5] = { 'i', 'n', 'g', 'l', 'y' };
+static const struct among a_5[7] = {
+{ 0, 0, 0, -1, 0},
+{ 2, s_5_1, -1, 2, 0},
+{ 3, s_5_2, -1, 1, 0},
+{ 3, s_5_3, -3, 3, 0},
+{ 4, s_5_4, -4, 2, 0},
+{ 5, s_5_5, -1, 1, 0},
+{ 5, s_5_6, -6, 2, 0}
 };
 
-static const symbol s_6_0[5] = { 'i', 'c', 'a', 't', 'e' };
-static const symbol s_6_1[5] = { 'a', 't', 'i', 'v', 'e' };
-static const symbol s_6_2[5] = { 'a', 'l', 'i', 'z', 'e' };
-static const symbol s_6_3[5] = { 'i', 'c', 'i', 't', 'i' };
-static const symbol s_6_4[4] = { 'i', 'c', 'a', 'l' };
-static const symbol s_6_5[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static const symbol s_6_6[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static const symbol s_6_7[3] = { 'f', 'u', 'l' };
-static const symbol s_6_8[4] = { 'n', 'e', 's', 's' };
-
-static const struct among a_6[9] =
-{
-{ 5, s_6_0, -1, 4, 0},
-{ 5, s_6_1, -1, 6, 0},
-{ 5, s_6_2, -1, 3, 0},
-{ 5, s_6_3, -1, 4, 0},
-{ 4, s_6_4, -1, 4, 0},
-{ 6, s_6_5, -1, 1, 0},
-{ 7, s_6_6, 5, 2, 0},
-{ 3, s_6_7, -1, 5, 0},
-{ 4, s_6_8, -1, 5, 0}
+static const symbol s_6_1[2] = { 'b', 'b' };
+static const symbol s_6_2[2] = { 'd', 'd' };
+static const symbol s_6_3[2] = { 'f', 'f' };
+static const symbol s_6_4[2] = { 'g', 'g' };
+static const symbol s_6_5[2] = { 'b', 'l' };
+static const symbol s_6_6[2] = { 'm', 'm' };
+static const symbol s_6_7[2] = { 'n', 'n' };
+static const symbol s_6_8[2] = { 'p', 'p' };
+static const symbol s_6_9[2] = { 'r', 'r' };
+static const symbol s_6_10[2] = { 'a', 't' };
+static const symbol s_6_11[2] = { 't', 't' };
+static const symbol s_6_12[2] = { 'i', 'z' };
+static const struct among a_6[13] = {
+{ 0, 0, 0, 3, 0},
+{ 2, s_6_1, -1, 2, 0},
+{ 2, s_6_2, -2, 2, 0},
+{ 2, s_6_3, -3, 2, 0},
+{ 2, s_6_4, -4, 2, 0},
+{ 2, s_6_5, -5, 1, 0},
+{ 2, s_6_6, -6, 2, 0},
+{ 2, s_6_7, -7, 2, 0},
+{ 2, s_6_8, -8, 2, 0},
+{ 2, s_6_9, -9, 2, 0},
+{ 2, s_6_10, -10, 1, 0},
+{ 2, s_6_11, -11, 2, 0},
+{ 2, s_6_12, -12, 1, 0}
 };
 
-static const symbol s_7_0[2] = { 'i', 'c' };
-static const symbol s_7_1[4] = { 'a', 'n', 'c', 'e' };
-static const symbol s_7_2[4] = { 'e', 'n', 'c', 'e' };
-static const symbol s_7_3[4] = { 'a', 'b', 'l', 'e' };
-static const symbol s_7_4[4] = { 'i', 'b', 'l', 'e' };
-static const symbol s_7_5[3] = { 'a', 't', 'e' };
-static const symbol s_7_6[3] = { 'i', 'v', 'e' };
-static const symbol s_7_7[3] = { 'i', 'z', 'e' };
-static const symbol s_7_8[3] = { 'i', 't', 'i' };
-static const symbol s_7_9[2] = { 'a', 'l' };
-static const symbol s_7_10[3] = { 'i', 's', 'm' };
-static const symbol s_7_11[3] = { 'i', 'o', 'n' };
-static const symbol s_7_12[2] = { 'e', 'r' };
-static const symbol s_7_13[3] = { 'o', 'u', 's' };
-static const symbol s_7_14[3] = { 'a', 'n', 't' };
-static const symbol s_7_15[3] = { 'e', 'n', 't' };
-static const symbol s_7_16[4] = { 'm', 'e', 'n', 't' };
-static const symbol s_7_17[5] = { 'e', 'm', 'e', 'n', 't' };
-
-static const struct among a_7[18] =
-{
-{ 2, s_7_0, -1, 1, 0},
-{ 4, s_7_1, -1, 1, 0},
-{ 4, s_7_2, -1, 1, 0},
-{ 4, s_7_3, -1, 1, 0},
-{ 4, s_7_4, -1, 1, 0},
-{ 3, s_7_5, -1, 1, 0},
-{ 3, s_7_6, -1, 1, 0},
-{ 3, s_7_7, -1, 1, 0},
-{ 3, s_7_8, -1, 1, 0},
-{ 2, s_7_9, -1, 1, 0},
-{ 3, s_7_10, -1, 1, 0},
-{ 3, s_7_11, -1, 2, 0},
-{ 2, s_7_12, -1, 1, 0},
-{ 3, s_7_13, -1, 1, 0},
-{ 3, s_7_14, -1, 1, 0},
-{ 3, s_7_15, -1, 1, 0},
-{ 4, s_7_16, 15, 1, 0},
-{ 5, s_7_17, 16, 1, 0}
+static const symbol s_7_0[4] = { 'a', 'n', 'c', 'i' };
+static const symbol s_7_1[4] = { 'e', 'n', 'c', 'i' };
+static const symbol s_7_2[3] = { 'o', 'g', 'i' };
+static const symbol s_7_3[2] = { 'l', 'i' };
+static const symbol s_7_4[3] = { 'b', 'l', 'i' };
+static const symbol s_7_5[4] = { 'a', 'b', 'l', 'i' };
+static const symbol s_7_6[4] = { 'a', 'l', 'l', 'i' };
+static const symbol s_7_7[5] = { 'f', 'u', 'l', 'l', 'i' };
+static const symbol s_7_8[6] = { 'l', 'e', 's', 's', 'l', 'i' };
+static const symbol s_7_9[5] = { 'o', 'u', 's', 'l', 'i' };
+static const symbol s_7_10[5] = { 'e', 'n', 't', 'l', 'i' };
+static const symbol s_7_11[5] = { 'a', 'l', 'i', 't', 'i' };
+static const symbol s_7_12[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
+static const symbol s_7_13[5] = { 'i', 'v', 'i', 't', 'i' };
+static const symbol s_7_14[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
+static const symbol s_7_15[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
+static const symbol s_7_16[5] = { 'a', 'l', 'i', 's', 'm' };
+static const symbol s_7_17[5] = { 'a', 't', 'i', 'o', 'n' };
+static const symbol s_7_18[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
+static const symbol s_7_19[4] = { 'i', 'z', 'e', 'r' };
+static const symbol s_7_20[4] = { 'a', 't', 'o', 'r' };
+static const symbol s_7_21[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
+static const symbol s_7_22[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
+static const symbol s_7_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
+static const symbol s_7_24[5] = { 'o', 'g', 'i', 's', 't' };
+static const struct among a_7[25] = {
+{ 4, s_7_0, 0, 3, 0},
+{ 4, s_7_1, 0, 2, 0},
+{ 3, s_7_2, 0, 14, 0},
+{ 2, s_7_3, 0, 16, 0},
+{ 3, s_7_4, -1, 12, 0},
+{ 4, s_7_5, -1, 4, 0},
+{ 4, s_7_6, -3, 8, 0},
+{ 5, s_7_7, -4, 9, 0},
+{ 6, s_7_8, -5, 15, 0},
+{ 5, s_7_9, -6, 10, 0},
+{ 5, s_7_10, -7, 5, 0},
+{ 5, s_7_11, 0, 8, 0},
+{ 6, s_7_12, 0, 12, 0},
+{ 5, s_7_13, 0, 11, 0},
+{ 6, s_7_14, 0, 1, 0},
+{ 7, s_7_15, -1, 7, 0},
+{ 5, s_7_16, 0, 8, 0},
+{ 5, s_7_17, 0, 7, 0},
+{ 7, s_7_18, -1, 6, 0},
+{ 4, s_7_19, 0, 6, 0},
+{ 4, s_7_20, 0, 7, 0},
+{ 7, s_7_21, 0, 11, 0},
+{ 7, s_7_22, 0, 9, 0},
+{ 7, s_7_23, 0, 10, 0},
+{ 5, s_7_24, 0, 13, 0}
 };
 
-static const symbol s_8_0[1] = { 'e' };
-static const symbol s_8_1[1] = { 'l' };
-
-static const struct among a_8[2] =
-{
-{ 1, s_8_0, -1, 1, 0},
-{ 1, s_8_1, -1, 2, 0}
+static const symbol s_8_0[5] = { 'i', 'c', 'a', 't', 'e' };
+static const symbol s_8_1[5] = { 'a', 't', 'i', 'v', 'e' };
+static const symbol s_8_2[5] = { 'a', 'l', 'i', 'z', 'e' };
+static const symbol s_8_3[5] = { 'i', 'c', 'i', 't', 'i' };
+static const symbol s_8_4[4] = { 'i', 'c', 'a', 'l' };
+static const symbol s_8_5[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
+static const symbol s_8_6[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
+static const symbol s_8_7[3] = { 'f', 'u', 'l' };
+static const symbol s_8_8[4] = { 'n', 'e', 's', 's' };
+static const struct among a_8[9] = {
+{ 5, s_8_0, 0, 4, 0},
+{ 5, s_8_1, 0, 6, 0},
+{ 5, s_8_2, 0, 3, 0},
+{ 5, s_8_3, 0, 4, 0},
+{ 4, s_8_4, 0, 4, 0},
+{ 6, s_8_5, 0, 1, 0},
+{ 7, s_8_6, -1, 2, 0},
+{ 3, s_8_7, 0, 5, 0},
+{ 4, s_8_8, 0, 5, 0}
 };
 
-static const symbol s_9_0[7] = { 's', 'u', 'c', 'c', 'e', 'e', 'd' };
-static const symbol s_9_1[7] = { 'p', 'r', 'o', 'c', 'e', 'e', 'd' };
-static const symbol s_9_2[6] = { 'e', 'x', 'c', 'e', 'e', 'd' };
-static const symbol s_9_3[7] = { 'c', 'a', 'n', 'n', 'i', 'n', 'g' };
-static const symbol s_9_4[6] = { 'i', 'n', 'n', 'i', 'n', 'g' };
-static const symbol s_9_5[7] = { 'e', 'a', 'r', 'r', 'i', 'n', 'g' };
-static const symbol s_9_6[7] = { 'h', 'e', 'r', 'r', 'i', 'n', 'g' };
-static const symbol s_9_7[6] = { 'o', 'u', 't', 'i', 'n', 'g' };
-
-static const struct among a_9[8] =
-{
-{ 7, s_9_0, -1, -1, 0},
-{ 7, s_9_1, -1, -1, 0},
-{ 6, s_9_2, -1, -1, 0},
-{ 7, s_9_3, -1, -1, 0},
-{ 6, s_9_4, -1, -1, 0},
-{ 7, s_9_5, -1, -1, 0},
-{ 7, s_9_6, -1, -1, 0},
-{ 6, s_9_7, -1, -1, 0}
+static const symbol s_9_0[2] = { 'i', 'c' };
+static const symbol s_9_1[4] = { 'a', 'n', 'c', 'e' };
+static const symbol s_9_2[4] = { 'e', 'n', 'c', 'e' };
+static const symbol s_9_3[4] = { 'a', 'b', 'l', 'e' };
+static const symbol s_9_4[4] = { 'i', 'b', 'l', 'e' };
+static const symbol s_9_5[3] = { 'a', 't', 'e' };
+static const symbol s_9_6[3] = { 'i', 'v', 'e' };
+static const symbol s_9_7[3] = { 'i', 'z', 'e' };
+static const symbol s_9_8[3] = { 'i', 't', 'i' };
+static const symbol s_9_9[2] = { 'a', 'l' };
+static const symbol s_9_10[3] = { 'i', 's', 'm' };
+static const symbol s_9_11[3] = { 'i', 'o', 'n' };
+static const symbol s_9_12[2] = { 'e', 'r' };
+static const symbol s_9_13[3] = { 'o', 'u', 's' };
+static const symbol s_9_14[3] = { 'a', 'n', 't' };
+static const symbol s_9_15[3] = { 'e', 'n', 't' };
+static const symbol s_9_16[4] = { 'm', 'e', 'n', 't' };
+static const symbol s_9_17[5] = { 'e', 'm', 'e', 'n', 't' };
+static const struct among a_9[18] = {
+{ 2, s_9_0, 0, 1, 0},
+{ 4, s_9_1, 0, 1, 0},
+{ 4, s_9_2, 0, 1, 0},
+{ 4, s_9_3, 0, 1, 0},
+{ 4, s_9_4, 0, 1, 0},
+{ 3, s_9_5, 0, 1, 0},
+{ 3, s_9_6, 0, 1, 0},
+{ 3, s_9_7, 0, 1, 0},
+{ 3, s_9_8, 0, 1, 0},
+{ 2, s_9_9, 0, 1, 0},
+{ 3, s_9_10, 0, 1, 0},
+{ 3, s_9_11, 0, 2, 0},
+{ 2, s_9_12, 0, 1, 0},
+{ 3, s_9_13, 0, 1, 0},
+{ 3, s_9_14, 0, 1, 0},
+{ 3, s_9_15, 0, 1, 0},
+{ 4, s_9_16, -1, 1, 0},
+{ 5, s_9_17, -1, 1, 0}
 };
 
-static const symbol s_10_0[5] = { 'a', 'n', 'd', 'e', 's' };
-static const symbol s_10_1[5] = { 'a', 't', 'l', 'a', 's' };
-static const symbol s_10_2[4] = { 'b', 'i', 'a', 's' };
-static const symbol s_10_3[6] = { 'c', 'o', 's', 'm', 'o', 's' };
-static const symbol s_10_4[5] = { 'd', 'y', 'i', 'n', 'g' };
-static const symbol s_10_5[5] = { 'e', 'a', 'r', 'l', 'y' };
-static const symbol s_10_6[6] = { 'g', 'e', 'n', 't', 'l', 'y' };
-static const symbol s_10_7[4] = { 'h', 'o', 'w', 'e' };
-static const symbol s_10_8[4] = { 'i', 'd', 'l', 'y' };
-static const symbol s_10_9[5] = { 'l', 'y', 'i', 'n', 'g' };
-static const symbol s_10_10[4] = { 'n', 'e', 'w', 's' };
-static const symbol s_10_11[4] = { 'o', 'n', 'l', 'y' };
-static const symbol s_10_12[6] = { 's', 'i', 'n', 'g', 'l', 'y' };
-static const symbol s_10_13[5] = { 's', 'k', 'i', 'e', 's' };
-static const symbol s_10_14[4] = { 's', 'k', 'i', 's' };
-static const symbol s_10_15[3] = { 's', 'k', 'y' };
-static const symbol s_10_16[5] = { 't', 'y', 'i', 'n', 'g' };
-static const symbol s_10_17[4] = { 'u', 'g', 'l', 'y' };
+static const symbol s_10_0[1] = { 'e' };
+static const symbol s_10_1[1] = { 'l' };
+static const struct among a_10[2] = {
+{ 1, s_10_0, 0, 1, 0},
+{ 1, s_10_1, 0, 2, 0}
+};
 
-static const struct among a_10[18] =
-{
-{ 5, s_10_0, -1, -1, 0},
-{ 5, s_10_1, -1, -1, 0},
-{ 4, s_10_2, -1, -1, 0},
-{ 6, s_10_3, -1, -1, 0},
-{ 5, s_10_4, -1, 3, 0},
-{ 5, s_10_5, -1, 9, 0},
-{ 6, s_10_6, -1, 7, 0},
-{ 4, s_10_7, -1, -1, 0},
-{ 4, s_10_8, -1, 6, 0},
-{ 5, s_10_9, -1, 4, 0},
-{ 4, s_10_10, -1, -1, 0},
-{ 4, s_10_11, -1, 10, 0},
-{ 6, s_10_12, -1, 11, 0},
-{ 5, s_10_13, -1, 2, 0},
-{ 4, s_10_14, -1, 1, 0},
-{ 3, s_10_15, -1, -1, 0},
-{ 5, s_10_16, -1, 5, 0},
-{ 4, s_10_17, -1, 8, 0}
+static const symbol s_11_0[5] = { 'a', 'n', 'd', 'e', 's' };
+static const symbol s_11_1[5] = { 'a', 't', 'l', 'a', 's' };
+static const symbol s_11_2[4] = { 'b', 'i', 'a', 's' };
+static const symbol s_11_3[6] = { 'c', 'o', 's', 'm', 'o', 's' };
+static const symbol s_11_4[5] = { 'e', 'a', 'r', 'l', 'y' };
+static const symbol s_11_5[6] = { 'g', 'e', 'n', 't', 'l', 'y' };
+static const symbol s_11_6[4] = { 'h', 'o', 'w', 'e' };
+static const symbol s_11_7[4] = { 'i', 'd', 'l', 'y' };
+static const symbol s_11_8[4] = { 'n', 'e', 'w', 's' };
+static const symbol s_11_9[4] = { 'o', 'n', 'l', 'y' };
+static const symbol s_11_10[6] = { 's', 'i', 'n', 'g', 'l', 'y' };
+static const symbol s_11_11[5] = { 's', 'k', 'i', 'e', 's' };
+static const symbol s_11_12[4] = { 's', 'k', 'i', 's' };
+static const symbol s_11_13[3] = { 's', 'k', 'y' };
+static const symbol s_11_14[4] = { 'u', 'g', 'l', 'y' };
+static const struct among a_11[15] = {
+{ 5, s_11_0, 0, -1, 0},
+{ 5, s_11_1, 0, -1, 0},
+{ 4, s_11_2, 0, -1, 0},
+{ 6, s_11_3, 0, -1, 0},
+{ 5, s_11_4, 0, 6, 0},
+{ 6, s_11_5, 0, 4, 0},
+{ 4, s_11_6, 0, -1, 0},
+{ 4, s_11_7, 0, 3, 0},
+{ 4, s_11_8, 0, -1, 0},
+{ 4, s_11_9, 0, 7, 0},
+{ 6, s_11_10, 0, 8, 0},
+{ 5, s_11_11, 0, 2, 0},
+{ 4, s_11_12, 0, 1, 0},
+{ 3, s_11_13, 0, -1, 0},
+{ 4, s_11_14, 0, 5, 0}
 };
 
 static const unsigned char g_aeo[] = { 17, 64 };
@@ -318,178 +354,147 @@ static const unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
 
 static const unsigned char g_valid_LI[] = { 55, 141, 2 };
 
-static const symbol s_0[] = { 'Y' };
-static const symbol s_1[] = { 'Y' };
-static const symbol s_2[] = { 's', 's' };
-static const symbol s_3[] = { 'i' };
-static const symbol s_4[] = { 'i', 'e' };
-static const symbol s_5[] = { 'e', 'e' };
-static const symbol s_6[] = { 'e' };
-static const symbol s_7[] = { 'e' };
-static const symbol s_8[] = { 'i' };
-static const symbol s_9[] = { 't', 'i', 'o', 'n' };
-static const symbol s_10[] = { 'e', 'n', 'c', 'e' };
-static const symbol s_11[] = { 'a', 'n', 'c', 'e' };
-static const symbol s_12[] = { 'a', 'b', 'l', 'e' };
-static const symbol s_13[] = { 'e', 'n', 't' };
-static const symbol s_14[] = { 'i', 'z', 'e' };
-static const symbol s_15[] = { 'a', 't', 'e' };
-static const symbol s_16[] = { 'a', 'l' };
-static const symbol s_17[] = { 'f', 'u', 'l' };
-static const symbol s_18[] = { 'o', 'u', 's' };
-static const symbol s_19[] = { 'i', 'v', 'e' };
-static const symbol s_20[] = { 'b', 'l', 'e' };
-static const symbol s_21[] = { 'o', 'g' };
-static const symbol s_22[] = { 'l', 'e', 's', 's' };
-static const symbol s_23[] = { 't', 'i', 'o', 'n' };
-static const symbol s_24[] = { 'a', 't', 'e' };
-static const symbol s_25[] = { 'a', 'l' };
-static const symbol s_26[] = { 'i', 'c' };
-static const symbol s_27[] = { 's', 'k', 'i' };
-static const symbol s_28[] = { 's', 'k', 'y' };
-static const symbol s_29[] = { 'd', 'i', 'e' };
-static const symbol s_30[] = { 'l', 'i', 'e' };
-static const symbol s_31[] = { 't', 'i', 'e' };
-static const symbol s_32[] = { 'i', 'd', 'l' };
-static const symbol s_33[] = { 'g', 'e', 'n', 't', 'l' };
-static const symbol s_34[] = { 'u', 'g', 'l', 'i' };
-static const symbol s_35[] = { 'e', 'a', 'r', 'l', 'i' };
-static const symbol s_36[] = { 'o', 'n', 'l', 'i' };
-static const symbol s_37[] = { 's', 'i', 'n', 'g', 'l' };
-static const symbol s_38[] = { 'y' };
-
 static int r_prelude(struct SN_env * z) {
-    z->I[2] = 0;
-    {   int c1 = z->c;
+    ((SN_local *)z)->b_Y_found = 0;
+    {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c == z->l || z->p[z->c] != '\'') goto lab0;
         z->c++;
         z->ket = z->c;
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c2 = z->c;
+    {
+        int v_2 = z->c;
         z->bra = z->c;
         if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
         z->c++;
         z->ket = z->c;
-        {   int ret = slice_from_s(z, 1, s_0);
+        {
+            int ret = slice_from_s(z, 1, s_0);
             if (ret < 0) return ret;
         }
-        z->I[2] = 1;
+        ((SN_local *)z)->b_Y_found = 1;
     lab1:
-        z->c = c2;
+        z->c = v_2;
     }
-    {   int c3 = z->c;
-        while(1) {
-            int c4 = z->c;
-            while(1) {
-                int c5 = z->c;
+    {
+        int v_3 = z->c;
+        while (1) {
+            int v_4 = z->c;
+            while (1) {
+                int v_5 = z->c;
                 if (in_grouping(z, g_v, 97, 121, 0)) goto lab4;
                 z->bra = z->c;
                 if (z->c == z->l || z->p[z->c] != 'y') goto lab4;
                 z->c++;
                 z->ket = z->c;
-                z->c = c5;
+                z->c = v_5;
                 break;
             lab4:
-                z->c = c5;
+                z->c = v_5;
                 if (z->c >= z->l) goto lab3;
                 z->c++;
             }
-            {   int ret = slice_from_s(z, 1, s_1);
+            {
+                int ret = slice_from_s(z, 1, s_1);
                 if (ret < 0) return ret;
             }
-            z->I[2] = 1;
+            ((SN_local *)z)->b_Y_found = 1;
             continue;
         lab3:
-            z->c = c4;
+            z->c = v_4;
             break;
         }
-        z->c = c3;
+        z->c = v_3;
     }
     return 1;
 }
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (z->c + 4 >= z->l || z->p[z->c + 4] >> 5 != 3 || !((2375680 >> (z->p[z->c + 4] & 0x1f)) & 1)) goto lab2;
-            if (!find_among(z, a_0, 3)) goto lab2;
-            goto lab1;
-        lab2:
-            z->c = c2;
-
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (z->c + 3 >= z->l || z->p[z->c + 3] >> 5 != 3 || !((5513250 >> (z->p[z->c + 3] & 0x1f)) & 1)) goto lab1;
+            if (!find_among(z, a_0, 9, 0)) goto lab1;
+            break;
+        lab1:
+            z->c = v_2;
             {
                 int ret = out_grouping(z, g_v, 97, 121, 1);
                 if (ret < 0) goto lab0;
                 z->c += ret;
             }
-
             {
                 int ret = in_grouping(z, g_v, 97, 121, 1);
                 if (ret < 0) goto lab0;
                 z->c += ret;
             }
-        }
-    lab1:
-        z->I[1] = z->c;
-
+        } while (0);
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
 
 static int r_shortv(struct SN_env * z) {
-    {   int m1 = z->l - z->c; (void)m1;
-        if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) goto lab1;
-        if (in_grouping_b(z, g_v, 97, 121, 0)) goto lab1;
+    do {
+        int v_1 = z->l - z->c;
+        if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) goto lab0;
+        if (in_grouping_b(z, g_v, 97, 121, 0)) goto lab0;
+        if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab0;
+        break;
+    lab0:
+        z->c = z->l - v_1;
         if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab1;
-        goto lab0;
+        if (in_grouping_b(z, g_v, 97, 121, 0)) goto lab1;
+        if (z->c > z->lb) goto lab1;
+        break;
     lab1:
-        z->c = z->l - m1;
-        if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
-        if (in_grouping_b(z, g_v, 97, 121, 0)) return 0;
-        if (z->c > z->lb) return 0;
-    }
-lab0:
+        z->c = z->l - v_1;
+        if (!(eq_s_b(z, 4, s_2))) return 0;
+    } while (0);
     return 1;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_Step_1a(struct SN_env * z) {
     int among_var;
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
-        if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - m1; goto lab0; }
-        if (!find_among_b(z, a_1, 3)) { z->c = z->l - m1; goto lab0; }
+        if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - v_1; goto lab0; }
+        if (!find_among_b(z, a_1, 3, 0)) { z->c = z->l - v_1; goto lab0; }
         z->bra = z->c;
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab0:
@@ -497,41 +502,44 @@ static int r_Step_1a(struct SN_env * z) {
     }
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 115)) return 0;
-    among_var = find_among_b(z, a_2, 6);
+    among_var = find_among_b(z, a_2, 6, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 2, s_2);
+            {
+                int ret = slice_from_s(z, 2, s_3);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int m2 = z->l - z->c; (void)m2;
-z->c = z->c - 2;
-                if (z->c < z->lb) goto lab2;
-                {   int ret = slice_from_s(z, 1, s_3);
+            do {
+                int v_2 = z->l - z->c;
+                if (z->c - 2 < z->lb) goto lab1;
+                z->c -= 2;
+                {
+                    int ret = slice_from_s(z, 1, s_4);
                     if (ret < 0) return ret;
                 }
-                goto lab1;
-            lab2:
-                z->c = z->l - m2;
-                {   int ret = slice_from_s(z, 2, s_4);
+                break;
+            lab1:
+                z->c = z->l - v_2;
+                {
+                    int ret = slice_from_s(z, 2, s_5);
                     if (ret < 0) return ret;
                 }
-            }
-        lab1:
+            } while (0);
             break;
         case 3:
             if (z->c <= z->lb) return 0;
             z->c--;
-
             {
                 int ret = out_grouping_b(z, g_v, 97, 121, 1);
                 if (ret < 0) return 0;
                 z->c -= ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -542,100 +550,154 @@ z->c = z->c - 2;
 static int r_Step_1b(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33554576 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_4, 6);
-    if (!among_var) return 0;
+    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33554576 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = -1; else
+    among_var = find_among_b(z, a_5, 7, 0);
     z->bra = z->c;
-    switch (among_var) {
-        case 1:
-            {   int ret = r_R1(z);
-                if (ret <= 0) return ret;
-            }
-            {   int ret = slice_from_s(z, 2, s_5);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 2:
-            {   int m_test1 = z->l - z->c;
-
+    do {
+        int v_1 = z->l - z->c;
+        switch (among_var) {
+            case 1:
                 {
-                    int ret = out_grouping_b(z, g_v, 97, 121, 1);
-                    if (ret < 0) return 0;
-                    z->c -= ret;
+                    int v_2 = z->l - z->c;
+                    {
+                        int ret = r_R1(z);
+                        if (ret == 0) goto lab1;
+                        if (ret < 0) return ret;
+                    }
+                    do {
+                        int v_3 = z->l - z->c;
+                        if (z->c - 2 <= z->lb || z->p[z->c - 1] != 99) goto lab2;
+                        if (!find_among_b(z, a_3, 3, 0)) goto lab2;
+                        if (z->c > z->lb) goto lab2;
+                        break;
+                    lab2:
+                        z->c = z->l - v_3;
+                        {
+                            int ret = slice_from_s(z, 2, s_6);
+                            if (ret < 0) return ret;
+                        }
+                    } while (0);
+                lab1:
+                    z->c = z->l - v_2;
                 }
-                z->c = z->l - m_test1;
-            }
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            z->ket = z->c;
-            z->bra = z->c;
-            {   int m_test2 = z->l - z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
-                among_var = find_among_b(z, a_3, 13);
+                break;
+            case 2:
+                goto lab0;
+                break;
+            case 3:
+                if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((34881536 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
+                among_var = find_among_b(z, a_4, 7, 0);
+                if (!among_var) goto lab0;
                 switch (among_var) {
                     case 1:
-                        {   int ret = slice_from_s(z, 1, s_6);
-                            if (ret < 0) return ret;
-                        }
-                        return 0;
-                        break;
-                    case 2:
-                        {   int m3 = z->l - z->c; (void)m3;
-                            if (in_grouping_b(z, g_aeo, 97, 111, 0)) goto lab0;
+                        {
+                            int v_4 = z->l - z->c;
+                            if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab0;
                             if (z->c > z->lb) goto lab0;
-                            return 0;
-                        lab0:
-                            z->c = z->l - m3;
-                        }
-                        break;
-                    case 3:
-                        if (z->c != z->I[1]) return 0;
-                        {   int m_test4 = z->l - z->c;
-                            {   int ret = r_shortv(z);
-                                if (ret <= 0) return ret;
-                            }
-                            z->c = z->l - m_test4;
+                            z->c = z->l - v_4;
                         }
-                        {   int ret = slice_from_s(z, 1, s_7);
+                        z->bra = z->c;
+                        {
+                            int ret = slice_from_s(z, 2, s_7);
                             if (ret < 0) return ret;
                         }
-                        return 0;
+                        break;
+                    case 2:
+                        if (z->c > z->lb) goto lab0;
                         break;
                 }
-                z->c = z->l - m_test2;
-            }
-            z->ket = z->c;
-            if (z->c <= z->lb) return 0;
-            z->c--;
-            z->bra = z->c;
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
+                break;
+        }
+        break;
+    lab0:
+        z->c = z->l - v_1;
+        {
+            int v_5 = z->l - z->c;
+            {
+                int ret = out_grouping_b(z, g_v, 97, 121, 1);
+                if (ret < 0) return 0;
+                z->c -= ret;
             }
-            break;
-    }
+            z->c = z->l - v_5;
+        }
+        {
+            int ret = slice_del(z);
+            if (ret < 0) return ret;
+        }
+        z->ket = z->c;
+        z->bra = z->c;
+        {
+            int v_6 = z->l - z->c;
+            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
+            among_var = find_among_b(z, a_6, 13, 0);
+            switch (among_var) {
+                case 1:
+                    {
+                        int ret = slice_from_s(z, 1, s_8);
+                        if (ret < 0) return ret;
+                    }
+                    return 0;
+                    break;
+                case 2:
+                    {
+                        int v_7 = z->l - z->c;
+                        if (in_grouping_b(z, g_aeo, 97, 111, 0)) goto lab3;
+                        if (z->c > z->lb) goto lab3;
+                        return 0;
+                    lab3:
+                        z->c = z->l - v_7;
+                    }
+                    break;
+                case 3:
+                    if (z->c != ((SN_local *)z)->i_p1) return 0;
+                    {
+                        int v_8 = z->l - z->c;
+                        {
+                            int ret = r_shortv(z);
+                            if (ret <= 0) return ret;
+                        }
+                        z->c = z->l - v_8;
+                    }
+                    {
+                        int ret = slice_from_s(z, 1, s_9);
+                        if (ret < 0) return ret;
+                    }
+                    return 0;
+                    break;
+            }
+            z->c = z->l - v_6;
+        }
+        z->ket = z->c;
+        if (z->c <= z->lb) return 0;
+        z->c--;
+        z->bra = z->c;
+        {
+            int ret = slice_del(z);
+            if (ret < 0) return ret;
+        }
+    } while (0);
     return 1;
 }
 
 static int r_Step_1c(struct SN_env * z) {
     z->ket = z->c;
-    {   int m1 = z->l - z->c; (void)m1;
-        if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
+    do {
+        int v_1 = z->l - z->c;
+        if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab0;
         z->c--;
-        goto lab0;
-    lab1:
-        z->c = z->l - m1;
+        break;
+    lab0:
+        z->c = z->l - v_1;
         if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0;
         z->c--;
-    }
-lab0:
+    } while (0);
     z->bra = z->c;
     if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
-
-    if (z->c > z->lb) goto lab2;
+    if (z->c > z->lb) goto lab1;
     return 0;
-lab2:
-    {   int ret = slice_from_s(z, 1, s_8);
+lab1:
+    {
+        int ret = slice_from_s(z, 1, s_10);
         if (ret < 0) return ret;
     }
     return 1;
@@ -644,89 +706,111 @@ lab2:
 static int r_Step_2(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_5, 24);
+    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1864192 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
+    among_var = find_among_b(z, a_7, 25, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 4, s_9);
+            {
+                int ret = slice_from_s(z, 4, s_11);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 4, s_10);
+            {
+                int ret = slice_from_s(z, 4, s_12);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 4, s_11);
+            {
+                int ret = slice_from_s(z, 4, s_13);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 4, s_12);
+            {
+                int ret = slice_from_s(z, 4, s_14);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 3, s_13);
+            {
+                int ret = slice_from_s(z, 3, s_15);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 3, s_14);
+            {
+                int ret = slice_from_s(z, 3, s_16);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
-            {   int ret = slice_from_s(z, 3, s_15);
+            {
+                int ret = slice_from_s(z, 3, s_17);
                 if (ret < 0) return ret;
             }
             break;
         case 8:
-            {   int ret = slice_from_s(z, 2, s_16);
+            {
+                int ret = slice_from_s(z, 2, s_18);
                 if (ret < 0) return ret;
             }
             break;
         case 9:
-            {   int ret = slice_from_s(z, 3, s_17);
+            {
+                int ret = slice_from_s(z, 3, s_19);
                 if (ret < 0) return ret;
             }
             break;
         case 10:
-            {   int ret = slice_from_s(z, 3, s_18);
+            {
+                int ret = slice_from_s(z, 3, s_20);
                 if (ret < 0) return ret;
             }
             break;
         case 11:
-            {   int ret = slice_from_s(z, 3, s_19);
+            {
+                int ret = slice_from_s(z, 3, s_21);
                 if (ret < 0) return ret;
             }
             break;
         case 12:
-            {   int ret = slice_from_s(z, 3, s_20);
+            {
+                int ret = slice_from_s(z, 3, s_22);
                 if (ret < 0) return ret;
             }
             break;
         case 13:
-            if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
-            z->c--;
-            {   int ret = slice_from_s(z, 2, s_21);
+            {
+                int ret = slice_from_s(z, 2, s_23);
                 if (ret < 0) return ret;
             }
             break;
         case 14:
-            {   int ret = slice_from_s(z, 4, s_22);
+            if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
+            z->c--;
+            {
+                int ret = slice_from_s(z, 2, s_24);
                 if (ret < 0) return ret;
             }
             break;
         case 15:
+            {
+                int ret = slice_from_s(z, 4, s_25);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 16:
             if (in_grouping_b(z, g_valid_LI, 99, 116, 0)) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -738,43 +822,51 @@ static int r_Step_3(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_6, 9);
+    among_var = find_among_b(z, a_8, 9, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 4, s_23);
+            {
+                int ret = slice_from_s(z, 4, s_26);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 3, s_24);
+            {
+                int ret = slice_from_s(z, 3, s_27);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 2, s_25);
+            {
+                int ret = slice_from_s(z, 2, s_28);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 2, s_26);
+            {
+                int ret = slice_from_s(z, 2, s_29);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -786,30 +878,33 @@ static int r_Step_4(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1864232 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_7, 18);
+    among_var = find_among_b(z, a_9, 18, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R2(z);
+    {
+        int ret = r_R2(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int m1 = z->l - z->c; (void)m1;
-                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
+            do {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
                 z->c--;
-                goto lab0;
-            lab1:
-                z->c = z->l - m1;
+                break;
+            lab0:
+                z->c = z->l - v_1;
                 if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0;
                 z->c--;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -821,42 +916,49 @@ static int r_Step_5(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) return 0;
-    among_var = find_among_b(z, a_8, 2);
+    among_var = find_among_b(z, a_10, 2, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-
-            {   int ret = r_R2(z);
-                if (ret == 0) goto lab1;
-                if (ret < 0) return ret;
-            }
-            goto lab0;
-        lab1:
-            {   int ret = r_R1(z);
-                if (ret <= 0) return ret;
-            }
-            {   int m1 = z->l - z->c; (void)m1;
-                {   int ret = r_shortv(z);
-                    if (ret == 0) goto lab2;
+            do {
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab0;
                     if (ret < 0) return ret;
                 }
-                return 0;
-            lab2:
-                z->c = z->l - m1;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+                break;
+            lab0:
+                {
+                    int ret = r_R1(z);
+                    if (ret <= 0) return ret;
+                }
+                {
+                    int v_1 = z->l - z->c;
+                    {
+                        int ret = r_shortv(z);
+                        if (ret == 0) goto lab1;
+                        if (ret < 0) return ret;
+                    }
+                    return 0;
+                lab1:
+                    z->c = z->l - v_1;
+                }
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
             if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
             z->c--;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -864,76 +966,60 @@ static int r_Step_5(struct SN_env * z) {
     return 1;
 }
 
-static int r_exception2(struct SN_env * z) {
-    z->ket = z->c;
-    if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0;
-    if (!find_among_b(z, a_9, 8)) return 0;
-    z->bra = z->c;
-    if (z->c > z->lb) return 0;
-    return 1;
-}
-
 static int r_exception1(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((42750482 >> (z->p[z->c + 2] & 0x1f)) & 1)) return 0;
-    among_var = find_among(z, a_10, 18);
+    among_var = find_among(z, a_11, 15, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     if (z->c < z->l) return 0;
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 3, s_27);
+            {
+                int ret = slice_from_s(z, 3, s_30);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 3, s_28);
+            {
+                int ret = slice_from_s(z, 3, s_31);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 3, s_29);
+            {
+                int ret = slice_from_s(z, 3, s_32);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 3, s_30);
+            {
+                int ret = slice_from_s(z, 5, s_33);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 3, s_31);
+            {
+                int ret = slice_from_s(z, 4, s_34);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 3, s_32);
+            {
+                int ret = slice_from_s(z, 5, s_35);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
-            {   int ret = slice_from_s(z, 5, s_33);
+            {
+                int ret = slice_from_s(z, 4, s_36);
                 if (ret < 0) return ret;
             }
             break;
         case 8:
-            {   int ret = slice_from_s(z, 4, s_34);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 9:
-            {   int ret = slice_from_s(z, 5, s_35);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 10:
-            {   int ret = slice_from_s(z, 4, s_36);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 11:
-            {   int ret = slice_from_s(z, 5, s_37);
+            {
+                int ret = slice_from_s(z, 5, s_37);
                 if (ret < 0) return ret;
             }
             break;
@@ -942,127 +1028,145 @@ static int r_exception1(struct SN_env * z) {
 }
 
 static int r_postlude(struct SN_env * z) {
-    if (!(z->I[2])) return 0;
-    while(1) {
-        int c1 = z->c;
-        while(1) {
-            int c2 = z->c;
+    if (!((SN_local *)z)->b_Y_found) return 0;
+    while (1) {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
             z->bra = z->c;
             if (z->c == z->l || z->p[z->c] != 'Y') goto lab1;
             z->c++;
             z->ket = z->c;
-            z->c = c2;
+            z->c = v_2;
             break;
         lab1:
-            z->c = c2;
+            z->c = v_2;
             if (z->c >= z->l) goto lab0;
             z->c++;
         }
-        {   int ret = slice_from_s(z, 1, s_38);
+        {
+            int ret = slice_from_s(z, 1, s_38);
             if (ret < 0) return ret;
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 extern int english_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_exception1(z);
-            if (ret == 0) goto lab1;
+    do {
+        int v_1 = z->c;
+        {
+            int ret = r_exception1(z);
+            if (ret == 0) goto lab0;
             if (ret < 0) return ret;
         }
-        goto lab0;
-    lab1:
-        z->c = c1;
-        {   int c2 = z->c;
-z->c = z->c + 3;
-            if (z->c > z->l) goto lab3;
-            goto lab2;
-        lab3:
-            z->c = c2;
+        break;
+    lab0:
+        z->c = v_1;
+        {
+            int v_2 = z->c;
+            if (z->c + 3 > z->l) goto lab2;
+            z->c += 3;
+            goto lab1;
+        lab2:
+            z->c = v_2;
         }
-        goto lab0;
-    lab2:
-        z->c = c1;
-
-        {   int ret = r_prelude(z);
+        break;
+    lab1:
+        z->c = v_1;
+        {
+            int ret = r_prelude(z);
             if (ret < 0) return ret;
         }
-
-        {   int ret = r_mark_regions(z);
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
         z->lb = z->c; z->c = z->l;
-
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int ret = r_Step_1a(z);
+        {
+            int v_3 = z->l - z->c;
+            {
+                int ret = r_Step_1a(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m3;
+            z->c = z->l - v_3;
         }
-        {   int m4 = z->l - z->c; (void)m4;
-            {   int ret = r_exception2(z);
-                if (ret == 0) goto lab5;
+        {
+            int v_4 = z->l - z->c;
+            {
+                int ret = r_Step_1b(z);
                 if (ret < 0) return ret;
             }
-            goto lab4;
-        lab5:
-            z->c = z->l - m4;
-            {   int m5 = z->l - z->c; (void)m5;
-                {   int ret = r_Step_1b(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m5;
-            }
-            {   int m6 = z->l - z->c; (void)m6;
-                {   int ret = r_Step_1c(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m6;
+            z->c = z->l - v_4;
+        }
+        {
+            int v_5 = z->l - z->c;
+            {
+                int ret = r_Step_1c(z);
+                if (ret < 0) return ret;
             }
-            {   int m7 = z->l - z->c; (void)m7;
-                {   int ret = r_Step_2(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m7;
+            z->c = z->l - v_5;
+        }
+        {
+            int v_6 = z->l - z->c;
+            {
+                int ret = r_Step_2(z);
+                if (ret < 0) return ret;
             }
-            {   int m8 = z->l - z->c; (void)m8;
-                {   int ret = r_Step_3(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m8;
+            z->c = z->l - v_6;
+        }
+        {
+            int v_7 = z->l - z->c;
+            {
+                int ret = r_Step_3(z);
+                if (ret < 0) return ret;
             }
-            {   int m9 = z->l - z->c; (void)m9;
-                {   int ret = r_Step_4(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m9;
+            z->c = z->l - v_7;
+        }
+        {
+            int v_8 = z->l - z->c;
+            {
+                int ret = r_Step_4(z);
+                if (ret < 0) return ret;
             }
-            {   int m10 = z->l - z->c; (void)m10;
-                {   int ret = r_Step_5(z);
-                    if (ret < 0) return ret;
-                }
-                z->c = z->l - m10;
+            z->c = z->l - v_8;
+        }
+        {
+            int v_9 = z->l - z->c;
+            {
+                int ret = r_Step_5(z);
+                if (ret < 0) return ret;
             }
+            z->c = z->l - v_9;
         }
-    lab4:
         z->c = z->lb;
-        {   int c11 = z->c;
-            {   int ret = r_postlude(z);
+        {
+            int v_10 = z->c;
+            {
+                int ret = r_postlude(z);
                 if (ret < 0) return ret;
             }
-            z->c = c11;
+            z->c = v_10;
         }
-    }
-lab0:
+    } while (0);
     return 1;
 }
 
-extern struct SN_env * english_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * english_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->b_Y_found = 0;
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void english_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void english_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 978ecb02278900c7426f3ba9439280eab2b8151c..c4318056c5d87166770273bed79c8431a0837eb2 100644 (file)
@@ -1,6 +1,20 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from finnish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_finnish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    unsigned char b_ending_removed;
+    symbol * s_x;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +23,7 @@ extern int finnish_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_tidy(struct SN_env * z);
 static int r_other_endings(struct SN_env * z);
 static int r_t_plural(struct SN_env * z);
@@ -20,18 +35,13 @@ static int r_possessive(struct SN_env * z);
 static int r_particle_etc(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * finnish_ISO_8859_1_create_env(void);
-extern void finnish_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'k', 's', 'e' };
+static const symbol s_1[] = { 'k', 's', 'i' };
+static const symbol s_2[] = { 'i', 'e' };
+static const symbol s_3[] = { 'p', 'o' };
+static const symbol s_4[] = { 'p', 'o' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[2] = { 'p', 'a' };
 static const symbol s_0_1[3] = { 's', 't', 'i' };
 static const symbol s_0_2[4] = { 'k', 'a', 'a', 'n' };
@@ -42,19 +52,17 @@ static const symbol s_0_6[4] = { 'k', 0xE4, 0xE4, 'n' };
 static const symbol s_0_7[2] = { 'k', 'o' };
 static const symbol s_0_8[2] = { 'p', 0xE4 };
 static const symbol s_0_9[2] = { 'k', 0xF6 };
-
-static const struct among a_0[10] =
-{
-{ 2, s_0_0, -1, 1, 0},
-{ 3, s_0_1, -1, 2, 0},
-{ 4, s_0_2, -1, 1, 0},
-{ 3, s_0_3, -1, 1, 0},
-{ 3, s_0_4, -1, 1, 0},
-{ 3, s_0_5, -1, 1, 0},
-{ 4, s_0_6, -1, 1, 0},
-{ 2, s_0_7, -1, 1, 0},
-{ 2, s_0_8, -1, 1, 0},
-{ 2, s_0_9, -1, 1, 0}
+static const struct among a_0[10] = {
+{ 2, s_0_0, 0, 1, 0},
+{ 3, s_0_1, 0, 2, 0},
+{ 4, s_0_2, 0, 1, 0},
+{ 3, s_0_3, 0, 1, 0},
+{ 3, s_0_4, 0, 1, 0},
+{ 3, s_0_5, 0, 1, 0},
+{ 4, s_0_6, 0, 1, 0},
+{ 2, s_0_7, 0, 1, 0},
+{ 2, s_0_8, 0, 1, 0},
+{ 2, s_0_9, 0, 1, 0}
 };
 
 static const symbol s_1_0[3] = { 'l', 'l', 'a' };
@@ -63,15 +71,13 @@ static const symbol s_1_2[3] = { 's', 's', 'a' };
 static const symbol s_1_3[2] = { 't', 'a' };
 static const symbol s_1_4[3] = { 'l', 't', 'a' };
 static const symbol s_1_5[3] = { 's', 't', 'a' };
-
-static const struct among a_1[6] =
-{
-{ 3, s_1_0, -1, -1, 0},
-{ 2, s_1_1, -1, -1, 0},
-{ 3, s_1_2, -1, -1, 0},
-{ 2, s_1_3, -1, -1, 0},
-{ 3, s_1_4, 3, -1, 0},
-{ 3, s_1_5, 3, -1, 0}
+static const struct among a_1[6] = {
+{ 3, s_1_0, 0, -1, 0},
+{ 2, s_1_1, 0, -1, 0},
+{ 3, s_1_2, 0, -1, 0},
+{ 2, s_1_3, 0, -1, 0},
+{ 3, s_1_4, -1, -1, 0},
+{ 3, s_1_5, -2, -1, 0}
 };
 
 static const symbol s_2_0[3] = { 'l', 'l', 0xE4 };
@@ -80,24 +86,20 @@ static const symbol s_2_2[3] = { 's', 's', 0xE4 };
 static const symbol s_2_3[2] = { 't', 0xE4 };
 static const symbol s_2_4[3] = { 'l', 't', 0xE4 };
 static const symbol s_2_5[3] = { 's', 't', 0xE4 };
-
-static const struct among a_2[6] =
-{
-{ 3, s_2_0, -1, -1, 0},
-{ 2, s_2_1, -1, -1, 0},
-{ 3, s_2_2, -1, -1, 0},
-{ 2, s_2_3, -1, -1, 0},
-{ 3, s_2_4, 3, -1, 0},
-{ 3, s_2_5, 3, -1, 0}
+static const struct among a_2[6] = {
+{ 3, s_2_0, 0, -1, 0},
+{ 2, s_2_1, 0, -1, 0},
+{ 3, s_2_2, 0, -1, 0},
+{ 2, s_2_3, 0, -1, 0},
+{ 3, s_2_4, -1, -1, 0},
+{ 3, s_2_5, -2, -1, 0}
 };
 
 static const symbol s_3_0[3] = { 'l', 'l', 'e' };
 static const symbol s_3_1[3] = { 'i', 'n', 'e' };
-
-static const struct among a_3[2] =
-{
-{ 3, s_3_0, -1, -1, 0},
-{ 3, s_3_1, -1, -1, 0}
+static const struct among a_3[2] = {
+{ 3, s_3_0, 0, -1, 0},
+{ 3, s_3_1, 0, -1, 0}
 };
 
 static const symbol s_4_0[3] = { 'n', 's', 'a' };
@@ -109,18 +111,16 @@ static const symbol s_4_5[2] = { 'a', 'n' };
 static const symbol s_4_6[2] = { 'e', 'n' };
 static const symbol s_4_7[2] = { 0xE4, 'n' };
 static const symbol s_4_8[3] = { 'n', 's', 0xE4 };
-
-static const struct among a_4[9] =
-{
-{ 3, s_4_0, -1, 3, 0},
-{ 3, s_4_1, -1, 3, 0},
-{ 3, s_4_2, -1, 3, 0},
-{ 2, s_4_3, -1, 2, 0},
-{ 2, s_4_4, -1, 1, 0},
-{ 2, s_4_5, -1, 4, 0},
-{ 2, s_4_6, -1, 6, 0},
-{ 2, s_4_7, -1, 5, 0},
-{ 3, s_4_8, -1, 3, 0}
+static const struct among a_4[9] = {
+{ 3, s_4_0, 0, 3, 0},
+{ 3, s_4_1, 0, 3, 0},
+{ 3, s_4_2, 0, 3, 0},
+{ 2, s_4_3, 0, 2, 0},
+{ 2, s_4_4, 0, 1, 0},
+{ 2, s_4_5, 0, 4, 0},
+{ 2, s_4_6, 0, 6, 0},
+{ 2, s_4_7, 0, 5, 0},
+{ 3, s_4_8, 0, 3, 0}
 };
 
 static const symbol s_5_0[2] = { 'a', 'a' };
@@ -130,16 +130,14 @@ static const symbol s_5_3[2] = { 'o', 'o' };
 static const symbol s_5_4[2] = { 'u', 'u' };
 static const symbol s_5_5[2] = { 0xE4, 0xE4 };
 static const symbol s_5_6[2] = { 0xF6, 0xF6 };
-
-static const struct among a_5[7] =
-{
-{ 2, s_5_0, -1, -1, 0},
-{ 2, s_5_1, -1, -1, 0},
-{ 2, s_5_2, -1, -1, 0},
-{ 2, s_5_3, -1, -1, 0},
-{ 2, s_5_4, -1, -1, 0},
-{ 2, s_5_5, -1, -1, 0},
-{ 2, s_5_6, -1, -1, 0}
+static const struct among a_5[7] = {
+{ 2, s_5_0, 0, -1, 0},
+{ 2, s_5_1, 0, -1, 0},
+{ 2, s_5_2, 0, -1, 0},
+{ 2, s_5_3, 0, -1, 0},
+{ 2, s_5_4, 0, -1, 0},
+{ 2, s_5_5, 0, -1, 0},
+{ 2, s_5_6, 0, -1, 0}
 };
 
 static const symbol s_6_0[1] = { 'a' };
@@ -172,41 +170,47 @@ static const symbol s_6_26[2] = { 't', 0xE4 };
 static const symbol s_6_27[3] = { 'l', 't', 0xE4 };
 static const symbol s_6_28[3] = { 's', 't', 0xE4 };
 static const symbol s_6_29[3] = { 't', 't', 0xE4 };
-
-static const struct among a_6[30] =
-{
-{ 1, s_6_0, -1, 8, 0},
-{ 3, s_6_1, 0, -1, 0},
-{ 2, s_6_2, 0, -1, 0},
-{ 3, s_6_3, 0, -1, 0},
-{ 2, s_6_4, 0, -1, 0},
-{ 3, s_6_5, 4, -1, 0},
-{ 3, s_6_6, 4, -1, 0},
-{ 3, s_6_7, 4, 2, 0},
-{ 3, s_6_8, -1, -1, 0},
-{ 3, s_6_9, -1, -1, 0},
-{ 3, s_6_10, -1, -1, 0},
-{ 1, s_6_11, -1, 7, 0},
-{ 3, s_6_12, 11, 1, 0},
-{ 3, s_6_13, 11, -1, r_VI},
-{ 4, s_6_14, 11, -1, r_LONG},
-{ 3, s_6_15, 11, 2, 0},
-{ 4, s_6_16, 11, -1, r_VI},
-{ 3, s_6_17, 11, 3, 0},
-{ 4, s_6_18, 11, -1, r_VI},
-{ 3, s_6_19, 11, 4, 0},
-{ 3, s_6_20, 11, 5, 0},
-{ 3, s_6_21, 11, 6, 0},
-{ 1, s_6_22, -1, 8, 0},
-{ 3, s_6_23, 22, -1, 0},
-{ 2, s_6_24, 22, -1, 0},
-{ 3, s_6_25, 22, -1, 0},
-{ 2, s_6_26, 22, -1, 0},
-{ 3, s_6_27, 26, -1, 0},
-{ 3, s_6_28, 26, -1, 0},
-{ 3, s_6_29, 26, 2, 0}
+static const struct among a_6[30] = {
+{ 1, s_6_0, 0, 8, 0},
+{ 3, s_6_1, -1, -1, 0},
+{ 2, s_6_2, -2, -1, 0},
+{ 3, s_6_3, -3, -1, 0},
+{ 2, s_6_4, -4, -1, 0},
+{ 3, s_6_5, -1, -1, 0},
+{ 3, s_6_6, -2, -1, 0},
+{ 3, s_6_7, -3, 2, 0},
+{ 3, s_6_8, 0, -1, 0},
+{ 3, s_6_9, 0, -1, 0},
+{ 3, s_6_10, 0, -1, 0},
+{ 1, s_6_11, 0, 7, 0},
+{ 3, s_6_12, -1, 1, 0},
+{ 3, s_6_13, -2, -1, 1},
+{ 4, s_6_14, -3, -1, 2},
+{ 3, s_6_15, -4, 2, 0},
+{ 4, s_6_16, -5, -1, 1},
+{ 3, s_6_17, -6, 3, 0},
+{ 4, s_6_18, -7, -1, 1},
+{ 3, s_6_19, -8, 4, 0},
+{ 3, s_6_20, -9, 5, 0},
+{ 3, s_6_21, -10, 6, 0},
+{ 1, s_6_22, 0, 8, 0},
+{ 3, s_6_23, -1, -1, 0},
+{ 2, s_6_24, -2, -1, 0},
+{ 3, s_6_25, -3, -1, 0},
+{ 2, s_6_26, -4, -1, 0},
+{ 3, s_6_27, -1, -1, 0},
+{ 3, s_6_28, -2, -1, 0},
+{ 3, s_6_29, -3, 2, 0}
 };
 
+static int af_6(struct SN_env * z) {
+    switch (z->af) {
+        case 1: return r_VI(z);
+        case 2: return r_LONG(z);
+    }
+    return -1;
+}
+
 static const symbol s_7_0[3] = { 'e', 'j', 'a' };
 static const symbol s_7_1[3] = { 'm', 'm', 'a' };
 static const symbol s_7_2[4] = { 'i', 'm', 'm', 'a' };
@@ -221,41 +225,28 @@ static const symbol s_7_10[3] = { 'm', 'm', 0xE4 };
 static const symbol s_7_11[4] = { 'i', 'm', 'm', 0xE4 };
 static const symbol s_7_12[3] = { 'm', 'p', 0xE4 };
 static const symbol s_7_13[4] = { 'i', 'm', 'p', 0xE4 };
-
-static const struct among a_7[14] =
-{
-{ 3, s_7_0, -1, -1, 0},
-{ 3, s_7_1, -1, 1, 0},
-{ 4, s_7_2, 1, -1, 0},
-{ 3, s_7_3, -1, 1, 0},
-{ 4, s_7_4, 3, -1, 0},
-{ 3, s_7_5, -1, 1, 0},
-{ 4, s_7_6, 5, -1, 0},
-{ 3, s_7_7, -1, 1, 0},
-{ 4, s_7_8, 7, -1, 0},
-{ 3, s_7_9, -1, -1, 0},
-{ 3, s_7_10, -1, 1, 0},
-{ 4, s_7_11, 10, -1, 0},
-{ 3, s_7_12, -1, 1, 0},
-{ 4, s_7_13, 12, -1, 0}
-};
-
-static const symbol s_8_0[1] = { 'i' };
-static const symbol s_8_1[1] = { 'j' };
-
-static const struct among a_8[2] =
-{
-{ 1, s_8_0, -1, -1, 0},
-{ 1, s_8_1, -1, -1, 0}
+static const struct among a_7[14] = {
+{ 3, s_7_0, 0, -1, 0},
+{ 3, s_7_1, 0, 1, 0},
+{ 4, s_7_2, -1, -1, 0},
+{ 3, s_7_3, 0, 1, 0},
+{ 4, s_7_4, -1, -1, 0},
+{ 3, s_7_5, 0, 1, 0},
+{ 4, s_7_6, -1, -1, 0},
+{ 3, s_7_7, 0, 1, 0},
+{ 4, s_7_8, -1, -1, 0},
+{ 3, s_7_9, 0, -1, 0},
+{ 3, s_7_10, 0, 1, 0},
+{ 4, s_7_11, -1, -1, 0},
+{ 3, s_7_12, 0, 1, 0},
+{ 4, s_7_13, -1, -1, 0}
 };
 
 static const symbol s_9_0[3] = { 'm', 'm', 'a' };
 static const symbol s_9_1[4] = { 'i', 'm', 'm', 'a' };
-
-static const struct among a_9[2] =
-{
-{ 3, s_9_0, -1, 1, 0},
-{ 4, s_9_1, 0, -1, 0}
+static const struct among a_9[2] = {
+{ 3, s_9_0, 0, 1, 0},
+{ 4, s_9_1, -1, -1, 0}
 };
 
 static const unsigned char g_AEI[] = { 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 };
@@ -268,63 +259,63 @@ static const unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 
 static const unsigned char g_particle_end[] = { 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 };
 
-static const symbol s_0[] = { 'k', 's', 'e' };
-static const symbol s_1[] = { 'k', 's', 'i' };
-static const symbol s_2[] = { 'i', 'e' };
-static const symbol s_3[] = { 'p', 'o' };
-static const symbol s_4[] = { 'p', 'o' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-
-    if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0;
-
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int ret = out_grouping(z, g_V1, 97, 246, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
     {
         int ret = in_grouping(z, g_V1, 97, 246, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[1] = z->c;
-
-    if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0;
-
+    ((SN_local *)z)->i_p1 = z->c;
+    {
+        int ret = out_grouping(z, g_V1, 97, 246, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
     {
         int ret = in_grouping(z, g_V1, 97, 246, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[0] = z->c;
+    ((SN_local *)z)->i_p2 = z->c;
     return 1;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_particle_etc(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        among_var = find_among_b(z, a_0, 10);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_0, 10, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
             if (in_grouping_b(z, g_particle_end, 97, 246, 0)) return 0;
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
             break;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -332,63 +323,71 @@ static int r_particle_etc(struct SN_env * z) {
 
 static int r_possessive(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        among_var = find_among_b(z, a_4, 9);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_4, 9, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int m2 = z->l - z->c; (void)m2;
+            {
+                int v_2 = z->l - z->c;
                 if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0;
                 z->c--;
                 return 0;
             lab0:
-                z->c = z->l - m2;
+                z->c = z->l - v_2;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             z->ket = z->c;
             if (!(eq_s_b(z, 3, s_0))) return 0;
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 3, s_1);
+            {
+                int ret = slice_from_s(z, 3, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
             if (z->c - 1 <= z->lb || z->p[z->c - 1] != 97) return 0;
-            if (!find_among_b(z, a_1, 6)) return 0;
-            {   int ret = slice_del(z);
+            if (!find_among_b(z, a_1, 6, 0)) return 0;
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
             if (z->c - 1 <= z->lb || z->p[z->c - 1] != 228) return 0;
-            if (!find_among_b(z, a_2, 6)) return 0;
-            {   int ret = slice_del(z);
+            if (!find_among_b(z, a_2, 6, 0)) return 0;
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
             if (z->c - 2 <= z->lb || z->p[z->c - 1] != 101) return 0;
-            if (!find_among_b(z, a_3, 2)) return 0;
-            {   int ret = slice_del(z);
+            if (!find_among_b(z, a_3, 2, 0)) return 0;
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -397,28 +396,26 @@ static int r_possessive(struct SN_env * z) {
 }
 
 static int r_LONG(struct SN_env * z) {
-    if (!find_among_b(z, a_5, 7)) return 0;
-    return 1;
+    return find_among_b(z, a_5, 7, 0) != 0;
 }
 
 static int r_VI(struct SN_env * z) {
     if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
     z->c--;
-    if (in_grouping_b(z, g_V2, 97, 246, 0)) return 0;
-    return 1;
+    return !in_grouping_b(z, g_V2, 97, 246, 0);
 }
 
 static int r_case_ending(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        among_var = find_among_b(z, a_6, 30);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_6, 30, af_6);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
@@ -446,21 +443,24 @@ static int r_case_ending(struct SN_env * z) {
             z->c--;
             break;
         case 7:
-            {   int m2 = z->l - z->c; (void)m2;
-                {   int m3 = z->l - z->c; (void)m3;
-                    {   int m4 = z->l - z->c; (void)m4;
-                        {   int ret = r_LONG(z);
-                            if (ret == 0) goto lab2;
+            {
+                int v_2 = z->l - z->c;
+                {
+                    int v_3 = z->l - z->c;
+                    do {
+                        int v_4 = z->l - z->c;
+                        {
+                            int ret = r_LONG(z);
+                            if (ret == 0) goto lab1;
                             if (ret < 0) return ret;
                         }
-                        goto lab1;
-                    lab2:
-                        z->c = z->l - m4;
-                        if (!(eq_s_b(z, 2, s_2))) { z->c = z->l - m2; goto lab0; }
-                    }
-                lab1:
-                    z->c = z->l - m3;
-                    if (z->c <= z->lb) { z->c = z->l - m2; goto lab0; }
+                        break;
+                    lab1:
+                        z->c = z->l - v_4;
+                        if (!(eq_s_b(z, 2, s_2))) { z->c = z->l - v_2; goto lab0; }
+                    } while (0);
+                    z->c = z->l - v_3;
+                    if (z->c <= z->lb) { z->c = z->l - v_2; goto lab0; }
                     z->c--;
                 }
                 z->bra = z->c;
@@ -473,53 +473,57 @@ static int r_case_ending(struct SN_env * z) {
             if (in_grouping_b(z, g_C, 98, 122, 0)) return 0;
             break;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    z->I[2] = 1;
+    ((SN_local *)z)->b_ending_removed = 1;
     return 1;
 }
 
 static int r_other_endings(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[0]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[0];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p2) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p2;
         z->ket = z->c;
-        among_var = find_among_b(z, a_7, 14);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_7, 14, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int m2 = z->l - z->c; (void)m2;
+            {
+                int v_2 = z->l - z->c;
                 if (!(eq_s_b(z, 2, s_3))) goto lab0;
                 return 0;
             lab0:
-                z->c = z->l - m2;
+                z->c = z->l - v_2;
             }
             break;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 static int r_i_plural(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit1; return 0; }
-        if (!find_among_b(z, a_8, 2)) { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = v_1; return 0; }
+        z->c--;
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -527,196 +531,246 @@ static int r_i_plural(struct SN_env * z) {
 
 static int r_t_plural(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = v_1; return 0; }
         z->c--;
         z->bra = z->c;
-        {   int m_test2 = z->l - z->c;
-            if (in_grouping_b(z, g_V1, 97, 246, 0)) { z->lb = mlimit1; return 0; }
-            z->c = z->l - m_test2;
+        {
+            int v_2 = z->l - z->c;
+            if (in_grouping_b(z, g_V1, 97, 246, 0)) { z->lb = v_1; return 0; }
+            z->c = z->l - v_2;
         }
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
-
-    {   int mlimit3;
-        if (z->c < z->I[0]) return 0;
-        mlimit3 = z->lb; z->lb = z->I[0];
+    {
+        int v_3;
+        if (z->c < ((SN_local *)z)->i_p2) return 0;
+        v_3 = z->lb; z->lb = ((SN_local *)z)->i_p2;
         z->ket = z->c;
-        if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit3; return 0; }
-        among_var = find_among_b(z, a_9, 2);
-        if (!among_var) { z->lb = mlimit3; return 0; }
+        if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = v_3; return 0; }
+        among_var = find_among_b(z, a_9, 2, 0);
+        if (!among_var) { z->lb = v_3; return 0; }
         z->bra = z->c;
-        z->lb = mlimit3;
+        z->lb = v_3;
     }
     switch (among_var) {
         case 1:
-            {   int m4 = z->l - z->c; (void)m4;
+            {
+                int v_4 = z->l - z->c;
                 if (!(eq_s_b(z, 2, s_4))) goto lab0;
                 return 0;
             lab0:
-                z->c = z->l - m4;
+                z->c = z->l - v_4;
             }
             break;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 static int r_tidy(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
-        {   int m2 = z->l - z->c; (void)m2;
-            {   int m3 = z->l - z->c; (void)m3;
-                {   int ret = r_LONG(z);
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
+        {
+            int v_2 = z->l - z->c;
+            {
+                int v_3 = z->l - z->c;
+                {
+                    int ret = r_LONG(z);
                     if (ret == 0) goto lab0;
                     if (ret < 0) return ret;
                 }
-                z->c = z->l - m3;
+                z->c = z->l - v_3;
                 z->ket = z->c;
                 if (z->c <= z->lb) goto lab0;
                 z->c--;
                 z->bra = z->c;
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             }
         lab0:
-            z->c = z->l - m2;
+            z->c = z->l - v_2;
         }
-        {   int m4 = z->l - z->c; (void)m4;
+        {
+            int v_4 = z->l - z->c;
             z->ket = z->c;
             if (in_grouping_b(z, g_AEI, 97, 228, 0)) goto lab1;
             z->bra = z->c;
             if (in_grouping_b(z, g_C, 98, 122, 0)) goto lab1;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
         lab1:
-            z->c = z->l - m4;
+            z->c = z->l - v_4;
         }
-        {   int m5 = z->l - z->c; (void)m5;
+        {
+            int v_5 = z->l - z->c;
             z->ket = z->c;
             if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab2;
             z->c--;
             z->bra = z->c;
-            {   int m6 = z->l - z->c; (void)m6;
-                if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
+            do {
+                int v_6 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab3;
                 z->c--;
-                goto lab3;
-            lab4:
-                z->c = z->l - m6;
+                break;
+            lab3:
+                z->c = z->l - v_6;
                 if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab2;
                 z->c--;
-            }
-        lab3:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
         lab2:
-            z->c = z->l - m5;
+            z->c = z->l - v_5;
         }
-        {   int m7 = z->l - z->c; (void)m7;
+        {
+            int v_7 = z->l - z->c;
             z->ket = z->c;
-            if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5;
+            if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
             z->c--;
             z->bra = z->c;
-            if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab5;
+            if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab4;
             z->c--;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-        lab5:
-            z->c = z->l - m7;
+        lab4:
+            z->c = z->l - v_7;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
-
     if (in_grouping_b(z, g_V1, 97, 246, 1) < 0) return 0;
     z->ket = z->c;
     if (in_grouping_b(z, g_C, 98, 122, 0)) return 0;
     z->bra = z->c;
-    z->S[0] = slice_to(z, z->S[0]);
-    if (z->S[0] == 0) return -1;
-    if (!(eq_v_b(z, z->S[0]))) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_to(z, &((SN_local *)z)->s_x);
+        if (ret < 0) return ret;
+    }
+    if (!(eq_v_b(z, ((SN_local *)z)->s_x))) return 0;
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int finnish_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-    z->I[2] = 0;
+    ((SN_local *)z)->b_ending_removed = 0;
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_particle_etc(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_particle_etc(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_possessive(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_possessive(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_case_ending(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_case_ending(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
-    {   int m5 = z->l - z->c; (void)m5;
-        {   int ret = r_other_endings(z);
+    {
+        int v_5 = z->l - z->c;
+        {
+            int ret = r_other_endings(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m5;
+        z->c = z->l - v_5;
     }
-
-    if (!(z->I[2])) goto lab1;
-    {   int m6 = z->l - z->c; (void)m6;
-        {   int ret = r_i_plural(z);
-            if (ret < 0) return ret;
+    do {
+        if (!((SN_local *)z)->b_ending_removed) goto lab0;
+        {
+            int v_6 = z->l - z->c;
+            {
+                int ret = r_i_plural(z);
+                if (ret < 0) return ret;
+            }
+            z->c = z->l - v_6;
         }
-        z->c = z->l - m6;
-    }
-    goto lab0;
-lab1:
-    {   int m7 = z->l - z->c; (void)m7;
-        {   int ret = r_t_plural(z);
-            if (ret < 0) return ret;
+        break;
+    lab0:
+        {
+            int v_7 = z->l - z->c;
+            {
+                int ret = r_t_plural(z);
+                if (ret < 0) return ret;
+            }
+            z->c = z->l - v_7;
         }
-        z->c = z->l - m7;
-    }
-lab0:
-    {   int m8 = z->l - z->c; (void)m8;
-        {   int ret = r_tidy(z);
+    } while (0);
+    {
+        int v_8 = z->l - z->c;
+        {
+            int ret = r_tidy(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m8;
+        z->c = z->l - v_8;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * finnish_ISO_8859_1_create_env(void) { return SN_create_env(1, 3); }
+extern struct SN_env * finnish_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->b_ending_removed = 0;
+        ((SN_local *)z)->s_x = NULL;
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+
+        if ((((SN_local *)z)->s_x = create_s()) == NULL) {
+            finnish_ISO_8859_1_close_env(z);
+            return NULL;
+        }
+    }
+    return z;
+}
 
-extern void finnish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); }
+extern void finnish_ISO_8859_1_close_env(struct SN_env * z) {
+    if (z) {
+        lose_s(((SN_local *)z)->s_x);
+    }
+    SN_delete_env(z);
+}
 
index 5706a5296bb9bf9c9632c9f5d449d00cfcb9dcaa..ba6fff32b00f3942209e9a97698a8ad268f489af 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from french.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_french.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int french_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_un_accent(struct SN_env * z);
 static int r_un_double(struct SN_env * z);
 static int r_residual_suffix(struct SN_env * z);
@@ -22,27 +36,54 @@ static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
 static int r_prelude(struct SN_env * z);
 static int r_elisions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * french_ISO_8859_1_create_env(void);
-extern void french_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'q', 'u' };
+static const symbol s_1[] = { 'U' };
+static const symbol s_2[] = { 'I' };
+static const symbol s_3[] = { 'Y' };
+static const symbol s_4[] = { 'H', 'e' };
+static const symbol s_5[] = { 'H', 'i' };
+static const symbol s_6[] = { 'Y' };
+static const symbol s_7[] = { 'U' };
+static const symbol s_8[] = { 'i' };
+static const symbol s_9[] = { 'u' };
+static const symbol s_10[] = { 'y' };
+static const symbol s_11[] = { 0xEB };
+static const symbol s_12[] = { 0xEF };
+static const symbol s_13[] = { 'i', 'c' };
+static const symbol s_14[] = { 'i', 'q', 'U' };
+static const symbol s_15[] = { 'l', 'o', 'g' };
+static const symbol s_16[] = { 'u' };
+static const symbol s_17[] = { 'e', 'n', 't' };
+static const symbol s_18[] = { 'a', 't' };
+static const symbol s_19[] = { 'e', 'u', 'x' };
+static const symbol s_20[] = { 'i' };
+static const symbol s_21[] = { 'a', 'b', 'l' };
+static const symbol s_22[] = { 'i', 'q', 'U' };
+static const symbol s_23[] = { 'a', 't' };
+static const symbol s_24[] = { 'i', 'c' };
+static const symbol s_25[] = { 'i', 'q', 'U' };
+static const symbol s_26[] = { 'e', 'a', 'u' };
+static const symbol s_27[] = { 'a', 'l' };
+static const symbol s_28[] = { 'o', 'u' };
+static const symbol s_29[] = { 'e', 'u', 'x' };
+static const symbol s_30[] = { 'a', 'n', 't' };
+static const symbol s_31[] = { 'e', 'n', 't' };
+static const symbol s_32[] = { 'H', 'i' };
+static const symbol s_33[] = { 'i' };
+static const symbol s_34[] = { 'e' };
+static const symbol s_35[] = { 'i' };
+static const symbol s_36[] = { 'c' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[3] = { 'c', 'o', 'l' };
-static const symbol s_0_1[3] = { 'p', 'a', 'r' };
-static const symbol s_0_2[3] = { 't', 'a', 'p' };
-
-static const struct among a_0[3] =
-{
-{ 3, s_0_0, -1, -1, 0},
-{ 3, s_0_1, -1, -1, 0},
-{ 3, s_0_2, -1, -1, 0}
+static const symbol s_0_1[2] = { 'n', 'i' };
+static const symbol s_0_2[3] = { 'p', 'a', 'r' };
+static const symbol s_0_3[3] = { 't', 'a', 'p' };
+static const struct among a_0[4] = {
+{ 3, s_0_0, 0, -1, 0},
+{ 2, s_0_1, 0, 1, 0},
+{ 3, s_0_2, 0, -1, 0},
+{ 3, s_0_3, 0, -1, 0}
 };
 
 static const symbol s_1_1[1] = { 'H' };
@@ -51,16 +92,14 @@ static const symbol s_1_3[2] = { 'H', 'i' };
 static const symbol s_1_4[1] = { 'I' };
 static const symbol s_1_5[1] = { 'U' };
 static const symbol s_1_6[1] = { 'Y' };
-
-static const struct among a_1[7] =
-{
-{ 0, 0, -1, 7, 0},
-{ 1, s_1_1, 0, 6, 0},
-{ 2, s_1_2, 1, 4, 0},
-{ 2, s_1_3, 1, 5, 0},
-{ 1, s_1_4, 0, 1, 0},
-{ 1, s_1_5, 0, 2, 0},
-{ 1, s_1_6, 0, 3, 0}
+static const struct among a_1[7] = {
+{ 0, 0, 0, 7, 0},
+{ 1, s_1_1, -1, 6, 0},
+{ 2, s_1_2, -1, 4, 0},
+{ 2, s_1_3, -2, 5, 0},
+{ 1, s_1_4, -4, 1, 0},
+{ 1, s_1_5, -5, 2, 0},
+{ 1, s_1_6, -6, 3, 0}
 };
 
 static const symbol s_2_0[3] = { 'i', 'q', 'U' };
@@ -69,26 +108,22 @@ static const symbol s_2_2[3] = { 'I', 0xE8, 'r' };
 static const symbol s_2_3[3] = { 'i', 0xE8, 'r' };
 static const symbol s_2_4[3] = { 'e', 'u', 's' };
 static const symbol s_2_5[2] = { 'i', 'v' };
-
-static const struct among a_2[6] =
-{
-{ 3, s_2_0, -1, 3, 0},
-{ 3, s_2_1, -1, 3, 0},
-{ 3, s_2_2, -1, 4, 0},
-{ 3, s_2_3, -1, 4, 0},
-{ 3, s_2_4, -1, 2, 0},
-{ 2, s_2_5, -1, 1, 0}
+static const struct among a_2[6] = {
+{ 3, s_2_0, 0, 3, 0},
+{ 3, s_2_1, 0, 3, 0},
+{ 3, s_2_2, 0, 4, 0},
+{ 3, s_2_3, 0, 4, 0},
+{ 3, s_2_4, 0, 2, 0},
+{ 2, s_2_5, 0, 1, 0}
 };
 
 static const symbol s_3_0[2] = { 'i', 'c' };
 static const symbol s_3_1[4] = { 'a', 'b', 'i', 'l' };
 static const symbol s_3_2[2] = { 'i', 'v' };
-
-static const struct among a_3[3] =
-{
-{ 2, s_3_0, -1, 2, 0},
-{ 4, s_3_1, -1, 1, 0},
-{ 2, s_3_2, -1, 3, 0}
+static const struct among a_3[3] = {
+{ 2, s_3_0, 0, 2, 0},
+{ 4, s_3_1, 0, 1, 0},
+{ 2, s_3_2, 0, 3, 0}
 };
 
 static const symbol s_4_0[4] = { 'i', 'q', 'U', 'e' };
@@ -133,53 +168,53 @@ static const symbol s_4_38[6] = { 'e', 'm', 'm', 'e', 'n', 't' };
 static const symbol s_4_39[3] = { 'a', 'u', 'x' };
 static const symbol s_4_40[4] = { 'e', 'a', 'u', 'x' };
 static const symbol s_4_41[3] = { 'e', 'u', 'x' };
-static const symbol s_4_42[3] = { 'i', 't', 0xE9 };
-
-static const struct among a_4[43] =
-{
-{ 4, s_4_0, -1, 1, 0},
-{ 6, s_4_1, -1, 2, 0},
-{ 4, s_4_2, -1, 1, 0},
-{ 4, s_4_3, -1, 5, 0},
-{ 5, s_4_4, -1, 3, 0},
-{ 4, s_4_5, -1, 1, 0},
-{ 4, s_4_6, -1, 1, 0},
-{ 4, s_4_7, -1, 11, 0},
-{ 4, s_4_8, -1, 1, 0},
-{ 3, s_4_9, -1, 8, 0},
-{ 2, s_4_10, -1, 8, 0},
-{ 5, s_4_11, -1, 4, 0},
-{ 5, s_4_12, -1, 2, 0},
-{ 5, s_4_13, -1, 4, 0},
-{ 5, s_4_14, -1, 2, 0},
-{ 5, s_4_15, -1, 1, 0},
-{ 7, s_4_16, -1, 2, 0},
-{ 5, s_4_17, -1, 1, 0},
-{ 5, s_4_18, -1, 5, 0},
-{ 6, s_4_19, -1, 3, 0},
-{ 5, s_4_20, -1, 1, 0},
-{ 5, s_4_21, -1, 1, 0},
-{ 5, s_4_22, -1, 11, 0},
-{ 5, s_4_23, -1, 1, 0},
-{ 4, s_4_24, -1, 8, 0},
-{ 3, s_4_25, -1, 8, 0},
-{ 6, s_4_26, -1, 4, 0},
-{ 6, s_4_27, -1, 2, 0},
-{ 6, s_4_28, -1, 4, 0},
-{ 6, s_4_29, -1, 2, 0},
-{ 5, s_4_30, -1, 15, 0},
-{ 6, s_4_31, 30, 6, 0},
-{ 9, s_4_32, 31, 12, 0},
-{ 4, s_4_33, -1, 7, 0},
-{ 4, s_4_34, -1, 15, 0},
-{ 5, s_4_35, 34, 6, 0},
-{ 8, s_4_36, 35, 12, 0},
-{ 6, s_4_37, 34, 13, 0},
-{ 6, s_4_38, 34, 14, 0},
-{ 3, s_4_39, -1, 10, 0},
-{ 4, s_4_40, 39, 9, 0},
-{ 3, s_4_41, -1, 1, 0},
-{ 3, s_4_42, -1, 7, 0}
+static const symbol s_4_42[3] = { 'o', 'u', 'x' };
+static const symbol s_4_43[3] = { 'i', 't', 0xE9 };
+static const struct among a_4[44] = {
+{ 4, s_4_0, 0, 1, 0},
+{ 6, s_4_1, 0, 2, 0},
+{ 4, s_4_2, 0, 1, 0},
+{ 4, s_4_3, 0, 5, 0},
+{ 5, s_4_4, 0, 3, 0},
+{ 4, s_4_5, 0, 1, 0},
+{ 4, s_4_6, 0, 1, 0},
+{ 4, s_4_7, 0, 12, 0},
+{ 4, s_4_8, 0, 1, 0},
+{ 3, s_4_9, 0, 8, 0},
+{ 2, s_4_10, 0, 8, 0},
+{ 5, s_4_11, 0, 4, 0},
+{ 5, s_4_12, 0, 2, 0},
+{ 5, s_4_13, 0, 4, 0},
+{ 5, s_4_14, 0, 2, 0},
+{ 5, s_4_15, 0, 1, 0},
+{ 7, s_4_16, 0, 2, 0},
+{ 5, s_4_17, 0, 1, 0},
+{ 5, s_4_18, 0, 5, 0},
+{ 6, s_4_19, 0, 3, 0},
+{ 5, s_4_20, 0, 1, 0},
+{ 5, s_4_21, 0, 1, 0},
+{ 5, s_4_22, 0, 12, 0},
+{ 5, s_4_23, 0, 1, 0},
+{ 4, s_4_24, 0, 8, 0},
+{ 3, s_4_25, 0, 8, 0},
+{ 6, s_4_26, 0, 4, 0},
+{ 6, s_4_27, 0, 2, 0},
+{ 6, s_4_28, 0, 4, 0},
+{ 6, s_4_29, 0, 2, 0},
+{ 5, s_4_30, 0, 16, 0},
+{ 6, s_4_31, -1, 6, 0},
+{ 9, s_4_32, -1, 13, 0},
+{ 4, s_4_33, 0, 7, 0},
+{ 4, s_4_34, 0, 16, 0},
+{ 5, s_4_35, -1, 6, 0},
+{ 8, s_4_36, -1, 13, 0},
+{ 6, s_4_37, -3, 14, 0},
+{ 6, s_4_38, -4, 15, 0},
+{ 3, s_4_39, 0, 10, 0},
+{ 4, s_4_40, -1, 9, 0},
+{ 3, s_4_41, 0, 1, 0},
+{ 3, s_4_42, 0, 11, 0},
+{ 3, s_4_43, 0, 7, 0}
 };
 
 static const symbol s_5_0[3] = { 'i', 'r', 'a' };
@@ -217,423 +252,412 @@ static const symbol s_5_31[5] = { 'i', 'r', 'i', 'e', 'z' };
 static const symbol s_5_32[6] = { 'i', 's', 's', 'i', 'e', 'z' };
 static const symbol s_5_33[4] = { 'i', 'r', 'e', 'z' };
 static const symbol s_5_34[5] = { 'i', 's', 's', 'e', 'z' };
-
-static const struct among a_5[35] =
-{
-{ 3, s_5_0, -1, 1, 0},
-{ 2, s_5_1, -1, 1, 0},
-{ 4, s_5_2, -1, 1, 0},
-{ 7, s_5_3, -1, 1, 0},
-{ 1, s_5_4, -1, 1, 0},
-{ 4, s_5_5, 4, 1, 0},
-{ 2, s_5_6, -1, 1, 0},
-{ 4, s_5_7, -1, 1, 0},
-{ 3, s_5_8, -1, 1, 0},
-{ 4, s_5_9, -1, 1, 0},
-{ 5, s_5_10, -1, 1, 0},
-{ 8, s_5_11, -1, 1, 0},
-{ 4, s_5_12, -1, 1, 0},
-{ 2, s_5_13, -1, 1, 0},
-{ 5, s_5_14, 13, 1, 0},
-{ 6, s_5_15, 13, 1, 0},
-{ 6, s_5_16, -1, 1, 0},
-{ 7, s_5_17, -1, 1, 0},
-{ 5, s_5_18, -1, 1, 0},
-{ 6, s_5_19, -1, 1, 0},
-{ 7, s_5_20, -1, 1, 0},
-{ 2, s_5_21, -1, 1, 0},
-{ 5, s_5_22, 21, 1, 0},
-{ 6, s_5_23, 21, 1, 0},
-{ 6, s_5_24, -1, 1, 0},
-{ 7, s_5_25, -1, 1, 0},
-{ 8, s_5_26, -1, 1, 0},
-{ 5, s_5_27, -1, 1, 0},
-{ 6, s_5_28, -1, 1, 0},
-{ 5, s_5_29, -1, 1, 0},
-{ 2, s_5_30, -1, 1, 0},
-{ 5, s_5_31, -1, 1, 0},
-{ 6, s_5_32, -1, 1, 0},
-{ 4, s_5_33, -1, 1, 0},
-{ 5, s_5_34, -1, 1, 0}
+static const struct among a_5[35] = {
+{ 3, s_5_0, 0, 1, 0},
+{ 2, s_5_1, 0, 1, 0},
+{ 4, s_5_2, 0, 1, 0},
+{ 7, s_5_3, 0, 1, 0},
+{ 1, s_5_4, 0, 1, 0},
+{ 4, s_5_5, -1, 1, 0},
+{ 2, s_5_6, 0, 1, 0},
+{ 4, s_5_7, 0, 1, 0},
+{ 3, s_5_8, 0, 1, 0},
+{ 4, s_5_9, 0, 1, 0},
+{ 5, s_5_10, 0, 1, 0},
+{ 8, s_5_11, 0, 1, 0},
+{ 4, s_5_12, 0, 1, 0},
+{ 2, s_5_13, 0, 1, 0},
+{ 5, s_5_14, -1, 1, 0},
+{ 6, s_5_15, -2, 1, 0},
+{ 6, s_5_16, 0, 1, 0},
+{ 7, s_5_17, 0, 1, 0},
+{ 5, s_5_18, 0, 1, 0},
+{ 6, s_5_19, 0, 1, 0},
+{ 7, s_5_20, 0, 1, 0},
+{ 2, s_5_21, 0, 1, 0},
+{ 5, s_5_22, -1, 1, 0},
+{ 6, s_5_23, -2, 1, 0},
+{ 6, s_5_24, 0, 1, 0},
+{ 7, s_5_25, 0, 1, 0},
+{ 8, s_5_26, 0, 1, 0},
+{ 5, s_5_27, 0, 1, 0},
+{ 6, s_5_28, 0, 1, 0},
+{ 5, s_5_29, 0, 1, 0},
+{ 2, s_5_30, 0, 1, 0},
+{ 5, s_5_31, 0, 1, 0},
+{ 6, s_5_32, 0, 1, 0},
+{ 4, s_5_33, 0, 1, 0},
+{ 5, s_5_34, 0, 1, 0}
 };
 
-static const symbol s_6_0[1] = { 'a' };
-static const symbol s_6_1[3] = { 'e', 'r', 'a' };
-static const symbol s_6_2[4] = { 'a', 's', 's', 'e' };
-static const symbol s_6_3[4] = { 'a', 'n', 't', 'e' };
-static const symbol s_6_4[2] = { 0xE9, 'e' };
-static const symbol s_6_5[2] = { 'a', 'i' };
-static const symbol s_6_6[4] = { 'e', 'r', 'a', 'i' };
-static const symbol s_6_7[2] = { 'e', 'r' };
-static const symbol s_6_8[2] = { 'a', 's' };
-static const symbol s_6_9[4] = { 'e', 'r', 'a', 's' };
-static const symbol s_6_10[4] = { 0xE2, 'm', 'e', 's' };
-static const symbol s_6_11[5] = { 'a', 's', 's', 'e', 's' };
-static const symbol s_6_12[5] = { 'a', 'n', 't', 'e', 's' };
-static const symbol s_6_13[4] = { 0xE2, 't', 'e', 's' };
-static const symbol s_6_14[3] = { 0xE9, 'e', 's' };
-static const symbol s_6_15[3] = { 'a', 'i', 's' };
-static const symbol s_6_16[5] = { 'e', 'r', 'a', 'i', 's' };
-static const symbol s_6_17[4] = { 'i', 'o', 'n', 's' };
-static const symbol s_6_18[6] = { 'e', 'r', 'i', 'o', 'n', 's' };
-static const symbol s_6_19[7] = { 'a', 's', 's', 'i', 'o', 'n', 's' };
-static const symbol s_6_20[5] = { 'e', 'r', 'o', 'n', 's' };
-static const symbol s_6_21[4] = { 'a', 'n', 't', 's' };
-static const symbol s_6_22[2] = { 0xE9, 's' };
-static const symbol s_6_23[3] = { 'a', 'i', 't' };
-static const symbol s_6_24[5] = { 'e', 'r', 'a', 'i', 't' };
-static const symbol s_6_25[3] = { 'a', 'n', 't' };
-static const symbol s_6_26[5] = { 'a', 'I', 'e', 'n', 't' };
-static const symbol s_6_27[7] = { 'e', 'r', 'a', 'I', 'e', 'n', 't' };
-static const symbol s_6_28[5] = { 0xE8, 'r', 'e', 'n', 't' };
-static const symbol s_6_29[6] = { 'a', 's', 's', 'e', 'n', 't' };
-static const symbol s_6_30[5] = { 'e', 'r', 'o', 'n', 't' };
-static const symbol s_6_31[2] = { 0xE2, 't' };
-static const symbol s_6_32[2] = { 'e', 'z' };
-static const symbol s_6_33[3] = { 'i', 'e', 'z' };
-static const symbol s_6_34[5] = { 'e', 'r', 'i', 'e', 'z' };
-static const symbol s_6_35[6] = { 'a', 's', 's', 'i', 'e', 'z' };
-static const symbol s_6_36[4] = { 'e', 'r', 'e', 'z' };
-static const symbol s_6_37[1] = { 0xE9 };
-
-static const struct among a_6[38] =
-{
-{ 1, s_6_0, -1, 3, 0},
-{ 3, s_6_1, 0, 2, 0},
-{ 4, s_6_2, -1, 3, 0},
-{ 4, s_6_3, -1, 3, 0},
-{ 2, s_6_4, -1, 2, 0},
-{ 2, s_6_5, -1, 3, 0},
-{ 4, s_6_6, 5, 2, 0},
-{ 2, s_6_7, -1, 2, 0},
-{ 2, s_6_8, -1, 3, 0},
-{ 4, s_6_9, 8, 2, 0},
-{ 4, s_6_10, -1, 3, 0},
-{ 5, s_6_11, -1, 3, 0},
-{ 5, s_6_12, -1, 3, 0},
-{ 4, s_6_13, -1, 3, 0},
-{ 3, s_6_14, -1, 2, 0},
-{ 3, s_6_15, -1, 3, 0},
-{ 5, s_6_16, 15, 2, 0},
-{ 4, s_6_17, -1, 1, 0},
-{ 6, s_6_18, 17, 2, 0},
-{ 7, s_6_19, 17, 3, 0},
-{ 5, s_6_20, -1, 2, 0},
-{ 4, s_6_21, -1, 3, 0},
-{ 2, s_6_22, -1, 2, 0},
-{ 3, s_6_23, -1, 3, 0},
-{ 5, s_6_24, 23, 2, 0},
-{ 3, s_6_25, -1, 3, 0},
-{ 5, s_6_26, -1, 3, 0},
-{ 7, s_6_27, 26, 2, 0},
-{ 5, s_6_28, -1, 2, 0},
-{ 6, s_6_29, -1, 3, 0},
-{ 5, s_6_30, -1, 2, 0},
-{ 2, s_6_31, -1, 3, 0},
-{ 2, s_6_32, -1, 2, 0},
-{ 3, s_6_33, 32, 2, 0},
-{ 5, s_6_34, 33, 2, 0},
-{ 6, s_6_35, 33, 3, 0},
-{ 4, s_6_36, 32, 2, 0},
-{ 1, s_6_37, -1, 2, 0}
+static const symbol s_6_0[2] = { 'a', 'l' };
+static const symbol s_6_1[3] = { 0xE9, 'p', 'l' };
+static const symbol s_6_2[3] = { 'a', 'u', 'v' };
+static const struct among a_6[3] = {
+{ 2, s_6_0, 0, 1, 0},
+{ 3, s_6_1, 0, -1, 0},
+{ 3, s_6_2, 0, -1, 0}
 };
 
-static const symbol s_7_0[1] = { 'e' };
-static const symbol s_7_1[4] = { 'I', 0xE8, 'r', 'e' };
-static const symbol s_7_2[4] = { 'i', 0xE8, 'r', 'e' };
-static const symbol s_7_3[3] = { 'i', 'o', 'n' };
-static const symbol s_7_4[3] = { 'I', 'e', 'r' };
-static const symbol s_7_5[3] = { 'i', 'e', 'r' };
-
-static const struct among a_7[6] =
-{
-{ 1, s_7_0, -1, 3, 0},
-{ 4, s_7_1, 0, 2, 0},
-{ 4, s_7_2, 0, 2, 0},
-{ 3, s_7_3, -1, 1, 0},
-{ 3, s_7_4, -1, 2, 0},
-{ 3, s_7_5, -1, 2, 0}
+static const symbol s_7_0[1] = { 'a' };
+static const symbol s_7_1[3] = { 'e', 'r', 'a' };
+static const symbol s_7_2[4] = { 'a', 'i', 's', 'e' };
+static const symbol s_7_3[4] = { 'a', 's', 's', 'e' };
+static const symbol s_7_4[4] = { 'a', 'n', 't', 'e' };
+static const symbol s_7_5[2] = { 0xE9, 'e' };
+static const symbol s_7_6[2] = { 'a', 'i' };
+static const symbol s_7_7[4] = { 'e', 'r', 'a', 'i' };
+static const symbol s_7_8[2] = { 'e', 'r' };
+static const symbol s_7_9[2] = { 'a', 's' };
+static const symbol s_7_10[4] = { 'e', 'r', 'a', 's' };
+static const symbol s_7_11[4] = { 0xE2, 'm', 'e', 's' };
+static const symbol s_7_12[5] = { 'a', 'i', 's', 'e', 's' };
+static const symbol s_7_13[5] = { 'a', 's', 's', 'e', 's' };
+static const symbol s_7_14[5] = { 'a', 'n', 't', 'e', 's' };
+static const symbol s_7_15[4] = { 0xE2, 't', 'e', 's' };
+static const symbol s_7_16[3] = { 0xE9, 'e', 's' };
+static const symbol s_7_17[3] = { 'a', 'i', 's' };
+static const symbol s_7_18[4] = { 'e', 'a', 'i', 's' };
+static const symbol s_7_19[5] = { 'e', 'r', 'a', 'i', 's' };
+static const symbol s_7_20[4] = { 'i', 'o', 'n', 's' };
+static const symbol s_7_21[6] = { 'e', 'r', 'i', 'o', 'n', 's' };
+static const symbol s_7_22[7] = { 'a', 's', 's', 'i', 'o', 'n', 's' };
+static const symbol s_7_23[5] = { 'e', 'r', 'o', 'n', 's' };
+static const symbol s_7_24[4] = { 'a', 'n', 't', 's' };
+static const symbol s_7_25[2] = { 0xE9, 's' };
+static const symbol s_7_26[3] = { 'a', 'i', 't' };
+static const symbol s_7_27[5] = { 'e', 'r', 'a', 'i', 't' };
+static const symbol s_7_28[3] = { 'a', 'n', 't' };
+static const symbol s_7_29[5] = { 'a', 'I', 'e', 'n', 't' };
+static const symbol s_7_30[7] = { 'e', 'r', 'a', 'I', 'e', 'n', 't' };
+static const symbol s_7_31[5] = { 0xE8, 'r', 'e', 'n', 't' };
+static const symbol s_7_32[6] = { 'a', 's', 's', 'e', 'n', 't' };
+static const symbol s_7_33[5] = { 'e', 'r', 'o', 'n', 't' };
+static const symbol s_7_34[2] = { 0xE2, 't' };
+static const symbol s_7_35[2] = { 'e', 'z' };
+static const symbol s_7_36[3] = { 'i', 'e', 'z' };
+static const symbol s_7_37[5] = { 'e', 'r', 'i', 'e', 'z' };
+static const symbol s_7_38[6] = { 'a', 's', 's', 'i', 'e', 'z' };
+static const symbol s_7_39[4] = { 'e', 'r', 'e', 'z' };
+static const symbol s_7_40[1] = { 0xE9 };
+static const struct among a_7[41] = {
+{ 1, s_7_0, 0, 3, 0},
+{ 3, s_7_1, -1, 2, 0},
+{ 4, s_7_2, 0, 4, 0},
+{ 4, s_7_3, 0, 3, 0},
+{ 4, s_7_4, 0, 3, 0},
+{ 2, s_7_5, 0, 2, 0},
+{ 2, s_7_6, 0, 3, 0},
+{ 4, s_7_7, -1, 2, 0},
+{ 2, s_7_8, 0, 2, 0},
+{ 2, s_7_9, 0, 3, 0},
+{ 4, s_7_10, -1, 2, 0},
+{ 4, s_7_11, 0, 3, 0},
+{ 5, s_7_12, 0, 4, 0},
+{ 5, s_7_13, 0, 3, 0},
+{ 5, s_7_14, 0, 3, 0},
+{ 4, s_7_15, 0, 3, 0},
+{ 3, s_7_16, 0, 2, 0},
+{ 3, s_7_17, 0, 4, 0},
+{ 4, s_7_18, -1, 2, 0},
+{ 5, s_7_19, -2, 2, 0},
+{ 4, s_7_20, 0, 1, 0},
+{ 6, s_7_21, -1, 2, 0},
+{ 7, s_7_22, -2, 3, 0},
+{ 5, s_7_23, 0, 2, 0},
+{ 4, s_7_24, 0, 3, 0},
+{ 2, s_7_25, 0, 2, 0},
+{ 3, s_7_26, 0, 3, 0},
+{ 5, s_7_27, -1, 2, 0},
+{ 3, s_7_28, 0, 3, 0},
+{ 5, s_7_29, 0, 3, 0},
+{ 7, s_7_30, -1, 2, 0},
+{ 5, s_7_31, 0, 2, 0},
+{ 6, s_7_32, 0, 3, 0},
+{ 5, s_7_33, 0, 2, 0},
+{ 2, s_7_34, 0, 3, 0},
+{ 2, s_7_35, 0, 2, 0},
+{ 3, s_7_36, -1, 2, 0},
+{ 5, s_7_37, -1, 2, 0},
+{ 6, s_7_38, -2, 3, 0},
+{ 4, s_7_39, -4, 2, 0},
+{ 1, s_7_40, 0, 2, 0}
 };
 
-static const symbol s_8_0[3] = { 'e', 'l', 'l' };
-static const symbol s_8_1[4] = { 'e', 'i', 'l', 'l' };
-static const symbol s_8_2[3] = { 'e', 'n', 'n' };
-static const symbol s_8_3[3] = { 'o', 'n', 'n' };
-static const symbol s_8_4[3] = { 'e', 't', 't' };
+static const symbol s_8_0[1] = { 'e' };
+static const symbol s_8_1[4] = { 'I', 0xE8, 'r', 'e' };
+static const symbol s_8_2[4] = { 'i', 0xE8, 'r', 'e' };
+static const symbol s_8_3[3] = { 'i', 'o', 'n' };
+static const symbol s_8_4[3] = { 'I', 'e', 'r' };
+static const symbol s_8_5[3] = { 'i', 'e', 'r' };
+static const struct among a_8[6] = {
+{ 1, s_8_0, 0, 3, 0},
+{ 4, s_8_1, -1, 2, 0},
+{ 4, s_8_2, -2, 2, 0},
+{ 3, s_8_3, 0, 1, 0},
+{ 3, s_8_4, 0, 2, 0},
+{ 3, s_8_5, 0, 2, 0}
+};
 
-static const struct among a_8[5] =
-{
-{ 3, s_8_0, -1, -1, 0},
-{ 4, s_8_1, -1, -1, 0},
-{ 3, s_8_2, -1, -1, 0},
-{ 3, s_8_3, -1, -1, 0},
-{ 3, s_8_4, -1, -1, 0}
+static const symbol s_9_0[3] = { 'e', 'l', 'l' };
+static const symbol s_9_1[4] = { 'e', 'i', 'l', 'l' };
+static const symbol s_9_2[3] = { 'e', 'n', 'n' };
+static const symbol s_9_3[3] = { 'o', 'n', 'n' };
+static const symbol s_9_4[3] = { 'e', 't', 't' };
+static const struct among a_9[5] = {
+{ 3, s_9_0, 0, -1, 0},
+{ 4, s_9_1, 0, -1, 0},
+{ 3, s_9_2, 0, -1, 0},
+{ 3, s_9_3, 0, -1, 0},
+{ 3, s_9_4, 0, -1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 };
 
+static const unsigned char g_oux_ending[] = { 65, 85 };
+
 static const unsigned char g_elision_char[] = { 131, 14, 3 };
 
 static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
 
-static const symbol s_0[] = { 'q', 'u' };
-static const symbol s_1[] = { 'U' };
-static const symbol s_2[] = { 'I' };
-static const symbol s_3[] = { 'Y' };
-static const symbol s_4[] = { 'H', 'e' };
-static const symbol s_5[] = { 'H', 'i' };
-static const symbol s_6[] = { 'Y' };
-static const symbol s_7[] = { 'U' };
-static const symbol s_8[] = { 'i' };
-static const symbol s_9[] = { 'u' };
-static const symbol s_10[] = { 'y' };
-static const symbol s_11[] = { 0xEB };
-static const symbol s_12[] = { 0xEF };
-static const symbol s_13[] = { 'i', 'c' };
-static const symbol s_14[] = { 'i', 'q', 'U' };
-static const symbol s_15[] = { 'l', 'o', 'g' };
-static const symbol s_16[] = { 'u' };
-static const symbol s_17[] = { 'e', 'n', 't' };
-static const symbol s_18[] = { 'a', 't' };
-static const symbol s_19[] = { 'e', 'u', 'x' };
-static const symbol s_20[] = { 'i' };
-static const symbol s_21[] = { 'a', 'b', 'l' };
-static const symbol s_22[] = { 'i', 'q', 'U' };
-static const symbol s_23[] = { 'a', 't' };
-static const symbol s_24[] = { 'i', 'c' };
-static const symbol s_25[] = { 'i', 'q', 'U' };
-static const symbol s_26[] = { 'e', 'a', 'u' };
-static const symbol s_27[] = { 'a', 'l' };
-static const symbol s_28[] = { 'e', 'u', 'x' };
-static const symbol s_29[] = { 'a', 'n', 't' };
-static const symbol s_30[] = { 'e', 'n', 't' };
-static const symbol s_31[] = { 'H', 'i' };
-static const symbol s_32[] = { 'i' };
-static const symbol s_33[] = { 'e' };
-static const symbol s_34[] = { 'i' };
-static const symbol s_35[] = { 'c' };
-
 static int r_elisions(struct SN_env * z) {
     z->bra = z->c;
-    {   int c1 = z->c;
-        if (in_grouping(z, g_elision_char, 99, 116, 0)) goto lab1;
-        goto lab0;
-    lab1:
-        z->c = c1;
+    do {
+        int v_1 = z->c;
+        if (in_grouping(z, g_elision_char, 99, 116, 0)) goto lab0;
+        break;
+    lab0:
+        z->c = v_1;
         if (!(eq_s(z, 2, s_0))) return 0;
-    }
-lab0:
+    } while (0);
     if (z->c == z->l || z->p[z->c] != '\'') return 0;
     z->c++;
     z->ket = z->c;
-
-    if (z->c < z->l) goto lab2;
+    if (z->c < z->l) goto lab1;
     return 0;
-lab2:
-    {   int ret = slice_del(z);
+lab1:
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 static int r_prelude(struct SN_env * z) {
-    while(1) {
-        int c1 = z->c;
-        while(1) {
-            int c2 = z->c;
-            {   int c3 = z->c;
-                if (in_grouping(z, g_v, 97, 251, 0)) goto lab3;
+    while (1) {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
+            do {
+                int v_3 = z->c;
+                if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
                 z->bra = z->c;
-                {   int c4 = z->c;
-                    if (z->c == z->l || z->p[z->c] != 'u') goto lab5;
+                do {
+                    int v_4 = z->c;
+                    if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
                     z->c++;
                     z->ket = z->c;
-                    if (in_grouping(z, g_v, 97, 251, 0)) goto lab5;
-                    {   int ret = slice_from_s(z, 1, s_1);
+                    if (in_grouping(z, g_v, 97, 251, 0)) goto lab3;
+                    {
+                        int ret = slice_from_s(z, 1, s_1);
                         if (ret < 0) return ret;
                     }
-                    goto lab4;
-                lab5:
-                    z->c = c4;
-                    if (z->c == z->l || z->p[z->c] != 'i') goto lab6;
+                    break;
+                lab3:
+                    z->c = v_4;
+                    if (z->c == z->l || z->p[z->c] != 'i') goto lab4;
                     z->c++;
                     z->ket = z->c;
-                    if (in_grouping(z, g_v, 97, 251, 0)) goto lab6;
-                    {   int ret = slice_from_s(z, 1, s_2);
+                    if (in_grouping(z, g_v, 97, 251, 0)) goto lab4;
+                    {
+                        int ret = slice_from_s(z, 1, s_2);
                         if (ret < 0) return ret;
                     }
-                    goto lab4;
-                lab6:
-                    z->c = c4;
-                    if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
+                    break;
+                lab4:
+                    z->c = v_4;
+                    if (z->c == z->l || z->p[z->c] != 'y') goto lab2;
                     z->c++;
                     z->ket = z->c;
-                    {   int ret = slice_from_s(z, 1, s_3);
+                    {
+                        int ret = slice_from_s(z, 1, s_3);
                         if (ret < 0) return ret;
                     }
-                }
-            lab4:
-                goto lab2;
-            lab3:
-                z->c = c3;
+                } while (0);
+                break;
+            lab2:
+                z->c = v_3;
                 z->bra = z->c;
-                if (z->c == z->l || z->p[z->c] != 0xEB) goto lab7;
+                if (z->c == z->l || z->p[z->c] != 0xEB) goto lab5;
                 z->c++;
                 z->ket = z->c;
-                {   int ret = slice_from_s(z, 2, s_4);
+                {
+                    int ret = slice_from_s(z, 2, s_4);
                     if (ret < 0) return ret;
                 }
-                goto lab2;
-            lab7:
-                z->c = c3;
+                break;
+            lab5:
+                z->c = v_3;
                 z->bra = z->c;
-                if (z->c == z->l || z->p[z->c] != 0xEF) goto lab8;
+                if (z->c == z->l || z->p[z->c] != 0xEF) goto lab6;
                 z->c++;
                 z->ket = z->c;
-                {   int ret = slice_from_s(z, 2, s_5);
+                {
+                    int ret = slice_from_s(z, 2, s_5);
                     if (ret < 0) return ret;
                 }
-                goto lab2;
-            lab8:
-                z->c = c3;
+                break;
+            lab6:
+                z->c = v_3;
                 z->bra = z->c;
-                if (z->c == z->l || z->p[z->c] != 'y') goto lab9;
+                if (z->c == z->l || z->p[z->c] != 'y') goto lab7;
                 z->c++;
                 z->ket = z->c;
-                if (in_grouping(z, g_v, 97, 251, 0)) goto lab9;
-                {   int ret = slice_from_s(z, 1, s_6);
+                if (in_grouping(z, g_v, 97, 251, 0)) goto lab7;
+                {
+                    int ret = slice_from_s(z, 1, s_6);
                     if (ret < 0) return ret;
                 }
-                goto lab2;
-            lab9:
-                z->c = c3;
+                break;
+            lab7:
+                z->c = v_3;
                 if (z->c == z->l || z->p[z->c] != 'q') goto lab1;
                 z->c++;
                 z->bra = z->c;
                 if (z->c == z->l || z->p[z->c] != 'u') goto lab1;
                 z->c++;
                 z->ket = z->c;
-                {   int ret = slice_from_s(z, 1, s_7);
+                {
+                    int ret = slice_from_s(z, 1, s_7);
                     if (ret < 0) return ret;
                 }
-            }
-        lab2:
-            z->c = c2;
+            } while (0);
+            z->c = v_2;
             break;
         lab1:
-            z->c = c2;
+            z->c = v_2;
             if (z->c >= z->l) goto lab0;
             z->c++;
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
-            if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
-            if (z->c >= z->l) goto lab2;
+    int among_var;
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping(z, g_v, 97, 251, 0)) goto lab1;
+            if (in_grouping(z, g_v, 97, 251, 0)) goto lab1;
+            if (z->c >= z->l) goto lab1;
             z->c++;
-            goto lab1;
+            break;
+        lab1:
+            z->c = v_2;
+            if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((33282 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab2;
+            among_var = find_among(z, a_0, 4, 0);
+            if (!among_var) goto lab2;
+            switch (among_var) {
+                case 1:
+                    if (in_grouping(z, g_v, 97, 251, 0)) goto lab2;
+                    break;
+            }
+            break;
         lab2:
-            z->c = c2;
-            if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3;
-            if (!find_among(z, a_0, 3)) goto lab3;
-            goto lab1;
-        lab3:
-            z->c = c2;
+            z->c = v_2;
             if (z->c >= z->l) goto lab0;
             z->c++;
-
             {
                 int ret = out_grouping(z, g_v, 97, 251, 1);
                 if (ret < 0) goto lab0;
                 z->c += ret;
             }
-        }
-    lab1:
-        z->I[2] = z->c;
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c3 = z->c;
-
+    {
+        int v_3 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 251, 1);
-            if (ret < 0) goto lab4;
+            if (ret < 0) goto lab3;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 251, 1);
-            if (ret < 0) goto lab4;
+            if (ret < 0) goto lab3;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 251, 1);
-            if (ret < 0) goto lab4;
+            if (ret < 0) goto lab3;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 251, 1);
-            if (ret < 0) goto lab4;
+            if (ret < 0) goto lab3;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab4:
-        z->c = c3;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab3:
+        z->c = v_3;
     }
     return 1;
 }
 
 static int r_postlude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else
-        among_var = find_among(z, a_1, 7);
+        among_var = find_among(z, a_1, 7, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_8);
+                {
+                    int ret = slice_from_s(z, 1, s_8);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_9);
+                {
+                    int ret = slice_from_s(z, 1, s_9);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_from_s(z, 1, s_10);
+                {
+                    int ret = slice_from_s(z, 1, s_10);
                     if (ret < 0) return ret;
                 }
                 break;
             case 4:
-                {   int ret = slice_from_s(z, 1, s_11);
+                {
+                    int ret = slice_from_s(z, 1, s_11);
                     if (ret < 0) return ret;
                 }
                 break;
             case 5:
-                {   int ret = slice_from_s(z, 1, s_12);
+                {
+                    int ret = slice_from_s(z, 1, s_12);
                     if (ret < 0) return ret;
                 }
                 break;
             case 6:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -644,346 +668,417 @@ static int r_postlude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_standard_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_4, 43);
+    among_var = find_among_b(z, a_4, 44, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m1 = z->l - z->c; (void)m1;
+            {
+                int v_1 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m1; goto lab0; }
+                if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - v_1; goto lab0; }
                 z->bra = z->c;
-                {   int m2 = z->l - z->c; (void)m2;
-                    {   int ret = r_R2(z);
-                        if (ret == 0) goto lab2;
+                do {
+                    int v_2 = z->l - z->c;
+                    {
+                        int ret = r_R2(z);
+                        if (ret == 0) goto lab1;
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
-                    goto lab1;
-                lab2:
-                    z->c = z->l - m2;
-                    {   int ret = slice_from_s(z, 3, s_14);
+                    break;
+                lab1:
+                    z->c = z->l - v_2;
+                    {
+                        int ret = slice_from_s(z, 3, s_14);
                         if (ret < 0) return ret;
                     }
-                }
-            lab1:
+                } while (0);
             lab0:
                 ;
             }
             break;
         case 3:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_15);
+            {
+                int ret = slice_from_s(z, 3, s_15);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 1, s_16);
+            {
+                int ret = slice_from_s(z, 1, s_16);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_17);
+            {
+                int ret = slice_from_s(z, 3, s_17);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m3 = z->l - z->c; (void)m3;
+            {
+                int v_3 = z->l - z->c;
                 z->ket = z->c;
-                among_var = find_among_b(z, a_2, 6);
-                if (!among_var) { z->c = z->l - m3; goto lab3; }
+                among_var = find_among_b(z, a_2, 6, 0);
+                if (!among_var) { z->c = z->l - v_3; goto lab2; }
                 z->bra = z->c;
                 switch (among_var) {
                     case 1:
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m3; goto lab3; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         z->ket = z->c;
-                        if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m3; goto lab3; }
+                        if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - v_3; goto lab2; }
                         z->bra = z->c;
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m3; goto lab3; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 2:
-                        {   int m4 = z->l - z->c; (void)m4;
-                            {   int ret = r_R2(z);
-                                if (ret == 0) goto lab5;
+                        do {
+                            int v_4 = z->l - z->c;
+                            {
+                                int ret = r_R2(z);
+                                if (ret == 0) goto lab3;
                                 if (ret < 0) return ret;
                             }
-                            {   int ret = slice_del(z);
+                            {
+                                int ret = slice_del(z);
                                 if (ret < 0) return ret;
                             }
-                            goto lab4;
-                        lab5:
-                            z->c = z->l - m4;
-                            {   int ret = r_R1(z);
-                                if (ret == 0) { z->c = z->l - m3; goto lab3; }
+                            break;
+                        lab3:
+                            z->c = z->l - v_4;
+                            {
+                                int ret = r_R1(z);
+                                if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                                 if (ret < 0) return ret;
                             }
-                            {   int ret = slice_from_s(z, 3, s_19);
+                            {
+                                int ret = slice_from_s(z, 3, s_19);
                                 if (ret < 0) return ret;
                             }
-                        }
-                    lab4:
+                        } while (0);
                         break;
                     case 3:
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m3; goto lab3; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 4:
-                        {   int ret = r_RV(z);
-                            if (ret == 0) { z->c = z->l - m3; goto lab3; }
+                        {
+                            int ret = r_RV(z);
+                            if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_from_s(z, 1, s_20);
+                        {
+                            int ret = slice_from_s(z, 1, s_20);
                             if (ret < 0) return ret;
                         }
                         break;
                 }
-            lab3:
+            lab2:
                 ;
             }
             break;
         case 7:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m5 = z->l - z->c; (void)m5;
+            {
+                int v_5 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; }
-                among_var = find_among_b(z, a_3, 3);
-                if (!among_var) { z->c = z->l - m5; goto lab6; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_5; goto lab4; }
+                among_var = find_among_b(z, a_3, 3, 0);
+                if (!among_var) { z->c = z->l - v_5; goto lab4; }
                 z->bra = z->c;
                 switch (among_var) {
                     case 1:
-                        {   int m6 = z->l - z->c; (void)m6;
-                            {   int ret = r_R2(z);
-                                if (ret == 0) goto lab8;
+                        do {
+                            int v_6 = z->l - z->c;
+                            {
+                                int ret = r_R2(z);
+                                if (ret == 0) goto lab5;
                                 if (ret < 0) return ret;
                             }
-                            {   int ret = slice_del(z);
+                            {
+                                int ret = slice_del(z);
                                 if (ret < 0) return ret;
                             }
-                            goto lab7;
-                        lab8:
-                            z->c = z->l - m6;
-                            {   int ret = slice_from_s(z, 3, s_21);
+                            break;
+                        lab5:
+                            z->c = z->l - v_6;
+                            {
+                                int ret = slice_from_s(z, 3, s_21);
                                 if (ret < 0) return ret;
                             }
-                        }
-                    lab7:
+                        } while (0);
                         break;
                     case 2:
-                        {   int m7 = z->l - z->c; (void)m7;
-                            {   int ret = r_R2(z);
-                                if (ret == 0) goto lab10;
+                        do {
+                            int v_7 = z->l - z->c;
+                            {
+                                int ret = r_R2(z);
+                                if (ret == 0) goto lab6;
                                 if (ret < 0) return ret;
                             }
-                            {   int ret = slice_del(z);
+                            {
+                                int ret = slice_del(z);
                                 if (ret < 0) return ret;
                             }
-                            goto lab9;
-                        lab10:
-                            z->c = z->l - m7;
-                            {   int ret = slice_from_s(z, 3, s_22);
+                            break;
+                        lab6:
+                            z->c = z->l - v_7;
+                            {
+                                int ret = slice_from_s(z, 3, s_22);
                                 if (ret < 0) return ret;
                             }
-                        }
-                    lab9:
+                        } while (0);
                         break;
                     case 3:
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m5; goto lab6; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_5; goto lab4; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
                 }
-            lab6:
+            lab4:
                 ;
             }
             break;
         case 8:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m8 = z->l - z->c; (void)m8;
+            {
+                int v_8 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_23))) { z->c = z->l - m8; goto lab11; }
+                if (!(eq_s_b(z, 2, s_23))) { z->c = z->l - v_8; goto lab7; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m8; goto lab11; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_8; goto lab7; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - m8; goto lab11; }
+                if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - v_8; goto lab7; }
                 z->bra = z->c;
-                {   int m9 = z->l - z->c; (void)m9;
-                    {   int ret = r_R2(z);
-                        if (ret == 0) goto lab13;
+                do {
+                    int v_9 = z->l - z->c;
+                    {
+                        int ret = r_R2(z);
+                        if (ret == 0) goto lab8;
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
-                    goto lab12;
-                lab13:
-                    z->c = z->l - m9;
-                    {   int ret = slice_from_s(z, 3, s_25);
+                    break;
+                lab8:
+                    z->c = z->l - v_9;
+                    {
+                        int ret = slice_from_s(z, 3, s_25);
                         if (ret < 0) return ret;
                     }
-                }
-            lab12:
-            lab11:
+                } while (0);
+            lab7:
                 ;
             }
             break;
         case 9:
-            {   int ret = slice_from_s(z, 3, s_26);
+            {
+                int ret = slice_from_s(z, 3, s_26);
                 if (ret < 0) return ret;
             }
             break;
         case 10:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 2, s_27);
+            {
+                int ret = slice_from_s(z, 2, s_27);
                 if (ret < 0) return ret;
             }
             break;
         case 11:
-            {   int m10 = z->l - z->c; (void)m10;
-                {   int ret = r_R2(z);
-                    if (ret == 0) goto lab15;
+            if (in_grouping_b(z, g_oux_ending, 98, 112, 0)) return 0;
+            {
+                int ret = slice_from_s(z, 2, s_28);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 12:
+            do {
+                int v_10 = z->l - z->c;
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) goto lab9;
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                goto lab14;
-            lab15:
-                z->c = z->l - m10;
-                {   int ret = r_R1(z);
+                break;
+            lab9:
+                z->c = z->l - v_10;
+                {
+                    int ret = r_R1(z);
                     if (ret <= 0) return ret;
                 }
-                {   int ret = slice_from_s(z, 3, s_28);
+                {
+                    int ret = slice_from_s(z, 3, s_29);
                     if (ret < 0) return ret;
                 }
-            }
-        lab14:
+            } while (0);
             break;
-        case 12:
-            {   int ret = r_R1(z);
+        case 13:
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
             if (out_grouping_b(z, g_v, 97, 251, 0)) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
-        case 13:
-            {   int ret = r_RV(z);
+        case 14:
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_29);
+            {
+                int ret = slice_from_s(z, 3, s_30);
                 if (ret < 0) return ret;
             }
             return 0;
             break;
-        case 14:
-            {   int ret = r_RV(z);
+        case 15:
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_30);
+            {
+                int ret = slice_from_s(z, 3, s_31);
                 if (ret < 0) return ret;
             }
             return 0;
             break;
-        case 15:
-            {   int m_test11 = z->l - z->c;
+        case 16:
+            {
+                int v_11 = z->l - z->c;
                 if (in_grouping_b(z, g_v, 97, 251, 0)) return 0;
-                {   int ret = r_RV(z);
+                {
+                    int ret = r_RV(z);
                     if (ret <= 0) return ret;
                 }
-                z->c = z->l - m_test11;
+                z->c = z->l - v_11;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             return 0;
@@ -993,294 +1088,362 @@ static int r_standard_suffix(struct SN_env * z) {
 }
 
 static int r_i_verb_suffix(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        if (!find_among_b(z, a_5, 35)) { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        if (!find_among_b(z, a_5, 35, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        {   int m2 = z->l - z->c; (void)m2;
+        {
+            int v_2 = z->l - z->c;
             if (z->c <= z->lb || z->p[z->c - 1] != 'H') goto lab0;
             z->c--;
-            { z->lb = mlimit1; return 0; }
+            { z->lb = v_1; return 0; }
         lab0:
-            z->c = z->l - m2;
+            z->c = z->l - v_2;
         }
-        if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; }
-        {   int ret = slice_del(z);
+        if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = v_1; return 0; }
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     return 1;
 }
 
 static int r_verb_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        among_var = find_among_b(z, a_6, 38);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_7, 41, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        switch (among_var) {
-            case 1:
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->lb = mlimit1; return 0; }
-                    if (ret < 0) return ret;
-                }
-                {   int ret = slice_del(z);
-                    if (ret < 0) return ret;
-                }
-                break;
-            case 2:
-                {   int ret = slice_del(z);
-                    if (ret < 0) return ret;
-                }
-                break;
-            case 3:
-                {   int ret = slice_del(z);
+        z->lb = v_1;
+    }
+    switch (among_var) {
+        case 1:
+            {
+                int ret = r_R2(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int v_2 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - v_2; goto lab0; }
+                z->c--;
+                {
+                    int ret = r_RV(z);
+                    if (ret == 0) { z->c = z->l - v_2; goto lab0; }
                     if (ret < 0) return ret;
                 }
-                {   int m2 = z->l - z->c; (void)m2;
-                    z->ket = z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; }
-                    z->c--;
-                    z->bra = z->c;
-                    {   int ret = slice_del(z);
-                        if (ret < 0) return ret;
-                    }
-                lab0:
-                    ;
+                z->bra = z->c;
+            lab0:
+                ;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            {
+                int v_3 = z->l - z->c;
+                if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 108 && z->p[z->c - 1] != 118)) goto lab1;
+                among_var = find_among_b(z, a_6, 3, 0);
+                if (!among_var) goto lab1;
+                switch (among_var) {
+                    case 1:
+                        if (z->c <= z->lb) goto lab1;
+                        z->c--;
+                        if (z->c > z->lb) goto lab1;
+                        break;
                 }
-                break;
-        }
-        z->lb = mlimit1;
+                return 0;
+            lab1:
+                z->c = z->l - v_3;
+            }
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
     }
     return 1;
 }
 
 static int r_residual_suffix(struct SN_env * z) {
     int among_var;
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; }
+        if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - v_1; goto lab0; }
         z->c--;
         z->bra = z->c;
-        {   int m_test2 = z->l - z->c;
-            {   int m3 = z->l - z->c; (void)m3;
-                if (!(eq_s_b(z, 2, s_31))) goto lab2;
-                goto lab1;
-            lab2:
-                z->c = z->l - m3;
-                if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; }
-            }
-        lab1:
-            z->c = z->l - m_test2;
+        {
+            int v_2 = z->l - z->c;
+            do {
+                int v_3 = z->l - z->c;
+                if (!(eq_s_b(z, 2, s_32))) goto lab1;
+                break;
+            lab1:
+                z->c = z->l - v_3;
+                if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - v_1; goto lab0; }
+            } while (0);
+            z->c = z->l - v_2;
         }
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab0:
         ;
     }
-
-    {   int mlimit4;
-        if (z->c < z->I[2]) return 0;
-        mlimit4 = z->lb; z->lb = z->I[2];
+    {
+        int v_4;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_4 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit4; return 0; }
-        among_var = find_among_b(z, a_7, 6);
-        if (!among_var) { z->lb = mlimit4; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_4; return 0; }
+        among_var = find_among_b(z, a_8, 6, 0);
+        if (!among_var) { z->lb = v_4; return 0; }
         z->bra = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->lb = mlimit4; return 0; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->lb = v_4; return 0; }
                     if (ret < 0) return ret;
                 }
-                {   int m5 = z->l - z->c; (void)m5;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab4;
+                do {
+                    int v_5 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab2;
                     z->c--;
-                    goto lab3;
-                lab4:
-                    z->c = z->l - m5;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit4; return 0; }
+                    break;
+                lab2:
+                    z->c = z->l - v_5;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = v_4; return 0; }
                     z->c--;
-                }
-            lab3:
-                {   int ret = slice_del(z);
+                } while (0);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_32);
+                {
+                    int ret = slice_from_s(z, 1, s_33);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
         }
-        z->lb = mlimit4;
+        z->lb = v_4;
     }
     return 1;
 }
 
 static int r_un_double(struct SN_env * z) {
-    {   int m_test1 = z->l - z->c;
+    {
+        int v_1 = z->l - z->c;
         if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-        if (!find_among_b(z, a_8, 5)) return 0;
-        z->c = z->l - m_test1;
+        if (!find_among_b(z, a_9, 5, 0)) return 0;
+        z->c = z->l - v_1;
     }
     z->ket = z->c;
     if (z->c <= z->lb) return 0;
     z->c--;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 static int r_un_accent(struct SN_env * z) {
-    {   int i = 1;
-        while(1) {
+    {
+        int v_1 = 1;
+        while (1) {
             if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0;
-            i--;
+            v_1--;
             continue;
         lab0:
             break;
         }
-        if (i > 0) return 0;
+        if (v_1 > 0) return 0;
     }
     z->ket = z->c;
-    {   int m1 = z->l - z->c; (void)m1;
-        if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab2;
+    do {
+        int v_2 = z->l - z->c;
+        if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab1;
         z->c--;
-        goto lab1;
-    lab2:
-        z->c = z->l - m1;
+        break;
+    lab1:
+        z->c = z->l - v_2;
         if (z->c <= z->lb || z->p[z->c - 1] != 0xE8) return 0;
         z->c--;
-    }
-lab1:
+    } while (0);
     z->bra = z->c;
-    {   int ret = slice_from_s(z, 1, s_33);
+    {
+        int ret = slice_from_s(z, 1, s_34);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int french_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_elisions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_elisions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c2 = z->c;
-        {   int ret = r_prelude(z);
+    {
+        int v_2 = z->c;
+        {
+            int ret = r_prelude(z);
             if (ret < 0) return ret;
         }
-        z->c = c2;
+        z->c = v_2;
     }
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int m4 = z->l - z->c; (void)m4;
-            {   int m5 = z->l - z->c; (void)m5;
-                {   int m6 = z->l - z->c; (void)m6;
-                    {   int ret = r_standard_suffix(z);
-                        if (ret == 0) goto lab4;
+    {
+        int v_3 = z->l - z->c;
+        do {
+            int v_4 = z->l - z->c;
+            {
+                int v_5 = z->l - z->c;
+                do {
+                    int v_6 = z->l - z->c;
+                    {
+                        int ret = r_standard_suffix(z);
+                        if (ret == 0) goto lab2;
                         if (ret < 0) return ret;
                     }
-                    goto lab3;
-                lab4:
-                    z->c = z->l - m6;
-                    {   int ret = r_i_verb_suffix(z);
-                        if (ret == 0) goto lab5;
+                    break;
+                lab2:
+                    z->c = z->l - v_6;
+                    {
+                        int ret = r_i_verb_suffix(z);
+                        if (ret == 0) goto lab3;
                         if (ret < 0) return ret;
                     }
-                    goto lab3;
-                lab5:
-                    z->c = z->l - m6;
-                    {   int ret = r_verb_suffix(z);
-                        if (ret == 0) goto lab2;
+                    break;
+                lab3:
+                    z->c = z->l - v_6;
+                    {
+                        int ret = r_verb_suffix(z);
+                        if (ret == 0) goto lab1;
                         if (ret < 0) return ret;
                     }
-                }
-            lab3:
-                z->c = z->l - m5;
-                {   int m7 = z->l - z->c; (void)m7;
+                } while (0);
+                z->c = z->l - v_5;
+                {
+                    int v_7 = z->l - z->c;
                     z->ket = z->c;
-                    {   int m8 = z->l - z->c; (void)m8;
-                        if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab8;
+                    do {
+                        int v_8 = z->l - z->c;
+                        if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab5;
                         z->c--;
                         z->bra = z->c;
-                        {   int ret = slice_from_s(z, 1, s_34);
+                        {
+                            int ret = slice_from_s(z, 1, s_35);
                             if (ret < 0) return ret;
                         }
-                        goto lab7;
-                    lab8:
-                        z->c = z->l - m8;
-                        if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m7; goto lab6; }
+                        break;
+                    lab5:
+                        z->c = z->l - v_8;
+                        if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - v_7; goto lab4; }
                         z->c--;
                         z->bra = z->c;
-                        {   int ret = slice_from_s(z, 1, s_35);
+                        {
+                            int ret = slice_from_s(z, 1, s_36);
                             if (ret < 0) return ret;
                         }
-                    }
-                lab7:
-                lab6:
+                    } while (0);
+                lab4:
                     ;
                 }
             }
-            goto lab1;
-        lab2:
-            z->c = z->l - m4;
-            {   int ret = r_residual_suffix(z);
+            break;
+        lab1:
+            z->c = z->l - v_4;
+            {
+                int ret = r_residual_suffix(z);
                 if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-        }
-    lab1:
+        } while (0);
     lab0:
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m9 = z->l - z->c; (void)m9;
-        {   int ret = r_un_double(z);
+    {
+        int v_9 = z->l - z->c;
+        {
+            int ret = r_un_double(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m9;
+        z->c = z->l - v_9;
     }
-    {   int m10 = z->l - z->c; (void)m10;
-        {   int ret = r_un_accent(z);
+    {
+        int v_10 = z->l - z->c;
+        {
+            int ret = r_un_accent(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m10;
+        z->c = z->l - v_10;
     }
     z->c = z->lb;
-    {   int c11 = z->c;
-        {   int ret = r_postlude(z);
+    {
+        int v_11 = z->c;
+        {
+            int ret = r_postlude(z);
             if (ret < 0) return ret;
         }
-        z->c = c11;
+        z->c = v_11;
     }
     return 1;
 }
 
-extern struct SN_env * french_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * french_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void french_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void french_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index c053b201d55038035e81bfff7b112fca51d132a7..86c85c32ae627a019866bf28f55027d2de91ca7c 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from german.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_german.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,38 +21,43 @@ extern int german_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_standard_suffix(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
 static int r_prelude(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * german_ISO_8859_1_create_env(void);
-extern void german_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'U' };
+static const symbol s_1[] = { 'Y' };
+static const symbol s_2[] = { 's', 's' };
+static const symbol s_3[] = { 0xE4 };
+static const symbol s_4[] = { 0xF6 };
+static const symbol s_5[] = { 0xFC };
+static const symbol s_6[] = { 'y' };
+static const symbol s_7[] = { 'u' };
+static const symbol s_8[] = { 'a' };
+static const symbol s_9[] = { 'o' };
+static const symbol s_10[] = { 's', 'y', 's', 't' };
+static const symbol s_11[] = { 'n', 'i', 's' };
+static const symbol s_12[] = { 'l' };
+static const symbol s_13[] = { 'i', 'g' };
+static const symbol s_14[] = { 'e', 'r' };
+static const symbol s_15[] = { 'e', 'n' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[2] = { 'a', 'e' };
 static const symbol s_0_2[2] = { 'o', 'e' };
 static const symbol s_0_3[2] = { 'q', 'u' };
 static const symbol s_0_4[2] = { 'u', 'e' };
 static const symbol s_0_5[1] = { 0xDF };
-
-static const struct among a_0[6] =
-{
-{ 0, 0, -1, 5, 0},
-{ 2, s_0_1, 0, 2, 0},
-{ 2, s_0_2, 0, 3, 0},
-{ 2, s_0_3, 0, -1, 0},
-{ 2, s_0_4, 0, 4, 0},
-{ 1, s_0_5, 0, 1, 0}
+static const struct among a_0[6] = {
+{ 0, 0, 0, 5, 0},
+{ 2, s_0_1, -1, 2, 0},
+{ 2, s_0_2, -2, 3, 0},
+{ 2, s_0_3, -3, -1, 0},
+{ 2, s_0_4, -4, 4, 0},
+{ 1, s_0_5, -5, 1, 0}
 };
 
 static const symbol s_1_1[1] = { 'U' };
@@ -48,15 +65,13 @@ static const symbol s_1_2[1] = { 'Y' };
 static const symbol s_1_3[1] = { 0xE4 };
 static const symbol s_1_4[1] = { 0xF6 };
 static const symbol s_1_5[1] = { 0xFC };
-
-static const struct among a_1[6] =
-{
-{ 0, 0, -1, 5, 0},
-{ 1, s_1_1, 0, 2, 0},
-{ 1, s_1_2, 0, 1, 0},
-{ 1, s_1_3, 0, 3, 0},
-{ 1, s_1_4, 0, 4, 0},
-{ 1, s_1_5, 0, 2, 0}
+static const struct among a_1[6] = {
+{ 0, 0, 0, 5, 0},
+{ 1, s_1_1, -1, 2, 0},
+{ 1, s_1_2, -2, 1, 0},
+{ 1, s_1_3, -3, 3, 0},
+{ 1, s_1_4, -4, 4, 0},
+{ 1, s_1_5, -5, 2, 0}
 };
 
 static const symbol s_2_0[1] = { 'e' };
@@ -70,237 +85,237 @@ static const symbol s_2_7[2] = { 'e', 'r' };
 static const symbol s_2_8[1] = { 's' };
 static const symbol s_2_9[2] = { 'e', 's' };
 static const symbol s_2_10[3] = { 'l', 'n', 's' };
-
-static const struct among a_2[11] =
-{
-{ 1, s_2_0, -1, 3, 0},
-{ 2, s_2_1, -1, 1, 0},
-{ 2, s_2_2, -1, 3, 0},
-{ 7, s_2_3, 2, 2, 0},
-{ 4, s_2_4, -1, 2, 0},
-{ 2, s_2_5, -1, 5, 0},
-{ 3, s_2_6, -1, 2, 0},
-{ 2, s_2_7, -1, 2, 0},
-{ 1, s_2_8, -1, 4, 0},
-{ 2, s_2_9, 8, 3, 0},
-{ 3, s_2_10, 8, 5, 0}
+static const struct among a_2[11] = {
+{ 1, s_2_0, 0, 3, 0},
+{ 2, s_2_1, 0, 1, 0},
+{ 2, s_2_2, 0, 3, 0},
+{ 7, s_2_3, -1, 2, 0},
+{ 4, s_2_4, 0, 2, 0},
+{ 2, s_2_5, 0, 5, 0},
+{ 3, s_2_6, 0, 2, 0},
+{ 2, s_2_7, 0, 2, 0},
+{ 1, s_2_8, 0, 4, 0},
+{ 2, s_2_9, -1, 3, 0},
+{ 3, s_2_10, -2, 5, 0}
 };
 
-static const symbol s_3_0[2] = { 'e', 'n' };
-static const symbol s_3_1[2] = { 'e', 'r' };
-static const symbol s_3_2[2] = { 's', 't' };
-static const symbol s_3_3[3] = { 'e', 's', 't' };
-
-static const struct among a_3[4] =
-{
-{ 2, s_3_0, -1, 1, 0},
-{ 2, s_3_1, -1, 1, 0},
-{ 2, s_3_2, -1, 2, 0},
-{ 3, s_3_3, 2, 1, 0}
+static const symbol s_3_0[4] = { 't', 'i', 'c', 'k' };
+static const symbol s_3_1[4] = { 'p', 'l', 'a', 'n' };
+static const symbol s_3_2[6] = { 'g', 'e', 'o', 'r', 'd', 'n' };
+static const symbol s_3_3[6] = { 'i', 'n', 't', 'e', 'r', 'n' };
+static const symbol s_3_4[2] = { 't', 'r' };
+static const struct among a_3[5] = {
+{ 4, s_3_0, 0, -1, 0},
+{ 4, s_3_1, 0, -1, 0},
+{ 6, s_3_2, 0, -1, 0},
+{ 6, s_3_3, 0, -1, 0},
+{ 2, s_3_4, 0, -1, 0}
 };
 
-static const symbol s_4_0[2] = { 'i', 'g' };
-static const symbol s_4_1[4] = { 'l', 'i', 'c', 'h' };
-
-static const struct among a_4[2] =
-{
-{ 2, s_4_0, -1, 1, 0},
-{ 4, s_4_1, -1, 1, 0}
+static const symbol s_4_0[2] = { 'e', 'n' };
+static const symbol s_4_1[2] = { 'e', 'r' };
+static const symbol s_4_2[2] = { 'e', 't' };
+static const symbol s_4_3[2] = { 's', 't' };
+static const symbol s_4_4[3] = { 'e', 's', 't' };
+static const struct among a_4[5] = {
+{ 2, s_4_0, 0, 1, 0},
+{ 2, s_4_1, 0, 1, 0},
+{ 2, s_4_2, 0, 3, 0},
+{ 2, s_4_3, 0, 2, 0},
+{ 3, s_4_4, -1, 1, 0}
 };
 
-static const symbol s_5_0[3] = { 'e', 'n', 'd' };
-static const symbol s_5_1[2] = { 'i', 'g' };
-static const symbol s_5_2[3] = { 'u', 'n', 'g' };
-static const symbol s_5_3[4] = { 'l', 'i', 'c', 'h' };
-static const symbol s_5_4[4] = { 'i', 's', 'c', 'h' };
-static const symbol s_5_5[2] = { 'i', 'k' };
-static const symbol s_5_6[4] = { 'h', 'e', 'i', 't' };
-static const symbol s_5_7[4] = { 'k', 'e', 'i', 't' };
+static const symbol s_5_0[2] = { 'i', 'g' };
+static const symbol s_5_1[4] = { 'l', 'i', 'c', 'h' };
+static const struct among a_5[2] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 4, s_5_1, 0, 1, 0}
+};
 
-static const struct among a_5[8] =
-{
-{ 3, s_5_0, -1, 1, 0},
-{ 2, s_5_1, -1, 2, 0},
-{ 3, s_5_2, -1, 1, 0},
-{ 4, s_5_3, -1, 3, 0},
-{ 4, s_5_4, -1, 2, 0},
-{ 2, s_5_5, -1, 2, 0},
-{ 4, s_5_6, -1, 3, 0},
-{ 4, s_5_7, -1, 4, 0}
+static const symbol s_6_0[3] = { 'e', 'n', 'd' };
+static const symbol s_6_1[2] = { 'i', 'g' };
+static const symbol s_6_2[3] = { 'u', 'n', 'g' };
+static const symbol s_6_3[4] = { 'l', 'i', 'c', 'h' };
+static const symbol s_6_4[4] = { 'i', 's', 'c', 'h' };
+static const symbol s_6_5[2] = { 'i', 'k' };
+static const symbol s_6_6[4] = { 'h', 'e', 'i', 't' };
+static const symbol s_6_7[4] = { 'k', 'e', 'i', 't' };
+static const struct among a_6[8] = {
+{ 3, s_6_0, 0, 1, 0},
+{ 2, s_6_1, 0, 2, 0},
+{ 3, s_6_2, 0, 1, 0},
+{ 4, s_6_3, 0, 3, 0},
+{ 4, s_6_4, 0, 2, 0},
+{ 2, s_6_5, 0, 2, 0},
+{ 4, s_6_6, 0, 3, 0},
+{ 4, s_6_7, 0, 4, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 };
 
+static const unsigned char g_et_ending[] = { 1, 128, 198, 227, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 };
+
 static const unsigned char g_s_ending[] = { 117, 30, 5 };
 
 static const unsigned char g_st_ending[] = { 117, 30, 4 };
 
-static const symbol s_0[] = { 'U' };
-static const symbol s_1[] = { 'Y' };
-static const symbol s_2[] = { 's', 's' };
-static const symbol s_3[] = { 0xE4 };
-static const symbol s_4[] = { 0xF6 };
-static const symbol s_5[] = { 0xFC };
-static const symbol s_6[] = { 'y' };
-static const symbol s_7[] = { 'u' };
-static const symbol s_8[] = { 'a' };
-static const symbol s_9[] = { 'o' };
-static const symbol s_10[] = { 's', 'y', 's', 't' };
-static const symbol s_11[] = { 'n', 'i', 's' };
-static const symbol s_12[] = { 'l' };
-static const symbol s_13[] = { 'i', 'g' };
-static const symbol s_14[] = { 'e', 'r' };
-static const symbol s_15[] = { 'e', 'n' };
-
 static int r_prelude(struct SN_env * z) {
     int among_var;
-    {   int c_test1 = z->c;
-        while(1) {
-            int c2 = z->c;
-            while(1) {
-                int c3 = z->c;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
+            while (1) {
+                int v_3 = z->c;
                 if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
                 z->bra = z->c;
-                {   int c4 = z->c;
-                    if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
+                do {
+                    int v_4 = z->c;
+                    if (z->c == z->l || z->p[z->c] != 'u') goto lab2;
                     z->c++;
                     z->ket = z->c;
-                    if (in_grouping(z, g_v, 97, 252, 0)) goto lab3;
-                    {   int ret = slice_from_s(z, 1, s_0);
+                    if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
+                    {
+                        int ret = slice_from_s(z, 1, s_0);
                         if (ret < 0) return ret;
                     }
-                    goto lab2;
-                lab3:
-                    z->c = c4;
+                    break;
+                lab2:
+                    z->c = v_4;
                     if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
                     z->c++;
                     z->ket = z->c;
                     if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
-                    {   int ret = slice_from_s(z, 1, s_1);
+                    {
+                        int ret = slice_from_s(z, 1, s_1);
                         if (ret < 0) return ret;
                     }
-                }
-            lab2:
-                z->c = c3;
+                } while (0);
+                z->c = v_3;
                 break;
             lab1:
-                z->c = c3;
+                z->c = v_3;
                 if (z->c >= z->l) goto lab0;
                 z->c++;
             }
             continue;
         lab0:
-            z->c = c2;
+            z->c = v_2;
             break;
         }
-        z->c = c_test1;
+        z->c = v_1;
     }
-    while(1) {
-        int c5 = z->c;
+    while (1) {
+        int v_5 = z->c;
         z->bra = z->c;
-        among_var = find_among(z, a_0, 6);
+        among_var = find_among(z, a_0, 6, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 2, s_2);
+                {
+                    int ret = slice_from_s(z, 2, s_2);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_3);
+                {
+                    int ret = slice_from_s(z, 1, s_3);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_from_s(z, 1, s_4);
+                {
+                    int ret = slice_from_s(z, 1, s_4);
                     if (ret < 0) return ret;
                 }
                 break;
             case 4:
-                {   int ret = slice_from_s(z, 1, s_5);
+                {
+                    int ret = slice_from_s(z, 1, s_5);
                     if (ret < 0) return ret;
                 }
                 break;
             case 5:
-                if (z->c >= z->l) goto lab4;
+                if (z->c >= z->l) goto lab3;
                 z->c++;
                 break;
         }
         continue;
-    lab4:
-        z->c = c5;
+    lab3:
+        z->c = v_5;
         break;
     }
     return 1;
 }
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    {   int c_test1 = z->c;
-z->c = z->c + 3;
-        if (z->c > z->l) return 0;
-        z->I[0] = z->c;
-        z->c = c_test1;
+    int i_x;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        i_x = z->c;
+        z->c = v_1;
     }
-
     {
         int ret = out_grouping(z, g_v, 97, 252, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-
     {
         int ret = in_grouping(z, g_v, 97, 252, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[2] = z->c;
-
-    if (z->I[2] >= z->I[0]) goto lab0;
-    z->I[2] = z->I[0];
+    ((SN_local *)z)->i_p1 = z->c;
+    if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
+    ((SN_local *)z)->i_p1 = i_x;
 lab0:
-
     {
         int ret = out_grouping(z, g_v, 97, 252, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-
     {
         int ret = in_grouping(z, g_v, 97, 252, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[1] = z->c;
+    ((SN_local *)z)->i_p2 = z->c;
     return 1;
 }
 
 static int r_postlude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
-        among_var = find_among(z, a_1, 6);
+        among_var = find_among(z, a_1, 6, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_6);
+                {
+                    int ret = slice_from_s(z, 1, s_6);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_7);
+                {
+                    int ret = slice_from_s(z, 1, s_7);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_from_s(z, 1, s_8);
+                {
+                    int ret = slice_from_s(z, 1, s_8);
                     if (ret < 0) return ret;
                 }
                 break;
             case 4:
-                {   int ret = slice_from_s(z, 1, s_9);
+                {
+                    int ret = slice_from_s(z, 1, s_9);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -311,60 +326,68 @@ static int r_postlude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_standard_suffix(struct SN_env * z) {
     int among_var;
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
         if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
-        among_var = find_among_b(z, a_2, 11);
+        among_var = find_among_b(z, a_2, 11, 0);
         if (!among_var) goto lab0;
         z->bra = z->c;
-        {   int ret = r_R1(z);
+        {
+            int ret = r_R1(z);
             if (ret == 0) goto lab0;
             if (ret < 0) return ret;
         }
         switch (among_var) {
             case 1:
-                {   int m2 = z->l - z->c; (void)m2;
+                {
+                    int v_2 = z->l - z->c;
                     if (!(eq_s_b(z, 4, s_10))) goto lab1;
                     goto lab0;
                 lab1:
-                    z->c = z->l - m2;
+                    z->c = z->l - v_2;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int m3 = z->l - z->c; (void)m3;
+                {
+                    int v_3 = z->l - z->c;
                     z->ket = z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m3; goto lab2; }
+                    if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - v_3; goto lab2; }
                     z->c--;
                     z->bra = z->c;
-                    if (!(eq_s_b(z, 3, s_11))) { z->c = z->l - m3; goto lab2; }
-                    {   int ret = slice_del(z);
+                    if (!(eq_s_b(z, 3, s_11))) { z->c = z->l - v_3; goto lab2; }
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
                 lab2:
@@ -373,136 +396,178 @@ static int r_standard_suffix(struct SN_env * z) {
                 break;
             case 4:
                 if (in_grouping_b(z, g_s_ending, 98, 116, 0)) goto lab0;
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 5:
-                {   int ret = slice_from_s(z, 1, s_12);
+                {
+                    int ret = slice_from_s(z, 1, s_12);
                     if (ret < 0) return ret;
                 }
                 break;
         }
     lab0:
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
     }
-    {   int m4 = z->l - z->c; (void)m4;
+    {
+        int v_4 = z->l - z->c;
         z->ket = z->c;
         if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
-        among_var = find_among_b(z, a_3, 4);
+        among_var = find_among_b(z, a_4, 5, 0);
         if (!among_var) goto lab3;
         z->bra = z->c;
-        {   int ret = r_R1(z);
+        {
+            int ret = r_R1(z);
             if (ret == 0) goto lab3;
             if (ret < 0) return ret;
         }
         switch (among_var) {
             case 1:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
                 if (in_grouping_b(z, g_st_ending, 98, 116, 0)) goto lab3;
-z->c = z->c - 3;
-                if (z->c < z->lb) goto lab3;
-                {   int ret = slice_del(z);
+                if (z->c - 3 < z->lb) goto lab3;
+                z->c -= 3;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                break;
+            case 3:
+                {
+                    int v_5 = z->l - z->c;
+                    if (in_grouping_b(z, g_et_ending, 85, 228, 0)) goto lab3;
+                    z->c = z->l - v_5;
+                }
+                {
+                    int v_6 = z->l - z->c;
+                    if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((280576 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4;
+                    if (!find_among_b(z, a_3, 5, 0)) goto lab4;
+                    goto lab3;
+                lab4:
+                    z->c = z->l - v_6;
+                }
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
         }
     lab3:
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
-    {   int m5 = z->l - z->c; (void)m5;
+    {
+        int v_7 = z->l - z->c;
         z->ket = z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4;
-        among_var = find_among_b(z, a_5, 8);
-        if (!among_var) goto lab4;
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab5;
+        among_var = find_among_b(z, a_6, 8, 0);
+        if (!among_var) goto lab5;
         z->bra = z->c;
-        {   int ret = r_R2(z);
-            if (ret == 0) goto lab4;
+        {
+            int ret = r_R2(z);
+            if (ret == 0) goto lab5;
             if (ret < 0) return ret;
         }
         switch (among_var) {
             case 1:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int m6 = z->l - z->c; (void)m6;
+                {
+                    int v_8 = z->l - z->c;
                     z->ket = z->c;
-                    if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m6; goto lab5; }
+                    if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - v_8; goto lab6; }
                     z->bra = z->c;
-                    {   int m7 = z->l - z->c; (void)m7;
-                        if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
+                    {
+                        int v_9 = z->l - z->c;
+                        if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
                         z->c--;
-                        { z->c = z->l - m6; goto lab5; }
-                    lab6:
-                        z->c = z->l - m7;
+                        { z->c = z->l - v_8; goto lab6; }
+                    lab7:
+                        z->c = z->l - v_9;
                     }
-                    {   int ret = r_R2(z);
-                        if (ret == 0) { z->c = z->l - m6; goto lab5; }
+                    {
+                        int ret = r_R2(z);
+                        if (ret == 0) { z->c = z->l - v_8; goto lab6; }
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
-                lab5:
+                lab6:
                     ;
                 }
                 break;
             case 2:
-                {   int m8 = z->l - z->c; (void)m8;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
+                {
+                    int v_10 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab8;
                     z->c--;
-                    goto lab4;
-                lab7:
-                    z->c = z->l - m8;
+                    goto lab5;
+                lab8:
+                    z->c = z->l - v_10;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int m9 = z->l - z->c; (void)m9;
+                {
+                    int v_11 = z->l - z->c;
                     z->ket = z->c;
-                    {   int m10 = z->l - z->c; (void)m10;
+                    do {
+                        int v_12 = z->l - z->c;
                         if (!(eq_s_b(z, 2, s_14))) goto lab10;
-                        goto lab9;
+                        break;
                     lab10:
-                        z->c = z->l - m10;
-                        if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m9; goto lab8; }
-                    }
-                lab9:
+                        z->c = z->l - v_12;
+                        if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - v_11; goto lab9; }
+                    } while (0);
                     z->bra = z->c;
-                    {   int ret = r_R1(z);
-                        if (ret == 0) { z->c = z->l - m9; goto lab8; }
+                    {
+                        int ret = r_R1(z);
+                        if (ret == 0) { z->c = z->l - v_11; goto lab9; }
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
-                lab8:
+                lab9:
                     ;
                 }
                 break;
             case 4:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-                {   int m11 = z->l - z->c; (void)m11;
+                {
+                    int v_13 = z->l - z->c;
                     z->ket = z->c;
-                    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m11; goto lab11; }
-                    if (!find_among_b(z, a_4, 2)) { z->c = z->l - m11; goto lab11; }
+                    if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - v_13; goto lab11; }
+                    if (!find_among_b(z, a_5, 2, 0)) { z->c = z->l - v_13; goto lab11; }
                     z->bra = z->c;
-                    {   int ret = r_R2(z);
-                        if (ret == 0) { z->c = z->l - m11; goto lab11; }
+                    {
+                        int ret = r_R2(z);
+                        if (ret == 0) { z->c = z->l - v_13; goto lab11; }
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
                 lab11:
@@ -510,42 +575,56 @@ z->c = z->c - 3;
                 }
                 break;
         }
-    lab4:
-        z->c = z->l - m5;
+    lab5:
+        z->c = z->l - v_7;
     }
     return 1;
 }
 
 extern int german_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_prelude(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_prelude(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c2 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_2 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c2;
+        z->c = v_2;
     }
     z->lb = z->c; z->c = z->l;
-
-
-    {   int ret = r_standard_suffix(z);
+    {
+        int ret = r_standard_suffix(z);
         if (ret < 0) return ret;
     }
     z->c = z->lb;
-    {   int c3 = z->c;
-        {   int ret = r_postlude(z);
+    {
+        int v_3 = z->c;
+        {
+            int ret = r_postlude(z);
             if (ret < 0) return ret;
         }
-        z->c = c3;
+        z->c = v_3;
     }
     return 1;
 }
 
-extern struct SN_env * german_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * german_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void german_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void german_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 8624d0382ebde6d4288c4d5be7eb1ae9e135f851..986599f3dc0f9292dbbc9332f2db0cd995c852d2 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from indonesian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_indonesian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_prefix;
+    int i_measure;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,59 +21,44 @@ extern int indonesian_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
-static int r_VOWEL(struct SN_env * z);
-static int r_SUFFIX_I_OK(struct SN_env * z);
-static int r_SUFFIX_AN_OK(struct SN_env * z);
-static int r_SUFFIX_KAN_OK(struct SN_env * z);
-static int r_KER(struct SN_env * z);
+
 static int r_remove_suffix(struct SN_env * z);
 static int r_remove_second_order_prefix(struct SN_env * z);
 static int r_remove_first_order_prefix(struct SN_env * z);
 static int r_remove_possessive_pronoun(struct SN_env * z);
 static int r_remove_particle(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * indonesian_ISO_8859_1_create_env(void);
-extern void indonesian_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 's' };
+static const symbol s_1[] = { 's' };
+static const symbol s_2[] = { 'p' };
+static const symbol s_3[] = { 'p' };
+static const symbol s_4[] = { 'a', 'j', 'a', 'r' };
+static const symbol s_5[] = { 'a', 'j', 'a', 'r' };
+static const symbol s_6[] = { 'e', 'r' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[3] = { 'k', 'a', 'h' };
 static const symbol s_0_1[3] = { 'l', 'a', 'h' };
 static const symbol s_0_2[3] = { 'p', 'u', 'n' };
-
-static const struct among a_0[3] =
-{
-{ 3, s_0_0, -1, 1, 0},
-{ 3, s_0_1, -1, 1, 0},
-{ 3, s_0_2, -1, 1, 0}
+static const struct among a_0[3] = {
+{ 3, s_0_0, 0, 1, 0},
+{ 3, s_0_1, 0, 1, 0},
+{ 3, s_0_2, 0, 1, 0}
 };
 
 static const symbol s_1_0[3] = { 'n', 'y', 'a' };
 static const symbol s_1_1[2] = { 'k', 'u' };
 static const symbol s_1_2[2] = { 'm', 'u' };
-
-static const struct among a_1[3] =
-{
-{ 3, s_1_0, -1, 1, 0},
-{ 2, s_1_1, -1, 1, 0},
-{ 2, s_1_2, -1, 1, 0}
+static const struct among a_1[3] = {
+{ 3, s_1_0, 0, 1, 0},
+{ 2, s_1_1, 0, 1, 0},
+{ 2, s_1_2, 0, 1, 0}
 };
 
 static const symbol s_2_0[1] = { 'i' };
 static const symbol s_2_1[2] = { 'a', 'n' };
-static const symbol s_2_2[3] = { 'k', 'a', 'n' };
-
-static const struct among a_2[3] =
-{
-{ 1, s_2_0, -1, 1, r_SUFFIX_I_OK},
-{ 2, s_2_1, -1, 1, r_SUFFIX_AN_OK},
-{ 3, s_2_2, 1, 1, r_SUFFIX_KAN_OK}
+static const struct among a_2[2] = {
+{ 1, s_2_0, 0, 2, 0},
+{ 2, s_2_1, 0, 1, 0}
 };
 
 static const symbol s_3_0[2] = { 'd', 'i' };
@@ -70,123 +67,97 @@ static const symbol s_3_2[2] = { 'm', 'e' };
 static const symbol s_3_3[3] = { 'm', 'e', 'm' };
 static const symbol s_3_4[3] = { 'm', 'e', 'n' };
 static const symbol s_3_5[4] = { 'm', 'e', 'n', 'g' };
-static const symbol s_3_6[4] = { 'm', 'e', 'n', 'y' };
-static const symbol s_3_7[3] = { 'p', 'e', 'm' };
-static const symbol s_3_8[3] = { 'p', 'e', 'n' };
-static const symbol s_3_9[4] = { 'p', 'e', 'n', 'g' };
-static const symbol s_3_10[4] = { 'p', 'e', 'n', 'y' };
-static const symbol s_3_11[3] = { 't', 'e', 'r' };
-
-static const struct among a_3[12] =
-{
-{ 2, s_3_0, -1, 1, 0},
-{ 2, s_3_1, -1, 2, 0},
-{ 2, s_3_2, -1, 1, 0},
-{ 3, s_3_3, 2, 5, 0},
-{ 3, s_3_4, 2, 1, 0},
-{ 4, s_3_5, 4, 1, 0},
-{ 4, s_3_6, 4, 3, r_VOWEL},
-{ 3, s_3_7, -1, 6, 0},
-{ 3, s_3_8, -1, 2, 0},
-{ 4, s_3_9, 8, 2, 0},
-{ 4, s_3_10, 8, 4, r_VOWEL},
-{ 3, s_3_11, -1, 1, 0}
+static const symbol s_3_6[3] = { 'p', 'e', 'm' };
+static const symbol s_3_7[3] = { 'p', 'e', 'n' };
+static const symbol s_3_8[4] = { 'p', 'e', 'n', 'g' };
+static const symbol s_3_9[3] = { 't', 'e', 'r' };
+static const struct among a_3[10] = {
+{ 2, s_3_0, 0, 1, 0},
+{ 2, s_3_1, 0, 3, 0},
+{ 2, s_3_2, 0, 1, 0},
+{ 3, s_3_3, -1, 5, 0},
+{ 3, s_3_4, -2, 2, 0},
+{ 4, s_3_5, -1, 1, 0},
+{ 3, s_3_6, 0, 6, 0},
+{ 3, s_3_7, 0, 4, 0},
+{ 4, s_3_8, -1, 3, 0},
+{ 3, s_3_9, 0, 1, 0}
 };
 
 static const symbol s_4_0[2] = { 'b', 'e' };
-static const symbol s_4_1[7] = { 'b', 'e', 'l', 'a', 'j', 'a', 'r' };
-static const symbol s_4_2[3] = { 'b', 'e', 'r' };
-static const symbol s_4_3[2] = { 'p', 'e' };
-static const symbol s_4_4[7] = { 'p', 'e', 'l', 'a', 'j', 'a', 'r' };
-static const symbol s_4_5[3] = { 'p', 'e', 'r' };
-
-static const struct among a_4[6] =
-{
-{ 2, s_4_0, -1, 3, r_KER},
-{ 7, s_4_1, 0, 4, 0},
-{ 3, s_4_2, 0, 3, 0},
-{ 2, s_4_3, -1, 1, 0},
-{ 7, s_4_4, 3, 2, 0},
-{ 3, s_4_5, 3, 1, 0}
+static const symbol s_4_1[2] = { 'p', 'e' };
+static const struct among a_4[2] = {
+{ 2, s_4_0, 0, 2, 0},
+{ 2, s_4_1, 0, 1, 0}
 };
 
 static const unsigned char g_vowel[] = { 17, 65, 16 };
 
-static const symbol s_0[] = { 'e', 'r' };
-static const symbol s_1[] = { 's' };
-static const symbol s_2[] = { 's' };
-static const symbol s_3[] = { 'p' };
-static const symbol s_4[] = { 'p' };
-static const symbol s_5[] = { 'a', 'j', 'a', 'r' };
-static const symbol s_6[] = { 'a', 'j', 'a', 'r' };
-
 static int r_remove_particle(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 104 && z->p[z->c - 1] != 110)) return 0;
-    if (!find_among_b(z, a_0, 3)) return 0;
+    if (!find_among_b(z, a_0, 3, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    z->I[1] -= 1;
+    ((SN_local *)z)->i_measure -= 1;
     return 1;
 }
 
 static int r_remove_possessive_pronoun(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 117)) return 0;
-    if (!find_among_b(z, a_1, 3)) return 0;
+    if (!find_among_b(z, a_1, 3, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    z->I[1] -= 1;
-    return 1;
-}
-
-static int r_SUFFIX_KAN_OK(struct SN_env * z) {
-
-    if (z->I[0] == 3) return 0;
-    if (z->I[0] == 2) return 0;
-    return 1;
-}
-
-static int r_SUFFIX_AN_OK(struct SN_env * z) {
-    return z->I[0] != 1;
-}
-
-static int r_SUFFIX_I_OK(struct SN_env * z) {
-    if (z->I[0] > 2) return 0;
-    {   int m1 = z->l - z->c; (void)m1;
-        if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
-        z->c--;
-        return 0;
-    lab0:
-        z->c = z->l - m1;
-    }
+    ((SN_local *)z)->i_measure -= 1;
     return 1;
 }
 
 static int r_remove_suffix(struct SN_env * z) {
+    int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 110)) return 0;
-    if (!find_among_b(z, a_2, 3)) return 0;
+    among_var = find_among_b(z, a_2, 2, 0);
+    if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    switch (among_var) {
+        case 1:
+            do {
+                int v_1 = z->l - z->c;
+                if (((SN_local *)z)->i_prefix == 3) goto lab0;
+                if (((SN_local *)z)->i_prefix == 2) goto lab0;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0;
+                z->c--;
+                z->bra = z->c;
+                break;
+            lab0:
+                z->c = z->l - v_1;
+                if (((SN_local *)z)->i_prefix == 1) return 0;
+            } while (0);
+            break;
+        case 2:
+            if (((SN_local *)z)->i_prefix > 2) return 0;
+            {
+                int v_2 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
+                z->c--;
+                return 0;
+            lab1:
+                z->c = z->l - v_2;
+            }
+            break;
+    }
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    z->I[1] -= 1;
-    return 1;
-}
-
-static int r_VOWEL(struct SN_env * z) {
-    if (in_grouping(z, g_vowel, 97, 117, 0)) return 0;
-    return 1;
-}
-
-static int r_KER(struct SN_env * z) {
-    if (out_grouping(z, g_vowel, 97, 117, 0)) return 0;
-    if (!(eq_s(z, 2, s_0))) return 0;
+    ((SN_local *)z)->i_measure -= 1;
     return 1;
 }
 
@@ -194,77 +165,127 @@ static int r_remove_first_order_prefix(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 1 >= z->l || (z->p[z->c + 1] != 105 && z->p[z->c + 1] != 101)) return 0;
-    among_var = find_among(z, a_3, 12);
+    among_var = find_among(z, a_3, 10, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            z->I[0] = 1;
-            z->I[1] -= 1;
+            ((SN_local *)z)->i_prefix = 1;
+            ((SN_local *)z)->i_measure -= 1;
             break;
         case 2:
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            z->I[0] = 3;
-            z->I[1] -= 1;
+            do {
+                int v_1 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'y') goto lab0;
+                z->c++;
+                {
+                    int v_2 = z->c;
+                    if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab0;
+                    z->c = v_2;
+                }
+                z->ket = z->c;
+                {
+                    int ret = slice_from_s(z, 1, s_0);
+                    if (ret < 0) return ret;
+                }
+                ((SN_local *)z)->i_prefix = 1;
+                ((SN_local *)z)->i_measure -= 1;
+                break;
+            lab0:
+                z->c = v_1;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                ((SN_local *)z)->i_prefix = 1;
+                ((SN_local *)z)->i_measure -= 1;
+            } while (0);
             break;
         case 3:
-            z->I[0] = 1;
-            {   int ret = slice_from_s(z, 1, s_1);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            z->I[1] -= 1;
+            ((SN_local *)z)->i_prefix = 3;
+            ((SN_local *)z)->i_measure -= 1;
             break;
         case 4:
-            z->I[0] = 3;
-            {   int ret = slice_from_s(z, 1, s_2);
-                if (ret < 0) return ret;
-            }
-            z->I[1] -= 1;
+            do {
+                int v_3 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
+                z->c++;
+                {
+                    int v_4 = z->c;
+                    if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab1;
+                    z->c = v_4;
+                }
+                z->ket = z->c;
+                {
+                    int ret = slice_from_s(z, 1, s_1);
+                    if (ret < 0) return ret;
+                }
+                ((SN_local *)z)->i_prefix = 3;
+                ((SN_local *)z)->i_measure -= 1;
+                break;
+            lab1:
+                z->c = v_3;
+                {
+                    int ret = slice_del(z);
+                    if (ret < 0) return ret;
+                }
+                ((SN_local *)z)->i_prefix = 3;
+                ((SN_local *)z)->i_measure -= 1;
+            } while (0);
             break;
         case 5:
-            z->I[0] = 1;
-            z->I[1] -= 1;
-            {   int c1 = z->c;
-                {   int c2 = z->c;
-                    if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab1;
-                    z->c = c2;
-                    {   int ret = slice_from_s(z, 1, s_3);
+            ((SN_local *)z)->i_prefix = 1;
+            ((SN_local *)z)->i_measure -= 1;
+            do {
+                int v_5 = z->c;
+                {
+                    int v_6 = z->c;
+                    if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab2;
+                    z->c = v_6;
+                    {
+                        int ret = slice_from_s(z, 1, s_2);
                         if (ret < 0) return ret;
                     }
                 }
-                goto lab0;
-            lab1:
-                z->c = c1;
-                {   int ret = slice_del(z);
+                break;
+            lab2:
+                z->c = v_5;
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-            }
-        lab0:
+            } while (0);
             break;
         case 6:
-            z->I[0] = 3;
-            z->I[1] -= 1;
-            {   int c3 = z->c;
-                {   int c4 = z->c;
+            ((SN_local *)z)->i_prefix = 3;
+            ((SN_local *)z)->i_measure -= 1;
+            do {
+                int v_7 = z->c;
+                {
+                    int v_8 = z->c;
                     if (in_grouping(z, g_vowel, 97, 117, 0)) goto lab3;
-                    z->c = c4;
-                    {   int ret = slice_from_s(z, 1, s_4);
+                    z->c = v_8;
+                    {
+                        int ret = slice_from_s(z, 1, s_3);
                         if (ret < 0) return ret;
                     }
                 }
-                goto lab2;
+                break;
             lab3:
-                z->c = c3;
-                {   int ret = slice_del(z);
+                z->c = v_7;
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
-            }
-        lab2:
+            } while (0);
             break;
     }
     return 1;
@@ -274,134 +295,174 @@ static int r_remove_second_order_prefix(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 1 >= z->l || z->p[z->c + 1] != 101) return 0;
-    among_var = find_among(z, a_4, 6);
+    among_var = find_among(z, a_4, 2, 0);
     if (!among_var) return 0;
-    z->ket = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            z->I[0] = 2;
-            z->I[1] -= 1;
+            do {
+                int v_1 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'r') goto lab0;
+                z->c++;
+                z->ket = z->c;
+                ((SN_local *)z)->i_prefix = 2;
+                break;
+            lab0:
+                z->c = v_1;
+                if (z->c == z->l || z->p[z->c] != 'l') goto lab1;
+                z->c++;
+                z->ket = z->c;
+                if (!(eq_s(z, 4, s_4))) goto lab1;
+                break;
+            lab1:
+                z->c = v_1;
+                z->ket = z->c;
+                ((SN_local *)z)->i_prefix = 2;
+            } while (0);
             break;
         case 2:
-            {   int ret = slice_from_s(z, 4, s_5);
-                if (ret < 0) return ret;
-            }
-            z->I[1] -= 1;
-            break;
-        case 3:
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            z->I[0] = 4;
-            z->I[1] -= 1;
-            break;
-        case 4:
-            {   int ret = slice_from_s(z, 4, s_6);
-                if (ret < 0) return ret;
-            }
-            z->I[0] = 4;
-            z->I[1] -= 1;
+            do {
+                int v_2 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'r') goto lab2;
+                z->c++;
+                z->ket = z->c;
+                break;
+            lab2:
+                z->c = v_2;
+                if (z->c == z->l || z->p[z->c] != 'l') goto lab3;
+                z->c++;
+                z->ket = z->c;
+                if (!(eq_s(z, 4, s_5))) goto lab3;
+                break;
+            lab3:
+                z->c = v_2;
+                z->ket = z->c;
+                if (out_grouping(z, g_vowel, 97, 117, 0)) return 0;
+                if (!(eq_s(z, 2, s_6))) return 0;
+            } while (0);
+            ((SN_local *)z)->i_prefix = 4;
             break;
     }
+    ((SN_local *)z)->i_measure -= 1;
+    {
+        int ret = slice_del(z);
+        if (ret < 0) return ret;
+    }
     return 1;
 }
 
 extern int indonesian_ISO_8859_1_stem(struct SN_env * z) {
-    z->I[1] = 0;
-    {   int c1 = z->c;
-        while(1) {
-            int c2 = z->c;
-
+    ((SN_local *)z)->i_measure = 0;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
             {
                 int ret = out_grouping(z, g_vowel, 97, 117, 1);
                 if (ret < 0) goto lab1;
                 z->c += ret;
             }
-            z->I[1] += 1;
+            ((SN_local *)z)->i_measure += 1;
             continue;
         lab1:
-            z->c = c2;
+            z->c = v_2;
             break;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-    if (z->I[1] <= 2) return 0;
-    z->I[0] = 0;
+    if (((SN_local *)z)->i_measure <= 2) return 0;
+    ((SN_local *)z)->i_prefix = 0;
     z->lb = z->c; z->c = z->l;
-
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_remove_particle(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_remove_particle(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    if (z->I[1] <= 2) return 0;
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_remove_possessive_pronoun(z);
+    if (((SN_local *)z)->i_measure <= 2) return 0;
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_remove_possessive_pronoun(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
-    if (z->I[1] <= 2) return 0;
-    {   int c5 = z->c;
-        {   int c_test6 = z->c;
-            {   int ret = r_remove_first_order_prefix(z);
-                if (ret == 0) goto lab3;
+    if (((SN_local *)z)->i_measure <= 2) return 0;
+    do {
+        int v_5 = z->c;
+        {
+            int v_6 = z->c;
+            {
+                int ret = r_remove_first_order_prefix(z);
+                if (ret == 0) goto lab2;
                 if (ret < 0) return ret;
             }
-            {   int c7 = z->c;
-                {   int c_test8 = z->c;
-                    if (z->I[1] <= 2) goto lab4;
+            {
+                int v_7 = z->c;
+                {
+                    int v_8 = z->c;
+                    if (((SN_local *)z)->i_measure <= 2) goto lab3;
                     z->lb = z->c; z->c = z->l;
-
-                    {   int ret = r_remove_suffix(z);
-                        if (ret == 0) goto lab4;
+                    {
+                        int ret = r_remove_suffix(z);
+                        if (ret == 0) goto lab3;
                         if (ret < 0) return ret;
                     }
                     z->c = z->lb;
-                    z->c = c_test8;
+                    z->c = v_8;
                 }
-                if (z->I[1] <= 2) goto lab4;
-                {   int ret = r_remove_second_order_prefix(z);
-                    if (ret == 0) goto lab4;
+                if (((SN_local *)z)->i_measure <= 2) goto lab3;
+                {
+                    int ret = r_remove_second_order_prefix(z);
+                    if (ret == 0) goto lab3;
                     if (ret < 0) return ret;
                 }
-            lab4:
-                z->c = c7;
+            lab3:
+                z->c = v_7;
             }
-            z->c = c_test6;
+            z->c = v_6;
         }
-        goto lab2;
-    lab3:
-        z->c = c5;
-        {   int c9 = z->c;
-            {   int ret = r_remove_second_order_prefix(z);
+        break;
+    lab2:
+        z->c = v_5;
+        {
+            int v_9 = z->c;
+            {
+                int ret = r_remove_second_order_prefix(z);
                 if (ret < 0) return ret;
             }
-            z->c = c9;
+            z->c = v_9;
         }
-        {   int c10 = z->c;
-            if (z->I[1] <= 2) goto lab5;
+        {
+            int v_10 = z->c;
+            if (((SN_local *)z)->i_measure <= 2) goto lab4;
             z->lb = z->c; z->c = z->l;
-
-            {   int ret = r_remove_suffix(z);
-                if (ret == 0) goto lab5;
+            {
+                int ret = r_remove_suffix(z);
+                if (ret == 0) goto lab4;
                 if (ret < 0) return ret;
             }
             z->c = z->lb;
-        lab5:
-            z->c = c10;
+        lab4:
+            z->c = v_10;
         }
-    }
-lab2:
+    } while (0);
     return 1;
 }
 
-extern struct SN_env * indonesian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * indonesian_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_prefix = 0;
+        ((SN_local *)z)->i_measure = 0;
+    }
+    return z;
+}
 
-extern void indonesian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void indonesian_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index a61591eab3f950c038403209522588feadc538ed..9a14b0d5d40d0e193e9944b3ca50f2c04975445f 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from irish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_irish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int irish_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_verb_sfx(struct SN_env * z);
 static int r_deriv(struct SN_env * z);
 static int r_noun_sfx(struct SN_env * z);
@@ -17,18 +31,22 @@ static int r_initial_morph(struct SN_env * z);
 static int r_RV(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * irish_ISO_8859_1_create_env(void);
-extern void irish_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'f' };
+static const symbol s_1[] = { 's' };
+static const symbol s_2[] = { 'b' };
+static const symbol s_3[] = { 'c' };
+static const symbol s_4[] = { 'd' };
+static const symbol s_5[] = { 'g' };
+static const symbol s_6[] = { 'p' };
+static const symbol s_7[] = { 't' };
+static const symbol s_8[] = { 'm' };
+static const symbol s_9[] = { 'a', 'r', 'c' };
+static const symbol s_10[] = { 'g', 'i', 'n' };
+static const symbol s_11[] = { 'g', 'r', 'a', 'f' };
+static const symbol s_12[] = { 'p', 'a', 'i', 't', 'e' };
+static const symbol s_13[] = { 0xF3, 'i', 'd' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[2] = { 'b', '\'' };
 static const symbol s_0_1[2] = { 'b', 'h' };
 static const symbol s_0_2[3] = { 'b', 'h', 'f' };
@@ -53,33 +71,31 @@ static const symbol s_0_20[2] = { 's', 'h' };
 static const symbol s_0_21[2] = { 't', '-' };
 static const symbol s_0_22[2] = { 't', 'h' };
 static const symbol s_0_23[2] = { 't', 's' };
-
-static const struct among a_0[24] =
-{
-{ 2, s_0_0, -1, 1, 0},
-{ 2, s_0_1, -1, 4, 0},
-{ 3, s_0_2, 1, 2, 0},
-{ 2, s_0_3, -1, 8, 0},
-{ 2, s_0_4, -1, 5, 0},
-{ 2, s_0_5, -1, 1, 0},
-{ 4, s_0_6, 5, 2, 0},
-{ 2, s_0_7, -1, 6, 0},
-{ 2, s_0_8, -1, 9, 0},
-{ 2, s_0_9, -1, 2, 0},
-{ 2, s_0_10, -1, 5, 0},
-{ 2, s_0_11, -1, 7, 0},
-{ 2, s_0_12, -1, 1, 0},
-{ 2, s_0_13, -1, 1, 0},
-{ 2, s_0_14, -1, 4, 0},
-{ 2, s_0_15, -1, 10, 0},
-{ 2, s_0_16, -1, 1, 0},
-{ 2, s_0_17, -1, 6, 0},
-{ 2, s_0_18, -1, 7, 0},
-{ 2, s_0_19, -1, 8, 0},
-{ 2, s_0_20, -1, 3, 0},
-{ 2, s_0_21, -1, 1, 0},
-{ 2, s_0_22, -1, 9, 0},
-{ 2, s_0_23, -1, 3, 0}
+static const struct among a_0[24] = {
+{ 2, s_0_0, 0, 1, 0},
+{ 2, s_0_1, 0, 4, 0},
+{ 3, s_0_2, -1, 2, 0},
+{ 2, s_0_3, 0, 8, 0},
+{ 2, s_0_4, 0, 5, 0},
+{ 2, s_0_5, 0, 1, 0},
+{ 4, s_0_6, -1, 2, 0},
+{ 2, s_0_7, 0, 6, 0},
+{ 2, s_0_8, 0, 9, 0},
+{ 2, s_0_9, 0, 2, 0},
+{ 2, s_0_10, 0, 5, 0},
+{ 2, s_0_11, 0, 7, 0},
+{ 2, s_0_12, 0, 1, 0},
+{ 2, s_0_13, 0, 1, 0},
+{ 2, s_0_14, 0, 4, 0},
+{ 2, s_0_15, 0, 10, 0},
+{ 2, s_0_16, 0, 1, 0},
+{ 2, s_0_17, 0, 6, 0},
+{ 2, s_0_18, 0, 7, 0},
+{ 2, s_0_19, 0, 8, 0},
+{ 2, s_0_20, 0, 3, 0},
+{ 2, s_0_21, 0, 1, 0},
+{ 2, s_0_22, 0, 9, 0},
+{ 2, s_0_23, 0, 3, 0}
 };
 
 static const symbol s_1_0[6] = { 0xED, 'o', 'c', 'h', 't', 'a' };
@@ -98,25 +114,23 @@ static const symbol s_1_12[5] = { 0xED, 'o', 'c', 'h', 't' };
 static const symbol s_1_13[6] = { 'a', 0xED, 'o', 'c', 'h', 't' };
 static const symbol s_1_14[3] = { 'i', 'r', 0xED };
 static const symbol s_1_15[4] = { 'a', 'i', 'r', 0xED };
-
-static const struct among a_1[16] =
-{
-{ 6, s_1_0, -1, 1, 0},
-{ 7, s_1_1, 0, 1, 0},
-{ 3, s_1_2, -1, 2, 0},
-{ 4, s_1_3, 2, 2, 0},
-{ 3, s_1_4, -1, 1, 0},
-{ 4, s_1_5, 4, 1, 0},
-{ 3, s_1_6, -1, 1, 0},
-{ 4, s_1_7, 6, 1, 0},
-{ 3, s_1_8, -1, 1, 0},
-{ 4, s_1_9, 8, 1, 0},
-{ 3, s_1_10, -1, 1, 0},
-{ 4, s_1_11, 10, 1, 0},
-{ 5, s_1_12, -1, 1, 0},
-{ 6, s_1_13, 12, 1, 0},
-{ 3, s_1_14, -1, 2, 0},
-{ 4, s_1_15, 14, 2, 0}
+static const struct among a_1[16] = {
+{ 6, s_1_0, 0, 1, 0},
+{ 7, s_1_1, -1, 1, 0},
+{ 3, s_1_2, 0, 2, 0},
+{ 4, s_1_3, -1, 2, 0},
+{ 3, s_1_4, 0, 1, 0},
+{ 4, s_1_5, -1, 1, 0},
+{ 3, s_1_6, 0, 1, 0},
+{ 4, s_1_7, -1, 1, 0},
+{ 3, s_1_8, 0, 1, 0},
+{ 4, s_1_9, -1, 1, 0},
+{ 3, s_1_10, 0, 1, 0},
+{ 4, s_1_11, -1, 1, 0},
+{ 5, s_1_12, 0, 1, 0},
+{ 6, s_1_13, -1, 1, 0},
+{ 3, s_1_14, 0, 2, 0},
+{ 4, s_1_15, -1, 2, 0}
 };
 
 static const symbol s_2_0[8] = { 0xF3, 'i', 'd', 'e', 'a', 'c', 'h', 'a' };
@@ -144,34 +158,32 @@ static const symbol s_2_21[5] = { 'e', 'a', 'c', 'h', 't' };
 static const symbol s_2_22[10] = { 'g', 'r', 'a', 'f', 'a', 0xED, 'o', 'c', 'h', 't' };
 static const symbol s_2_23[9] = { 'a', 'r', 'c', 'a', 'c', 'h', 't', 'a', 0xED };
 static const symbol s_2_24[12] = { 'g', 'r', 'a', 'f', 'a', 0xED, 'o', 'c', 'h', 't', 'a', 0xED };
-
-static const struct among a_2[25] =
-{
-{ 8, s_2_0, -1, 6, 0},
-{ 7, s_2_1, -1, 5, 0},
-{ 5, s_2_2, -1, 1, 0},
-{ 8, s_2_3, 2, 2, 0},
-{ 6, s_2_4, 2, 1, 0},
-{ 11, s_2_5, -1, 4, 0},
-{ 5, s_2_6, -1, 5, 0},
-{ 3, s_2_7, -1, 1, 0},
-{ 4, s_2_8, 7, 1, 0},
-{ 7, s_2_9, 8, 6, 0},
-{ 7, s_2_10, 8, 3, 0},
-{ 6, s_2_11, 7, 5, 0},
-{ 9, s_2_12, -1, 4, 0},
-{ 7, s_2_13, -1, 5, 0},
-{ 6, s_2_14, -1, 6, 0},
-{ 7, s_2_15, -1, 1, 0},
-{ 8, s_2_16, 15, 1, 0},
-{ 6, s_2_17, -1, 3, 0},
-{ 5, s_2_18, -1, 3, 0},
-{ 4, s_2_19, -1, 1, 0},
-{ 7, s_2_20, 19, 2, 0},
-{ 5, s_2_21, 19, 1, 0},
-{ 10, s_2_22, -1, 4, 0},
-{ 9, s_2_23, -1, 2, 0},
-{ 12, s_2_24, -1, 4, 0}
+static const struct among a_2[25] = {
+{ 8, s_2_0, 0, 6, 0},
+{ 7, s_2_1, 0, 5, 0},
+{ 5, s_2_2, 0, 1, 0},
+{ 8, s_2_3, -1, 2, 0},
+{ 6, s_2_4, -2, 1, 0},
+{ 11, s_2_5, 0, 4, 0},
+{ 5, s_2_6, 0, 5, 0},
+{ 3, s_2_7, 0, 1, 0},
+{ 4, s_2_8, -1, 1, 0},
+{ 7, s_2_9, -1, 6, 0},
+{ 7, s_2_10, -2, 3, 0},
+{ 6, s_2_11, -4, 5, 0},
+{ 9, s_2_12, 0, 4, 0},
+{ 7, s_2_13, 0, 5, 0},
+{ 6, s_2_14, 0, 6, 0},
+{ 7, s_2_15, 0, 1, 0},
+{ 8, s_2_16, -1, 1, 0},
+{ 6, s_2_17, 0, 3, 0},
+{ 5, s_2_18, 0, 3, 0},
+{ 4, s_2_19, 0, 1, 0},
+{ 7, s_2_20, -1, 2, 0},
+{ 5, s_2_21, -2, 1, 0},
+{ 10, s_2_22, 0, 4, 0},
+{ 9, s_2_23, 0, 2, 0},
+{ 12, s_2_24, 0, 4, 0}
 };
 
 static const symbol s_3_0[4] = { 'i', 'm', 'i', 'd' };
@@ -186,74 +198,54 @@ static const symbol s_3_8[3] = { 0xE1, 'i', 'l' };
 static const symbol s_3_9[3] = { 'a', 'i', 'n' };
 static const symbol s_3_10[4] = { 't', 'e', 'a', 'r' };
 static const symbol s_3_11[3] = { 't', 'a', 'r' };
-
-static const struct among a_3[12] =
-{
-{ 4, s_3_0, -1, 1, 0},
-{ 5, s_3_1, 0, 1, 0},
-{ 4, s_3_2, -1, 1, 0},
-{ 5, s_3_3, 2, 1, 0},
-{ 3, s_3_4, -1, 2, 0},
-{ 4, s_3_5, 4, 2, 0},
-{ 5, s_3_6, -1, 1, 0},
-{ 4, s_3_7, -1, 1, 0},
-{ 3, s_3_8, -1, 2, 0},
-{ 3, s_3_9, -1, 2, 0},
-{ 4, s_3_10, -1, 2, 0},
-{ 3, s_3_11, -1, 2, 0}
+static const struct among a_3[12] = {
+{ 4, s_3_0, 0, 1, 0},
+{ 5, s_3_1, -1, 1, 0},
+{ 4, s_3_2, 0, 1, 0},
+{ 5, s_3_3, -1, 1, 0},
+{ 3, s_3_4, 0, 2, 0},
+{ 4, s_3_5, -1, 2, 0},
+{ 5, s_3_6, 0, 1, 0},
+{ 4, s_3_7, 0, 1, 0},
+{ 3, s_3_8, 0, 2, 0},
+{ 3, s_3_9, 0, 2, 0},
+{ 4, s_3_10, 0, 2, 0},
+{ 3, s_3_11, 0, 2, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2 };
 
-static const symbol s_0[] = { 'f' };
-static const symbol s_1[] = { 's' };
-static const symbol s_2[] = { 'b' };
-static const symbol s_3[] = { 'c' };
-static const symbol s_4[] = { 'd' };
-static const symbol s_5[] = { 'g' };
-static const symbol s_6[] = { 'p' };
-static const symbol s_7[] = { 't' };
-static const symbol s_8[] = { 'm' };
-static const symbol s_9[] = { 'a', 'r', 'c' };
-static const symbol s_10[] = { 'g', 'i', 'n' };
-static const symbol s_11[] = { 'g', 'r', 'a', 'f' };
-static const symbol s_12[] = { 'p', 'a', 'i', 't', 'e' };
-static const symbol s_13[] = { 0xF3, 'i', 'd' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 250, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[2] = z->c;
-
+        ((SN_local *)z)->i_pV = z->c;
         {
             int ret = in_grouping(z, g_v, 97, 250, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 250, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 250, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
@@ -261,57 +253,67 @@ static int r_mark_regions(struct SN_env * z) {
 static int r_initial_morph(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
-    among_var = find_among(z, a_0, 24);
+    among_var = find_among(z, a_0, 24, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_0);
+            {
+                int ret = slice_from_s(z, 1, s_0);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 1, s_1);
+            {
+                int ret = slice_from_s(z, 1, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 1, s_2);
+            {
+                int ret = slice_from_s(z, 1, s_2);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 1, s_3);
+            {
+                int ret = slice_from_s(z, 1, s_3);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 1, s_4);
+            {
+                int ret = slice_from_s(z, 1, s_4);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
-            {   int ret = slice_from_s(z, 1, s_5);
+            {
+                int ret = slice_from_s(z, 1, s_5);
                 if (ret < 0) return ret;
             }
             break;
         case 8:
-            {   int ret = slice_from_s(z, 1, s_6);
+            {
+                int ret = slice_from_s(z, 1, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 9:
-            {   int ret = slice_from_s(z, 1, s_7);
+            {
+                int ret = slice_from_s(z, 1, s_7);
                 if (ret < 0) return ret;
             }
             break;
         case 10:
-            {   int ret = slice_from_s(z, 1, s_8);
+            {
+                int ret = slice_from_s(z, 1, s_8);
                 if (ret < 0) return ret;
             }
             break;
@@ -320,37 +322,41 @@ static int r_initial_morph(struct SN_env * z) {
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_noun_sfx(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_1, 16);
+    among_var = find_among_b(z, a_1, 16, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -361,40 +367,47 @@ static int r_noun_sfx(struct SN_env * z) {
 static int r_deriv(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_2, 25);
+    among_var = find_among_b(z, a_2, 25, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 3, s_9);
+            {
+                int ret = slice_from_s(z, 3, s_9);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 3, s_10);
+            {
+                int ret = slice_from_s(z, 3, s_10);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 4, s_11);
+            {
+                int ret = slice_from_s(z, 4, s_11);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 5, s_12);
+            {
+                int ret = slice_from_s(z, 5, s_12);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 3, s_13);
+            {
+                int ret = slice_from_s(z, 3, s_13);
                 if (ret < 0) return ret;
             }
             break;
@@ -406,23 +419,27 @@ static int r_verb_sfx(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((282896 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_3, 12);
+    among_var = find_among_b(z, a_3, 12, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -431,41 +448,58 @@ static int r_verb_sfx(struct SN_env * z) {
 }
 
 extern int irish_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_initial_morph(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_initial_morph(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_noun_sfx(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_noun_sfx(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_deriv(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_deriv(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_verb_sfx(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_verb_sfx(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * irish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * irish_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void irish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void irish_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 122449e90a9a1ea0cf87b6fdea40ffdb49161c1b..323378171d8d9ecbd6f87cc4fb4b1da2bb53e014 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from italian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_italian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int italian_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_vowel_suffix(struct SN_env * z);
 static int r_verb_suffix(struct SN_env * z);
 static int r_standard_suffix(struct SN_env * z);
@@ -19,45 +33,49 @@ static int r_RV(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
 static int r_prelude(struct SN_env * z);
-static int r_exceptions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * italian_ISO_8859_1_create_env(void);
-extern void italian_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 0xE0 };
+static const symbol s_1[] = { 0xE8 };
+static const symbol s_2[] = { 0xEC };
+static const symbol s_3[] = { 0xF2 };
+static const symbol s_4[] = { 0xF9 };
+static const symbol s_5[] = { 'q', 'U' };
+static const symbol s_6[] = { 'U' };
+static const symbol s_7[] = { 'I' };
+static const symbol s_8[] = { 'd', 'i', 'v', 'a', 'n' };
+static const symbol s_9[] = { 'i' };
+static const symbol s_10[] = { 'u' };
+static const symbol s_11[] = { 'e' };
+static const symbol s_12[] = { 'i', 'c' };
+static const symbol s_13[] = { 'l', 'o', 'g' };
+static const symbol s_14[] = { 'u' };
+static const symbol s_15[] = { 'e', 'n', 't', 'e' };
+static const symbol s_16[] = { 'a', 't' };
+static const symbol s_17[] = { 'a', 't' };
+static const symbol s_18[] = { 'i', 'c' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[2] = { 'q', 'u' };
 static const symbol s_0_2[1] = { 0xE1 };
 static const symbol s_0_3[1] = { 0xE9 };
 static const symbol s_0_4[1] = { 0xED };
 static const symbol s_0_5[1] = { 0xF3 };
 static const symbol s_0_6[1] = { 0xFA };
-
-static const struct among a_0[7] =
-{
-{ 0, 0, -1, 7, 0},
-{ 2, s_0_1, 0, 6, 0},
-{ 1, s_0_2, 0, 1, 0},
-{ 1, s_0_3, 0, 2, 0},
-{ 1, s_0_4, 0, 3, 0},
-{ 1, s_0_5, 0, 4, 0},
-{ 1, s_0_6, 0, 5, 0}
+static const struct among a_0[7] = {
+{ 0, 0, 0, 7, 0},
+{ 2, s_0_1, -1, 6, 0},
+{ 1, s_0_2, -2, 1, 0},
+{ 1, s_0_3, -3, 2, 0},
+{ 1, s_0_4, -4, 3, 0},
+{ 1, s_0_5, -5, 4, 0},
+{ 1, s_0_6, -6, 5, 0}
 };
 
 static const symbol s_1_1[1] = { 'I' };
 static const symbol s_1_2[1] = { 'U' };
-
-static const struct among a_1[3] =
-{
-{ 0, 0, -1, 3, 0},
-{ 1, s_1_1, 0, 1, 0},
-{ 1, s_1_2, 0, 2, 0}
+static const struct among a_1[3] = {
+{ 0, 0, 0, 3, 0},
+{ 1, s_1_1, -1, 1, 0},
+{ 1, s_1_2, -2, 2, 0}
 };
 
 static const symbol s_2_0[2] = { 'l', 'a' };
@@ -97,46 +115,44 @@ static const symbol s_2_33[6] = { 'g', 'l', 'i', 'e', 'l', 'o' };
 static const symbol s_2_34[4] = { 'm', 'e', 'l', 'o' };
 static const symbol s_2_35[4] = { 't', 'e', 'l', 'o' };
 static const symbol s_2_36[4] = { 'v', 'e', 'l', 'o' };
-
-static const struct among a_2[37] =
-{
-{ 2, s_2_0, -1, -1, 0},
-{ 4, s_2_1, 0, -1, 0},
-{ 6, s_2_2, 0, -1, 0},
-{ 4, s_2_3, 0, -1, 0},
-{ 4, s_2_4, 0, -1, 0},
-{ 4, s_2_5, 0, -1, 0},
-{ 2, s_2_6, -1, -1, 0},
-{ 4, s_2_7, 6, -1, 0},
-{ 6, s_2_8, 6, -1, 0},
-{ 4, s_2_9, 6, -1, 0},
-{ 4, s_2_10, 6, -1, 0},
-{ 4, s_2_11, 6, -1, 0},
-{ 2, s_2_12, -1, -1, 0},
-{ 4, s_2_13, 12, -1, 0},
-{ 6, s_2_14, 12, -1, 0},
-{ 4, s_2_15, 12, -1, 0},
-{ 4, s_2_16, 12, -1, 0},
-{ 4, s_2_17, 12, -1, 0},
-{ 4, s_2_18, 12, -1, 0},
-{ 2, s_2_19, -1, -1, 0},
-{ 2, s_2_20, -1, -1, 0},
-{ 4, s_2_21, 20, -1, 0},
-{ 6, s_2_22, 20, -1, 0},
-{ 4, s_2_23, 20, -1, 0},
-{ 4, s_2_24, 20, -1, 0},
-{ 4, s_2_25, 20, -1, 0},
-{ 3, s_2_26, 20, -1, 0},
-{ 2, s_2_27, -1, -1, 0},
-{ 2, s_2_28, -1, -1, 0},
-{ 2, s_2_29, -1, -1, 0},
-{ 2, s_2_30, -1, -1, 0},
-{ 2, s_2_31, -1, -1, 0},
-{ 4, s_2_32, 31, -1, 0},
-{ 6, s_2_33, 31, -1, 0},
-{ 4, s_2_34, 31, -1, 0},
-{ 4, s_2_35, 31, -1, 0},
-{ 4, s_2_36, 31, -1, 0}
+static const struct among a_2[37] = {
+{ 2, s_2_0, 0, -1, 0},
+{ 4, s_2_1, -1, -1, 0},
+{ 6, s_2_2, -2, -1, 0},
+{ 4, s_2_3, -3, -1, 0},
+{ 4, s_2_4, -4, -1, 0},
+{ 4, s_2_5, -5, -1, 0},
+{ 2, s_2_6, 0, -1, 0},
+{ 4, s_2_7, -1, -1, 0},
+{ 6, s_2_8, -2, -1, 0},
+{ 4, s_2_9, -3, -1, 0},
+{ 4, s_2_10, -4, -1, 0},
+{ 4, s_2_11, -5, -1, 0},
+{ 2, s_2_12, 0, -1, 0},
+{ 4, s_2_13, -1, -1, 0},
+{ 6, s_2_14, -2, -1, 0},
+{ 4, s_2_15, -3, -1, 0},
+{ 4, s_2_16, -4, -1, 0},
+{ 4, s_2_17, -5, -1, 0},
+{ 4, s_2_18, -6, -1, 0},
+{ 2, s_2_19, 0, -1, 0},
+{ 2, s_2_20, 0, -1, 0},
+{ 4, s_2_21, -1, -1, 0},
+{ 6, s_2_22, -2, -1, 0},
+{ 4, s_2_23, -3, -1, 0},
+{ 4, s_2_24, -4, -1, 0},
+{ 4, s_2_25, -5, -1, 0},
+{ 3, s_2_26, -6, -1, 0},
+{ 2, s_2_27, 0, -1, 0},
+{ 2, s_2_28, 0, -1, 0},
+{ 2, s_2_29, 0, -1, 0},
+{ 2, s_2_30, 0, -1, 0},
+{ 2, s_2_31, 0, -1, 0},
+{ 4, s_2_32, -1, -1, 0},
+{ 6, s_2_33, -2, -1, 0},
+{ 4, s_2_34, -3, -1, 0},
+{ 4, s_2_35, -4, -1, 0},
+{ 4, s_2_36, -5, -1, 0}
 };
 
 static const symbol s_3_0[4] = { 'a', 'n', 'd', 'o' };
@@ -144,38 +160,32 @@ static const symbol s_3_1[4] = { 'e', 'n', 'd', 'o' };
 static const symbol s_3_2[2] = { 'a', 'r' };
 static const symbol s_3_3[2] = { 'e', 'r' };
 static const symbol s_3_4[2] = { 'i', 'r' };
-
-static const struct among a_3[5] =
-{
-{ 4, s_3_0, -1, 1, 0},
-{ 4, s_3_1, -1, 1, 0},
-{ 2, s_3_2, -1, 2, 0},
-{ 2, s_3_3, -1, 2, 0},
-{ 2, s_3_4, -1, 2, 0}
+static const struct among a_3[5] = {
+{ 4, s_3_0, 0, 1, 0},
+{ 4, s_3_1, 0, 1, 0},
+{ 2, s_3_2, 0, 2, 0},
+{ 2, s_3_3, 0, 2, 0},
+{ 2, s_3_4, 0, 2, 0}
 };
 
 static const symbol s_4_0[2] = { 'i', 'c' };
 static const symbol s_4_1[4] = { 'a', 'b', 'i', 'l' };
 static const symbol s_4_2[2] = { 'o', 's' };
 static const symbol s_4_3[2] = { 'i', 'v' };
-
-static const struct among a_4[4] =
-{
-{ 2, s_4_0, -1, -1, 0},
-{ 4, s_4_1, -1, -1, 0},
-{ 2, s_4_2, -1, -1, 0},
-{ 2, s_4_3, -1, 1, 0}
+static const struct among a_4[4] = {
+{ 2, s_4_0, 0, -1, 0},
+{ 4, s_4_1, 0, -1, 0},
+{ 2, s_4_2, 0, -1, 0},
+{ 2, s_4_3, 0, 1, 0}
 };
 
 static const symbol s_5_0[2] = { 'i', 'c' };
 static const symbol s_5_1[4] = { 'a', 'b', 'i', 'l' };
 static const symbol s_5_2[2] = { 'i', 'v' };
-
-static const struct among a_5[3] =
-{
-{ 2, s_5_0, -1, 1, 0},
-{ 4, s_5_1, -1, 1, 0},
-{ 2, s_5_2, -1, 1, 0}
+static const struct among a_5[3] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 4, s_5_1, 0, 1, 0},
+{ 2, s_5_2, 0, 1, 0}
 };
 
 static const symbol s_6_0[3] = { 'i', 'c', 'a' };
@@ -229,60 +239,58 @@ static const symbol s_6_47[3] = { 'i', 't', 0xE0 };
 static const symbol s_6_48[4] = { 'i', 's', 't', 0xE0 };
 static const symbol s_6_49[4] = { 'i', 's', 't', 0xE8 };
 static const symbol s_6_50[4] = { 'i', 's', 't', 0xEC };
-
-static const struct among a_6[51] =
-{
-{ 3, s_6_0, -1, 1, 0},
-{ 5, s_6_1, -1, 3, 0},
-{ 3, s_6_2, -1, 1, 0},
-{ 4, s_6_3, -1, 1, 0},
-{ 3, s_6_4, -1, 9, 0},
-{ 4, s_6_5, -1, 1, 0},
-{ 4, s_6_6, -1, 5, 0},
-{ 3, s_6_7, -1, 1, 0},
-{ 6, s_6_8, 7, 1, 0},
-{ 4, s_6_9, -1, 1, 0},
-{ 5, s_6_10, -1, 3, 0},
-{ 5, s_6_11, -1, 1, 0},
-{ 5, s_6_12, -1, 1, 0},
-{ 6, s_6_13, -1, 4, 0},
-{ 6, s_6_14, -1, 2, 0},
-{ 6, s_6_15, -1, 4, 0},
-{ 5, s_6_16, -1, 2, 0},
-{ 3, s_6_17, -1, 1, 0},
-{ 4, s_6_18, -1, 1, 0},
-{ 5, s_6_19, -1, 1, 0},
-{ 6, s_6_20, 19, 7, 0},
-{ 4, s_6_21, -1, 1, 0},
-{ 3, s_6_22, -1, 9, 0},
-{ 4, s_6_23, -1, 1, 0},
-{ 4, s_6_24, -1, 5, 0},
-{ 3, s_6_25, -1, 1, 0},
-{ 6, s_6_26, 25, 1, 0},
-{ 4, s_6_27, -1, 1, 0},
-{ 5, s_6_28, -1, 1, 0},
-{ 5, s_6_29, -1, 1, 0},
-{ 4, s_6_30, -1, 1, 0},
-{ 6, s_6_31, -1, 4, 0},
-{ 6, s_6_32, -1, 2, 0},
-{ 6, s_6_33, -1, 4, 0},
-{ 5, s_6_34, -1, 2, 0},
-{ 3, s_6_35, -1, 1, 0},
-{ 4, s_6_36, -1, 1, 0},
-{ 6, s_6_37, -1, 6, 0},
-{ 6, s_6_38, -1, 6, 0},
-{ 4, s_6_39, -1, 1, 0},
-{ 3, s_6_40, -1, 9, 0},
-{ 3, s_6_41, -1, 1, 0},
-{ 4, s_6_42, -1, 1, 0},
-{ 3, s_6_43, -1, 1, 0},
-{ 6, s_6_44, -1, 6, 0},
-{ 6, s_6_45, -1, 6, 0},
-{ 3, s_6_46, -1, 9, 0},
-{ 3, s_6_47, -1, 8, 0},
-{ 4, s_6_48, -1, 1, 0},
-{ 4, s_6_49, -1, 1, 0},
-{ 4, s_6_50, -1, 1, 0}
+static const struct among a_6[51] = {
+{ 3, s_6_0, 0, 1, 0},
+{ 5, s_6_1, 0, 3, 0},
+{ 3, s_6_2, 0, 1, 0},
+{ 4, s_6_3, 0, 1, 0},
+{ 3, s_6_4, 0, 9, 0},
+{ 4, s_6_5, 0, 1, 0},
+{ 4, s_6_6, 0, 5, 0},
+{ 3, s_6_7, 0, 1, 0},
+{ 6, s_6_8, -1, 1, 0},
+{ 4, s_6_9, 0, 1, 0},
+{ 5, s_6_10, 0, 3, 0},
+{ 5, s_6_11, 0, 1, 0},
+{ 5, s_6_12, 0, 1, 0},
+{ 6, s_6_13, 0, 4, 0},
+{ 6, s_6_14, 0, 2, 0},
+{ 6, s_6_15, 0, 4, 0},
+{ 5, s_6_16, 0, 2, 0},
+{ 3, s_6_17, 0, 1, 0},
+{ 4, s_6_18, 0, 1, 0},
+{ 5, s_6_19, 0, 1, 0},
+{ 6, s_6_20, -1, 7, 0},
+{ 4, s_6_21, 0, 1, 0},
+{ 3, s_6_22, 0, 9, 0},
+{ 4, s_6_23, 0, 1, 0},
+{ 4, s_6_24, 0, 5, 0},
+{ 3, s_6_25, 0, 1, 0},
+{ 6, s_6_26, -1, 1, 0},
+{ 4, s_6_27, 0, 1, 0},
+{ 5, s_6_28, 0, 1, 0},
+{ 5, s_6_29, 0, 1, 0},
+{ 4, s_6_30, 0, 1, 0},
+{ 6, s_6_31, 0, 4, 0},
+{ 6, s_6_32, 0, 2, 0},
+{ 6, s_6_33, 0, 4, 0},
+{ 5, s_6_34, 0, 2, 0},
+{ 3, s_6_35, 0, 1, 0},
+{ 4, s_6_36, 0, 1, 0},
+{ 6, s_6_37, 0, 6, 0},
+{ 6, s_6_38, 0, 6, 0},
+{ 4, s_6_39, 0, 1, 0},
+{ 3, s_6_40, 0, 9, 0},
+{ 3, s_6_41, 0, 1, 0},
+{ 4, s_6_42, 0, 1, 0},
+{ 3, s_6_43, 0, 1, 0},
+{ 6, s_6_44, 0, 6, 0},
+{ 6, s_6_45, 0, 6, 0},
+{ 3, s_6_46, 0, 9, 0},
+{ 3, s_6_47, 0, 8, 0},
+{ 4, s_6_48, 0, 1, 0},
+{ 4, s_6_49, 0, 1, 0},
+{ 4, s_6_50, 0, 1, 0}
 };
 
 static const symbol s_7_0[4] = { 'i', 's', 'c', 'a' };
@@ -372,96 +380,94 @@ static const symbol s_7_83[3] = { 'e', 'r', 0xE0 };
 static const symbol s_7_84[3] = { 'i', 'r', 0xE0 };
 static const symbol s_7_85[3] = { 'e', 'r', 0xF2 };
 static const symbol s_7_86[3] = { 'i', 'r', 0xF2 };
-
-static const struct among a_7[87] =
-{
-{ 4, s_7_0, -1, 1, 0},
-{ 4, s_7_1, -1, 1, 0},
-{ 3, s_7_2, -1, 1, 0},
-{ 3, s_7_3, -1, 1, 0},
-{ 3, s_7_4, -1, 1, 0},
-{ 3, s_7_5, -1, 1, 0},
-{ 3, s_7_6, -1, 1, 0},
-{ 3, s_7_7, -1, 1, 0},
-{ 6, s_7_8, -1, 1, 0},
-{ 6, s_7_9, -1, 1, 0},
-{ 4, s_7_10, -1, 1, 0},
-{ 4, s_7_11, -1, 1, 0},
-{ 3, s_7_12, -1, 1, 0},
-{ 3, s_7_13, -1, 1, 0},
-{ 3, s_7_14, -1, 1, 0},
-{ 4, s_7_15, -1, 1, 0},
-{ 3, s_7_16, -1, 1, 0},
-{ 5, s_7_17, 16, 1, 0},
-{ 5, s_7_18, 16, 1, 0},
-{ 5, s_7_19, 16, 1, 0},
-{ 3, s_7_20, -1, 1, 0},
-{ 5, s_7_21, 20, 1, 0},
-{ 5, s_7_22, 20, 1, 0},
-{ 3, s_7_23, -1, 1, 0},
-{ 6, s_7_24, -1, 1, 0},
-{ 6, s_7_25, -1, 1, 0},
-{ 3, s_7_26, -1, 1, 0},
-{ 4, s_7_27, -1, 1, 0},
-{ 4, s_7_28, -1, 1, 0},
-{ 4, s_7_29, -1, 1, 0},
-{ 4, s_7_30, -1, 1, 0},
-{ 4, s_7_31, -1, 1, 0},
-{ 4, s_7_32, -1, 1, 0},
-{ 4, s_7_33, -1, 1, 0},
-{ 3, s_7_34, -1, 1, 0},
-{ 3, s_7_35, -1, 1, 0},
-{ 6, s_7_36, -1, 1, 0},
-{ 6, s_7_37, -1, 1, 0},
-{ 3, s_7_38, -1, 1, 0},
-{ 3, s_7_39, -1, 1, 0},
-{ 3, s_7_40, -1, 1, 0},
-{ 3, s_7_41, -1, 1, 0},
-{ 4, s_7_42, -1, 1, 0},
-{ 4, s_7_43, -1, 1, 0},
-{ 4, s_7_44, -1, 1, 0},
-{ 4, s_7_45, -1, 1, 0},
-{ 4, s_7_46, -1, 1, 0},
-{ 5, s_7_47, -1, 1, 0},
-{ 5, s_7_48, -1, 1, 0},
-{ 5, s_7_49, -1, 1, 0},
-{ 5, s_7_50, -1, 1, 0},
-{ 5, s_7_51, -1, 1, 0},
-{ 6, s_7_52, -1, 1, 0},
-{ 4, s_7_53, -1, 1, 0},
-{ 4, s_7_54, -1, 1, 0},
-{ 6, s_7_55, 54, 1, 0},
-{ 6, s_7_56, 54, 1, 0},
-{ 4, s_7_57, -1, 1, 0},
-{ 3, s_7_58, -1, 1, 0},
-{ 6, s_7_59, 58, 1, 0},
-{ 5, s_7_60, 58, 1, 0},
-{ 5, s_7_61, 58, 1, 0},
-{ 5, s_7_62, 58, 1, 0},
-{ 6, s_7_63, -1, 1, 0},
-{ 6, s_7_64, -1, 1, 0},
-{ 3, s_7_65, -1, 1, 0},
-{ 6, s_7_66, 65, 1, 0},
-{ 5, s_7_67, 65, 1, 0},
-{ 5, s_7_68, 65, 1, 0},
-{ 5, s_7_69, 65, 1, 0},
-{ 8, s_7_70, -1, 1, 0},
-{ 8, s_7_71, -1, 1, 0},
-{ 6, s_7_72, -1, 1, 0},
-{ 6, s_7_73, -1, 1, 0},
-{ 6, s_7_74, -1, 1, 0},
-{ 3, s_7_75, -1, 1, 0},
-{ 3, s_7_76, -1, 1, 0},
-{ 3, s_7_77, -1, 1, 0},
-{ 3, s_7_78, -1, 1, 0},
-{ 3, s_7_79, -1, 1, 0},
-{ 3, s_7_80, -1, 1, 0},
-{ 2, s_7_81, -1, 1, 0},
-{ 2, s_7_82, -1, 1, 0},
-{ 3, s_7_83, -1, 1, 0},
-{ 3, s_7_84, -1, 1, 0},
-{ 3, s_7_85, -1, 1, 0},
-{ 3, s_7_86, -1, 1, 0}
+static const struct among a_7[87] = {
+{ 4, s_7_0, 0, 1, 0},
+{ 4, s_7_1, 0, 1, 0},
+{ 3, s_7_2, 0, 1, 0},
+{ 3, s_7_3, 0, 1, 0},
+{ 3, s_7_4, 0, 1, 0},
+{ 3, s_7_5, 0, 1, 0},
+{ 3, s_7_6, 0, 1, 0},
+{ 3, s_7_7, 0, 1, 0},
+{ 6, s_7_8, 0, 1, 0},
+{ 6, s_7_9, 0, 1, 0},
+{ 4, s_7_10, 0, 1, 0},
+{ 4, s_7_11, 0, 1, 0},
+{ 3, s_7_12, 0, 1, 0},
+{ 3, s_7_13, 0, 1, 0},
+{ 3, s_7_14, 0, 1, 0},
+{ 4, s_7_15, 0, 1, 0},
+{ 3, s_7_16, 0, 1, 0},
+{ 5, s_7_17, -1, 1, 0},
+{ 5, s_7_18, -2, 1, 0},
+{ 5, s_7_19, -3, 1, 0},
+{ 3, s_7_20, 0, 1, 0},
+{ 5, s_7_21, -1, 1, 0},
+{ 5, s_7_22, -2, 1, 0},
+{ 3, s_7_23, 0, 1, 0},
+{ 6, s_7_24, 0, 1, 0},
+{ 6, s_7_25, 0, 1, 0},
+{ 3, s_7_26, 0, 1, 0},
+{ 4, s_7_27, 0, 1, 0},
+{ 4, s_7_28, 0, 1, 0},
+{ 4, s_7_29, 0, 1, 0},
+{ 4, s_7_30, 0, 1, 0},
+{ 4, s_7_31, 0, 1, 0},
+{ 4, s_7_32, 0, 1, 0},
+{ 4, s_7_33, 0, 1, 0},
+{ 3, s_7_34, 0, 1, 0},
+{ 3, s_7_35, 0, 1, 0},
+{ 6, s_7_36, 0, 1, 0},
+{ 6, s_7_37, 0, 1, 0},
+{ 3, s_7_38, 0, 1, 0},
+{ 3, s_7_39, 0, 1, 0},
+{ 3, s_7_40, 0, 1, 0},
+{ 3, s_7_41, 0, 1, 0},
+{ 4, s_7_42, 0, 1, 0},
+{ 4, s_7_43, 0, 1, 0},
+{ 4, s_7_44, 0, 1, 0},
+{ 4, s_7_45, 0, 1, 0},
+{ 4, s_7_46, 0, 1, 0},
+{ 5, s_7_47, 0, 1, 0},
+{ 5, s_7_48, 0, 1, 0},
+{ 5, s_7_49, 0, 1, 0},
+{ 5, s_7_50, 0, 1, 0},
+{ 5, s_7_51, 0, 1, 0},
+{ 6, s_7_52, 0, 1, 0},
+{ 4, s_7_53, 0, 1, 0},
+{ 4, s_7_54, 0, 1, 0},
+{ 6, s_7_55, -1, 1, 0},
+{ 6, s_7_56, -2, 1, 0},
+{ 4, s_7_57, 0, 1, 0},
+{ 3, s_7_58, 0, 1, 0},
+{ 6, s_7_59, -1, 1, 0},
+{ 5, s_7_60, -2, 1, 0},
+{ 5, s_7_61, -3, 1, 0},
+{ 5, s_7_62, -4, 1, 0},
+{ 6, s_7_63, 0, 1, 0},
+{ 6, s_7_64, 0, 1, 0},
+{ 3, s_7_65, 0, 1, 0},
+{ 6, s_7_66, -1, 1, 0},
+{ 5, s_7_67, -2, 1, 0},
+{ 5, s_7_68, -3, 1, 0},
+{ 5, s_7_69, -4, 1, 0},
+{ 8, s_7_70, 0, 1, 0},
+{ 8, s_7_71, 0, 1, 0},
+{ 6, s_7_72, 0, 1, 0},
+{ 6, s_7_73, 0, 1, 0},
+{ 6, s_7_74, 0, 1, 0},
+{ 3, s_7_75, 0, 1, 0},
+{ 3, s_7_76, 0, 1, 0},
+{ 3, s_7_77, 0, 1, 0},
+{ 3, s_7_78, 0, 1, 0},
+{ 3, s_7_79, 0, 1, 0},
+{ 3, s_7_80, 0, 1, 0},
+{ 2, s_7_81, 0, 1, 0},
+{ 2, s_7_82, 0, 1, 0},
+{ 3, s_7_83, 0, 1, 0},
+{ 3, s_7_84, 0, 1, 0},
+{ 3, s_7_85, 0, 1, 0},
+{ 3, s_7_86, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 };
@@ -470,63 +476,49 @@ static const unsigned char g_AEIO[] = { 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 
 static const unsigned char g_CG[] = { 17 };
 
-static const symbol s_0[] = { 0xE0 };
-static const symbol s_1[] = { 0xE8 };
-static const symbol s_2[] = { 0xEC };
-static const symbol s_3[] = { 0xF2 };
-static const symbol s_4[] = { 0xF9 };
-static const symbol s_5[] = { 'q', 'U' };
-static const symbol s_6[] = { 'U' };
-static const symbol s_7[] = { 'I' };
-static const symbol s_8[] = { 'i' };
-static const symbol s_9[] = { 'u' };
-static const symbol s_10[] = { 'e' };
-static const symbol s_11[] = { 'i', 'c' };
-static const symbol s_12[] = { 'l', 'o', 'g' };
-static const symbol s_13[] = { 'u' };
-static const symbol s_14[] = { 'e', 'n', 't', 'e' };
-static const symbol s_15[] = { 'a', 't' };
-static const symbol s_16[] = { 'a', 't' };
-static const symbol s_17[] = { 'i', 'c' };
-static const symbol s_18[] = { 'd', 'i', 'v', 'a', 'n', 'o' };
-static const symbol s_19[] = { 'd', 'i', 'v', 'a', 'n' };
-
 static int r_prelude(struct SN_env * z) {
     int among_var;
-    {   int c_test1 = z->c;
-        while(1) {
-            int c2 = z->c;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
             z->bra = z->c;
-            among_var = find_among(z, a_0, 7);
+            among_var = find_among(z, a_0, 7, 0);
             z->ket = z->c;
             switch (among_var) {
                 case 1:
-                    {   int ret = slice_from_s(z, 1, s_0);
+                    {
+                        int ret = slice_from_s(z, 1, s_0);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 2:
-                    {   int ret = slice_from_s(z, 1, s_1);
+                    {
+                        int ret = slice_from_s(z, 1, s_1);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 3:
-                    {   int ret = slice_from_s(z, 1, s_2);
+                    {
+                        int ret = slice_from_s(z, 1, s_2);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 4:
-                    {   int ret = slice_from_s(z, 1, s_3);
+                    {
+                        int ret = slice_from_s(z, 1, s_3);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 5:
-                    {   int ret = slice_from_s(z, 1, s_4);
+                    {
+                        int ret = slice_from_s(z, 1, s_4);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 6:
-                    {   int ret = slice_from_s(z, 2, s_5);
+                    {
+                        int ret = slice_from_s(z, 2, s_5);
                         if (ret < 0) return ret;
                     }
                     break;
@@ -537,155 +529,157 @@ static int r_prelude(struct SN_env * z) {
             }
             continue;
         lab0:
-            z->c = c2;
+            z->c = v_2;
             break;
         }
-        z->c = c_test1;
+        z->c = v_1;
     }
-    while(1) {
-        int c3 = z->c;
-        while(1) {
-            int c4 = z->c;
+    while (1) {
+        int v_3 = z->c;
+        while (1) {
+            int v_4 = z->c;
             if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
             z->bra = z->c;
-            {   int c5 = z->c;
-                if (z->c == z->l || z->p[z->c] != 'u') goto lab4;
+            do {
+                int v_5 = z->c;
+                if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
                 z->c++;
                 z->ket = z->c;
-                if (in_grouping(z, g_v, 97, 249, 0)) goto lab4;
-                {   int ret = slice_from_s(z, 1, s_6);
+                if (in_grouping(z, g_v, 97, 249, 0)) goto lab3;
+                {
+                    int ret = slice_from_s(z, 1, s_6);
                     if (ret < 0) return ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c5;
+                break;
+            lab3:
+                z->c = v_5;
                 if (z->c == z->l || z->p[z->c] != 'i') goto lab2;
                 z->c++;
                 z->ket = z->c;
                 if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
-                {   int ret = slice_from_s(z, 1, s_7);
+                {
+                    int ret = slice_from_s(z, 1, s_7);
                     if (ret < 0) return ret;
                 }
-            }
-        lab3:
-            z->c = c4;
+            } while (0);
+            z->c = v_4;
             break;
         lab2:
-            z->c = c4;
+            z->c = v_4;
             if (z->c >= z->l) goto lab1;
             z->c++;
         }
         continue;
     lab1:
-        z->c = c3;
+        z->c = v_3;
         break;
     }
     return 1;
 }
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
-            {   int c3 = z->c;
-                if (out_grouping(z, g_v, 97, 249, 0)) goto lab4;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping(z, g_v, 97, 249, 0)) goto lab1;
+            do {
+                int v_3 = z->c;
+                if (out_grouping(z, g_v, 97, 249, 0)) goto lab2;
                 {
                     int ret = out_grouping(z, g_v, 97, 249, 1);
-                    if (ret < 0) goto lab4;
+                    if (ret < 0) goto lab2;
                     z->c += ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c3;
-                if (in_grouping(z, g_v, 97, 249, 0)) goto lab2;
-
+                break;
+            lab2:
+                z->c = v_3;
+                if (in_grouping(z, g_v, 97, 249, 0)) goto lab1;
                 {
                     int ret = in_grouping(z, g_v, 97, 249, 1);
-                    if (ret < 0) goto lab2;
+                    if (ret < 0) goto lab1;
                     z->c += ret;
                 }
-            }
+            } while (0);
+            break;
+        lab1:
+            z->c = v_2;
+            if (!(eq_s(z, 5, s_8))) goto lab3;
+            break;
         lab3:
-            goto lab1;
-        lab2:
-            z->c = c2;
+            z->c = v_2;
             if (out_grouping(z, g_v, 97, 249, 0)) goto lab0;
-            {   int c4 = z->c;
-                if (out_grouping(z, g_v, 97, 249, 0)) goto lab6;
-
+            do {
+                int v_4 = z->c;
+                if (out_grouping(z, g_v, 97, 249, 0)) goto lab4;
                 {
                     int ret = out_grouping(z, g_v, 97, 249, 1);
-                    if (ret < 0) goto lab6;
+                    if (ret < 0) goto lab4;
                     z->c += ret;
                 }
-                goto lab5;
-            lab6:
-                z->c = c4;
+                break;
+            lab4:
+                z->c = v_4;
                 if (in_grouping(z, g_v, 97, 249, 0)) goto lab0;
                 if (z->c >= z->l) goto lab0;
                 z->c++;
-            }
-        lab5:
-            ;
-        }
-    lab1:
-        z->I[2] = z->c;
+            } while (0);
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c5 = z->c;
-
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 249, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab5;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 249, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab5;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 249, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab5;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 249, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab5;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab7:
-        z->c = c5;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab5:
+        z->c = v_5;
     }
     return 1;
 }
 
 static int r_postlude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else
-        among_var = find_among(z, a_1, 3);
+        among_var = find_among(z, a_1, 3, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_8);
+                {
+                    int ret = slice_from_s(z, 1, s_9);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_9);
+                {
+                    int ret = slice_from_s(z, 1, s_10);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -696,44 +690,47 @@ static int r_postlude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_attached_pronoun(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((33314 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    if (!find_among_b(z, a_2, 37)) return 0;
+    if (!find_among_b(z, a_2, 37, 0)) return 0;
     z->bra = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0;
-    among_var = find_among_b(z, a_3, 5);
+    among_var = find_among_b(z, a_3, 5, 0);
     if (!among_var) return 0;
-    {   int ret = r_RV(z);
+    {
+        int ret = r_RV(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_10);
+            {
+                int ret = slice_from_s(z, 1, s_11);
                 if (ret < 0) return ret;
             }
             break;
@@ -744,34 +741,41 @@ static int r_attached_pronoun(struct SN_env * z) {
 static int r_standard_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_6, 51);
+    among_var = find_among_b(z, a_6, 51, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m1 = z->l - z->c; (void)m1;
+            {
+                int v_1 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m1; goto lab0; }
+                if (!(eq_s_b(z, 2, s_12))) { z->c = z->l - v_1; goto lab0; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m1; goto lab0; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_1; goto lab0; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab0:
@@ -779,67 +783,82 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 3:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_12);
+            {
+                int ret = slice_from_s(z, 3, s_13);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 1, s_13);
+            {
+                int ret = slice_from_s(z, 1, s_14);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 4, s_14);
+            {
+                int ret = slice_from_s(z, 4, s_15);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m2 = z->l - z->c; (void)m2;
+            {
+                int v_2 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4722696 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; }
-                among_var = find_among_b(z, a_4, 4);
-                if (!among_var) { z->c = z->l - m2; goto lab1; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4722696 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_2; goto lab1; }
+                among_var = find_among_b(z, a_4, 4, 0);
+                if (!among_var) { z->c = z->l - v_2; goto lab1; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m2; goto lab1; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_2; goto lab1; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 switch (among_var) {
                     case 1:
                         z->ket = z->c;
-                        if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m2; goto lab1; }
+                        if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - v_2; goto lab1; }
                         z->bra = z->c;
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m2; goto lab1; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_2; goto lab1; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
@@ -849,22 +868,27 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 8:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m3 = z->l - z->c; (void)m3;
+            {
+                int v_3 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; }
-                if (!find_among_b(z, a_5, 3)) { z->c = z->l - m3; goto lab2; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_3; goto lab2; }
+                if (!find_among_b(z, a_5, 3, 0)) { z->c = z->l - v_3; goto lab2; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m3; goto lab2; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab2:
@@ -872,31 +896,38 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 9:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m4 = z->l - z->c; (void)m4;
+            {
+                int v_4 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m4; goto lab3; }
+                if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - v_4; goto lab3; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m4; goto lab3; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_4; goto lab3; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m4; goto lab3; }
+                if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - v_4; goto lab3; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m4; goto lab3; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_4; goto lab3; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab3:
@@ -908,58 +939,67 @@ static int r_standard_suffix(struct SN_env * z) {
 }
 
 static int r_verb_suffix(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        if (!find_among_b(z, a_7, 87)) { z->lb = mlimit1; return 0; }
+        if (!find_among_b(z, a_7, 87, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     return 1;
 }
 
 static int r_vowel_suffix(struct SN_env * z) {
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
-        if (in_grouping_b(z, g_AEIO, 97, 242, 0)) { z->c = z->l - m1; goto lab0; }
+        if (in_grouping_b(z, g_AEIO, 97, 242, 0)) { z->c = z->l - v_1; goto lab0; }
         z->bra = z->c;
-        {   int ret = r_RV(z);
-            if (ret == 0) { z->c = z->l - m1; goto lab0; }
+        {
+            int ret = r_RV(z);
+            if (ret == 0) { z->c = z->l - v_1; goto lab0; }
             if (ret < 0) return ret;
         }
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] != 'i') { z->c = z->l - m1; goto lab0; }
+        if (z->c <= z->lb || z->p[z->c - 1] != 'i') { z->c = z->l - v_1; goto lab0; }
         z->c--;
         z->bra = z->c;
-        {   int ret = r_RV(z);
-            if (ret == 0) { z->c = z->l - m1; goto lab0; }
+        {
+            int ret = r_RV(z);
+            if (ret == 0) { z->c = z->l - v_1; goto lab0; }
             if (ret < 0) return ret;
         }
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab0:
         ;
     }
-    {   int m2 = z->l - z->c; (void)m2;
+    {
+        int v_2 = z->l - z->c;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] != 'h') { z->c = z->l - m2; goto lab1; }
+        if (z->c <= z->lb || z->p[z->c - 1] != 'h') { z->c = z->l - v_2; goto lab1; }
         z->c--;
         z->bra = z->c;
-        if (in_grouping_b(z, g_CG, 99, 103, 0)) { z->c = z->l - m2; goto lab1; }
-        {   int ret = r_RV(z);
-            if (ret == 0) { z->c = z->l - m2; goto lab1; }
+        if (in_grouping_b(z, g_CG, 99, 103, 0)) { z->c = z->l - v_2; goto lab1; }
+        {
+            int ret = r_RV(z);
+            if (ret == 0) { z->c = z->l - v_2; goto lab1; }
             if (ret < 0) return ret;
         }
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
     lab1:
@@ -968,81 +1008,80 @@ static int r_vowel_suffix(struct SN_env * z) {
     return 1;
 }
 
-static int r_exceptions(struct SN_env * z) {
-    z->bra = z->c;
-    if (!(eq_s(z, 6, s_18))) return 0;
-    if (z->c < z->l) return 0;
-    z->ket = z->c;
-    {   int ret = slice_from_s(z, 5, s_19);
-        if (ret < 0) return ret;
-    }
-    return 1;
-}
-
 extern int italian_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_exceptions(z);
-            if (ret == 0) goto lab1;
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_prelude(z);
             if (ret < 0) return ret;
         }
-        goto lab0;
-    lab1:
-        z->c = c1;
-        {   int c2 = z->c;
-            {   int ret = r_prelude(z);
-                if (ret < 0) return ret;
-            }
-            z->c = c2;
-        }
-
-        {   int ret = r_mark_regions(z);
+        z->c = v_1;
+    }
+    {
+        int ret = r_mark_regions(z);
+        if (ret < 0) return ret;
+    }
+    z->lb = z->c; z->c = z->l;
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_attached_pronoun(z);
             if (ret < 0) return ret;
         }
-        z->lb = z->c; z->c = z->l;
-
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int ret = r_attached_pronoun(z);
+        z->c = z->l - v_2;
+    }
+    {
+        int v_3 = z->l - z->c;
+        do {
+            int v_4 = z->l - z->c;
+            {
+                int ret = r_standard_suffix(z);
+                if (ret == 0) goto lab1;
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m3;
-        }
-        {   int m4 = z->l - z->c; (void)m4;
-            {   int m5 = z->l - z->c; (void)m5;
-                {   int ret = r_standard_suffix(z);
-                    if (ret == 0) goto lab4;
-                    if (ret < 0) return ret;
-                }
-                goto lab3;
-            lab4:
-                z->c = z->l - m5;
-                {   int ret = r_verb_suffix(z);
-                    if (ret == 0) goto lab2;
-                    if (ret < 0) return ret;
-                }
-            }
-        lab3:
-        lab2:
-            z->c = z->l - m4;
-        }
-        {   int m6 = z->l - z->c; (void)m6;
-            {   int ret = r_vowel_suffix(z);
+            break;
+        lab1:
+            z->c = z->l - v_4;
+            {
+                int ret = r_verb_suffix(z);
+                if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m6;
+        } while (0);
+    lab0:
+        z->c = z->l - v_3;
+    }
+    {
+        int v_5 = z->l - z->c;
+        {
+            int ret = r_vowel_suffix(z);
+            if (ret < 0) return ret;
         }
-        z->c = z->lb;
-        {   int c7 = z->c;
-            {   int ret = r_postlude(z);
-                if (ret < 0) return ret;
-            }
-            z->c = c7;
+        z->c = z->l - v_5;
+    }
+    z->c = z->lb;
+    {
+        int v_6 = z->c;
+        {
+            int ret = r_postlude(z);
+            if (ret < 0) return ret;
         }
+        z->c = v_6;
     }
-lab0:
     return 1;
 }
 
-extern struct SN_env * italian_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * italian_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void italian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void italian_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index c10c0d761f1f5ffe8843798087ad89cf61dbe7e9..66978be21d82d21e368005341caa36505b9ccca9 100644 (file)
@@ -1,6 +1,17 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from norwegian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_norwegian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,187 +20,234 @@ extern int norwegian_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_other_suffix(struct SN_env * z);
 static int r_consonant_pair(struct SN_env * z);
 static int r_main_suffix(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 
-extern struct SN_env * norwegian_ISO_8859_1_create_env(void);
-extern void norwegian_ISO_8859_1_close_env(struct SN_env * z);
-
-
-#ifdef __cplusplus
-}
-#endif
-static const symbol s_0_0[1] = { 'a' };
-static const symbol s_0_1[1] = { 'e' };
-static const symbol s_0_2[3] = { 'e', 'd', 'e' };
-static const symbol s_0_3[4] = { 'a', 'n', 'd', 'e' };
-static const symbol s_0_4[4] = { 'e', 'n', 'd', 'e' };
-static const symbol s_0_5[3] = { 'a', 'n', 'e' };
-static const symbol s_0_6[3] = { 'e', 'n', 'e' };
-static const symbol s_0_7[6] = { 'h', 'e', 't', 'e', 'n', 'e' };
-static const symbol s_0_8[4] = { 'e', 'r', 't', 'e' };
-static const symbol s_0_9[2] = { 'e', 'n' };
-static const symbol s_0_10[5] = { 'h', 'e', 't', 'e', 'n' };
-static const symbol s_0_11[2] = { 'a', 'r' };
-static const symbol s_0_12[2] = { 'e', 'r' };
-static const symbol s_0_13[5] = { 'h', 'e', 't', 'e', 'r' };
-static const symbol s_0_14[1] = { 's' };
-static const symbol s_0_15[2] = { 'a', 's' };
-static const symbol s_0_16[2] = { 'e', 's' };
-static const symbol s_0_17[4] = { 'e', 'd', 'e', 's' };
-static const symbol s_0_18[5] = { 'e', 'n', 'd', 'e', 's' };
-static const symbol s_0_19[4] = { 'e', 'n', 'e', 's' };
-static const symbol s_0_20[7] = { 'h', 'e', 't', 'e', 'n', 'e', 's' };
-static const symbol s_0_21[3] = { 'e', 'n', 's' };
-static const symbol s_0_22[6] = { 'h', 'e', 't', 'e', 'n', 's' };
-static const symbol s_0_23[3] = { 'e', 'r', 's' };
-static const symbol s_0_24[3] = { 'e', 't', 's' };
-static const symbol s_0_25[2] = { 'e', 't' };
-static const symbol s_0_26[3] = { 'h', 'e', 't' };
-static const symbol s_0_27[3] = { 'e', 'r', 't' };
-static const symbol s_0_28[3] = { 'a', 's', 't' };
+static const symbol s_0[] = { 'e', 'r' };
 
-static const struct among a_0[29] =
-{
-{ 1, s_0_0, -1, 1, 0},
-{ 1, s_0_1, -1, 1, 0},
-{ 3, s_0_2, 1, 1, 0},
-{ 4, s_0_3, 1, 1, 0},
-{ 4, s_0_4, 1, 1, 0},
-{ 3, s_0_5, 1, 1, 0},
-{ 3, s_0_6, 1, 1, 0},
-{ 6, s_0_7, 6, 1, 0},
-{ 4, s_0_8, 1, 3, 0},
-{ 2, s_0_9, -1, 1, 0},
-{ 5, s_0_10, 9, 1, 0},
-{ 2, s_0_11, -1, 1, 0},
-{ 2, s_0_12, -1, 1, 0},
-{ 5, s_0_13, 12, 1, 0},
-{ 1, s_0_14, -1, 2, 0},
-{ 2, s_0_15, 14, 1, 0},
-{ 2, s_0_16, 14, 1, 0},
-{ 4, s_0_17, 16, 1, 0},
-{ 5, s_0_18, 16, 1, 0},
-{ 4, s_0_19, 16, 1, 0},
-{ 7, s_0_20, 19, 1, 0},
-{ 3, s_0_21, 14, 1, 0},
-{ 6, s_0_22, 21, 1, 0},
-{ 3, s_0_23, 14, 1, 0},
-{ 3, s_0_24, 14, 1, 0},
-{ 2, s_0_25, -1, 1, 0},
-{ 3, s_0_26, 25, 1, 0},
-{ 3, s_0_27, -1, 3, 0},
-{ 3, s_0_28, -1, 1, 0}
+static const symbol s_0_1[3] = { 'i', 'n', 'd' };
+static const symbol s_0_2[2] = { 'k', 'k' };
+static const symbol s_0_3[2] = { 'n', 'k' };
+static const symbol s_0_4[3] = { 'a', 'm', 'm' };
+static const symbol s_0_5[3] = { 'o', 'm', 'm' };
+static const symbol s_0_6[3] = { 'k', 'a', 'p' };
+static const symbol s_0_7[4] = { 's', 'k', 'a', 'p' };
+static const symbol s_0_8[2] = { 'p', 'p' };
+static const symbol s_0_9[2] = { 'l', 't' };
+static const symbol s_0_10[3] = { 'a', 's', 't' };
+static const symbol s_0_11[3] = { 0xF8, 's', 't' };
+static const symbol s_0_12[1] = { 'v' };
+static const symbol s_0_13[3] = { 'h', 'a', 'v' };
+static const symbol s_0_14[3] = { 'g', 'i', 'v' };
+static const struct among a_0[15] = {
+{ 0, 0, 0, 1, 0},
+{ 3, s_0_1, -1, -1, 0},
+{ 2, s_0_2, -2, -1, 0},
+{ 2, s_0_3, -3, -1, 0},
+{ 3, s_0_4, -4, -1, 0},
+{ 3, s_0_5, -5, -1, 0},
+{ 3, s_0_6, -6, -1, 0},
+{ 4, s_0_7, -1, 1, 0},
+{ 2, s_0_8, -8, -1, 0},
+{ 2, s_0_9, -9, -1, 0},
+{ 3, s_0_10, -10, -1, 0},
+{ 3, s_0_11, -11, -1, 0},
+{ 1, s_0_12, -12, -1, 0},
+{ 3, s_0_13, -1, 1, 0},
+{ 3, s_0_14, -2, 1, 0}
 };
 
-static const symbol s_1_0[2] = { 'd', 't' };
-static const symbol s_1_1[2] = { 'v', 't' };
-
-static const struct among a_1[2] =
-{
-{ 2, s_1_0, -1, -1, 0},
-{ 2, s_1_1, -1, -1, 0}
+static const symbol s_1_0[1] = { 'a' };
+static const symbol s_1_1[1] = { 'e' };
+static const symbol s_1_2[3] = { 'e', 'd', 'e' };
+static const symbol s_1_3[4] = { 'a', 'n', 'd', 'e' };
+static const symbol s_1_4[4] = { 'e', 'n', 'd', 'e' };
+static const symbol s_1_5[3] = { 'a', 'n', 'e' };
+static const symbol s_1_6[3] = { 'e', 'n', 'e' };
+static const symbol s_1_7[6] = { 'h', 'e', 't', 'e', 'n', 'e' };
+static const symbol s_1_8[4] = { 'e', 'r', 't', 'e' };
+static const symbol s_1_9[2] = { 'e', 'n' };
+static const symbol s_1_10[5] = { 'h', 'e', 't', 'e', 'n' };
+static const symbol s_1_11[2] = { 'a', 'r' };
+static const symbol s_1_12[2] = { 'e', 'r' };
+static const symbol s_1_13[5] = { 'h', 'e', 't', 'e', 'r' };
+static const symbol s_1_14[1] = { 's' };
+static const symbol s_1_15[2] = { 'a', 's' };
+static const symbol s_1_16[2] = { 'e', 's' };
+static const symbol s_1_17[4] = { 'e', 'd', 'e', 's' };
+static const symbol s_1_18[5] = { 'e', 'n', 'd', 'e', 's' };
+static const symbol s_1_19[4] = { 'e', 'n', 'e', 's' };
+static const symbol s_1_20[7] = { 'h', 'e', 't', 'e', 'n', 'e', 's' };
+static const symbol s_1_21[3] = { 'e', 'n', 's' };
+static const symbol s_1_22[6] = { 'h', 'e', 't', 'e', 'n', 's' };
+static const symbol s_1_23[3] = { 'e', 'r', 's' };
+static const symbol s_1_24[3] = { 'e', 't', 's' };
+static const symbol s_1_25[2] = { 'e', 't' };
+static const symbol s_1_26[3] = { 'h', 'e', 't' };
+static const symbol s_1_27[3] = { 'e', 'r', 't' };
+static const symbol s_1_28[3] = { 'a', 's', 't' };
+static const struct among a_1[29] = {
+{ 1, s_1_0, 0, 1, 0},
+{ 1, s_1_1, 0, 1, 0},
+{ 3, s_1_2, -1, 1, 0},
+{ 4, s_1_3, -2, 1, 0},
+{ 4, s_1_4, -3, 1, 0},
+{ 3, s_1_5, -4, 1, 0},
+{ 3, s_1_6, -5, 1, 0},
+{ 6, s_1_7, -1, 1, 0},
+{ 4, s_1_8, -7, 4, 0},
+{ 2, s_1_9, 0, 1, 0},
+{ 5, s_1_10, -1, 1, 0},
+{ 2, s_1_11, 0, 1, 0},
+{ 2, s_1_12, 0, 1, 0},
+{ 5, s_1_13, -1, 1, 0},
+{ 1, s_1_14, 0, 3, 0},
+{ 2, s_1_15, -1, 1, 0},
+{ 2, s_1_16, -2, 1, 0},
+{ 4, s_1_17, -1, 1, 0},
+{ 5, s_1_18, -2, 1, 0},
+{ 4, s_1_19, -3, 1, 0},
+{ 7, s_1_20, -1, 1, 0},
+{ 3, s_1_21, -7, 1, 0},
+{ 6, s_1_22, -1, 1, 0},
+{ 3, s_1_23, -9, 2, 0},
+{ 3, s_1_24, -10, 1, 0},
+{ 2, s_1_25, 0, 1, 0},
+{ 3, s_1_26, -1, 1, 0},
+{ 3, s_1_27, 0, 4, 0},
+{ 3, s_1_28, 0, 1, 0}
 };
 
-static const symbol s_2_0[3] = { 'l', 'e', 'g' };
-static const symbol s_2_1[4] = { 'e', 'l', 'e', 'g' };
-static const symbol s_2_2[2] = { 'i', 'g' };
-static const symbol s_2_3[3] = { 'e', 'i', 'g' };
-static const symbol s_2_4[3] = { 'l', 'i', 'g' };
-static const symbol s_2_5[4] = { 'e', 'l', 'i', 'g' };
-static const symbol s_2_6[3] = { 'e', 'l', 's' };
-static const symbol s_2_7[3] = { 'l', 'o', 'v' };
-static const symbol s_2_8[4] = { 'e', 'l', 'o', 'v' };
-static const symbol s_2_9[4] = { 's', 'l', 'o', 'v' };
-static const symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
-
-static const struct among a_2[11] =
-{
-{ 3, s_2_0, -1, 1, 0},
-{ 4, s_2_1, 0, 1, 0},
-{ 2, s_2_2, -1, 1, 0},
-{ 3, s_2_3, 2, 1, 0},
-{ 3, s_2_4, 2, 1, 0},
-{ 4, s_2_5, 4, 1, 0},
-{ 3, s_2_6, -1, 1, 0},
-{ 3, s_2_7, -1, 1, 0},
-{ 4, s_2_8, 7, 1, 0},
-{ 4, s_2_9, 7, 1, 0},
-{ 7, s_2_10, 9, 1, 0}
+static const symbol s_2_0[2] = { 'd', 't' };
+static const symbol s_2_1[2] = { 'v', 't' };
+static const struct among a_2[2] = {
+{ 2, s_2_0, 0, -1, 0},
+{ 2, s_2_1, 0, -1, 0}
 };
 
-static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
+static const symbol s_3_0[3] = { 'l', 'e', 'g' };
+static const symbol s_3_1[4] = { 'e', 'l', 'e', 'g' };
+static const symbol s_3_2[2] = { 'i', 'g' };
+static const symbol s_3_3[3] = { 'e', 'i', 'g' };
+static const symbol s_3_4[3] = { 'l', 'i', 'g' };
+static const symbol s_3_5[4] = { 'e', 'l', 'i', 'g' };
+static const symbol s_3_6[3] = { 'e', 'l', 's' };
+static const symbol s_3_7[3] = { 'l', 'o', 'v' };
+static const symbol s_3_8[4] = { 'e', 'l', 'o', 'v' };
+static const symbol s_3_9[4] = { 's', 'l', 'o', 'v' };
+static const symbol s_3_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
+static const struct among a_3[11] = {
+{ 3, s_3_0, 0, 1, 0},
+{ 4, s_3_1, -1, 1, 0},
+{ 2, s_3_2, 0, 1, 0},
+{ 3, s_3_3, -1, 1, 0},
+{ 3, s_3_4, -2, 1, 0},
+{ 4, s_3_5, -1, 1, 0},
+{ 3, s_3_6, 0, 1, 0},
+{ 3, s_3_7, 0, 1, 0},
+{ 4, s_3_8, -1, 1, 0},
+{ 4, s_3_9, -2, 1, 0},
+{ 7, s_3_10, -1, 1, 0}
+};
 
-static const unsigned char g_s_ending[] = { 119, 125, 149, 1 };
+static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 2, 142 };
 
-static const symbol s_0[] = { 'e', 'r' };
+static const unsigned char g_s_ending[] = { 119, 125, 148, 1 };
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    {   int c_test1 = z->c;
-z->c = z->c + 3;
-        if (z->c > z->l) return 0;
-        z->I[0] = z->c;
-        z->c = c_test1;
+    int i_x;
+    ((SN_local *)z)->i_p1 = z->l;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        i_x = z->c;
+        z->c = v_1;
+    }
+    {
+        int ret = out_grouping(z, g_v, 97, 248, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
     }
-
-    if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0;
-
     {
         int ret = in_grouping(z, g_v, 97, 248, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[1] = z->c;
-
-    if (z->I[1] >= z->I[0]) goto lab0;
-    z->I[1] = z->I[0];
+    ((SN_local *)z)->i_p1 = z->c;
+    if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
+    ((SN_local *)z)->i_p1 = i_x;
 lab0:
     return 1;
 }
 
 static int r_main_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        among_var = find_among_b(z, a_0, 29);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        among_var = find_among_b(z, a_1, 29, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int m2 = z->l - z->c; (void)m2;
-                if (in_grouping_b(z, g_s_ending, 98, 122, 0)) goto lab1;
-                goto lab0;
+            if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((5318672 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 1; else
+            among_var = find_among_b(z, a_0, 15, 0);
+            switch (among_var) {
+                case 1:
+                    {
+                        int ret = slice_del(z);
+                        if (ret < 0) return ret;
+                    }
+                    break;
+            }
+            break;
+        case 3:
+            do {
+                int v_2 = z->l - z->c;
+                if (in_grouping_b(z, g_s_ending, 98, 122, 0)) goto lab0;
+                break;
+            lab0:
+                z->c = z->l - v_2;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'r') goto lab1;
+                z->c--;
+                {
+                    int v_3 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab2;
+                    z->c--;
+                    goto lab1;
+                lab2:
+                    z->c = z->l - v_3;
+                }
+                break;
             lab1:
-                z->c = z->l - m2;
+                z->c = z->l - v_2;
                 if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0;
                 z->c--;
                 if (out_grouping_b(z, g_v, 97, 248, 0)) return 0;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
-        case 3:
-            {   int ret = slice_from_s(z, 2, s_0);
+        case 4:
+            {
+                int ret = slice_from_s(z, 2, s_0);
                 if (ret < 0) return ret;
             }
             break;
@@ -198,77 +256,95 @@ static int r_main_suffix(struct SN_env * z) {
 }
 
 static int r_consonant_pair(struct SN_env * z) {
-    {   int m_test1 = z->l - z->c;
-
-        {   int mlimit2;
-            if (z->c < z->I[1]) return 0;
-            mlimit2 = z->lb; z->lb = z->I[1];
+    {
+        int v_1 = z->l - z->c;
+        {
+            int v_2;
+            if (z->c < ((SN_local *)z)->i_p1) return 0;
+            v_2 = z->lb; z->lb = ((SN_local *)z)->i_p1;
             z->ket = z->c;
-            if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit2; return 0; }
-            if (!find_among_b(z, a_1, 2)) { z->lb = mlimit2; return 0; }
+            if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = v_2; return 0; }
+            if (!find_among_b(z, a_2, 2, 0)) { z->lb = v_2; return 0; }
             z->bra = z->c;
-            z->lb = mlimit2;
+            z->lb = v_2;
         }
-        z->c = z->l - m_test1;
+        z->c = z->l - v_1;
     }
     if (z->c <= z->lb) return 0;
     z->c--;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 static int r_other_suffix(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        if (!find_among_b(z, a_2, 11)) { z->lb = mlimit1; return 0; }
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        if (!find_among_b(z, a_3, 11, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int norwegian_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_main_suffix(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_main_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_consonant_pair(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_consonant_pair(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_other_suffix(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_other_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * norwegian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * norwegian_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void norwegian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void norwegian_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index b8be0a26e4f0a46bb073177dedb4e50095a00e63..e7f9be15fc5b24ab48cb19a9dba85e5d5d403239 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from porter.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_porter.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +21,7 @@ extern int porter_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_Step_5b(struct SN_env * z);
 static int r_Step_5a(struct SN_env * z);
 static int r_Step_4(struct SN_env * z);
@@ -20,29 +33,41 @@ static int r_Step_1a(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
 static int r_shortv(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * porter_ISO_8859_1_create_env(void);
-extern void porter_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 's', 's' };
+static const symbol s_1[] = { 'i' };
+static const symbol s_2[] = { 'e', 'e' };
+static const symbol s_3[] = { 'e' };
+static const symbol s_4[] = { 'e' };
+static const symbol s_5[] = { 'i' };
+static const symbol s_6[] = { 't', 'i', 'o', 'n' };
+static const symbol s_7[] = { 'e', 'n', 'c', 'e' };
+static const symbol s_8[] = { 'a', 'n', 'c', 'e' };
+static const symbol s_9[] = { 'a', 'b', 'l', 'e' };
+static const symbol s_10[] = { 'e', 'n', 't' };
+static const symbol s_11[] = { 'e' };
+static const symbol s_12[] = { 'i', 'z', 'e' };
+static const symbol s_13[] = { 'a', 't', 'e' };
+static const symbol s_14[] = { 'a', 'l' };
+static const symbol s_15[] = { 'f', 'u', 'l' };
+static const symbol s_16[] = { 'o', 'u', 's' };
+static const symbol s_17[] = { 'i', 'v', 'e' };
+static const symbol s_18[] = { 'b', 'l', 'e' };
+static const symbol s_19[] = { 'a', 'l' };
+static const symbol s_20[] = { 'i', 'c' };
+static const symbol s_21[] = { 'Y' };
+static const symbol s_22[] = { 'Y' };
+static const symbol s_23[] = { 'y' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[1] = { 's' };
 static const symbol s_0_1[3] = { 'i', 'e', 's' };
 static const symbol s_0_2[4] = { 's', 's', 'e', 's' };
 static const symbol s_0_3[2] = { 's', 's' };
-
-static const struct among a_0[4] =
-{
-{ 1, s_0_0, -1, 3, 0},
-{ 3, s_0_1, 0, 2, 0},
-{ 4, s_0_2, 0, 1, 0},
-{ 2, s_0_3, 0, -1, 0}
+static const struct among a_0[4] = {
+{ 1, s_0_0, 0, 3, 0},
+{ 3, s_0_1, -1, 2, 0},
+{ 4, s_0_2, -2, 1, 0},
+{ 2, s_0_3, -3, -1, 0}
 };
 
 static const symbol s_1_1[2] = { 'b', 'b' };
@@ -57,33 +82,29 @@ static const symbol s_1_9[2] = { 'r', 'r' };
 static const symbol s_1_10[2] = { 'a', 't' };
 static const symbol s_1_11[2] = { 't', 't' };
 static const symbol s_1_12[2] = { 'i', 'z' };
-
-static const struct among a_1[13] =
-{
-{ 0, 0, -1, 3, 0},
-{ 2, s_1_1, 0, 2, 0},
-{ 2, s_1_2, 0, 2, 0},
-{ 2, s_1_3, 0, 2, 0},
-{ 2, s_1_4, 0, 2, 0},
-{ 2, s_1_5, 0, 1, 0},
-{ 2, s_1_6, 0, 2, 0},
-{ 2, s_1_7, 0, 2, 0},
-{ 2, s_1_8, 0, 2, 0},
-{ 2, s_1_9, 0, 2, 0},
-{ 2, s_1_10, 0, 1, 0},
-{ 2, s_1_11, 0, 2, 0},
-{ 2, s_1_12, 0, 1, 0}
+static const struct among a_1[13] = {
+{ 0, 0, 0, 3, 0},
+{ 2, s_1_1, -1, 2, 0},
+{ 2, s_1_2, -2, 2, 0},
+{ 2, s_1_3, -3, 2, 0},
+{ 2, s_1_4, -4, 2, 0},
+{ 2, s_1_5, -5, 1, 0},
+{ 2, s_1_6, -6, 2, 0},
+{ 2, s_1_7, -7, 2, 0},
+{ 2, s_1_8, -8, 2, 0},
+{ 2, s_1_9, -9, 2, 0},
+{ 2, s_1_10, -10, 1, 0},
+{ 2, s_1_11, -11, 2, 0},
+{ 2, s_1_12, -12, 1, 0}
 };
 
 static const symbol s_2_0[2] = { 'e', 'd' };
 static const symbol s_2_1[3] = { 'e', 'e', 'd' };
 static const symbol s_2_2[3] = { 'i', 'n', 'g' };
-
-static const struct among a_2[3] =
-{
-{ 2, s_2_0, -1, 2, 0},
-{ 3, s_2_1, 0, 1, 0},
-{ 3, s_2_2, -1, 2, 0}
+static const struct among a_2[3] = {
+{ 2, s_2_0, 0, 2, 0},
+{ 3, s_2_1, -1, 1, 0},
+{ 3, s_2_2, 0, 2, 0}
 };
 
 static const symbol s_3_0[4] = { 'a', 'n', 'c', 'i' };
@@ -106,29 +127,27 @@ static const symbol s_3_16[4] = { 'a', 't', 'o', 'r' };
 static const symbol s_3_17[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
 static const symbol s_3_18[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
 static const symbol s_3_19[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
-
-static const struct among a_3[20] =
-{
-{ 4, s_3_0, -1, 3, 0},
-{ 4, s_3_1, -1, 2, 0},
-{ 4, s_3_2, -1, 4, 0},
-{ 3, s_3_3, -1, 6, 0},
-{ 4, s_3_4, -1, 9, 0},
-{ 5, s_3_5, -1, 11, 0},
-{ 5, s_3_6, -1, 5, 0},
-{ 5, s_3_7, -1, 9, 0},
-{ 6, s_3_8, -1, 13, 0},
-{ 5, s_3_9, -1, 12, 0},
-{ 6, s_3_10, -1, 1, 0},
-{ 7, s_3_11, 10, 8, 0},
-{ 5, s_3_12, -1, 9, 0},
-{ 5, s_3_13, -1, 8, 0},
-{ 7, s_3_14, 13, 7, 0},
-{ 4, s_3_15, -1, 7, 0},
-{ 4, s_3_16, -1, 8, 0},
-{ 7, s_3_17, -1, 12, 0},
-{ 7, s_3_18, -1, 10, 0},
-{ 7, s_3_19, -1, 11, 0}
+static const struct among a_3[20] = {
+{ 4, s_3_0, 0, 3, 0},
+{ 4, s_3_1, 0, 2, 0},
+{ 4, s_3_2, 0, 4, 0},
+{ 3, s_3_3, 0, 6, 0},
+{ 4, s_3_4, 0, 9, 0},
+{ 5, s_3_5, 0, 11, 0},
+{ 5, s_3_6, 0, 5, 0},
+{ 5, s_3_7, 0, 9, 0},
+{ 6, s_3_8, 0, 13, 0},
+{ 5, s_3_9, 0, 12, 0},
+{ 6, s_3_10, 0, 1, 0},
+{ 7, s_3_11, -1, 8, 0},
+{ 5, s_3_12, 0, 9, 0},
+{ 5, s_3_13, 0, 8, 0},
+{ 7, s_3_14, -1, 7, 0},
+{ 4, s_3_15, 0, 7, 0},
+{ 4, s_3_16, 0, 8, 0},
+{ 7, s_3_17, 0, 12, 0},
+{ 7, s_3_18, 0, 10, 0},
+{ 7, s_3_19, 0, 11, 0}
 };
 
 static const symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' };
@@ -138,16 +157,14 @@ static const symbol s_4_3[5] = { 'i', 'c', 'i', 't', 'i' };
 static const symbol s_4_4[4] = { 'i', 'c', 'a', 'l' };
 static const symbol s_4_5[3] = { 'f', 'u', 'l' };
 static const symbol s_4_6[4] = { 'n', 'e', 's', 's' };
-
-static const struct among a_4[7] =
-{
-{ 5, s_4_0, -1, 2, 0},
-{ 5, s_4_1, -1, 3, 0},
-{ 5, s_4_2, -1, 1, 0},
-{ 5, s_4_3, -1, 2, 0},
-{ 4, s_4_4, -1, 2, 0},
-{ 3, s_4_5, -1, 3, 0},
-{ 4, s_4_6, -1, 3, 0}
+static const struct among a_4[7] = {
+{ 5, s_4_0, 0, 2, 0},
+{ 5, s_4_1, 0, 3, 0},
+{ 5, s_4_2, 0, 1, 0},
+{ 5, s_4_3, 0, 2, 0},
+{ 4, s_4_4, 0, 2, 0},
+{ 3, s_4_5, 0, 3, 0},
+{ 4, s_4_6, 0, 3, 0}
 };
 
 static const symbol s_5_0[2] = { 'i', 'c' };
@@ -169,94 +186,69 @@ static const symbol s_5_15[3] = { 'e', 'n', 't' };
 static const symbol s_5_16[4] = { 'm', 'e', 'n', 't' };
 static const symbol s_5_17[5] = { 'e', 'm', 'e', 'n', 't' };
 static const symbol s_5_18[2] = { 'o', 'u' };
-
-static const struct among a_5[19] =
-{
-{ 2, s_5_0, -1, 1, 0},
-{ 4, s_5_1, -1, 1, 0},
-{ 4, s_5_2, -1, 1, 0},
-{ 4, s_5_3, -1, 1, 0},
-{ 4, s_5_4, -1, 1, 0},
-{ 3, s_5_5, -1, 1, 0},
-{ 3, s_5_6, -1, 1, 0},
-{ 3, s_5_7, -1, 1, 0},
-{ 3, s_5_8, -1, 1, 0},
-{ 2, s_5_9, -1, 1, 0},
-{ 3, s_5_10, -1, 1, 0},
-{ 3, s_5_11, -1, 2, 0},
-{ 2, s_5_12, -1, 1, 0},
-{ 3, s_5_13, -1, 1, 0},
-{ 3, s_5_14, -1, 1, 0},
-{ 3, s_5_15, -1, 1, 0},
-{ 4, s_5_16, 15, 1, 0},
-{ 5, s_5_17, 16, 1, 0},
-{ 2, s_5_18, -1, 1, 0}
+static const struct among a_5[19] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 4, s_5_1, 0, 1, 0},
+{ 4, s_5_2, 0, 1, 0},
+{ 4, s_5_3, 0, 1, 0},
+{ 4, s_5_4, 0, 1, 0},
+{ 3, s_5_5, 0, 1, 0},
+{ 3, s_5_6, 0, 1, 0},
+{ 3, s_5_7, 0, 1, 0},
+{ 3, s_5_8, 0, 1, 0},
+{ 2, s_5_9, 0, 1, 0},
+{ 3, s_5_10, 0, 1, 0},
+{ 3, s_5_11, 0, 2, 0},
+{ 2, s_5_12, 0, 1, 0},
+{ 3, s_5_13, 0, 1, 0},
+{ 3, s_5_14, 0, 1, 0},
+{ 3, s_5_15, 0, 1, 0},
+{ 4, s_5_16, -1, 1, 0},
+{ 5, s_5_17, -1, 1, 0},
+{ 2, s_5_18, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 1 };
 
 static const unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
 
-static const symbol s_0[] = { 's', 's' };
-static const symbol s_1[] = { 'i' };
-static const symbol s_2[] = { 'e', 'e' };
-static const symbol s_3[] = { 'e' };
-static const symbol s_4[] = { 'e' };
-static const symbol s_5[] = { 'i' };
-static const symbol s_6[] = { 't', 'i', 'o', 'n' };
-static const symbol s_7[] = { 'e', 'n', 'c', 'e' };
-static const symbol s_8[] = { 'a', 'n', 'c', 'e' };
-static const symbol s_9[] = { 'a', 'b', 'l', 'e' };
-static const symbol s_10[] = { 'e', 'n', 't' };
-static const symbol s_11[] = { 'e' };
-static const symbol s_12[] = { 'i', 'z', 'e' };
-static const symbol s_13[] = { 'a', 't', 'e' };
-static const symbol s_14[] = { 'a', 'l' };
-static const symbol s_15[] = { 'f', 'u', 'l' };
-static const symbol s_16[] = { 'o', 'u', 's' };
-static const symbol s_17[] = { 'i', 'v', 'e' };
-static const symbol s_18[] = { 'b', 'l', 'e' };
-static const symbol s_19[] = { 'a', 'l' };
-static const symbol s_20[] = { 'i', 'c' };
-static const symbol s_21[] = { 'Y' };
-static const symbol s_22[] = { 'Y' };
-static const symbol s_23[] = { 'y' };
-
 static int r_shortv(struct SN_env * z) {
     if (out_grouping_b(z, g_v_WXY, 89, 121, 0)) return 0;
     if (in_grouping_b(z, g_v, 97, 121, 0)) return 0;
-    if (out_grouping_b(z, g_v, 97, 121, 0)) return 0;
-    return 1;
+    return !out_grouping_b(z, g_v, 97, 121, 0);
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_Step_1a(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0;
-    among_var = find_among_b(z, a_0, 4);
+    among_var = find_among_b(z, a_0, 4, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 2, s_0);
+            {
+                int ret = slice_from_s(z, 2, s_0);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_1);
+            {
+                int ret = slice_from_s(z, 1, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -268,43 +260,46 @@ static int r_Step_1b(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0;
-    among_var = find_among_b(z, a_2, 3);
+    among_var = find_among_b(z, a_2, 3, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 2, s_2);
+            {
+                int ret = slice_from_s(z, 2, s_2);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int m_test1 = z->l - z->c;
-
+            {
+                int v_1 = z->l - z->c;
                 {
                     int ret = out_grouping_b(z, g_v, 97, 121, 1);
                     if (ret < 0) return 0;
                     z->c -= ret;
                 }
-                z->c = z->l - m_test1;
+                z->c = z->l - v_1;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m_test2 = z->l - z->c;
+            {
+                int v_2 = z->l - z->c;
                 if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
-                among_var = find_among_b(z, a_1, 13);
-                z->c = z->l - m_test2;
+                among_var = find_among_b(z, a_1, 13, 0);
+                z->c = z->l - v_2;
             }
             switch (among_var) {
                 case 1:
-                    {   int ret;
-                        {   int saved_c = z->c;
-                            ret = insert_s(z, z->c, z->c, 1, s_3);
-                            z->c = saved_c;
-                        }
+                    {
+                        int saved_c = z->c;
+                        int ret = insert_s(z, z->c, z->c, 1, s_3);
+                        z->c = saved_c;
                         if (ret < 0) return ret;
                     }
                     break;
@@ -313,23 +308,25 @@ static int r_Step_1b(struct SN_env * z) {
                     if (z->c <= z->lb) return 0;
                     z->c--;
                     z->bra = z->c;
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
                     break;
                 case 3:
-                    if (z->c != z->I[1]) return 0;
-                    {   int m_test3 = z->l - z->c;
-                        {   int ret = r_shortv(z);
+                    if (z->c != ((SN_local *)z)->i_p1) return 0;
+                    {
+                        int v_3 = z->l - z->c;
+                        {
+                            int ret = r_shortv(z);
                             if (ret <= 0) return ret;
                         }
-                        z->c = z->l - m_test3;
+                        z->c = z->l - v_3;
                     }
-                    {   int ret;
-                        {   int saved_c = z->c;
-                            ret = insert_s(z, z->c, z->c, 1, s_4);
-                            z->c = saved_c;
-                        }
+                    {
+                        int saved_c = z->c;
+                        int ret = insert_s(z, z->c, z->c, 1, s_4);
+                        z->c = saved_c;
                         if (ret < 0) return ret;
                     }
                     break;
@@ -341,24 +338,24 @@ static int r_Step_1b(struct SN_env * z) {
 
 static int r_Step_1c(struct SN_env * z) {
     z->ket = z->c;
-    {   int m1 = z->l - z->c; (void)m1;
-        if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
+    do {
+        int v_1 = z->l - z->c;
+        if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab0;
         z->c--;
-        goto lab0;
-    lab1:
-        z->c = z->l - m1;
+        break;
+    lab0:
+        z->c = z->l - v_1;
         if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0;
         z->c--;
-    }
-lab0:
+    } while (0);
     z->bra = z->c;
-
     {
         int ret = out_grouping_b(z, g_v, 97, 121, 1);
         if (ret < 0) return 0;
         z->c -= ret;
     }
-    {   int ret = slice_from_s(z, 1, s_5);
+    {
+        int ret = slice_from_s(z, 1, s_5);
         if (ret < 0) return ret;
     }
     return 1;
@@ -368,75 +365,89 @@ static int r_Step_2(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_3, 20);
+    among_var = find_among_b(z, a_3, 20, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 4, s_6);
+            {
+                int ret = slice_from_s(z, 4, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 4, s_7);
+            {
+                int ret = slice_from_s(z, 4, s_7);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 4, s_8);
+            {
+                int ret = slice_from_s(z, 4, s_8);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = slice_from_s(z, 4, s_9);
+            {
+                int ret = slice_from_s(z, 4, s_9);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 3, s_10);
+            {
+                int ret = slice_from_s(z, 3, s_10);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 1, s_11);
+            {
+                int ret = slice_from_s(z, 1, s_11);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
-            {   int ret = slice_from_s(z, 3, s_12);
+            {
+                int ret = slice_from_s(z, 3, s_12);
                 if (ret < 0) return ret;
             }
             break;
         case 8:
-            {   int ret = slice_from_s(z, 3, s_13);
+            {
+                int ret = slice_from_s(z, 3, s_13);
                 if (ret < 0) return ret;
             }
             break;
         case 9:
-            {   int ret = slice_from_s(z, 2, s_14);
+            {
+                int ret = slice_from_s(z, 2, s_14);
                 if (ret < 0) return ret;
             }
             break;
         case 10:
-            {   int ret = slice_from_s(z, 3, s_15);
+            {
+                int ret = slice_from_s(z, 3, s_15);
                 if (ret < 0) return ret;
             }
             break;
         case 11:
-            {   int ret = slice_from_s(z, 3, s_16);
+            {
+                int ret = slice_from_s(z, 3, s_16);
                 if (ret < 0) return ret;
             }
             break;
         case 12:
-            {   int ret = slice_from_s(z, 3, s_17);
+            {
+                int ret = slice_from_s(z, 3, s_17);
                 if (ret < 0) return ret;
             }
             break;
         case 13:
-            {   int ret = slice_from_s(z, 3, s_18);
+            {
+                int ret = slice_from_s(z, 3, s_18);
                 if (ret < 0) return ret;
             }
             break;
@@ -448,25 +459,29 @@ static int r_Step_3(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_4, 7);
+    among_var = find_among_b(z, a_4, 7, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 2, s_19);
+            {
+                int ret = slice_from_s(z, 2, s_19);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 2, s_20);
+            {
+                int ret = slice_from_s(z, 2, s_20);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -478,30 +493,33 @@ static int r_Step_4(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((3961384 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_5, 19);
+    among_var = find_among_b(z, a_5, 19, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R2(z);
+    {
+        int ret = r_R2(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int m1 = z->l - z->c; (void)m1;
-                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
+            do {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
                 z->c--;
-                goto lab0;
-            lab1:
-                z->c = z->l - m1;
+                break;
+            lab0:
+                z->c = z->l - v_1;
                 if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0;
                 z->c--;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -514,27 +532,32 @@ static int r_Step_5a(struct SN_env * z) {
     if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
     z->c--;
     z->bra = z->c;
-
-    {   int ret = r_R2(z);
-        if (ret == 0) goto lab1;
-        if (ret < 0) return ret;
-    }
-    goto lab0;
-lab1:
-    {   int ret = r_R1(z);
-        if (ret <= 0) return ret;
-    }
-    {   int m1 = z->l - z->c; (void)m1;
-        {   int ret = r_shortv(z);
-            if (ret == 0) goto lab2;
+    do {
+        {
+            int ret = r_R2(z);
+            if (ret == 0) goto lab0;
             if (ret < 0) return ret;
         }
-        return 0;
-    lab2:
-        z->c = z->l - m1;
-    }
-lab0:
-    {   int ret = slice_del(z);
+        break;
+    lab0:
+        {
+            int ret = r_R1(z);
+            if (ret <= 0) return ret;
+        }
+        {
+            int v_1 = z->l - z->c;
+            {
+                int ret = r_shortv(z);
+                if (ret == 0) goto lab1;
+                if (ret < 0) return ret;
+            }
+            return 0;
+        lab1:
+            z->c = z->l - v_1;
+        }
+    } while (0);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -545,174 +568,204 @@ static int r_Step_5b(struct SN_env * z) {
     if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
     z->c--;
     z->bra = z->c;
-    {   int ret = r_R2(z);
+    {
+        int ret = r_R2(z);
         if (ret <= 0) return ret;
     }
     if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
     z->c--;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int porter_ISO_8859_1_stem(struct SN_env * z) {
-    z->I[2] = 0;
-    {   int c1 = z->c;
+    int b_Y_found;
+    b_Y_found = 0;
+    {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c == z->l || z->p[z->c] != 'y') goto lab0;
         z->c++;
         z->ket = z->c;
-        {   int ret = slice_from_s(z, 1, s_21);
+        {
+            int ret = slice_from_s(z, 1, s_21);
             if (ret < 0) return ret;
         }
-        z->I[2] = 1;
+        b_Y_found = 1;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c2 = z->c;
-        while(1) {
-            int c3 = z->c;
-            while(1) {
-                int c4 = z->c;
+    {
+        int v_2 = z->c;
+        while (1) {
+            int v_3 = z->c;
+            while (1) {
+                int v_4 = z->c;
                 if (in_grouping(z, g_v, 97, 121, 0)) goto lab3;
                 z->bra = z->c;
                 if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
                 z->c++;
                 z->ket = z->c;
-                z->c = c4;
+                z->c = v_4;
                 break;
             lab3:
-                z->c = c4;
+                z->c = v_4;
                 if (z->c >= z->l) goto lab2;
                 z->c++;
             }
-            {   int ret = slice_from_s(z, 1, s_22);
+            {
+                int ret = slice_from_s(z, 1, s_22);
                 if (ret < 0) return ret;
             }
-            z->I[2] = 1;
+            b_Y_found = 1;
             continue;
         lab2:
-            z->c = c3;
+            z->c = v_3;
             break;
         }
-        z->c = c2;
+        z->c = v_2;
     }
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c5 = z->c;
-
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 121, 1);
             if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab4:
-        z->c = c5;
+        z->c = v_5;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m6 = z->l - z->c; (void)m6;
-        {   int ret = r_Step_1a(z);
+    {
+        int v_6 = z->l - z->c;
+        {
+            int ret = r_Step_1a(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m6;
+        z->c = z->l - v_6;
     }
-    {   int m7 = z->l - z->c; (void)m7;
-        {   int ret = r_Step_1b(z);
+    {
+        int v_7 = z->l - z->c;
+        {
+            int ret = r_Step_1b(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m7;
+        z->c = z->l - v_7;
     }
-    {   int m8 = z->l - z->c; (void)m8;
-        {   int ret = r_Step_1c(z);
+    {
+        int v_8 = z->l - z->c;
+        {
+            int ret = r_Step_1c(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m8;
+        z->c = z->l - v_8;
     }
-    {   int m9 = z->l - z->c; (void)m9;
-        {   int ret = r_Step_2(z);
+    {
+        int v_9 = z->l - z->c;
+        {
+            int ret = r_Step_2(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m9;
+        z->c = z->l - v_9;
     }
-    {   int m10 = z->l - z->c; (void)m10;
-        {   int ret = r_Step_3(z);
+    {
+        int v_10 = z->l - z->c;
+        {
+            int ret = r_Step_3(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m10;
+        z->c = z->l - v_10;
     }
-    {   int m11 = z->l - z->c; (void)m11;
-        {   int ret = r_Step_4(z);
+    {
+        int v_11 = z->l - z->c;
+        {
+            int ret = r_Step_4(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m11;
+        z->c = z->l - v_11;
     }
-    {   int m12 = z->l - z->c; (void)m12;
-        {   int ret = r_Step_5a(z);
+    {
+        int v_12 = z->l - z->c;
+        {
+            int ret = r_Step_5a(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m12;
+        z->c = z->l - v_12;
     }
-    {   int m13 = z->l - z->c; (void)m13;
-        {   int ret = r_Step_5b(z);
+    {
+        int v_13 = z->l - z->c;
+        {
+            int ret = r_Step_5b(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m13;
+        z->c = z->l - v_13;
     }
     z->c = z->lb;
-    {   int c14 = z->c;
-        if (!(z->I[2])) goto lab5;
-        while(1) {
-            int c15 = z->c;
-            while(1) {
-                int c16 = z->c;
+    {
+        int v_14 = z->c;
+        if (!b_Y_found) goto lab5;
+        while (1) {
+            int v_15 = z->c;
+            while (1) {
+                int v_16 = z->c;
                 z->bra = z->c;
                 if (z->c == z->l || z->p[z->c] != 'Y') goto lab7;
                 z->c++;
                 z->ket = z->c;
-                z->c = c16;
+                z->c = v_16;
                 break;
             lab7:
-                z->c = c16;
+                z->c = v_16;
                 if (z->c >= z->l) goto lab6;
                 z->c++;
             }
-            {   int ret = slice_from_s(z, 1, s_23);
+            {
+                int ret = slice_from_s(z, 1, s_23);
                 if (ret < 0) return ret;
             }
             continue;
         lab6:
-            z->c = c15;
+            z->c = v_15;
             break;
         }
     lab5:
-        z->c = c14;
+        z->c = v_14;
     }
     return 1;
 }
 
-extern struct SN_env * porter_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * porter_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void porter_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void porter_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 33aae89f7322bf7a1657ce72327e328b415a5769..39a36a97b32c7122fbcb1b641be253e6d140ddb9 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from portuguese.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_portuguese.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int portuguese_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_residual_form(struct SN_env * z);
 static int r_residual_suffix(struct SN_env * z);
 static int r_verb_suffix(struct SN_env * z);
@@ -19,71 +33,62 @@ static int r_RV(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
 static int r_prelude(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * portuguese_ISO_8859_1_create_env(void);
-extern void portuguese_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'a', '~' };
+static const symbol s_1[] = { 'o', '~' };
+static const symbol s_2[] = { 0xE3 };
+static const symbol s_3[] = { 0xF5 };
+static const symbol s_4[] = { 'l', 'o', 'g' };
+static const symbol s_5[] = { 'u' };
+static const symbol s_6[] = { 'e', 'n', 't', 'e' };
+static const symbol s_7[] = { 'a', 't' };
+static const symbol s_8[] = { 'a', 't' };
+static const symbol s_9[] = { 'i', 'r' };
+static const symbol s_10[] = { 'c' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[1] = { 0xE3 };
 static const symbol s_0_2[1] = { 0xF5 };
-
-static const struct among a_0[3] =
-{
-{ 0, 0, -1, 3, 0},
-{ 1, s_0_1, 0, 1, 0},
-{ 1, s_0_2, 0, 2, 0}
+static const struct among a_0[3] = {
+{ 0, 0, 0, 3, 0},
+{ 1, s_0_1, -1, 1, 0},
+{ 1, s_0_2, -2, 2, 0}
 };
 
 static const symbol s_1_1[2] = { 'a', '~' };
 static const symbol s_1_2[2] = { 'o', '~' };
-
-static const struct among a_1[3] =
-{
-{ 0, 0, -1, 3, 0},
-{ 2, s_1_1, 0, 1, 0},
-{ 2, s_1_2, 0, 2, 0}
+static const struct among a_1[3] = {
+{ 0, 0, 0, 3, 0},
+{ 2, s_1_1, -1, 1, 0},
+{ 2, s_1_2, -2, 2, 0}
 };
 
 static const symbol s_2_0[2] = { 'i', 'c' };
 static const symbol s_2_1[2] = { 'a', 'd' };
 static const symbol s_2_2[2] = { 'o', 's' };
 static const symbol s_2_3[2] = { 'i', 'v' };
-
-static const struct among a_2[4] =
-{
-{ 2, s_2_0, -1, -1, 0},
-{ 2, s_2_1, -1, -1, 0},
-{ 2, s_2_2, -1, -1, 0},
-{ 2, s_2_3, -1, 1, 0}
+static const struct among a_2[4] = {
+{ 2, s_2_0, 0, -1, 0},
+{ 2, s_2_1, 0, -1, 0},
+{ 2, s_2_2, 0, -1, 0},
+{ 2, s_2_3, 0, 1, 0}
 };
 
 static const symbol s_3_0[4] = { 'a', 'n', 't', 'e' };
 static const symbol s_3_1[4] = { 'a', 'v', 'e', 'l' };
 static const symbol s_3_2[4] = { 0xED, 'v', 'e', 'l' };
-
-static const struct among a_3[3] =
-{
-{ 4, s_3_0, -1, 1, 0},
-{ 4, s_3_1, -1, 1, 0},
-{ 4, s_3_2, -1, 1, 0}
+static const struct among a_3[3] = {
+{ 4, s_3_0, 0, 1, 0},
+{ 4, s_3_1, 0, 1, 0},
+{ 4, s_3_2, 0, 1, 0}
 };
 
 static const symbol s_4_0[2] = { 'i', 'c' };
 static const symbol s_4_1[4] = { 'a', 'b', 'i', 'l' };
 static const symbol s_4_2[2] = { 'i', 'v' };
-
-static const struct among a_4[3] =
-{
-{ 2, s_4_0, -1, 1, 0},
-{ 4, s_4_1, -1, 1, 0},
-{ 2, s_4_2, -1, 1, 0}
+static const struct among a_4[3] = {
+{ 2, s_4_0, 0, 1, 0},
+{ 4, s_4_1, 0, 1, 0},
+{ 2, s_4_2, 0, 1, 0}
 };
 
 static const symbol s_5_0[3] = { 'i', 'c', 'a' };
@@ -131,54 +136,52 @@ static const symbol s_5_41[4] = { 'o', 's', 'o', 's' };
 static const symbol s_5_42[7] = { 'a', 'm', 'e', 'n', 't', 'o', 's' };
 static const symbol s_5_43[7] = { 'i', 'm', 'e', 'n', 't', 'o', 's' };
 static const symbol s_5_44[4] = { 'i', 'v', 'o', 's' };
-
-static const struct among a_5[45] =
-{
-{ 3, s_5_0, -1, 1, 0},
-{ 5, s_5_1, -1, 1, 0},
-{ 5, s_5_2, -1, 4, 0},
-{ 5, s_5_3, -1, 2, 0},
-{ 3, s_5_4, -1, 9, 0},
-{ 5, s_5_5, -1, 1, 0},
-{ 3, s_5_6, -1, 1, 0},
-{ 4, s_5_7, -1, 1, 0},
-{ 3, s_5_8, -1, 8, 0},
-{ 3, s_5_9, -1, 1, 0},
-{ 5, s_5_10, -1, 7, 0},
-{ 4, s_5_11, -1, 1, 0},
-{ 5, s_5_12, -1, 6, 0},
-{ 6, s_5_13, 12, 5, 0},
-{ 4, s_5_14, -1, 1, 0},
-{ 4, s_5_15, -1, 1, 0},
-{ 3, s_5_16, -1, 1, 0},
-{ 4, s_5_17, -1, 1, 0},
-{ 3, s_5_18, -1, 1, 0},
-{ 6, s_5_19, -1, 1, 0},
-{ 6, s_5_20, -1, 1, 0},
-{ 3, s_5_21, -1, 8, 0},
-{ 5, s_5_22, -1, 1, 0},
-{ 5, s_5_23, -1, 3, 0},
-{ 4, s_5_24, -1, 1, 0},
-{ 4, s_5_25, -1, 1, 0},
-{ 6, s_5_26, -1, 4, 0},
-{ 6, s_5_27, -1, 2, 0},
-{ 4, s_5_28, -1, 9, 0},
-{ 6, s_5_29, -1, 1, 0},
-{ 4, s_5_30, -1, 1, 0},
-{ 5, s_5_31, -1, 1, 0},
-{ 4, s_5_32, -1, 8, 0},
-{ 4, s_5_33, -1, 1, 0},
-{ 6, s_5_34, -1, 7, 0},
-{ 6, s_5_35, -1, 1, 0},
-{ 5, s_5_36, -1, 1, 0},
-{ 6, s_5_37, -1, 1, 0},
-{ 6, s_5_38, -1, 3, 0},
-{ 4, s_5_39, -1, 1, 0},
-{ 5, s_5_40, -1, 1, 0},
-{ 4, s_5_41, -1, 1, 0},
-{ 7, s_5_42, -1, 1, 0},
-{ 7, s_5_43, -1, 1, 0},
-{ 4, s_5_44, -1, 8, 0}
+static const struct among a_5[45] = {
+{ 3, s_5_0, 0, 1, 0},
+{ 5, s_5_1, 0, 1, 0},
+{ 5, s_5_2, 0, 4, 0},
+{ 5, s_5_3, 0, 2, 0},
+{ 3, s_5_4, 0, 9, 0},
+{ 5, s_5_5, 0, 1, 0},
+{ 3, s_5_6, 0, 1, 0},
+{ 4, s_5_7, 0, 1, 0},
+{ 3, s_5_8, 0, 8, 0},
+{ 3, s_5_9, 0, 1, 0},
+{ 5, s_5_10, 0, 7, 0},
+{ 4, s_5_11, 0, 1, 0},
+{ 5, s_5_12, 0, 6, 0},
+{ 6, s_5_13, -1, 5, 0},
+{ 4, s_5_14, 0, 1, 0},
+{ 4, s_5_15, 0, 1, 0},
+{ 3, s_5_16, 0, 1, 0},
+{ 4, s_5_17, 0, 1, 0},
+{ 3, s_5_18, 0, 1, 0},
+{ 6, s_5_19, 0, 1, 0},
+{ 6, s_5_20, 0, 1, 0},
+{ 3, s_5_21, 0, 8, 0},
+{ 5, s_5_22, 0, 1, 0},
+{ 5, s_5_23, 0, 3, 0},
+{ 4, s_5_24, 0, 1, 0},
+{ 4, s_5_25, 0, 1, 0},
+{ 6, s_5_26, 0, 4, 0},
+{ 6, s_5_27, 0, 2, 0},
+{ 4, s_5_28, 0, 9, 0},
+{ 6, s_5_29, 0, 1, 0},
+{ 4, s_5_30, 0, 1, 0},
+{ 5, s_5_31, 0, 1, 0},
+{ 4, s_5_32, 0, 8, 0},
+{ 4, s_5_33, 0, 1, 0},
+{ 6, s_5_34, 0, 7, 0},
+{ 6, s_5_35, 0, 1, 0},
+{ 5, s_5_36, 0, 1, 0},
+{ 6, s_5_37, 0, 1, 0},
+{ 6, s_5_38, 0, 3, 0},
+{ 4, s_5_39, 0, 1, 0},
+{ 5, s_5_40, 0, 1, 0},
+{ 4, s_5_41, 0, 1, 0},
+{ 7, s_5_42, 0, 1, 0},
+{ 7, s_5_43, 0, 1, 0},
+{ 4, s_5_44, 0, 8, 0}
 };
 
 static const symbol s_6_0[3] = { 'a', 'd', 'a' };
@@ -301,129 +304,127 @@ static const symbol s_6_116[2] = { 'o', 'u' };
 static const symbol s_6_117[3] = { 'a', 'r', 0xE1 };
 static const symbol s_6_118[3] = { 'e', 'r', 0xE1 };
 static const symbol s_6_119[3] = { 'i', 'r', 0xE1 };
-
-static const struct among a_6[120] =
-{
-{ 3, s_6_0, -1, 1, 0},
-{ 3, s_6_1, -1, 1, 0},
-{ 2, s_6_2, -1, 1, 0},
-{ 4, s_6_3, 2, 1, 0},
-{ 4, s_6_4, 2, 1, 0},
-{ 4, s_6_5, 2, 1, 0},
-{ 3, s_6_6, -1, 1, 0},
-{ 3, s_6_7, -1, 1, 0},
-{ 3, s_6_8, -1, 1, 0},
-{ 3, s_6_9, -1, 1, 0},
-{ 4, s_6_10, -1, 1, 0},
-{ 4, s_6_11, -1, 1, 0},
-{ 4, s_6_12, -1, 1, 0},
-{ 4, s_6_13, -1, 1, 0},
-{ 4, s_6_14, -1, 1, 0},
-{ 4, s_6_15, -1, 1, 0},
-{ 2, s_6_16, -1, 1, 0},
-{ 4, s_6_17, 16, 1, 0},
-{ 4, s_6_18, 16, 1, 0},
-{ 4, s_6_19, 16, 1, 0},
-{ 2, s_6_20, -1, 1, 0},
-{ 3, s_6_21, 20, 1, 0},
-{ 5, s_6_22, 21, 1, 0},
-{ 5, s_6_23, 21, 1, 0},
-{ 5, s_6_24, 21, 1, 0},
-{ 4, s_6_25, 20, 1, 0},
-{ 4, s_6_26, 20, 1, 0},
-{ 4, s_6_27, 20, 1, 0},
-{ 4, s_6_28, 20, 1, 0},
-{ 2, s_6_29, -1, 1, 0},
-{ 4, s_6_30, 29, 1, 0},
-{ 4, s_6_31, 29, 1, 0},
-{ 4, s_6_32, 29, 1, 0},
-{ 5, s_6_33, 29, 1, 0},
-{ 5, s_6_34, 29, 1, 0},
-{ 5, s_6_35, 29, 1, 0},
-{ 3, s_6_36, -1, 1, 0},
-{ 3, s_6_37, -1, 1, 0},
-{ 4, s_6_38, -1, 1, 0},
-{ 4, s_6_39, -1, 1, 0},
-{ 4, s_6_40, -1, 1, 0},
-{ 5, s_6_41, -1, 1, 0},
-{ 5, s_6_42, -1, 1, 0},
-{ 5, s_6_43, -1, 1, 0},
-{ 2, s_6_44, -1, 1, 0},
-{ 2, s_6_45, -1, 1, 0},
-{ 2, s_6_46, -1, 1, 0},
-{ 2, s_6_47, -1, 1, 0},
-{ 4, s_6_48, 47, 1, 0},
-{ 4, s_6_49, 47, 1, 0},
-{ 3, s_6_50, 47, 1, 0},
-{ 5, s_6_51, 50, 1, 0},
-{ 5, s_6_52, 50, 1, 0},
-{ 5, s_6_53, 50, 1, 0},
-{ 4, s_6_54, 47, 1, 0},
-{ 4, s_6_55, 47, 1, 0},
-{ 4, s_6_56, 47, 1, 0},
-{ 4, s_6_57, 47, 1, 0},
-{ 2, s_6_58, -1, 1, 0},
-{ 5, s_6_59, 58, 1, 0},
-{ 5, s_6_60, 58, 1, 0},
-{ 5, s_6_61, 58, 1, 0},
-{ 4, s_6_62, 58, 1, 0},
-{ 4, s_6_63, 58, 1, 0},
-{ 4, s_6_64, 58, 1, 0},
-{ 5, s_6_65, 58, 1, 0},
-{ 5, s_6_66, 58, 1, 0},
-{ 5, s_6_67, 58, 1, 0},
-{ 5, s_6_68, 58, 1, 0},
-{ 5, s_6_69, 58, 1, 0},
-{ 5, s_6_70, 58, 1, 0},
-{ 2, s_6_71, -1, 1, 0},
-{ 3, s_6_72, 71, 1, 0},
-{ 3, s_6_73, 71, 1, 0},
-{ 5, s_6_74, 73, 1, 0},
-{ 5, s_6_75, 73, 1, 0},
-{ 5, s_6_76, 73, 1, 0},
-{ 5, s_6_77, 73, 1, 0},
-{ 5, s_6_78, 73, 1, 0},
-{ 5, s_6_79, 73, 1, 0},
-{ 6, s_6_80, 73, 1, 0},
-{ 6, s_6_81, 73, 1, 0},
-{ 6, s_6_82, 73, 1, 0},
-{ 5, s_6_83, 73, 1, 0},
-{ 4, s_6_84, 73, 1, 0},
-{ 6, s_6_85, 84, 1, 0},
-{ 6, s_6_86, 84, 1, 0},
-{ 6, s_6_87, 84, 1, 0},
-{ 4, s_6_88, -1, 1, 0},
-{ 4, s_6_89, -1, 1, 0},
-{ 4, s_6_90, -1, 1, 0},
-{ 6, s_6_91, 90, 1, 0},
-{ 6, s_6_92, 90, 1, 0},
-{ 6, s_6_93, 90, 1, 0},
-{ 6, s_6_94, 90, 1, 0},
-{ 5, s_6_95, 90, 1, 0},
-{ 7, s_6_96, 95, 1, 0},
-{ 7, s_6_97, 95, 1, 0},
-{ 7, s_6_98, 95, 1, 0},
-{ 4, s_6_99, -1, 1, 0},
-{ 6, s_6_100, 99, 1, 0},
-{ 6, s_6_101, 99, 1, 0},
-{ 6, s_6_102, 99, 1, 0},
-{ 7, s_6_103, 99, 1, 0},
-{ 7, s_6_104, 99, 1, 0},
-{ 7, s_6_105, 99, 1, 0},
-{ 4, s_6_106, -1, 1, 0},
-{ 5, s_6_107, -1, 1, 0},
-{ 5, s_6_108, -1, 1, 0},
-{ 5, s_6_109, -1, 1, 0},
-{ 4, s_6_110, -1, 1, 0},
-{ 4, s_6_111, -1, 1, 0},
-{ 4, s_6_112, -1, 1, 0},
-{ 4, s_6_113, -1, 1, 0},
-{ 2, s_6_114, -1, 1, 0},
-{ 2, s_6_115, -1, 1, 0},
-{ 2, s_6_116, -1, 1, 0},
-{ 3, s_6_117, -1, 1, 0},
-{ 3, s_6_118, -1, 1, 0},
-{ 3, s_6_119, -1, 1, 0}
+static const struct among a_6[120] = {
+{ 3, s_6_0, 0, 1, 0},
+{ 3, s_6_1, 0, 1, 0},
+{ 2, s_6_2, 0, 1, 0},
+{ 4, s_6_3, -1, 1, 0},
+{ 4, s_6_4, -2, 1, 0},
+{ 4, s_6_5, -3, 1, 0},
+{ 3, s_6_6, 0, 1, 0},
+{ 3, s_6_7, 0, 1, 0},
+{ 3, s_6_8, 0, 1, 0},
+{ 3, s_6_9, 0, 1, 0},
+{ 4, s_6_10, 0, 1, 0},
+{ 4, s_6_11, 0, 1, 0},
+{ 4, s_6_12, 0, 1, 0},
+{ 4, s_6_13, 0, 1, 0},
+{ 4, s_6_14, 0, 1, 0},
+{ 4, s_6_15, 0, 1, 0},
+{ 2, s_6_16, 0, 1, 0},
+{ 4, s_6_17, -1, 1, 0},
+{ 4, s_6_18, -2, 1, 0},
+{ 4, s_6_19, -3, 1, 0},
+{ 2, s_6_20, 0, 1, 0},
+{ 3, s_6_21, -1, 1, 0},
+{ 5, s_6_22, -1, 1, 0},
+{ 5, s_6_23, -2, 1, 0},
+{ 5, s_6_24, -3, 1, 0},
+{ 4, s_6_25, -5, 1, 0},
+{ 4, s_6_26, -6, 1, 0},
+{ 4, s_6_27, -7, 1, 0},
+{ 4, s_6_28, -8, 1, 0},
+{ 2, s_6_29, 0, 1, 0},
+{ 4, s_6_30, -1, 1, 0},
+{ 4, s_6_31, -2, 1, 0},
+{ 4, s_6_32, -3, 1, 0},
+{ 5, s_6_33, -4, 1, 0},
+{ 5, s_6_34, -5, 1, 0},
+{ 5, s_6_35, -6, 1, 0},
+{ 3, s_6_36, 0, 1, 0},
+{ 3, s_6_37, 0, 1, 0},
+{ 4, s_6_38, 0, 1, 0},
+{ 4, s_6_39, 0, 1, 0},
+{ 4, s_6_40, 0, 1, 0},
+{ 5, s_6_41, 0, 1, 0},
+{ 5, s_6_42, 0, 1, 0},
+{ 5, s_6_43, 0, 1, 0},
+{ 2, s_6_44, 0, 1, 0},
+{ 2, s_6_45, 0, 1, 0},
+{ 2, s_6_46, 0, 1, 0},
+{ 2, s_6_47, 0, 1, 0},
+{ 4, s_6_48, -1, 1, 0},
+{ 4, s_6_49, -2, 1, 0},
+{ 3, s_6_50, -3, 1, 0},
+{ 5, s_6_51, -1, 1, 0},
+{ 5, s_6_52, -2, 1, 0},
+{ 5, s_6_53, -3, 1, 0},
+{ 4, s_6_54, -7, 1, 0},
+{ 4, s_6_55, -8, 1, 0},
+{ 4, s_6_56, -9, 1, 0},
+{ 4, s_6_57, -10, 1, 0},
+{ 2, s_6_58, 0, 1, 0},
+{ 5, s_6_59, -1, 1, 0},
+{ 5, s_6_60, -2, 1, 0},
+{ 5, s_6_61, -3, 1, 0},
+{ 4, s_6_62, -4, 1, 0},
+{ 4, s_6_63, -5, 1, 0},
+{ 4, s_6_64, -6, 1, 0},
+{ 5, s_6_65, -7, 1, 0},
+{ 5, s_6_66, -8, 1, 0},
+{ 5, s_6_67, -9, 1, 0},
+{ 5, s_6_68, -10, 1, 0},
+{ 5, s_6_69, -11, 1, 0},
+{ 5, s_6_70, -12, 1, 0},
+{ 2, s_6_71, 0, 1, 0},
+{ 3, s_6_72, -1, 1, 0},
+{ 3, s_6_73, -2, 1, 0},
+{ 5, s_6_74, -1, 1, 0},
+{ 5, s_6_75, -2, 1, 0},
+{ 5, s_6_76, -3, 1, 0},
+{ 5, s_6_77, -4, 1, 0},
+{ 5, s_6_78, -5, 1, 0},
+{ 5, s_6_79, -6, 1, 0},
+{ 6, s_6_80, -7, 1, 0},
+{ 6, s_6_81, -8, 1, 0},
+{ 6, s_6_82, -9, 1, 0},
+{ 5, s_6_83, -10, 1, 0},
+{ 4, s_6_84, -11, 1, 0},
+{ 6, s_6_85, -1, 1, 0},
+{ 6, s_6_86, -2, 1, 0},
+{ 6, s_6_87, -3, 1, 0},
+{ 4, s_6_88, 0, 1, 0},
+{ 4, s_6_89, 0, 1, 0},
+{ 4, s_6_90, 0, 1, 0},
+{ 6, s_6_91, -1, 1, 0},
+{ 6, s_6_92, -2, 1, 0},
+{ 6, s_6_93, -3, 1, 0},
+{ 6, s_6_94, -4, 1, 0},
+{ 5, s_6_95, -5, 1, 0},
+{ 7, s_6_96, -1, 1, 0},
+{ 7, s_6_97, -2, 1, 0},
+{ 7, s_6_98, -3, 1, 0},
+{ 4, s_6_99, 0, 1, 0},
+{ 6, s_6_100, -1, 1, 0},
+{ 6, s_6_101, -2, 1, 0},
+{ 6, s_6_102, -3, 1, 0},
+{ 7, s_6_103, -4, 1, 0},
+{ 7, s_6_104, -5, 1, 0},
+{ 7, s_6_105, -6, 1, 0},
+{ 4, s_6_106, 0, 1, 0},
+{ 5, s_6_107, 0, 1, 0},
+{ 5, s_6_108, 0, 1, 0},
+{ 5, s_6_109, 0, 1, 0},
+{ 4, s_6_110, 0, 1, 0},
+{ 4, s_6_111, 0, 1, 0},
+{ 4, s_6_112, 0, 1, 0},
+{ 4, s_6_113, 0, 1, 0},
+{ 2, s_6_114, 0, 1, 0},
+{ 2, s_6_115, 0, 1, 0},
+{ 2, s_6_116, 0, 1, 0},
+{ 3, s_6_117, 0, 1, 0},
+{ 3, s_6_118, 0, 1, 0},
+{ 3, s_6_119, 0, 1, 0}
 };
 
 static const symbol s_7_0[1] = { 'a' };
@@ -433,61 +434,47 @@ static const symbol s_7_3[2] = { 'o', 's' };
 static const symbol s_7_4[1] = { 0xE1 };
 static const symbol s_7_5[1] = { 0xED };
 static const symbol s_7_6[1] = { 0xF3 };
-
-static const struct among a_7[7] =
-{
-{ 1, s_7_0, -1, 1, 0},
-{ 1, s_7_1, -1, 1, 0},
-{ 1, s_7_2, -1, 1, 0},
-{ 2, s_7_3, -1, 1, 0},
-{ 1, s_7_4, -1, 1, 0},
-{ 1, s_7_5, -1, 1, 0},
-{ 1, s_7_6, -1, 1, 0}
+static const struct among a_7[7] = {
+{ 1, s_7_0, 0, 1, 0},
+{ 1, s_7_1, 0, 1, 0},
+{ 1, s_7_2, 0, 1, 0},
+{ 2, s_7_3, 0, 1, 0},
+{ 1, s_7_4, 0, 1, 0},
+{ 1, s_7_5, 0, 1, 0},
+{ 1, s_7_6, 0, 1, 0}
 };
 
 static const symbol s_8_0[1] = { 'e' };
 static const symbol s_8_1[1] = { 0xE7 };
 static const symbol s_8_2[1] = { 0xE9 };
 static const symbol s_8_3[1] = { 0xEA };
-
-static const struct among a_8[4] =
-{
-{ 1, s_8_0, -1, 1, 0},
-{ 1, s_8_1, -1, 2, 0},
-{ 1, s_8_2, -1, 1, 0},
-{ 1, s_8_3, -1, 1, 0}
+static const struct among a_8[4] = {
+{ 1, s_8_0, 0, 1, 0},
+{ 1, s_8_1, 0, 2, 0},
+{ 1, s_8_2, 0, 1, 0},
+{ 1, s_8_3, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 };
 
-static const symbol s_0[] = { 'a', '~' };
-static const symbol s_1[] = { 'o', '~' };
-static const symbol s_2[] = { 0xE3 };
-static const symbol s_3[] = { 0xF5 };
-static const symbol s_4[] = { 'l', 'o', 'g' };
-static const symbol s_5[] = { 'u' };
-static const symbol s_6[] = { 'e', 'n', 't', 'e' };
-static const symbol s_7[] = { 'a', 't' };
-static const symbol s_8[] = { 'a', 't' };
-static const symbol s_9[] = { 'i', 'r' };
-static const symbol s_10[] = { 'c' };
-
 static int r_prelude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c >= z->l || (z->p[z->c + 0] != 227 && z->p[z->c + 0] != 245)) among_var = 3; else
-        among_var = find_among(z, a_0, 3);
+        among_var = find_among(z, a_0, 3, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 2, s_0);
+                {
+                    int ret = slice_from_s(z, 2, s_0);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 2, s_1);
+                {
+                    int ret = slice_from_s(z, 2, s_1);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -498,115 +485,111 @@ static int r_prelude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping(z, g_v, 97, 250, 0)) goto lab2;
-            {   int c3 = z->c;
-                if (out_grouping(z, g_v, 97, 250, 0)) goto lab4;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping(z, g_v, 97, 250, 0)) goto lab1;
+            do {
+                int v_3 = z->c;
+                if (out_grouping(z, g_v, 97, 250, 0)) goto lab2;
                 {
                     int ret = out_grouping(z, g_v, 97, 250, 1);
-                    if (ret < 0) goto lab4;
+                    if (ret < 0) goto lab2;
                     z->c += ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c3;
-                if (in_grouping(z, g_v, 97, 250, 0)) goto lab2;
-
+                break;
+            lab2:
+                z->c = v_3;
+                if (in_grouping(z, g_v, 97, 250, 0)) goto lab1;
                 {
                     int ret = in_grouping(z, g_v, 97, 250, 1);
-                    if (ret < 0) goto lab2;
+                    if (ret < 0) goto lab1;
                     z->c += ret;
                 }
-            }
-        lab3:
-            goto lab1;
-        lab2:
-            z->c = c2;
+            } while (0);
+            break;
+        lab1:
+            z->c = v_2;
             if (out_grouping(z, g_v, 97, 250, 0)) goto lab0;
-            {   int c4 = z->c;
-                if (out_grouping(z, g_v, 97, 250, 0)) goto lab6;
-
+            do {
+                int v_4 = z->c;
+                if (out_grouping(z, g_v, 97, 250, 0)) goto lab3;
                 {
                     int ret = out_grouping(z, g_v, 97, 250, 1);
-                    if (ret < 0) goto lab6;
+                    if (ret < 0) goto lab3;
                     z->c += ret;
                 }
-                goto lab5;
-            lab6:
-                z->c = c4;
+                break;
+            lab3:
+                z->c = v_4;
                 if (in_grouping(z, g_v, 97, 250, 0)) goto lab0;
                 if (z->c >= z->l) goto lab0;
                 z->c++;
-            }
-        lab5:
-            ;
-        }
-    lab1:
-        z->I[2] = z->c;
+            } while (0);
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c5 = z->c;
-
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 250, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 250, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 250, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 250, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab7:
-        z->c = c5;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab4:
+        z->c = v_5;
     }
     return 1;
 }
 
 static int r_postlude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else
-        among_var = find_among(z, a_1, 3);
+        among_var = find_among(z, a_1, 3, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_2);
+                {
+                    int ret = slice_from_s(z, 1, s_2);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_3);
+                {
+                    int ret = slice_from_s(z, 1, s_3);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -617,94 +600,109 @@ static int r_postlude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_standard_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((823330 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_5, 45);
+    among_var = find_among_b(z, a_5, 45, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_4);
+            {
+                int ret = slice_from_s(z, 3, s_4);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 1, s_5);
+            {
+                int ret = slice_from_s(z, 1, s_5);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 4, s_6);
+            {
+                int ret = slice_from_s(z, 4, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m1 = z->l - z->c; (void)m1;
+            {
+                int v_1 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; }
-                among_var = find_among_b(z, a_2, 4);
-                if (!among_var) { z->c = z->l - m1; goto lab0; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_1; goto lab0; }
+                among_var = find_among_b(z, a_2, 4, 0);
+                if (!among_var) { z->c = z->l - v_1; goto lab0; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m1; goto lab0; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_1; goto lab0; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 switch (among_var) {
                     case 1:
                         z->ket = z->c;
-                        if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m1; goto lab0; }
+                        if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - v_1; goto lab0; }
                         z->bra = z->c;
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m1; goto lab0; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_1; goto lab0; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
@@ -714,22 +712,27 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 6:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m2 = z->l - z->c; (void)m2;
+            {
+                int v_2 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m2; goto lab1; }
-                if (!find_among_b(z, a_3, 3)) { z->c = z->l - m2; goto lab1; }
+                if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - v_2; goto lab1; }
+                if (!find_among_b(z, a_3, 3, 0)) { z->c = z->l - v_2; goto lab1; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m2; goto lab1; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_2; goto lab1; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab1:
@@ -737,22 +740,27 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 7:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m3 = z->l - z->c; (void)m3;
+            {
+                int v_3 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; }
-                if (!find_among_b(z, a_4, 3)) { z->c = z->l - m3; goto lab2; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_3; goto lab2; }
+                if (!find_among_b(z, a_4, 3, 0)) { z->c = z->l - v_3; goto lab2; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m3; goto lab2; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab2:
@@ -760,21 +768,26 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 8:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m4 = z->l - z->c; (void)m4;
+            {
+                int v_4 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m4; goto lab3; }
+                if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - v_4; goto lab3; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m4; goto lab3; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_4; goto lab3; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab3:
@@ -782,12 +795,14 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 9:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
             if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
             z->c--;
-            {   int ret = slice_from_s(z, 2, s_9);
+            {
+                int ret = slice_from_s(z, 2, s_9);
                 if (ret < 0) return ret;
             }
             break;
@@ -796,29 +811,32 @@ static int r_standard_suffix(struct SN_env * z) {
 }
 
 static int r_verb_suffix(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        if (!find_among_b(z, a_6, 120)) { z->lb = mlimit1; return 0; }
+        if (!find_among_b(z, a_6, 120, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        {   int ret = slice_del(z);
+        {
+            int ret = slice_del(z);
             if (ret < 0) return ret;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     return 1;
 }
 
 static int r_residual_suffix(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_7, 7)) return 0;
+    if (!find_among_b(z, a_7, 7, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_RV(z);
+    {
+        int ret = r_RV(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -827,49 +845,56 @@ static int r_residual_suffix(struct SN_env * z) {
 static int r_residual_form(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_8, 4);
+    among_var = find_among_b(z, a_8, 4, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             z->ket = z->c;
-            {   int m1 = z->l - z->c; (void)m1;
-                if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab1;
+            do {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab0;
                 z->c--;
                 z->bra = z->c;
-                {   int m_test2 = z->l - z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab1;
+                {
+                    int v_2 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab0;
                     z->c--;
-                    z->c = z->l - m_test2;
+                    z->c = z->l - v_2;
                 }
-                goto lab0;
-            lab1:
-                z->c = z->l - m1;
+                break;
+            lab0:
+                z->c = z->l - v_1;
                 if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
                 z->c--;
                 z->bra = z->c;
-                {   int m_test3 = z->l - z->c;
+                {
+                    int v_3 = z->l - z->c;
                     if (z->c <= z->lb || z->p[z->c - 1] != 'c') return 0;
                     z->c--;
-                    z->c = z->l - m_test3;
+                    z->c = z->l - v_3;
                 }
-            }
-        lab0:
-            {   int ret = r_RV(z);
+            } while (0);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_10);
+            {
+                int ret = slice_from_s(z, 1, s_10);
                 if (ret < 0) return ret;
             }
             break;
@@ -878,86 +903,110 @@ static int r_residual_form(struct SN_env * z) {
 }
 
 extern int portuguese_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_prelude(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_prelude(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int m4 = z->l - z->c; (void)m4;
-                {   int m5 = z->l - z->c; (void)m5;
-                    {   int ret = r_standard_suffix(z);
-                        if (ret == 0) goto lab4;
+    {
+        int v_2 = z->l - z->c;
+        do {
+            int v_3 = z->l - z->c;
+            {
+                int v_4 = z->l - z->c;
+                do {
+                    int v_5 = z->l - z->c;
+                    {
+                        int ret = r_standard_suffix(z);
+                        if (ret == 0) goto lab2;
                         if (ret < 0) return ret;
                     }
-                    goto lab3;
-                lab4:
-                    z->c = z->l - m5;
-                    {   int ret = r_verb_suffix(z);
-                        if (ret == 0) goto lab2;
+                    break;
+                lab2:
+                    z->c = z->l - v_5;
+                    {
+                        int ret = r_verb_suffix(z);
+                        if (ret == 0) goto lab1;
                         if (ret < 0) return ret;
                     }
-                }
-            lab3:
-                z->c = z->l - m4;
-                {   int m6 = z->l - z->c; (void)m6;
+                } while (0);
+                z->c = z->l - v_4;
+                {
+                    int v_6 = z->l - z->c;
                     z->ket = z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab5;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab3;
                     z->c--;
                     z->bra = z->c;
-                    {   int m_test7 = z->l - z->c;
-                        if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab5;
+                    {
+                        int v_7 = z->l - z->c;
+                        if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab3;
                         z->c--;
-                        z->c = z->l - m_test7;
+                        z->c = z->l - v_7;
                     }
-                    {   int ret = r_RV(z);
-                        if (ret == 0) goto lab5;
+                    {
+                        int ret = r_RV(z);
+                        if (ret == 0) goto lab3;
                         if (ret < 0) return ret;
                     }
-                    {   int ret = slice_del(z);
+                    {
+                        int ret = slice_del(z);
                         if (ret < 0) return ret;
                     }
-                lab5:
-                    z->c = z->l - m6;
+                lab3:
+                    z->c = z->l - v_6;
                 }
             }
-            goto lab1;
-        lab2:
-            z->c = z->l - m3;
-            {   int ret = r_residual_suffix(z);
+            break;
+        lab1:
+            z->c = z->l - v_3;
+            {
+                int ret = r_residual_suffix(z);
                 if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-        }
-    lab1:
+        } while (0);
     lab0:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m8 = z->l - z->c; (void)m8;
-        {   int ret = r_residual_form(z);
+    {
+        int v_8 = z->l - z->c;
+        {
+            int ret = r_residual_form(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m8;
+        z->c = z->l - v_8;
     }
     z->c = z->lb;
-    {   int c9 = z->c;
-        {   int ret = r_postlude(z);
+    {
+        int v_9 = z->c;
+        {
+            int ret = r_postlude(z);
             if (ret < 0) return ret;
         }
-        z->c = c9;
+        z->c = v_9;
     }
     return 1;
 }
 
-extern struct SN_env * portuguese_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * portuguese_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void portuguese_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void portuguese_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 252bb28cd3c43f212e8f2c7ac88e38338fbf6fd1..01f10f847e30f278d12d55eeb82110bf8fcb56b8 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from spanish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_spanish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int spanish_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_residual_suffix(struct SN_env * z);
 static int r_verb_suffix(struct SN_env * z);
 static int r_y_verb_suffix(struct SN_env * z);
@@ -19,32 +33,36 @@ static int r_R1(struct SN_env * z);
 static int r_RV(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_postlude(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * spanish_ISO_8859_1_create_env(void);
-extern void spanish_ISO_8859_1_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'a' };
+static const symbol s_1[] = { 'e' };
+static const symbol s_2[] = { 'i' };
+static const symbol s_3[] = { 'o' };
+static const symbol s_4[] = { 'u' };
+static const symbol s_5[] = { 'i', 'e', 'n', 'd', 'o' };
+static const symbol s_6[] = { 'a', 'n', 'd', 'o' };
+static const symbol s_7[] = { 'a', 'r' };
+static const symbol s_8[] = { 'e', 'r' };
+static const symbol s_9[] = { 'i', 'r' };
+static const symbol s_10[] = { 'i', 'c' };
+static const symbol s_11[] = { 'l', 'o', 'g' };
+static const symbol s_12[] = { 'u' };
+static const symbol s_13[] = { 'e', 'n', 't', 'e' };
+static const symbol s_14[] = { 'a', 't' };
+static const symbol s_15[] = { 'a', 't' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[1] = { 0xE1 };
 static const symbol s_0_2[1] = { 0xE9 };
 static const symbol s_0_3[1] = { 0xED };
 static const symbol s_0_4[1] = { 0xF3 };
 static const symbol s_0_5[1] = { 0xFA };
-
-static const struct among a_0[6] =
-{
-{ 0, 0, -1, 6, 0},
-{ 1, s_0_1, 0, 1, 0},
-{ 1, s_0_2, 0, 2, 0},
-{ 1, s_0_3, 0, 3, 0},
-{ 1, s_0_4, 0, 4, 0},
-{ 1, s_0_5, 0, 5, 0}
+static const struct among a_0[6] = {
+{ 0, 0, 0, 6, 0},
+{ 1, s_0_1, -1, 1, 0},
+{ 1, s_0_2, -2, 2, 0},
+{ 1, s_0_3, -3, 3, 0},
+{ 1, s_0_4, -4, 4, 0},
+{ 1, s_0_5, -5, 5, 0}
 };
 
 static const symbol s_1_0[2] = { 'l', 'a' };
@@ -60,22 +78,20 @@ static const symbol s_1_9[3] = { 'l', 'e', 's' };
 static const symbol s_1_10[3] = { 'l', 'o', 's' };
 static const symbol s_1_11[5] = { 's', 'e', 'l', 'o', 's' };
 static const symbol s_1_12[3] = { 'n', 'o', 's' };
-
-static const struct among a_1[13] =
-{
-{ 2, s_1_0, -1, -1, 0},
-{ 4, s_1_1, 0, -1, 0},
-{ 2, s_1_2, -1, -1, 0},
-{ 2, s_1_3, -1, -1, 0},
-{ 2, s_1_4, -1, -1, 0},
-{ 2, s_1_5, -1, -1, 0},
-{ 4, s_1_6, 5, -1, 0},
-{ 3, s_1_7, -1, -1, 0},
-{ 5, s_1_8, 7, -1, 0},
-{ 3, s_1_9, -1, -1, 0},
-{ 3, s_1_10, -1, -1, 0},
-{ 5, s_1_11, 10, -1, 0},
-{ 3, s_1_12, -1, -1, 0}
+static const struct among a_1[13] = {
+{ 2, s_1_0, 0, -1, 0},
+{ 4, s_1_1, -1, -1, 0},
+{ 2, s_1_2, 0, -1, 0},
+{ 2, s_1_3, 0, -1, 0},
+{ 2, s_1_4, 0, -1, 0},
+{ 2, s_1_5, 0, -1, 0},
+{ 4, s_1_6, -1, -1, 0},
+{ 3, s_1_7, 0, -1, 0},
+{ 5, s_1_8, -1, -1, 0},
+{ 3, s_1_9, 0, -1, 0},
+{ 3, s_1_10, 0, -1, 0},
+{ 5, s_1_11, -1, -1, 0},
+{ 3, s_1_12, 0, -1, 0}
 };
 
 static const symbol s_2_0[4] = { 'a', 'n', 'd', 'o' };
@@ -89,55 +105,47 @@ static const symbol s_2_7[2] = { 'i', 'r' };
 static const symbol s_2_8[2] = { 0xE1, 'r' };
 static const symbol s_2_9[2] = { 0xE9, 'r' };
 static const symbol s_2_10[2] = { 0xED, 'r' };
-
-static const struct among a_2[11] =
-{
-{ 4, s_2_0, -1, 6, 0},
-{ 5, s_2_1, -1, 6, 0},
-{ 5, s_2_2, -1, 7, 0},
-{ 4, s_2_3, -1, 2, 0},
-{ 5, s_2_4, -1, 1, 0},
-{ 2, s_2_5, -1, 6, 0},
-{ 2, s_2_6, -1, 6, 0},
-{ 2, s_2_7, -1, 6, 0},
-{ 2, s_2_8, -1, 3, 0},
-{ 2, s_2_9, -1, 4, 0},
-{ 2, s_2_10, -1, 5, 0}
+static const struct among a_2[11] = {
+{ 4, s_2_0, 0, 6, 0},
+{ 5, s_2_1, 0, 6, 0},
+{ 5, s_2_2, 0, 7, 0},
+{ 4, s_2_3, 0, 2, 0},
+{ 5, s_2_4, 0, 1, 0},
+{ 2, s_2_5, 0, 6, 0},
+{ 2, s_2_6, 0, 6, 0},
+{ 2, s_2_7, 0, 6, 0},
+{ 2, s_2_8, 0, 3, 0},
+{ 2, s_2_9, 0, 4, 0},
+{ 2, s_2_10, 0, 5, 0}
 };
 
 static const symbol s_3_0[2] = { 'i', 'c' };
 static const symbol s_3_1[2] = { 'a', 'd' };
 static const symbol s_3_2[2] = { 'o', 's' };
 static const symbol s_3_3[2] = { 'i', 'v' };
-
-static const struct among a_3[4] =
-{
-{ 2, s_3_0, -1, -1, 0},
-{ 2, s_3_1, -1, -1, 0},
-{ 2, s_3_2, -1, -1, 0},
-{ 2, s_3_3, -1, 1, 0}
+static const struct among a_3[4] = {
+{ 2, s_3_0, 0, -1, 0},
+{ 2, s_3_1, 0, -1, 0},
+{ 2, s_3_2, 0, -1, 0},
+{ 2, s_3_3, 0, 1, 0}
 };
 
 static const symbol s_4_0[4] = { 'a', 'b', 'l', 'e' };
 static const symbol s_4_1[4] = { 'i', 'b', 'l', 'e' };
 static const symbol s_4_2[4] = { 'a', 'n', 't', 'e' };
-
-static const struct among a_4[3] =
-{
-{ 4, s_4_0, -1, 1, 0},
-{ 4, s_4_1, -1, 1, 0},
-{ 4, s_4_2, -1, 1, 0}
+static const struct among a_4[3] = {
+{ 4, s_4_0, 0, 1, 0},
+{ 4, s_4_1, 0, 1, 0},
+{ 4, s_4_2, 0, 1, 0}
 };
 
 static const symbol s_5_0[2] = { 'i', 'c' };
 static const symbol s_5_1[4] = { 'a', 'b', 'i', 'l' };
 static const symbol s_5_2[2] = { 'i', 'v' };
-
-static const struct among a_5[3] =
-{
-{ 2, s_5_0, -1, 1, 0},
-{ 4, s_5_1, -1, 1, 0},
-{ 2, s_5_2, -1, 1, 0}
+static const struct among a_5[3] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 4, s_5_1, 0, 1, 0},
+{ 2, s_5_2, 0, 1, 0}
 };
 
 static const symbol s_6_0[3] = { 'i', 'c', 'a' };
@@ -155,86 +163,88 @@ static const symbol s_6_11[4] = { 'i', 'b', 'l', 'e' };
 static const symbol s_6_12[4] = { 'a', 'n', 't', 'e' };
 static const symbol s_6_13[5] = { 'm', 'e', 'n', 't', 'e' };
 static const symbol s_6_14[6] = { 'a', 'm', 'e', 'n', 't', 'e' };
-static const symbol s_6_15[5] = { 'a', 'c', 'i', 0xF3, 'n' };
-static const symbol s_6_16[5] = { 'u', 'c', 'i', 0xF3, 'n' };
-static const symbol s_6_17[3] = { 'i', 'c', 'o' };
-static const symbol s_6_18[4] = { 'i', 's', 'm', 'o' };
-static const symbol s_6_19[3] = { 'o', 's', 'o' };
-static const symbol s_6_20[7] = { 'a', 'm', 'i', 'e', 'n', 't', 'o' };
-static const symbol s_6_21[7] = { 'i', 'm', 'i', 'e', 'n', 't', 'o' };
-static const symbol s_6_22[3] = { 'i', 'v', 'o' };
-static const symbol s_6_23[4] = { 'a', 'd', 'o', 'r' };
-static const symbol s_6_24[4] = { 'i', 'c', 'a', 's' };
-static const symbol s_6_25[6] = { 'a', 'n', 'c', 'i', 'a', 's' };
-static const symbol s_6_26[6] = { 'e', 'n', 'c', 'i', 'a', 's' };
-static const symbol s_6_27[6] = { 'a', 'd', 'o', 'r', 'a', 's' };
-static const symbol s_6_28[4] = { 'o', 's', 'a', 's' };
-static const symbol s_6_29[5] = { 'i', 's', 't', 'a', 's' };
-static const symbol s_6_30[4] = { 'i', 'v', 'a', 's' };
-static const symbol s_6_31[5] = { 'a', 'n', 'z', 'a', 's' };
-static const symbol s_6_32[6] = { 'l', 'o', 'g', 0xED, 'a', 's' };
-static const symbol s_6_33[6] = { 'i', 'd', 'a', 'd', 'e', 's' };
-static const symbol s_6_34[5] = { 'a', 'b', 'l', 'e', 's' };
-static const symbol s_6_35[5] = { 'i', 'b', 'l', 'e', 's' };
-static const symbol s_6_36[7] = { 'a', 'c', 'i', 'o', 'n', 'e', 's' };
-static const symbol s_6_37[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' };
-static const symbol s_6_38[6] = { 'a', 'd', 'o', 'r', 'e', 's' };
-static const symbol s_6_39[5] = { 'a', 'n', 't', 'e', 's' };
-static const symbol s_6_40[4] = { 'i', 'c', 'o', 's' };
-static const symbol s_6_41[5] = { 'i', 's', 'm', 'o', 's' };
-static const symbol s_6_42[4] = { 'o', 's', 'o', 's' };
-static const symbol s_6_43[8] = { 'a', 'm', 'i', 'e', 'n', 't', 'o', 's' };
-static const symbol s_6_44[8] = { 'i', 'm', 'i', 'e', 'n', 't', 'o', 's' };
-static const symbol s_6_45[4] = { 'i', 'v', 'o', 's' };
-
-static const struct among a_6[46] =
-{
-{ 3, s_6_0, -1, 1, 0},
-{ 5, s_6_1, -1, 2, 0},
-{ 5, s_6_2, -1, 5, 0},
-{ 5, s_6_3, -1, 2, 0},
-{ 3, s_6_4, -1, 1, 0},
-{ 4, s_6_5, -1, 1, 0},
-{ 3, s_6_6, -1, 9, 0},
-{ 4, s_6_7, -1, 1, 0},
-{ 5, s_6_8, -1, 3, 0},
-{ 4, s_6_9, -1, 8, 0},
-{ 4, s_6_10, -1, 1, 0},
-{ 4, s_6_11, -1, 1, 0},
-{ 4, s_6_12, -1, 2, 0},
-{ 5, s_6_13, -1, 7, 0},
-{ 6, s_6_14, 13, 6, 0},
-{ 5, s_6_15, -1, 2, 0},
-{ 5, s_6_16, -1, 4, 0},
-{ 3, s_6_17, -1, 1, 0},
-{ 4, s_6_18, -1, 1, 0},
-{ 3, s_6_19, -1, 1, 0},
-{ 7, s_6_20, -1, 1, 0},
-{ 7, s_6_21, -1, 1, 0},
-{ 3, s_6_22, -1, 9, 0},
-{ 4, s_6_23, -1, 2, 0},
-{ 4, s_6_24, -1, 1, 0},
-{ 6, s_6_25, -1, 2, 0},
-{ 6, s_6_26, -1, 5, 0},
-{ 6, s_6_27, -1, 2, 0},
-{ 4, s_6_28, -1, 1, 0},
-{ 5, s_6_29, -1, 1, 0},
-{ 4, s_6_30, -1, 9, 0},
-{ 5, s_6_31, -1, 1, 0},
-{ 6, s_6_32, -1, 3, 0},
-{ 6, s_6_33, -1, 8, 0},
-{ 5, s_6_34, -1, 1, 0},
-{ 5, s_6_35, -1, 1, 0},
-{ 7, s_6_36, -1, 2, 0},
-{ 7, s_6_37, -1, 4, 0},
-{ 6, s_6_38, -1, 2, 0},
-{ 5, s_6_39, -1, 2, 0},
-{ 4, s_6_40, -1, 1, 0},
-{ 5, s_6_41, -1, 1, 0},
-{ 4, s_6_42, -1, 1, 0},
-{ 8, s_6_43, -1, 1, 0},
-{ 8, s_6_44, -1, 1, 0},
-{ 4, s_6_45, -1, 9, 0}
+static const symbol s_6_15[5] = { 'a', 'c', 'i', 'o', 'n' };
+static const symbol s_6_16[5] = { 'u', 'c', 'i', 'o', 'n' };
+static const symbol s_6_17[5] = { 'a', 'c', 'i', 0xF3, 'n' };
+static const symbol s_6_18[5] = { 'u', 'c', 'i', 0xF3, 'n' };
+static const symbol s_6_19[3] = { 'i', 'c', 'o' };
+static const symbol s_6_20[4] = { 'i', 's', 'm', 'o' };
+static const symbol s_6_21[3] = { 'o', 's', 'o' };
+static const symbol s_6_22[7] = { 'a', 'm', 'i', 'e', 'n', 't', 'o' };
+static const symbol s_6_23[7] = { 'i', 'm', 'i', 'e', 'n', 't', 'o' };
+static const symbol s_6_24[3] = { 'i', 'v', 'o' };
+static const symbol s_6_25[4] = { 'a', 'd', 'o', 'r' };
+static const symbol s_6_26[4] = { 'i', 'c', 'a', 's' };
+static const symbol s_6_27[6] = { 'a', 'n', 'c', 'i', 'a', 's' };
+static const symbol s_6_28[6] = { 'e', 'n', 'c', 'i', 'a', 's' };
+static const symbol s_6_29[6] = { 'a', 'd', 'o', 'r', 'a', 's' };
+static const symbol s_6_30[4] = { 'o', 's', 'a', 's' };
+static const symbol s_6_31[5] = { 'i', 's', 't', 'a', 's' };
+static const symbol s_6_32[4] = { 'i', 'v', 'a', 's' };
+static const symbol s_6_33[5] = { 'a', 'n', 'z', 'a', 's' };
+static const symbol s_6_34[6] = { 'l', 'o', 'g', 0xED, 'a', 's' };
+static const symbol s_6_35[6] = { 'i', 'd', 'a', 'd', 'e', 's' };
+static const symbol s_6_36[5] = { 'a', 'b', 'l', 'e', 's' };
+static const symbol s_6_37[5] = { 'i', 'b', 'l', 'e', 's' };
+static const symbol s_6_38[7] = { 'a', 'c', 'i', 'o', 'n', 'e', 's' };
+static const symbol s_6_39[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' };
+static const symbol s_6_40[6] = { 'a', 'd', 'o', 'r', 'e', 's' };
+static const symbol s_6_41[5] = { 'a', 'n', 't', 'e', 's' };
+static const symbol s_6_42[4] = { 'i', 'c', 'o', 's' };
+static const symbol s_6_43[5] = { 'i', 's', 'm', 'o', 's' };
+static const symbol s_6_44[4] = { 'o', 's', 'o', 's' };
+static const symbol s_6_45[8] = { 'a', 'm', 'i', 'e', 'n', 't', 'o', 's' };
+static const symbol s_6_46[8] = { 'i', 'm', 'i', 'e', 'n', 't', 'o', 's' };
+static const symbol s_6_47[4] = { 'i', 'v', 'o', 's' };
+static const struct among a_6[48] = {
+{ 3, s_6_0, 0, 1, 0},
+{ 5, s_6_1, 0, 2, 0},
+{ 5, s_6_2, 0, 5, 0},
+{ 5, s_6_3, 0, 2, 0},
+{ 3, s_6_4, 0, 1, 0},
+{ 4, s_6_5, 0, 1, 0},
+{ 3, s_6_6, 0, 9, 0},
+{ 4, s_6_7, 0, 1, 0},
+{ 5, s_6_8, 0, 3, 0},
+{ 4, s_6_9, 0, 8, 0},
+{ 4, s_6_10, 0, 1, 0},
+{ 4, s_6_11, 0, 1, 0},
+{ 4, s_6_12, 0, 2, 0},
+{ 5, s_6_13, 0, 7, 0},
+{ 6, s_6_14, -1, 6, 0},
+{ 5, s_6_15, 0, 2, 0},
+{ 5, s_6_16, 0, 4, 0},
+{ 5, s_6_17, 0, 2, 0},
+{ 5, s_6_18, 0, 4, 0},
+{ 3, s_6_19, 0, 1, 0},
+{ 4, s_6_20, 0, 1, 0},
+{ 3, s_6_21, 0, 1, 0},
+{ 7, s_6_22, 0, 1, 0},
+{ 7, s_6_23, 0, 1, 0},
+{ 3, s_6_24, 0, 9, 0},
+{ 4, s_6_25, 0, 2, 0},
+{ 4, s_6_26, 0, 1, 0},
+{ 6, s_6_27, 0, 2, 0},
+{ 6, s_6_28, 0, 5, 0},
+{ 6, s_6_29, 0, 2, 0},
+{ 4, s_6_30, 0, 1, 0},
+{ 5, s_6_31, 0, 1, 0},
+{ 4, s_6_32, 0, 9, 0},
+{ 5, s_6_33, 0, 1, 0},
+{ 6, s_6_34, 0, 3, 0},
+{ 6, s_6_35, 0, 8, 0},
+{ 5, s_6_36, 0, 1, 0},
+{ 5, s_6_37, 0, 1, 0},
+{ 7, s_6_38, 0, 2, 0},
+{ 7, s_6_39, 0, 4, 0},
+{ 6, s_6_40, 0, 2, 0},
+{ 5, s_6_41, 0, 2, 0},
+{ 4, s_6_42, 0, 1, 0},
+{ 5, s_6_43, 0, 1, 0},
+{ 4, s_6_44, 0, 1, 0},
+{ 8, s_6_45, 0, 1, 0},
+{ 8, s_6_46, 0, 1, 0},
+{ 4, s_6_47, 0, 9, 0}
 };
 
 static const symbol s_7_0[2] = { 'y', 'a' };
@@ -249,21 +259,19 @@ static const symbol s_7_8[3] = { 'y', 'e', 's' };
 static const symbol s_7_9[4] = { 'y', 'a', 'i', 's' };
 static const symbol s_7_10[5] = { 'y', 'a', 'm', 'o', 's' };
 static const symbol s_7_11[2] = { 'y', 0xF3 };
-
-static const struct among a_7[12] =
-{
-{ 2, s_7_0, -1, 1, 0},
-{ 2, s_7_1, -1, 1, 0},
-{ 3, s_7_2, -1, 1, 0},
-{ 3, s_7_3, -1, 1, 0},
-{ 5, s_7_4, -1, 1, 0},
-{ 5, s_7_5, -1, 1, 0},
-{ 2, s_7_6, -1, 1, 0},
-{ 3, s_7_7, -1, 1, 0},
-{ 3, s_7_8, -1, 1, 0},
-{ 4, s_7_9, -1, 1, 0},
-{ 5, s_7_10, -1, 1, 0},
-{ 2, s_7_11, -1, 1, 0}
+static const struct among a_7[12] = {
+{ 2, s_7_0, 0, 1, 0},
+{ 2, s_7_1, 0, 1, 0},
+{ 3, s_7_2, 0, 1, 0},
+{ 3, s_7_3, 0, 1, 0},
+{ 5, s_7_4, 0, 1, 0},
+{ 5, s_7_5, 0, 1, 0},
+{ 2, s_7_6, 0, 1, 0},
+{ 3, s_7_7, 0, 1, 0},
+{ 3, s_7_8, 0, 1, 0},
+{ 4, s_7_9, 0, 1, 0},
+{ 5, s_7_10, 0, 1, 0},
+{ 2, s_7_11, 0, 1, 0}
 };
 
 static const symbol s_8_0[3] = { 'a', 'b', 'a' };
@@ -362,105 +370,103 @@ static const symbol s_8_92[3] = { 'a', 'r', 0xE9 };
 static const symbol s_8_93[3] = { 'e', 'r', 0xE9 };
 static const symbol s_8_94[3] = { 'i', 'r', 0xE9 };
 static const symbol s_8_95[2] = { 'i', 0xF3 };
-
-static const struct among a_8[96] =
-{
-{ 3, s_8_0, -1, 2, 0},
-{ 3, s_8_1, -1, 2, 0},
-{ 3, s_8_2, -1, 2, 0},
-{ 3, s_8_3, -1, 2, 0},
-{ 4, s_8_4, -1, 2, 0},
-{ 2, s_8_5, -1, 2, 0},
-{ 4, s_8_6, 5, 2, 0},
-{ 4, s_8_7, 5, 2, 0},
-{ 4, s_8_8, 5, 2, 0},
-{ 2, s_8_9, -1, 2, 0},
-{ 2, s_8_10, -1, 2, 0},
-{ 2, s_8_11, -1, 2, 0},
-{ 3, s_8_12, -1, 2, 0},
-{ 4, s_8_13, -1, 2, 0},
-{ 4, s_8_14, -1, 2, 0},
-{ 4, s_8_15, -1, 2, 0},
-{ 2, s_8_16, -1, 2, 0},
-{ 4, s_8_17, 16, 2, 0},
-{ 4, s_8_18, 16, 2, 0},
-{ 5, s_8_19, 16, 2, 0},
-{ 3, s_8_20, 16, 2, 0},
-{ 5, s_8_21, 20, 2, 0},
-{ 5, s_8_22, 20, 2, 0},
-{ 5, s_8_23, 20, 2, 0},
-{ 2, s_8_24, -1, 1, 0},
-{ 4, s_8_25, 24, 2, 0},
-{ 5, s_8_26, 24, 2, 0},
-{ 4, s_8_27, -1, 2, 0},
-{ 5, s_8_28, -1, 2, 0},
-{ 4, s_8_29, -1, 2, 0},
-{ 4, s_8_30, -1, 2, 0},
-{ 4, s_8_31, -1, 2, 0},
-{ 3, s_8_32, -1, 2, 0},
-{ 3, s_8_33, -1, 2, 0},
-{ 4, s_8_34, -1, 2, 0},
-{ 5, s_8_35, -1, 2, 0},
-{ 2, s_8_36, -1, 2, 0},
-{ 2, s_8_37, -1, 2, 0},
-{ 2, s_8_38, -1, 2, 0},
-{ 2, s_8_39, -1, 2, 0},
-{ 4, s_8_40, 39, 2, 0},
-{ 4, s_8_41, 39, 2, 0},
-{ 4, s_8_42, 39, 2, 0},
-{ 4, s_8_43, 39, 2, 0},
-{ 5, s_8_44, 39, 2, 0},
-{ 3, s_8_45, 39, 2, 0},
-{ 5, s_8_46, 45, 2, 0},
-{ 5, s_8_47, 45, 2, 0},
-{ 5, s_8_48, 45, 2, 0},
-{ 2, s_8_49, -1, 1, 0},
-{ 4, s_8_50, 49, 2, 0},
-{ 5, s_8_51, 49, 2, 0},
-{ 5, s_8_52, -1, 2, 0},
-{ 5, s_8_53, -1, 2, 0},
-{ 6, s_8_54, -1, 2, 0},
-{ 4, s_8_55, -1, 2, 0},
-{ 6, s_8_56, 55, 2, 0},
-{ 6, s_8_57, 55, 2, 0},
-{ 6, s_8_58, 55, 2, 0},
-{ 5, s_8_59, -1, 2, 0},
-{ 6, s_8_60, -1, 2, 0},
-{ 6, s_8_61, -1, 2, 0},
-{ 6, s_8_62, -1, 2, 0},
-{ 3, s_8_63, -1, 2, 0},
-{ 3, s_8_64, -1, 1, 0},
-{ 5, s_8_65, 64, 2, 0},
-{ 5, s_8_66, 64, 2, 0},
-{ 5, s_8_67, 64, 2, 0},
-{ 4, s_8_68, -1, 2, 0},
-{ 4, s_8_69, -1, 2, 0},
-{ 4, s_8_70, -1, 2, 0},
-{ 6, s_8_71, 70, 2, 0},
-{ 6, s_8_72, 70, 2, 0},
-{ 7, s_8_73, 70, 2, 0},
-{ 5, s_8_74, 70, 2, 0},
-{ 7, s_8_75, 74, 2, 0},
-{ 7, s_8_76, 74, 2, 0},
-{ 7, s_8_77, 74, 2, 0},
-{ 4, s_8_78, -1, 1, 0},
-{ 6, s_8_79, 78, 2, 0},
-{ 6, s_8_80, 78, 2, 0},
-{ 6, s_8_81, 78, 2, 0},
-{ 6, s_8_82, 78, 2, 0},
-{ 7, s_8_83, 78, 2, 0},
-{ 4, s_8_84, -1, 2, 0},
-{ 4, s_8_85, -1, 2, 0},
-{ 4, s_8_86, -1, 2, 0},
-{ 4, s_8_87, -1, 2, 0},
-{ 2, s_8_88, -1, 2, 0},
-{ 3, s_8_89, -1, 2, 0},
-{ 3, s_8_90, -1, 2, 0},
-{ 3, s_8_91, -1, 2, 0},
-{ 3, s_8_92, -1, 2, 0},
-{ 3, s_8_93, -1, 2, 0},
-{ 3, s_8_94, -1, 2, 0},
-{ 2, s_8_95, -1, 2, 0}
+static const struct among a_8[96] = {
+{ 3, s_8_0, 0, 2, 0},
+{ 3, s_8_1, 0, 2, 0},
+{ 3, s_8_2, 0, 2, 0},
+{ 3, s_8_3, 0, 2, 0},
+{ 4, s_8_4, 0, 2, 0},
+{ 2, s_8_5, 0, 2, 0},
+{ 4, s_8_6, -1, 2, 0},
+{ 4, s_8_7, -2, 2, 0},
+{ 4, s_8_8, -3, 2, 0},
+{ 2, s_8_9, 0, 2, 0},
+{ 2, s_8_10, 0, 2, 0},
+{ 2, s_8_11, 0, 2, 0},
+{ 3, s_8_12, 0, 2, 0},
+{ 4, s_8_13, 0, 2, 0},
+{ 4, s_8_14, 0, 2, 0},
+{ 4, s_8_15, 0, 2, 0},
+{ 2, s_8_16, 0, 2, 0},
+{ 4, s_8_17, -1, 2, 0},
+{ 4, s_8_18, -2, 2, 0},
+{ 5, s_8_19, -3, 2, 0},
+{ 3, s_8_20, -4, 2, 0},
+{ 5, s_8_21, -1, 2, 0},
+{ 5, s_8_22, -2, 2, 0},
+{ 5, s_8_23, -3, 2, 0},
+{ 2, s_8_24, 0, 1, 0},
+{ 4, s_8_25, -1, 2, 0},
+{ 5, s_8_26, -2, 2, 0},
+{ 4, s_8_27, 0, 2, 0},
+{ 5, s_8_28, 0, 2, 0},
+{ 4, s_8_29, 0, 2, 0},
+{ 4, s_8_30, 0, 2, 0},
+{ 4, s_8_31, 0, 2, 0},
+{ 3, s_8_32, 0, 2, 0},
+{ 3, s_8_33, 0, 2, 0},
+{ 4, s_8_34, 0, 2, 0},
+{ 5, s_8_35, 0, 2, 0},
+{ 2, s_8_36, 0, 2, 0},
+{ 2, s_8_37, 0, 2, 0},
+{ 2, s_8_38, 0, 2, 0},
+{ 2, s_8_39, 0, 2, 0},
+{ 4, s_8_40, -1, 2, 0},
+{ 4, s_8_41, -2, 2, 0},
+{ 4, s_8_42, -3, 2, 0},
+{ 4, s_8_43, -4, 2, 0},
+{ 5, s_8_44, -5, 2, 0},
+{ 3, s_8_45, -6, 2, 0},
+{ 5, s_8_46, -1, 2, 0},
+{ 5, s_8_47, -2, 2, 0},
+{ 5, s_8_48, -3, 2, 0},
+{ 2, s_8_49, 0, 1, 0},
+{ 4, s_8_50, -1, 2, 0},
+{ 5, s_8_51, -2, 2, 0},
+{ 5, s_8_52, 0, 2, 0},
+{ 5, s_8_53, 0, 2, 0},
+{ 6, s_8_54, 0, 2, 0},
+{ 4, s_8_55, 0, 2, 0},
+{ 6, s_8_56, -1, 2, 0},
+{ 6, s_8_57, -2, 2, 0},
+{ 6, s_8_58, -3, 2, 0},
+{ 5, s_8_59, 0, 2, 0},
+{ 6, s_8_60, 0, 2, 0},
+{ 6, s_8_61, 0, 2, 0},
+{ 6, s_8_62, 0, 2, 0},
+{ 3, s_8_63, 0, 2, 0},
+{ 3, s_8_64, 0, 1, 0},
+{ 5, s_8_65, -1, 2, 0},
+{ 5, s_8_66, -2, 2, 0},
+{ 5, s_8_67, -3, 2, 0},
+{ 4, s_8_68, 0, 2, 0},
+{ 4, s_8_69, 0, 2, 0},
+{ 4, s_8_70, 0, 2, 0},
+{ 6, s_8_71, -1, 2, 0},
+{ 6, s_8_72, -2, 2, 0},
+{ 7, s_8_73, -3, 2, 0},
+{ 5, s_8_74, -4, 2, 0},
+{ 7, s_8_75, -1, 2, 0},
+{ 7, s_8_76, -2, 2, 0},
+{ 7, s_8_77, -3, 2, 0},
+{ 4, s_8_78, 0, 1, 0},
+{ 6, s_8_79, -1, 2, 0},
+{ 6, s_8_80, -2, 2, 0},
+{ 6, s_8_81, -3, 2, 0},
+{ 6, s_8_82, -4, 2, 0},
+{ 7, s_8_83, -5, 2, 0},
+{ 4, s_8_84, 0, 2, 0},
+{ 4, s_8_85, 0, 2, 0},
+{ 4, s_8_86, 0, 2, 0},
+{ 4, s_8_87, 0, 2, 0},
+{ 2, s_8_88, 0, 2, 0},
+{ 3, s_8_89, 0, 2, 0},
+{ 3, s_8_90, 0, 2, 0},
+{ 3, s_8_91, 0, 2, 0},
+{ 3, s_8_92, 0, 2, 0},
+{ 3, s_8_93, 0, 2, 0},
+{ 3, s_8_94, 0, 2, 0},
+{ 2, s_8_95, 0, 2, 0}
 };
 
 static const symbol s_9_0[1] = { 'a' };
@@ -471,156 +477,136 @@ static const symbol s_9_4[1] = { 0xE1 };
 static const symbol s_9_5[1] = { 0xE9 };
 static const symbol s_9_6[1] = { 0xED };
 static const symbol s_9_7[1] = { 0xF3 };
-
-static const struct among a_9[8] =
-{
-{ 1, s_9_0, -1, 1, 0},
-{ 1, s_9_1, -1, 2, 0},
-{ 1, s_9_2, -1, 1, 0},
-{ 2, s_9_3, -1, 1, 0},
-{ 1, s_9_4, -1, 1, 0},
-{ 1, s_9_5, -1, 2, 0},
-{ 1, s_9_6, -1, 1, 0},
-{ 1, s_9_7, -1, 1, 0}
+static const struct among a_9[8] = {
+{ 1, s_9_0, 0, 1, 0},
+{ 1, s_9_1, 0, 2, 0},
+{ 1, s_9_2, 0, 1, 0},
+{ 2, s_9_3, 0, 1, 0},
+{ 1, s_9_4, 0, 1, 0},
+{ 1, s_9_5, 0, 2, 0},
+{ 1, s_9_6, 0, 1, 0},
+{ 1, s_9_7, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 };
 
-static const symbol s_0[] = { 'a' };
-static const symbol s_1[] = { 'e' };
-static const symbol s_2[] = { 'i' };
-static const symbol s_3[] = { 'o' };
-static const symbol s_4[] = { 'u' };
-static const symbol s_5[] = { 'i', 'e', 'n', 'd', 'o' };
-static const symbol s_6[] = { 'a', 'n', 'd', 'o' };
-static const symbol s_7[] = { 'a', 'r' };
-static const symbol s_8[] = { 'e', 'r' };
-static const symbol s_9[] = { 'i', 'r' };
-static const symbol s_10[] = { 'i', 'c' };
-static const symbol s_11[] = { 'l', 'o', 'g' };
-static const symbol s_12[] = { 'u' };
-static const symbol s_13[] = { 'e', 'n', 't', 'e' };
-static const symbol s_14[] = { 'a', 't' };
-static const symbol s_15[] = { 'a', 't' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
-            {   int c3 = z->c;
-                if (out_grouping(z, g_v, 97, 252, 0)) goto lab4;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
+            do {
+                int v_3 = z->c;
+                if (out_grouping(z, g_v, 97, 252, 0)) goto lab2;
                 {
                     int ret = out_grouping(z, g_v, 97, 252, 1);
-                    if (ret < 0) goto lab4;
+                    if (ret < 0) goto lab2;
                     z->c += ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c3;
-                if (in_grouping(z, g_v, 97, 252, 0)) goto lab2;
-
+                break;
+            lab2:
+                z->c = v_3;
+                if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
                 {
                     int ret = in_grouping(z, g_v, 97, 252, 1);
-                    if (ret < 0) goto lab2;
+                    if (ret < 0) goto lab1;
                     z->c += ret;
                 }
-            }
-        lab3:
-            goto lab1;
-        lab2:
-            z->c = c2;
+            } while (0);
+            break;
+        lab1:
+            z->c = v_2;
             if (out_grouping(z, g_v, 97, 252, 0)) goto lab0;
-            {   int c4 = z->c;
-                if (out_grouping(z, g_v, 97, 252, 0)) goto lab6;
-
+            do {
+                int v_4 = z->c;
+                if (out_grouping(z, g_v, 97, 252, 0)) goto lab3;
                 {
                     int ret = out_grouping(z, g_v, 97, 252, 1);
-                    if (ret < 0) goto lab6;
+                    if (ret < 0) goto lab3;
                     z->c += ret;
                 }
-                goto lab5;
-            lab6:
-                z->c = c4;
+                break;
+            lab3:
+                z->c = v_4;
                 if (in_grouping(z, g_v, 97, 252, 0)) goto lab0;
                 if (z->c >= z->l) goto lab0;
                 z->c++;
-            }
-        lab5:
-            ;
-        }
-    lab1:
-        z->I[2] = z->c;
+            } while (0);
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c5 = z->c;
-
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 252, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 252, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping(z, g_v, 97, 252, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 97, 252, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab7:
-        z->c = c5;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab4:
+        z->c = v_5;
     }
     return 1;
 }
 
 static int r_postlude(struct SN_env * z) {
     int among_var;
-    while(1) {
-        int c1 = z->c;
+    while (1) {
+        int v_1 = z->c;
         z->bra = z->c;
         if (z->c >= z->l || z->p[z->c + 0] >> 5 != 7 || !((67641858 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 6; else
-        among_var = find_among(z, a_0, 6);
+        among_var = find_among(z, a_0, 6, 0);
         z->ket = z->c;
         switch (among_var) {
             case 1:
-                {   int ret = slice_from_s(z, 1, s_0);
+                {
+                    int ret = slice_from_s(z, 1, s_0);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_from_s(z, 1, s_1);
+                {
+                    int ret = slice_from_s(z, 1, s_1);
                     if (ret < 0) return ret;
                 }
                 break;
             case 3:
-                {   int ret = slice_from_s(z, 1, s_2);
+                {
+                    int ret = slice_from_s(z, 1, s_2);
                     if (ret < 0) return ret;
                 }
                 break;
             case 4:
-                {   int ret = slice_from_s(z, 1, s_3);
+                {
+                    int ret = slice_from_s(z, 1, s_3);
                     if (ret < 0) return ret;
                 }
                 break;
             case 5:
-                {   int ret = slice_from_s(z, 1, s_4);
+                {
+                    int ret = slice_from_s(z, 1, s_4);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -631,76 +617,84 @@ static int r_postlude(struct SN_env * z) {
         }
         continue;
     lab0:
-        z->c = c1;
+        z->c = v_1;
         break;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_attached_pronoun(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((557090 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    if (!find_among_b(z, a_1, 13)) return 0;
+    if (!find_among_b(z, a_1, 13, 0)) return 0;
     z->bra = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 111 && z->p[z->c - 1] != 114)) return 0;
-    among_var = find_among_b(z, a_2, 11);
+    among_var = find_among_b(z, a_2, 11, 0);
     if (!among_var) return 0;
-    {   int ret = r_RV(z);
+    {
+        int ret = r_RV(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 5, s_5);
+            {
+                int ret = slice_from_s(z, 5, s_5);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 4, s_6);
+            {
+                int ret = slice_from_s(z, 4, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 2, s_7);
+            {
+                int ret = slice_from_s(z, 2, s_7);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 2, s_8);
+            {
+                int ret = slice_from_s(z, 2, s_8);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
             z->bra = z->c;
-            {   int ret = slice_from_s(z, 2, s_9);
+            {
+                int ret = slice_from_s(z, 2, s_9);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 7:
             if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0;
             z->c--;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -712,34 +706,41 @@ static int r_standard_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((835634 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_6, 46);
+    among_var = find_among_b(z, a_6, 48, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m1 = z->l - z->c; (void)m1;
+            {
+                int v_1 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m1; goto lab0; }
+                if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - v_1; goto lab0; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m1; goto lab0; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_1; goto lab0; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab0:
@@ -747,59 +748,72 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 3:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 3, s_11);
+            {
+                int ret = slice_from_s(z, 3, s_11);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 1, s_12);
+            {
+                int ret = slice_from_s(z, 1, s_12);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_from_s(z, 4, s_13);
+            {
+                int ret = slice_from_s(z, 4, s_13);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m2 = z->l - z->c; (void)m2;
+            {
+                int v_2 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m2; goto lab1; }
-                among_var = find_among_b(z, a_3, 4);
-                if (!among_var) { z->c = z->l - m2; goto lab1; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_2; goto lab1; }
+                among_var = find_among_b(z, a_3, 4, 0);
+                if (!among_var) { z->c = z->l - v_2; goto lab1; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m2; goto lab1; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_2; goto lab1; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 switch (among_var) {
                     case 1:
                         z->ket = z->c;
-                        if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m2; goto lab1; }
+                        if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - v_2; goto lab1; }
                         z->bra = z->c;
-                        {   int ret = r_R2(z);
-                            if (ret == 0) { z->c = z->l - m2; goto lab1; }
+                        {
+                            int ret = r_R2(z);
+                            if (ret == 0) { z->c = z->l - v_2; goto lab1; }
                             if (ret < 0) return ret;
                         }
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
@@ -809,22 +823,27 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 7:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m3 = z->l - z->c; (void)m3;
+            {
+                int v_3 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - m3; goto lab2; }
-                if (!find_among_b(z, a_4, 3)) { z->c = z->l - m3; goto lab2; }
+                if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - v_3; goto lab2; }
+                if (!find_among_b(z, a_4, 3, 0)) { z->c = z->l - v_3; goto lab2; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m3; goto lab2; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_3; goto lab2; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab2:
@@ -832,22 +851,27 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 8:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m4 = z->l - z->c; (void)m4;
+            {
+                int v_4 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m4; goto lab3; }
-                if (!find_among_b(z, a_5, 3)) { z->c = z->l - m4; goto lab3; }
+                if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_4; goto lab3; }
+                if (!find_among_b(z, a_5, 3, 0)) { z->c = z->l - v_4; goto lab3; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m4; goto lab3; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_4; goto lab3; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab3:
@@ -855,21 +879,26 @@ static int r_standard_suffix(struct SN_env * z) {
             }
             break;
         case 9:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m5 = z->l - z->c; (void)m5;
+            {
+                int v_5 = z->l - z->c;
                 z->ket = z->c;
-                if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m5; goto lab4; }
+                if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - v_5; goto lab4; }
                 z->bra = z->c;
-                {   int ret = r_R2(z);
-                    if (ret == 0) { z->c = z->l - m5; goto lab4; }
+                {
+                    int ret = r_R2(z);
+                    if (ret == 0) { z->c = z->l - v_5; goto lab4; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab4:
@@ -881,18 +910,19 @@ static int r_standard_suffix(struct SN_env * z) {
 }
 
 static int r_y_verb_suffix(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        if (!find_among_b(z, a_7, 12)) { z->lb = mlimit1; return 0; }
+        if (!find_among_b(z, a_7, 12, 0)) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     if (z->c <= z->lb || z->p[z->c - 1] != 'u') return 0;
     z->c--;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -900,36 +930,40 @@ static int r_y_verb_suffix(struct SN_env * z) {
 
 static int r_verb_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[2]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[2];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
         z->ket = z->c;
-        among_var = find_among_b(z, a_8, 96);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        among_var = find_among_b(z, a_8, 96, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int m2 = z->l - z->c; (void)m2;
-                if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m2; goto lab0; }
+            {
+                int v_2 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - v_2; goto lab0; }
                 z->c--;
-                {   int m_test3 = z->l - z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m2; goto lab0; }
+                {
+                    int v_3 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - v_2; goto lab0; }
                     z->c--;
-                    z->c = z->l - m_test3;
+                    z->c = z->l - v_3;
                 }
             lab0:
                 ;
             }
             z->bra = z->c;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -940,40 +974,48 @@ static int r_verb_suffix(struct SN_env * z) {
 static int r_residual_suffix(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_9, 8);
+    among_var = find_among_b(z, a_9, 8, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-            {   int m1 = z->l - z->c; (void)m1;
+            {
+                int v_1 = z->l - z->c;
                 z->ket = z->c;
-                if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - m1; goto lab0; }
+                if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->c = z->l - v_1; goto lab0; }
                 z->c--;
                 z->bra = z->c;
-                {   int m_test2 = z->l - z->c;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - m1; goto lab0; }
+                {
+                    int v_2 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 'g') { z->c = z->l - v_1; goto lab0; }
                     z->c--;
-                    z->c = z->l - m_test2;
+                    z->c = z->l - v_2;
                 }
-                {   int ret = r_RV(z);
-                    if (ret == 0) { z->c = z->l - m1; goto lab0; }
+                {
+                    int ret = r_RV(z);
+                    if (ret == 0) { z->c = z->l - v_1; goto lab0; }
                     if (ret < 0) return ret;
                 }
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
             lab0:
@@ -985,60 +1027,79 @@ static int r_residual_suffix(struct SN_env * z) {
 }
 
 extern int spanish_ISO_8859_1_stem(struct SN_env * z) {
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m1 = z->l - z->c; (void)m1;
-        {   int ret = r_attached_pronoun(z);
+    {
+        int v_1 = z->l - z->c;
+        {
+            int ret = r_attached_pronoun(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
     }
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int ret = r_standard_suffix(z);
-                if (ret == 0) goto lab2;
+    {
+        int v_2 = z->l - z->c;
+        do {
+            int v_3 = z->l - z->c;
+            {
+                int ret = r_standard_suffix(z);
+                if (ret == 0) goto lab1;
                 if (ret < 0) return ret;
             }
-            goto lab1;
-        lab2:
-            z->c = z->l - m3;
-            {   int ret = r_y_verb_suffix(z);
-                if (ret == 0) goto lab3;
+            break;
+        lab1:
+            z->c = z->l - v_3;
+            {
+                int ret = r_y_verb_suffix(z);
+                if (ret == 0) goto lab2;
                 if (ret < 0) return ret;
             }
-            goto lab1;
-        lab3:
-            z->c = z->l - m3;
-            {   int ret = r_verb_suffix(z);
+            break;
+        lab2:
+            z->c = z->l - v_3;
+            {
+                int ret = r_verb_suffix(z);
                 if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-        }
-    lab1:
+        } while (0);
     lab0:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_residual_suffix(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_residual_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
-    {   int c5 = z->c;
-        {   int ret = r_postlude(z);
+    {
+        int v_5 = z->c;
+        {
+            int ret = r_postlude(z);
             if (ret < 0) return ret;
         }
-        z->c = c5;
+        z->c = v_5;
     }
     return 1;
 }
 
-extern struct SN_env * spanish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * spanish_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void spanish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void spanish_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 6cf715d14c4d7f2ede785c53dab9ca31b2d529e9..28552cf74ce6134d61a41bd5ed790b27b68f3a99 100644 (file)
@@ -1,6 +1,17 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from swedish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_1_swedish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,133 +20,169 @@ extern int swedish_ISO_8859_1_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_other_suffix(struct SN_env * z);
 static int r_consonant_pair(struct SN_env * z);
 static int r_main_suffix(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
+static int r_et_condition(struct SN_env * z);
 
-extern struct SN_env * swedish_ISO_8859_1_create_env(void);
-extern void swedish_ISO_8859_1_close_env(struct SN_env * z);
-
-
-#ifdef __cplusplus
-}
-#endif
-static const symbol s_0_0[1] = { 'a' };
-static const symbol s_0_1[4] = { 'a', 'r', 'n', 'a' };
-static const symbol s_0_2[4] = { 'e', 'r', 'n', 'a' };
-static const symbol s_0_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
-static const symbol s_0_4[4] = { 'o', 'r', 'n', 'a' };
-static const symbol s_0_5[2] = { 'a', 'd' };
-static const symbol s_0_6[1] = { 'e' };
-static const symbol s_0_7[3] = { 'a', 'd', 'e' };
-static const symbol s_0_8[4] = { 'a', 'n', 'd', 'e' };
-static const symbol s_0_9[4] = { 'a', 'r', 'n', 'e' };
-static const symbol s_0_10[3] = { 'a', 'r', 'e' };
-static const symbol s_0_11[4] = { 'a', 's', 't', 'e' };
-static const symbol s_0_12[2] = { 'e', 'n' };
-static const symbol s_0_13[5] = { 'a', 'n', 'd', 'e', 'n' };
-static const symbol s_0_14[4] = { 'a', 'r', 'e', 'n' };
-static const symbol s_0_15[5] = { 'h', 'e', 't', 'e', 'n' };
-static const symbol s_0_16[3] = { 'e', 'r', 'n' };
-static const symbol s_0_17[2] = { 'a', 'r' };
-static const symbol s_0_18[2] = { 'e', 'r' };
-static const symbol s_0_19[5] = { 'h', 'e', 't', 'e', 'r' };
-static const symbol s_0_20[2] = { 'o', 'r' };
-static const symbol s_0_21[1] = { 's' };
-static const symbol s_0_22[2] = { 'a', 's' };
-static const symbol s_0_23[5] = { 'a', 'r', 'n', 'a', 's' };
-static const symbol s_0_24[5] = { 'e', 'r', 'n', 'a', 's' };
-static const symbol s_0_25[5] = { 'o', 'r', 'n', 'a', 's' };
-static const symbol s_0_26[2] = { 'e', 's' };
-static const symbol s_0_27[4] = { 'a', 'd', 'e', 's' };
-static const symbol s_0_28[5] = { 'a', 'n', 'd', 'e', 's' };
-static const symbol s_0_29[3] = { 'e', 'n', 's' };
-static const symbol s_0_30[5] = { 'a', 'r', 'e', 'n', 's' };
-static const symbol s_0_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
-static const symbol s_0_32[4] = { 'e', 'r', 'n', 's' };
-static const symbol s_0_33[2] = { 'a', 't' };
-static const symbol s_0_34[5] = { 'a', 'n', 'd', 'e', 't' };
-static const symbol s_0_35[3] = { 'h', 'e', 't' };
-static const symbol s_0_36[3] = { 'a', 's', 't' };
+static const symbol s_0[] = { 'e', 't' };
+static const symbol s_1[] = { 0xF6, 's' };
+static const symbol s_2[] = { 'f', 'u', 'l', 'l' };
 
-static const struct among a_0[37] =
-{
-{ 1, s_0_0, -1, 1, 0},
-{ 4, s_0_1, 0, 1, 0},
-{ 4, s_0_2, 0, 1, 0},
-{ 7, s_0_3, 2, 1, 0},
-{ 4, s_0_4, 0, 1, 0},
-{ 2, s_0_5, -1, 1, 0},
-{ 1, s_0_6, -1, 1, 0},
-{ 3, s_0_7, 6, 1, 0},
-{ 4, s_0_8, 6, 1, 0},
-{ 4, s_0_9, 6, 1, 0},
-{ 3, s_0_10, 6, 1, 0},
-{ 4, s_0_11, 6, 1, 0},
-{ 2, s_0_12, -1, 1, 0},
-{ 5, s_0_13, 12, 1, 0},
-{ 4, s_0_14, 12, 1, 0},
-{ 5, s_0_15, 12, 1, 0},
-{ 3, s_0_16, -1, 1, 0},
-{ 2, s_0_17, -1, 1, 0},
-{ 2, s_0_18, -1, 1, 0},
-{ 5, s_0_19, 18, 1, 0},
-{ 2, s_0_20, -1, 1, 0},
-{ 1, s_0_21, -1, 2, 0},
-{ 2, s_0_22, 21, 1, 0},
-{ 5, s_0_23, 22, 1, 0},
-{ 5, s_0_24, 22, 1, 0},
-{ 5, s_0_25, 22, 1, 0},
-{ 2, s_0_26, 21, 1, 0},
-{ 4, s_0_27, 26, 1, 0},
-{ 5, s_0_28, 26, 1, 0},
-{ 3, s_0_29, 21, 1, 0},
-{ 5, s_0_30, 29, 1, 0},
-{ 6, s_0_31, 29, 1, 0},
-{ 4, s_0_32, 21, 1, 0},
-{ 2, s_0_33, -1, 1, 0},
-{ 5, s_0_34, -1, 1, 0},
-{ 3, s_0_35, -1, 1, 0},
-{ 3, s_0_36, -1, 1, 0}
+static const symbol s_0_0[3] = { 'f', 'a', 'b' };
+static const symbol s_0_1[1] = { 'h' };
+static const symbol s_0_2[3] = { 'p', 'a', 'k' };
+static const symbol s_0_3[3] = { 'r', 'a', 'k' };
+static const symbol s_0_4[4] = { 's', 't', 'a', 'k' };
+static const symbol s_0_5[3] = { 'k', 'o', 'm' };
+static const symbol s_0_6[3] = { 'i', 'e', 't' };
+static const symbol s_0_7[3] = { 'c', 'i', 't' };
+static const symbol s_0_8[3] = { 'd', 'i', 't' };
+static const symbol s_0_9[4] = { 'a', 'l', 'i', 't' };
+static const symbol s_0_10[4] = { 'i', 'l', 'i', 't' };
+static const symbol s_0_11[3] = { 'm', 'i', 't' };
+static const symbol s_0_12[3] = { 'n', 'i', 't' };
+static const symbol s_0_13[3] = { 'p', 'i', 't' };
+static const symbol s_0_14[3] = { 'r', 'i', 't' };
+static const symbol s_0_15[3] = { 's', 'i', 't' };
+static const symbol s_0_16[3] = { 't', 'i', 't' };
+static const symbol s_0_17[3] = { 'u', 'i', 't' };
+static const symbol s_0_18[4] = { 'i', 'v', 'i', 't' };
+static const symbol s_0_19[4] = { 'k', 'v', 'i', 't' };
+static const symbol s_0_20[3] = { 'x', 'i', 't' };
+static const struct among a_0[21] = {
+{ 3, s_0_0, 0, -1, 0},
+{ 1, s_0_1, 0, -1, 0},
+{ 3, s_0_2, 0, -1, 0},
+{ 3, s_0_3, 0, -1, 0},
+{ 4, s_0_4, 0, -1, 0},
+{ 3, s_0_5, 0, -1, 0},
+{ 3, s_0_6, 0, -1, 0},
+{ 3, s_0_7, 0, -1, 0},
+{ 3, s_0_8, 0, -1, 0},
+{ 4, s_0_9, 0, -1, 0},
+{ 4, s_0_10, 0, -1, 0},
+{ 3, s_0_11, 0, -1, 0},
+{ 3, s_0_12, 0, -1, 0},
+{ 3, s_0_13, 0, -1, 0},
+{ 3, s_0_14, 0, -1, 0},
+{ 3, s_0_15, 0, -1, 0},
+{ 3, s_0_16, 0, -1, 0},
+{ 3, s_0_17, 0, -1, 0},
+{ 4, s_0_18, 0, -1, 0},
+{ 4, s_0_19, 0, -1, 0},
+{ 3, s_0_20, 0, -1, 0}
 };
 
-static const symbol s_1_0[2] = { 'd', 'd' };
-static const symbol s_1_1[2] = { 'g', 'd' };
-static const symbol s_1_2[2] = { 'n', 'n' };
-static const symbol s_1_3[2] = { 'd', 't' };
-static const symbol s_1_4[2] = { 'g', 't' };
-static const symbol s_1_5[2] = { 'k', 't' };
-static const symbol s_1_6[2] = { 't', 't' };
-
-static const struct among a_1[7] =
-{
-{ 2, s_1_0, -1, -1, 0},
-{ 2, s_1_1, -1, -1, 0},
-{ 2, s_1_2, -1, -1, 0},
-{ 2, s_1_3, -1, -1, 0},
-{ 2, s_1_4, -1, -1, 0},
-{ 2, s_1_5, -1, -1, 0},
-{ 2, s_1_6, -1, -1, 0}
+static const symbol s_1_0[1] = { 'a' };
+static const symbol s_1_1[4] = { 'a', 'r', 'n', 'a' };
+static const symbol s_1_2[4] = { 'e', 'r', 'n', 'a' };
+static const symbol s_1_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
+static const symbol s_1_4[4] = { 'o', 'r', 'n', 'a' };
+static const symbol s_1_5[2] = { 'a', 'd' };
+static const symbol s_1_6[1] = { 'e' };
+static const symbol s_1_7[3] = { 'a', 'd', 'e' };
+static const symbol s_1_8[4] = { 'a', 'n', 'd', 'e' };
+static const symbol s_1_9[4] = { 'a', 'r', 'n', 'e' };
+static const symbol s_1_10[3] = { 'a', 'r', 'e' };
+static const symbol s_1_11[4] = { 'a', 's', 't', 'e' };
+static const symbol s_1_12[2] = { 'e', 'n' };
+static const symbol s_1_13[5] = { 'a', 'n', 'd', 'e', 'n' };
+static const symbol s_1_14[4] = { 'a', 'r', 'e', 'n' };
+static const symbol s_1_15[5] = { 'h', 'e', 't', 'e', 'n' };
+static const symbol s_1_16[3] = { 'e', 'r', 'n' };
+static const symbol s_1_17[2] = { 'a', 'r' };
+static const symbol s_1_18[2] = { 'e', 'r' };
+static const symbol s_1_19[5] = { 'h', 'e', 't', 'e', 'r' };
+static const symbol s_1_20[2] = { 'o', 'r' };
+static const symbol s_1_21[1] = { 's' };
+static const symbol s_1_22[2] = { 'a', 's' };
+static const symbol s_1_23[5] = { 'a', 'r', 'n', 'a', 's' };
+static const symbol s_1_24[5] = { 'e', 'r', 'n', 'a', 's' };
+static const symbol s_1_25[5] = { 'o', 'r', 'n', 'a', 's' };
+static const symbol s_1_26[2] = { 'e', 's' };
+static const symbol s_1_27[4] = { 'a', 'd', 'e', 's' };
+static const symbol s_1_28[5] = { 'a', 'n', 'd', 'e', 's' };
+static const symbol s_1_29[3] = { 'e', 'n', 's' };
+static const symbol s_1_30[5] = { 'a', 'r', 'e', 'n', 's' };
+static const symbol s_1_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
+static const symbol s_1_32[4] = { 'e', 'r', 'n', 's' };
+static const symbol s_1_33[2] = { 'a', 't' };
+static const symbol s_1_34[2] = { 'e', 't' };
+static const symbol s_1_35[5] = { 'a', 'n', 'd', 'e', 't' };
+static const symbol s_1_36[3] = { 'h', 'e', 't' };
+static const symbol s_1_37[3] = { 'a', 's', 't' };
+static const struct among a_1[38] = {
+{ 1, s_1_0, 0, 1, 0},
+{ 4, s_1_1, -1, 1, 0},
+{ 4, s_1_2, -2, 1, 0},
+{ 7, s_1_3, -1, 1, 0},
+{ 4, s_1_4, -4, 1, 0},
+{ 2, s_1_5, 0, 1, 0},
+{ 1, s_1_6, 0, 1, 0},
+{ 3, s_1_7, -1, 1, 0},
+{ 4, s_1_8, -2, 1, 0},
+{ 4, s_1_9, -3, 1, 0},
+{ 3, s_1_10, -4, 1, 0},
+{ 4, s_1_11, -5, 1, 0},
+{ 2, s_1_12, 0, 1, 0},
+{ 5, s_1_13, -1, 1, 0},
+{ 4, s_1_14, -2, 1, 0},
+{ 5, s_1_15, -3, 1, 0},
+{ 3, s_1_16, 0, 1, 0},
+{ 2, s_1_17, 0, 1, 0},
+{ 2, s_1_18, 0, 1, 0},
+{ 5, s_1_19, -1, 1, 0},
+{ 2, s_1_20, 0, 1, 0},
+{ 1, s_1_21, 0, 2, 0},
+{ 2, s_1_22, -1, 1, 0},
+{ 5, s_1_23, -1, 1, 0},
+{ 5, s_1_24, -2, 1, 0},
+{ 5, s_1_25, -3, 1, 0},
+{ 2, s_1_26, -5, 1, 0},
+{ 4, s_1_27, -1, 1, 0},
+{ 5, s_1_28, -2, 1, 0},
+{ 3, s_1_29, -8, 1, 0},
+{ 5, s_1_30, -1, 1, 0},
+{ 6, s_1_31, -2, 1, 0},
+{ 4, s_1_32, -11, 1, 0},
+{ 2, s_1_33, 0, 1, 0},
+{ 2, s_1_34, 0, 3, 0},
+{ 5, s_1_35, -1, 1, 0},
+{ 3, s_1_36, -2, 1, 0},
+{ 3, s_1_37, 0, 1, 0}
 };
 
-static const symbol s_2_0[2] = { 'i', 'g' };
-static const symbol s_2_1[3] = { 'l', 'i', 'g' };
-static const symbol s_2_2[3] = { 'e', 'l', 's' };
-static const symbol s_2_3[5] = { 'f', 'u', 'l', 'l', 't' };
-static const symbol s_2_4[3] = { 0xF6, 's', 't' };
+static const symbol s_2_0[2] = { 'd', 'd' };
+static const symbol s_2_1[2] = { 'g', 'd' };
+static const symbol s_2_2[2] = { 'n', 'n' };
+static const symbol s_2_3[2] = { 'd', 't' };
+static const symbol s_2_4[2] = { 'g', 't' };
+static const symbol s_2_5[2] = { 'k', 't' };
+static const symbol s_2_6[2] = { 't', 't' };
+static const struct among a_2[7] = {
+{ 2, s_2_0, 0, -1, 0},
+{ 2, s_2_1, 0, -1, 0},
+{ 2, s_2_2, 0, -1, 0},
+{ 2, s_2_3, 0, -1, 0},
+{ 2, s_2_4, 0, -1, 0},
+{ 2, s_2_5, 0, -1, 0},
+{ 2, s_2_6, 0, -1, 0}
+};
 
-static const struct among a_2[5] =
-{
-{ 2, s_2_0, -1, 1, 0},
-{ 3, s_2_1, 0, 1, 0},
-{ 3, s_2_2, -1, 1, 0},
-{ 5, s_2_3, -1, 3, 0},
-{ 3, s_2_4, -1, 2, 0}
+static const symbol s_3_0[2] = { 'i', 'g' };
+static const symbol s_3_1[3] = { 'l', 'i', 'g' };
+static const symbol s_3_2[3] = { 'e', 'l', 's' };
+static const symbol s_3_3[5] = { 'f', 'u', 'l', 'l', 't' };
+static const symbol s_3_4[3] = { 0xF6, 's', 't' };
+static const struct among a_3[5] = {
+{ 2, s_3_0, 0, 1, 0},
+{ 3, s_3_1, -1, 1, 0},
+{ 3, s_3_2, 0, 1, 0},
+{ 5, s_3_3, 0, 3, 0},
+{ 3, s_3_4, 0, 2, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
@@ -144,55 +191,101 @@ static const unsigned char g_s_ending[] = { 119, 127, 149 };
 
 static const unsigned char g_ost_ending[] = { 173, 58 };
 
-static const symbol s_0[] = { 0xF6, 's' };
-static const symbol s_1[] = { 'f', 'u', 'l', 'l' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    {   int c_test1 = z->c;
-z->c = z->c + 3;
-        if (z->c > z->l) return 0;
-        z->I[0] = z->c;
-        z->c = c_test1;
+    int i_x;
+    ((SN_local *)z)->i_p1 = z->l;
+    {
+        int v_1 = z->c;
+        if (z->c + 3 > z->l) return 0;
+        z->c += 3;
+        i_x = z->c;
+        z->c = v_1;
+    }
+    {
+        int ret = out_grouping(z, g_v, 97, 246, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
     }
-
-    if (out_grouping(z, g_v, 97, 246, 1) < 0) return 0;
-
     {
         int ret = in_grouping(z, g_v, 97, 246, 1);
         if (ret < 0) return 0;
         z->c += ret;
     }
-    z->I[1] = z->c;
-
-    if (z->I[1] >= z->I[0]) goto lab0;
-    z->I[1] = z->I[0];
+    ((SN_local *)z)->i_p1 = z->c;
+    if (((SN_local *)z)->i_p1 >= i_x) goto lab0;
+    ((SN_local *)z)->i_p1 = i_x;
 lab0:
     return 1;
 }
 
+static int r_et_condition(struct SN_env * z) {
+    {
+        int v_1 = z->l - z->c;
+        if (out_grouping_b(z, g_v, 97, 246, 0)) return 0;
+        if (in_grouping_b(z, g_v, 97, 246, 0)) return 0;
+        if (z->c > z->lb) goto lab0;
+        return 0;
+    lab0:
+        z->c = z->l - v_1;
+        {
+            int v_2 = z->l - z->c;
+            if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1059076 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab1;
+            if (!find_among_b(z, a_0, 21, 0)) goto lab1;
+            return 0;
+        lab1:
+            z->c = z->l - v_2;
+        }
+    }
+    return 1;
+}
+
 static int r_main_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        among_var = find_among_b(z, a_0, 37);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        among_var = find_among_b(z, a_1, 38, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            if (in_grouping_b(z, g_s_ending, 98, 121, 0)) return 0;
-            {   int ret = slice_del(z);
+            do {
+                int v_2 = z->l - z->c;
+                if (!(eq_s_b(z, 2, s_0))) goto lab0;
+                {
+                    int ret = r_et_condition(z);
+                    if (ret == 0) goto lab0;
+                    if (ret < 0) return ret;
+                }
+                z->bra = z->c;
+                break;
+            lab0:
+                z->c = z->l - v_2;
+                if (in_grouping_b(z, g_s_ending, 98, 121, 0)) return 0;
+            } while (0);
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = r_et_condition(z);
+                if (ret <= 0) return ret;
+            }
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -201,54 +294,59 @@ static int r_main_suffix(struct SN_env * z) {
 }
 
 static int r_consonant_pair(struct SN_env * z) {
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
-        {   int m2 = z->l - z->c; (void)m2;
-            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-            if (!find_among_b(z, a_1, 7)) { z->lb = mlimit1; return 0; }
-            z->c = z->l - m2;
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
+        {
+            int v_2 = z->l - z->c;
+            if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+            if (!find_among_b(z, a_2, 7, 0)) { z->lb = v_1; return 0; }
+            z->c = z->l - v_2;
             z->ket = z->c;
-            if (z->c <= z->lb) { z->lb = mlimit1; return 0; }
+            if (z->c <= z->lb) { z->lb = v_1; return 0; }
             z->c--;
             z->bra = z->c;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     return 1;
 }
 
 static int r_other_suffix(struct SN_env * z) {
     int among_var;
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_p1) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_p1;
         z->ket = z->c;
-        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
-        among_var = find_among_b(z, a_2, 5);
-        if (!among_var) { z->lb = mlimit1; return 0; }
+        if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = v_1; return 0; }
+        among_var = find_among_b(z, a_3, 5, 0);
+        if (!among_var) { z->lb = v_1; return 0; }
         z->bra = z->c;
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (in_grouping_b(z, g_ost_ending, 105, 118, 0)) return 0;
-            {   int ret = slice_from_s(z, 2, s_0);
+            {
+                int ret = slice_from_s(z, 2, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 4, s_1);
+            {
+                int ret = slice_from_s(z, 4, s_2);
                 if (ret < 0) return ret;
             }
             break;
@@ -257,37 +355,52 @@ static int r_other_suffix(struct SN_env * z) {
 }
 
 extern int swedish_ISO_8859_1_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_main_suffix(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_main_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_consonant_pair(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_consonant_pair(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_other_suffix(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_other_suffix(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * swedish_ISO_8859_1_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * swedish_ISO_8859_1_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void swedish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void swedish_ISO_8859_1_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 7308963105d3f4de0ece4b3ee3e8705e778beb74..2d4ffac098c681be16de5824ade37354b4ce329b 100644 (file)
@@ -1,6 +1,17 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from hungarian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_ISO_8859_2_hungarian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +20,7 @@ extern int hungarian_ISO_8859_2_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_double(struct SN_env * z);
 static int r_undouble(struct SN_env * z);
 static int r_factive(struct SN_env * z);
@@ -23,514 +35,452 @@ static int r_case(struct SN_env * z);
 static int r_v_ending(struct SN_env * z);
 static int r_R1(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * hungarian_ISO_8859_2_create_env(void);
-extern void hungarian_ISO_8859_2_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'a' };
+static const symbol s_1[] = { 'e' };
+static const symbol s_2[] = { 'e' };
+static const symbol s_3[] = { 'a' };
+static const symbol s_4[] = { 'a' };
+static const symbol s_5[] = { 'e' };
+static const symbol s_6[] = { 'a' };
+static const symbol s_7[] = { 'e' };
+static const symbol s_8[] = { 'e' };
+static const symbol s_9[] = { 'a' };
+static const symbol s_10[] = { 'a' };
+static const symbol s_11[] = { 'e' };
+static const symbol s_12[] = { 'a' };
+static const symbol s_13[] = { 'e' };
 
-#ifdef __cplusplus
-}
-#endif
-static const symbol s_0_0[2] = { 'c', 's' };
-static const symbol s_0_1[3] = { 'd', 'z', 's' };
-static const symbol s_0_2[2] = { 'g', 'y' };
-static const symbol s_0_3[2] = { 'l', 'y' };
-static const symbol s_0_4[2] = { 'n', 'y' };
-static const symbol s_0_5[2] = { 's', 'z' };
-static const symbol s_0_6[2] = { 't', 'y' };
-static const symbol s_0_7[2] = { 'z', 's' };
-
-static const struct among a_0[8] =
-{
-{ 2, s_0_0, -1, -1, 0},
-{ 3, s_0_1, -1, -1, 0},
-{ 2, s_0_2, -1, -1, 0},
-{ 2, s_0_3, -1, -1, 0},
-{ 2, s_0_4, -1, -1, 0},
-{ 2, s_0_5, -1, -1, 0},
-{ 2, s_0_6, -1, -1, 0},
-{ 2, s_0_7, -1, -1, 0}
-};
-
-static const symbol s_1_0[1] = { 0xE1 };
-static const symbol s_1_1[1] = { 0xE9 };
-
-static const struct among a_1[2] =
-{
-{ 1, s_1_0, -1, 1, 0},
-{ 1, s_1_1, -1, 2, 0}
-};
-
-static const symbol s_2_0[2] = { 'b', 'b' };
-static const symbol s_2_1[2] = { 'c', 'c' };
-static const symbol s_2_2[2] = { 'd', 'd' };
-static const symbol s_2_3[2] = { 'f', 'f' };
-static const symbol s_2_4[2] = { 'g', 'g' };
-static const symbol s_2_5[2] = { 'j', 'j' };
-static const symbol s_2_6[2] = { 'k', 'k' };
-static const symbol s_2_7[2] = { 'l', 'l' };
-static const symbol s_2_8[2] = { 'm', 'm' };
-static const symbol s_2_9[2] = { 'n', 'n' };
-static const symbol s_2_10[2] = { 'p', 'p' };
-static const symbol s_2_11[2] = { 'r', 'r' };
-static const symbol s_2_12[3] = { 'c', 'c', 's' };
-static const symbol s_2_13[2] = { 's', 's' };
-static const symbol s_2_14[3] = { 'z', 'z', 's' };
-static const symbol s_2_15[2] = { 't', 't' };
-static const symbol s_2_16[2] = { 'v', 'v' };
-static const symbol s_2_17[3] = { 'g', 'g', 'y' };
-static const symbol s_2_18[3] = { 'l', 'l', 'y' };
-static const symbol s_2_19[3] = { 'n', 'n', 'y' };
-static const symbol s_2_20[3] = { 't', 't', 'y' };
-static const symbol s_2_21[3] = { 's', 's', 'z' };
-static const symbol s_2_22[2] = { 'z', 'z' };
-
-static const struct among a_2[23] =
-{
-{ 2, s_2_0, -1, -1, 0},
-{ 2, s_2_1, -1, -1, 0},
-{ 2, s_2_2, -1, -1, 0},
-{ 2, s_2_3, -1, -1, 0},
-{ 2, s_2_4, -1, -1, 0},
-{ 2, s_2_5, -1, -1, 0},
-{ 2, s_2_6, -1, -1, 0},
-{ 2, s_2_7, -1, -1, 0},
-{ 2, s_2_8, -1, -1, 0},
-{ 2, s_2_9, -1, -1, 0},
-{ 2, s_2_10, -1, -1, 0},
-{ 2, s_2_11, -1, -1, 0},
-{ 3, s_2_12, -1, -1, 0},
-{ 2, s_2_13, -1, -1, 0},
-{ 3, s_2_14, -1, -1, 0},
-{ 2, s_2_15, -1, -1, 0},
-{ 2, s_2_16, -1, -1, 0},
-{ 3, s_2_17, -1, -1, 0},
-{ 3, s_2_18, -1, -1, 0},
-{ 3, s_2_19, -1, -1, 0},
-{ 3, s_2_20, -1, -1, 0},
-{ 3, s_2_21, -1, -1, 0},
-{ 2, s_2_22, -1, -1, 0}
+static const symbol s_0_0[1] = { 0xE1 };
+static const symbol s_0_1[1] = { 0xE9 };
+static const struct among a_0[2] = {
+{ 1, s_0_0, 0, 1, 0},
+{ 1, s_0_1, 0, 2, 0}
 };
 
-static const symbol s_3_0[2] = { 'a', 'l' };
-static const symbol s_3_1[2] = { 'e', 'l' };
-
-static const struct among a_3[2] =
-{
-{ 2, s_3_0, -1, 1, 0},
-{ 2, s_3_1, -1, 1, 0}
+static const symbol s_1_0[2] = { 'b', 'b' };
+static const symbol s_1_1[2] = { 'c', 'c' };
+static const symbol s_1_2[2] = { 'd', 'd' };
+static const symbol s_1_3[2] = { 'f', 'f' };
+static const symbol s_1_4[2] = { 'g', 'g' };
+static const symbol s_1_5[2] = { 'j', 'j' };
+static const symbol s_1_6[2] = { 'k', 'k' };
+static const symbol s_1_7[2] = { 'l', 'l' };
+static const symbol s_1_8[2] = { 'm', 'm' };
+static const symbol s_1_9[2] = { 'n', 'n' };
+static const symbol s_1_10[2] = { 'p', 'p' };
+static const symbol s_1_11[2] = { 'r', 'r' };
+static const symbol s_1_12[3] = { 'c', 'c', 's' };
+static const symbol s_1_13[2] = { 's', 's' };
+static const symbol s_1_14[3] = { 'z', 'z', 's' };
+static const symbol s_1_15[2] = { 't', 't' };
+static const symbol s_1_16[2] = { 'v', 'v' };
+static const symbol s_1_17[3] = { 'g', 'g', 'y' };
+static const symbol s_1_18[3] = { 'l', 'l', 'y' };
+static const symbol s_1_19[3] = { 'n', 'n', 'y' };
+static const symbol s_1_20[3] = { 't', 't', 'y' };
+static const symbol s_1_21[3] = { 's', 's', 'z' };
+static const symbol s_1_22[2] = { 'z', 'z' };
+static const struct among a_1[23] = {
+{ 2, s_1_0, 0, -1, 0},
+{ 2, s_1_1, 0, -1, 0},
+{ 2, s_1_2, 0, -1, 0},
+{ 2, s_1_3, 0, -1, 0},
+{ 2, s_1_4, 0, -1, 0},
+{ 2, s_1_5, 0, -1, 0},
+{ 2, s_1_6, 0, -1, 0},
+{ 2, s_1_7, 0, -1, 0},
+{ 2, s_1_8, 0, -1, 0},
+{ 2, s_1_9, 0, -1, 0},
+{ 2, s_1_10, 0, -1, 0},
+{ 2, s_1_11, 0, -1, 0},
+{ 3, s_1_12, 0, -1, 0},
+{ 2, s_1_13, 0, -1, 0},
+{ 3, s_1_14, 0, -1, 0},
+{ 2, s_1_15, 0, -1, 0},
+{ 2, s_1_16, 0, -1, 0},
+{ 3, s_1_17, 0, -1, 0},
+{ 3, s_1_18, 0, -1, 0},
+{ 3, s_1_19, 0, -1, 0},
+{ 3, s_1_20, 0, -1, 0},
+{ 3, s_1_21, 0, -1, 0},
+{ 2, s_1_22, 0, -1, 0}
 };
 
-static const symbol s_4_0[2] = { 'b', 'a' };
-static const symbol s_4_1[2] = { 'r', 'a' };
-static const symbol s_4_2[2] = { 'b', 'e' };
-static const symbol s_4_3[2] = { 'r', 'e' };
-static const symbol s_4_4[2] = { 'i', 'g' };
-static const symbol s_4_5[3] = { 'n', 'a', 'k' };
-static const symbol s_4_6[3] = { 'n', 'e', 'k' };
-static const symbol s_4_7[3] = { 'v', 'a', 'l' };
-static const symbol s_4_8[3] = { 'v', 'e', 'l' };
-static const symbol s_4_9[2] = { 'u', 'l' };
-static const symbol s_4_10[3] = { 'n', 0xE1, 'l' };
-static const symbol s_4_11[3] = { 'n', 0xE9, 'l' };
-static const symbol s_4_12[3] = { 'b', 0xF3, 'l' };
-static const symbol s_4_13[3] = { 'r', 0xF3, 'l' };
-static const symbol s_4_14[3] = { 't', 0xF3, 'l' };
-static const symbol s_4_15[3] = { 'b', 0xF5, 'l' };
-static const symbol s_4_16[3] = { 'r', 0xF5, 'l' };
-static const symbol s_4_17[3] = { 't', 0xF5, 'l' };
-static const symbol s_4_18[2] = { 0xFC, 'l' };
-static const symbol s_4_19[1] = { 'n' };
-static const symbol s_4_20[2] = { 'a', 'n' };
-static const symbol s_4_21[3] = { 'b', 'a', 'n' };
-static const symbol s_4_22[2] = { 'e', 'n' };
-static const symbol s_4_23[3] = { 'b', 'e', 'n' };
-static const symbol s_4_24[6] = { 'k', 0xE9, 'p', 'p', 'e', 'n' };
-static const symbol s_4_25[2] = { 'o', 'n' };
-static const symbol s_4_26[2] = { 0xF6, 'n' };
-static const symbol s_4_27[4] = { 'k', 0xE9, 'p', 'p' };
-static const symbol s_4_28[3] = { 'k', 'o', 'r' };
-static const symbol s_4_29[1] = { 't' };
-static const symbol s_4_30[2] = { 'a', 't' };
-static const symbol s_4_31[2] = { 'e', 't' };
-static const symbol s_4_32[4] = { 'k', 0xE9, 'n', 't' };
-static const symbol s_4_33[6] = { 'a', 'n', 'k', 0xE9, 'n', 't' };
-static const symbol s_4_34[6] = { 'e', 'n', 'k', 0xE9, 'n', 't' };
-static const symbol s_4_35[6] = { 'o', 'n', 'k', 0xE9, 'n', 't' };
-static const symbol s_4_36[2] = { 'o', 't' };
-static const symbol s_4_37[3] = { 0xE9, 'r', 't' };
-static const symbol s_4_38[2] = { 0xF6, 't' };
-static const symbol s_4_39[3] = { 'h', 'e', 'z' };
-static const symbol s_4_40[3] = { 'h', 'o', 'z' };
-static const symbol s_4_41[3] = { 'h', 0xF6, 'z' };
-static const symbol s_4_42[2] = { 'v', 0xE1 };
-static const symbol s_4_43[2] = { 'v', 0xE9 };
-
-static const struct among a_4[44] =
-{
-{ 2, s_4_0, -1, -1, 0},
-{ 2, s_4_1, -1, -1, 0},
-{ 2, s_4_2, -1, -1, 0},
-{ 2, s_4_3, -1, -1, 0},
-{ 2, s_4_4, -1, -1, 0},
-{ 3, s_4_5, -1, -1, 0},
-{ 3, s_4_6, -1, -1, 0},
-{ 3, s_4_7, -1, -1, 0},
-{ 3, s_4_8, -1, -1, 0},
-{ 2, s_4_9, -1, -1, 0},
-{ 3, s_4_10, -1, -1, 0},
-{ 3, s_4_11, -1, -1, 0},
-{ 3, s_4_12, -1, -1, 0},
-{ 3, s_4_13, -1, -1, 0},
-{ 3, s_4_14, -1, -1, 0},
-{ 3, s_4_15, -1, -1, 0},
-{ 3, s_4_16, -1, -1, 0},
-{ 3, s_4_17, -1, -1, 0},
-{ 2, s_4_18, -1, -1, 0},
-{ 1, s_4_19, -1, -1, 0},
-{ 2, s_4_20, 19, -1, 0},
-{ 3, s_4_21, 20, -1, 0},
-{ 2, s_4_22, 19, -1, 0},
-{ 3, s_4_23, 22, -1, 0},
-{ 6, s_4_24, 22, -1, 0},
-{ 2, s_4_25, 19, -1, 0},
-{ 2, s_4_26, 19, -1, 0},
-{ 4, s_4_27, -1, -1, 0},
-{ 3, s_4_28, -1, -1, 0},
-{ 1, s_4_29, -1, -1, 0},
-{ 2, s_4_30, 29, -1, 0},
-{ 2, s_4_31, 29, -1, 0},
-{ 4, s_4_32, 29, -1, 0},
-{ 6, s_4_33, 32, -1, 0},
-{ 6, s_4_34, 32, -1, 0},
-{ 6, s_4_35, 32, -1, 0},
-{ 2, s_4_36, 29, -1, 0},
-{ 3, s_4_37, 29, -1, 0},
-{ 2, s_4_38, 29, -1, 0},
-{ 3, s_4_39, -1, -1, 0},
-{ 3, s_4_40, -1, -1, 0},
-{ 3, s_4_41, -1, -1, 0},
-{ 2, s_4_42, -1, -1, 0},
-{ 2, s_4_43, -1, -1, 0}
+static const symbol s_2_0[2] = { 'a', 'l' };
+static const symbol s_2_1[2] = { 'e', 'l' };
+static const struct among a_2[2] = {
+{ 2, s_2_0, 0, 1, 0},
+{ 2, s_2_1, 0, 1, 0}
 };
 
-static const symbol s_5_0[2] = { 0xE1, 'n' };
-static const symbol s_5_1[2] = { 0xE9, 'n' };
-static const symbol s_5_2[6] = { 0xE1, 'n', 'k', 0xE9, 'n', 't' };
-
-static const struct among a_5[3] =
-{
-{ 2, s_5_0, -1, 2, 0},
-{ 2, s_5_1, -1, 1, 0},
-{ 6, s_5_2, -1, 2, 0}
+static const symbol s_3_0[2] = { 'b', 'a' };
+static const symbol s_3_1[2] = { 'r', 'a' };
+static const symbol s_3_2[2] = { 'b', 'e' };
+static const symbol s_3_3[2] = { 'r', 'e' };
+static const symbol s_3_4[2] = { 'i', 'g' };
+static const symbol s_3_5[3] = { 'n', 'a', 'k' };
+static const symbol s_3_6[3] = { 'n', 'e', 'k' };
+static const symbol s_3_7[3] = { 'v', 'a', 'l' };
+static const symbol s_3_8[3] = { 'v', 'e', 'l' };
+static const symbol s_3_9[2] = { 'u', 'l' };
+static const symbol s_3_10[3] = { 'n', 0xE1, 'l' };
+static const symbol s_3_11[3] = { 'n', 0xE9, 'l' };
+static const symbol s_3_12[3] = { 'b', 0xF3, 'l' };
+static const symbol s_3_13[3] = { 'r', 0xF3, 'l' };
+static const symbol s_3_14[3] = { 't', 0xF3, 'l' };
+static const symbol s_3_15[3] = { 'b', 0xF5, 'l' };
+static const symbol s_3_16[3] = { 'r', 0xF5, 'l' };
+static const symbol s_3_17[3] = { 't', 0xF5, 'l' };
+static const symbol s_3_18[2] = { 0xFC, 'l' };
+static const symbol s_3_19[1] = { 'n' };
+static const symbol s_3_20[2] = { 'a', 'n' };
+static const symbol s_3_21[3] = { 'b', 'a', 'n' };
+static const symbol s_3_22[2] = { 'e', 'n' };
+static const symbol s_3_23[3] = { 'b', 'e', 'n' };
+static const symbol s_3_24[6] = { 'k', 0xE9, 'p', 'p', 'e', 'n' };
+static const symbol s_3_25[2] = { 'o', 'n' };
+static const symbol s_3_26[2] = { 0xF6, 'n' };
+static const symbol s_3_27[4] = { 'k', 0xE9, 'p', 'p' };
+static const symbol s_3_28[3] = { 'k', 'o', 'r' };
+static const symbol s_3_29[1] = { 't' };
+static const symbol s_3_30[2] = { 'a', 't' };
+static const symbol s_3_31[2] = { 'e', 't' };
+static const symbol s_3_32[4] = { 'k', 0xE9, 'n', 't' };
+static const symbol s_3_33[6] = { 'a', 'n', 'k', 0xE9, 'n', 't' };
+static const symbol s_3_34[6] = { 'e', 'n', 'k', 0xE9, 'n', 't' };
+static const symbol s_3_35[6] = { 'o', 'n', 'k', 0xE9, 'n', 't' };
+static const symbol s_3_36[2] = { 'o', 't' };
+static const symbol s_3_37[3] = { 0xE9, 'r', 't' };
+static const symbol s_3_38[2] = { 0xF6, 't' };
+static const symbol s_3_39[3] = { 'h', 'e', 'z' };
+static const symbol s_3_40[3] = { 'h', 'o', 'z' };
+static const symbol s_3_41[3] = { 'h', 0xF6, 'z' };
+static const symbol s_3_42[2] = { 'v', 0xE1 };
+static const symbol s_3_43[2] = { 'v', 0xE9 };
+static const struct among a_3[44] = {
+{ 2, s_3_0, 0, -1, 0},
+{ 2, s_3_1, 0, -1, 0},
+{ 2, s_3_2, 0, -1, 0},
+{ 2, s_3_3, 0, -1, 0},
+{ 2, s_3_4, 0, -1, 0},
+{ 3, s_3_5, 0, -1, 0},
+{ 3, s_3_6, 0, -1, 0},
+{ 3, s_3_7, 0, -1, 0},
+{ 3, s_3_8, 0, -1, 0},
+{ 2, s_3_9, 0, -1, 0},
+{ 3, s_3_10, 0, -1, 0},
+{ 3, s_3_11, 0, -1, 0},
+{ 3, s_3_12, 0, -1, 0},
+{ 3, s_3_13, 0, -1, 0},
+{ 3, s_3_14, 0, -1, 0},
+{ 3, s_3_15, 0, -1, 0},
+{ 3, s_3_16, 0, -1, 0},
+{ 3, s_3_17, 0, -1, 0},
+{ 2, s_3_18, 0, -1, 0},
+{ 1, s_3_19, 0, -1, 0},
+{ 2, s_3_20, -1, -1, 0},
+{ 3, s_3_21, -1, -1, 0},
+{ 2, s_3_22, -3, -1, 0},
+{ 3, s_3_23, -1, -1, 0},
+{ 6, s_3_24, -2, -1, 0},
+{ 2, s_3_25, -6, -1, 0},
+{ 2, s_3_26, -7, -1, 0},
+{ 4, s_3_27, 0, -1, 0},
+{ 3, s_3_28, 0, -1, 0},
+{ 1, s_3_29, 0, -1, 0},
+{ 2, s_3_30, -1, -1, 0},
+{ 2, s_3_31, -2, -1, 0},
+{ 4, s_3_32, -3, -1, 0},
+{ 6, s_3_33, -1, -1, 0},
+{ 6, s_3_34, -2, -1, 0},
+{ 6, s_3_35, -3, -1, 0},
+{ 2, s_3_36, -7, -1, 0},
+{ 3, s_3_37, -8, -1, 0},
+{ 2, s_3_38, -9, -1, 0},
+{ 3, s_3_39, 0, -1, 0},
+{ 3, s_3_40, 0, -1, 0},
+{ 3, s_3_41, 0, -1, 0},
+{ 2, s_3_42, 0, -1, 0},
+{ 2, s_3_43, 0, -1, 0}
 };
 
-static const symbol s_6_0[4] = { 's', 't', 'u', 'l' };
-static const symbol s_6_1[5] = { 'a', 's', 't', 'u', 'l' };
-static const symbol s_6_2[5] = { 0xE1, 's', 't', 'u', 'l' };
-static const symbol s_6_3[4] = { 's', 't', 0xFC, 'l' };
-static const symbol s_6_4[5] = { 'e', 's', 't', 0xFC, 'l' };
-static const symbol s_6_5[5] = { 0xE9, 's', 't', 0xFC, 'l' };
-
-static const struct among a_6[6] =
-{
-{ 4, s_6_0, -1, 1, 0},
-{ 5, s_6_1, 0, 1, 0},
-{ 5, s_6_2, 0, 2, 0},
-{ 4, s_6_3, -1, 1, 0},
-{ 5, s_6_4, 3, 1, 0},
-{ 5, s_6_5, 3, 3, 0}
+static const symbol s_4_0[2] = { 0xE1, 'n' };
+static const symbol s_4_1[2] = { 0xE9, 'n' };
+static const symbol s_4_2[6] = { 0xE1, 'n', 'k', 0xE9, 'n', 't' };
+static const struct among a_4[3] = {
+{ 2, s_4_0, 0, 2, 0},
+{ 2, s_4_1, 0, 1, 0},
+{ 6, s_4_2, 0, 2, 0}
 };
 
-static const symbol s_7_0[1] = { 0xE1 };
-static const symbol s_7_1[1] = { 0xE9 };
-
-static const struct among a_7[2] =
-{
-{ 1, s_7_0, -1, 1, 0},
-{ 1, s_7_1, -1, 1, 0}
+static const symbol s_5_0[4] = { 's', 't', 'u', 'l' };
+static const symbol s_5_1[5] = { 'a', 's', 't', 'u', 'l' };
+static const symbol s_5_2[5] = { 0xE1, 's', 't', 'u', 'l' };
+static const symbol s_5_3[4] = { 's', 't', 0xFC, 'l' };
+static const symbol s_5_4[5] = { 'e', 's', 't', 0xFC, 'l' };
+static const symbol s_5_5[5] = { 0xE9, 's', 't', 0xFC, 'l' };
+static const struct among a_5[6] = {
+{ 4, s_5_0, 0, 1, 0},
+{ 5, s_5_1, -1, 1, 0},
+{ 5, s_5_2, -2, 2, 0},
+{ 4, s_5_3, 0, 1, 0},
+{ 5, s_5_4, -1, 1, 0},
+{ 5, s_5_5, -2, 3, 0}
 };
 
-static const symbol s_8_0[1] = { 'k' };
-static const symbol s_8_1[2] = { 'a', 'k' };
-static const symbol s_8_2[2] = { 'e', 'k' };
-static const symbol s_8_3[2] = { 'o', 'k' };
-static const symbol s_8_4[2] = { 0xE1, 'k' };
-static const symbol s_8_5[2] = { 0xE9, 'k' };
-static const symbol s_8_6[2] = { 0xF6, 'k' };
-
-static const struct among a_8[7] =
-{
-{ 1, s_8_0, -1, 3, 0},
-{ 2, s_8_1, 0, 3, 0},
-{ 2, s_8_2, 0, 3, 0},
-{ 2, s_8_3, 0, 3, 0},
-{ 2, s_8_4, 0, 1, 0},
-{ 2, s_8_5, 0, 2, 0},
-{ 2, s_8_6, 0, 3, 0}
+static const symbol s_7_0[1] = { 'k' };
+static const symbol s_7_1[2] = { 'a', 'k' };
+static const symbol s_7_2[2] = { 'e', 'k' };
+static const symbol s_7_3[2] = { 'o', 'k' };
+static const symbol s_7_4[2] = { 0xE1, 'k' };
+static const symbol s_7_5[2] = { 0xE9, 'k' };
+static const symbol s_7_6[2] = { 0xF6, 'k' };
+static const struct among a_7[7] = {
+{ 1, s_7_0, 0, 3, 0},
+{ 2, s_7_1, -1, 3, 0},
+{ 2, s_7_2, -2, 3, 0},
+{ 2, s_7_3, -3, 3, 0},
+{ 2, s_7_4, -4, 1, 0},
+{ 2, s_7_5, -5, 2, 0},
+{ 2, s_7_6, -6, 3, 0}
 };
 
-static const symbol s_9_0[2] = { 0xE9, 'i' };
-static const symbol s_9_1[3] = { 0xE1, 0xE9, 'i' };
-static const symbol s_9_2[3] = { 0xE9, 0xE9, 'i' };
-static const symbol s_9_3[1] = { 0xE9 };
-static const symbol s_9_4[2] = { 'k', 0xE9 };
-static const symbol s_9_5[3] = { 'a', 'k', 0xE9 };
-static const symbol s_9_6[3] = { 'e', 'k', 0xE9 };
-static const symbol s_9_7[3] = { 'o', 'k', 0xE9 };
-static const symbol s_9_8[3] = { 0xE1, 'k', 0xE9 };
-static const symbol s_9_9[3] = { 0xE9, 'k', 0xE9 };
-static const symbol s_9_10[3] = { 0xF6, 'k', 0xE9 };
-static const symbol s_9_11[2] = { 0xE9, 0xE9 };
-
-static const struct among a_9[12] =
-{
-{ 2, s_9_0, -1, 1, 0},
-{ 3, s_9_1, 0, 3, 0},
-{ 3, s_9_2, 0, 2, 0},
-{ 1, s_9_3, -1, 1, 0},
-{ 2, s_9_4, 3, 1, 0},
-{ 3, s_9_5, 4, 1, 0},
-{ 3, s_9_6, 4, 1, 0},
-{ 3, s_9_7, 4, 1, 0},
-{ 3, s_9_8, 4, 3, 0},
-{ 3, s_9_9, 4, 2, 0},
-{ 3, s_9_10, 4, 1, 0},
-{ 2, s_9_11, 3, 2, 0}
+static const symbol s_8_0[2] = { 0xE9, 'i' };
+static const symbol s_8_1[3] = { 0xE1, 0xE9, 'i' };
+static const symbol s_8_2[3] = { 0xE9, 0xE9, 'i' };
+static const symbol s_8_3[1] = { 0xE9 };
+static const symbol s_8_4[2] = { 'k', 0xE9 };
+static const symbol s_8_5[3] = { 'a', 'k', 0xE9 };
+static const symbol s_8_6[3] = { 'e', 'k', 0xE9 };
+static const symbol s_8_7[3] = { 'o', 'k', 0xE9 };
+static const symbol s_8_8[3] = { 0xE1, 'k', 0xE9 };
+static const symbol s_8_9[3] = { 0xE9, 'k', 0xE9 };
+static const symbol s_8_10[3] = { 0xF6, 'k', 0xE9 };
+static const symbol s_8_11[2] = { 0xE9, 0xE9 };
+static const struct among a_8[12] = {
+{ 2, s_8_0, 0, 1, 0},
+{ 3, s_8_1, -1, 3, 0},
+{ 3, s_8_2, -2, 2, 0},
+{ 1, s_8_3, 0, 1, 0},
+{ 2, s_8_4, -1, 1, 0},
+{ 3, s_8_5, -1, 1, 0},
+{ 3, s_8_6, -2, 1, 0},
+{ 3, s_8_7, -3, 1, 0},
+{ 3, s_8_8, -4, 3, 0},
+{ 3, s_8_9, -5, 2, 0},
+{ 3, s_8_10, -6, 1, 0},
+{ 2, s_8_11, -8, 2, 0}
 };
 
-static const symbol s_10_0[1] = { 'a' };
-static const symbol s_10_1[2] = { 'j', 'a' };
-static const symbol s_10_2[1] = { 'd' };
-static const symbol s_10_3[2] = { 'a', 'd' };
-static const symbol s_10_4[2] = { 'e', 'd' };
-static const symbol s_10_5[2] = { 'o', 'd' };
-static const symbol s_10_6[2] = { 0xE1, 'd' };
-static const symbol s_10_7[2] = { 0xE9, 'd' };
-static const symbol s_10_8[2] = { 0xF6, 'd' };
-static const symbol s_10_9[1] = { 'e' };
-static const symbol s_10_10[2] = { 'j', 'e' };
-static const symbol s_10_11[2] = { 'n', 'k' };
-static const symbol s_10_12[3] = { 'u', 'n', 'k' };
-static const symbol s_10_13[3] = { 0xE1, 'n', 'k' };
-static const symbol s_10_14[3] = { 0xE9, 'n', 'k' };
-static const symbol s_10_15[3] = { 0xFC, 'n', 'k' };
-static const symbol s_10_16[2] = { 'u', 'k' };
-static const symbol s_10_17[3] = { 'j', 'u', 'k' };
-static const symbol s_10_18[4] = { 0xE1, 'j', 'u', 'k' };
-static const symbol s_10_19[2] = { 0xFC, 'k' };
-static const symbol s_10_20[3] = { 'j', 0xFC, 'k' };
-static const symbol s_10_21[4] = { 0xE9, 'j', 0xFC, 'k' };
-static const symbol s_10_22[1] = { 'm' };
-static const symbol s_10_23[2] = { 'a', 'm' };
-static const symbol s_10_24[2] = { 'e', 'm' };
-static const symbol s_10_25[2] = { 'o', 'm' };
-static const symbol s_10_26[2] = { 0xE1, 'm' };
-static const symbol s_10_27[2] = { 0xE9, 'm' };
-static const symbol s_10_28[1] = { 'o' };
-static const symbol s_10_29[1] = { 0xE1 };
-static const symbol s_10_30[1] = { 0xE9 };
-
-static const struct among a_10[31] =
-{
-{ 1, s_10_0, -1, 1, 0},
-{ 2, s_10_1, 0, 1, 0},
-{ 1, s_10_2, -1, 1, 0},
-{ 2, s_10_3, 2, 1, 0},
-{ 2, s_10_4, 2, 1, 0},
-{ 2, s_10_5, 2, 1, 0},
-{ 2, s_10_6, 2, 2, 0},
-{ 2, s_10_7, 2, 3, 0},
-{ 2, s_10_8, 2, 1, 0},
-{ 1, s_10_9, -1, 1, 0},
-{ 2, s_10_10, 9, 1, 0},
-{ 2, s_10_11, -1, 1, 0},
-{ 3, s_10_12, 11, 1, 0},
-{ 3, s_10_13, 11, 2, 0},
-{ 3, s_10_14, 11, 3, 0},
-{ 3, s_10_15, 11, 1, 0},
-{ 2, s_10_16, -1, 1, 0},
-{ 3, s_10_17, 16, 1, 0},
-{ 4, s_10_18, 17, 2, 0},
-{ 2, s_10_19, -1, 1, 0},
-{ 3, s_10_20, 19, 1, 0},
-{ 4, s_10_21, 20, 3, 0},
-{ 1, s_10_22, -1, 1, 0},
-{ 2, s_10_23, 22, 1, 0},
-{ 2, s_10_24, 22, 1, 0},
-{ 2, s_10_25, 22, 1, 0},
-{ 2, s_10_26, 22, 2, 0},
-{ 2, s_10_27, 22, 3, 0},
-{ 1, s_10_28, -1, 1, 0},
-{ 1, s_10_29, -1, 2, 0},
-{ 1, s_10_30, -1, 3, 0}
+static const symbol s_9_0[1] = { 'a' };
+static const symbol s_9_1[2] = { 'j', 'a' };
+static const symbol s_9_2[1] = { 'd' };
+static const symbol s_9_3[2] = { 'a', 'd' };
+static const symbol s_9_4[2] = { 'e', 'd' };
+static const symbol s_9_5[2] = { 'o', 'd' };
+static const symbol s_9_6[2] = { 0xE1, 'd' };
+static const symbol s_9_7[2] = { 0xE9, 'd' };
+static const symbol s_9_8[2] = { 0xF6, 'd' };
+static const symbol s_9_9[1] = { 'e' };
+static const symbol s_9_10[2] = { 'j', 'e' };
+static const symbol s_9_11[2] = { 'n', 'k' };
+static const symbol s_9_12[3] = { 'u', 'n', 'k' };
+static const symbol s_9_13[3] = { 0xE1, 'n', 'k' };
+static const symbol s_9_14[3] = { 0xE9, 'n', 'k' };
+static const symbol s_9_15[3] = { 0xFC, 'n', 'k' };
+static const symbol s_9_16[2] = { 'u', 'k' };
+static const symbol s_9_17[3] = { 'j', 'u', 'k' };
+static const symbol s_9_18[4] = { 0xE1, 'j', 'u', 'k' };
+static const symbol s_9_19[2] = { 0xFC, 'k' };
+static const symbol s_9_20[3] = { 'j', 0xFC, 'k' };
+static const symbol s_9_21[4] = { 0xE9, 'j', 0xFC, 'k' };
+static const symbol s_9_22[1] = { 'm' };
+static const symbol s_9_23[2] = { 'a', 'm' };
+static const symbol s_9_24[2] = { 'e', 'm' };
+static const symbol s_9_25[2] = { 'o', 'm' };
+static const symbol s_9_26[2] = { 0xE1, 'm' };
+static const symbol s_9_27[2] = { 0xE9, 'm' };
+static const symbol s_9_28[1] = { 'o' };
+static const symbol s_9_29[1] = { 0xE1 };
+static const symbol s_9_30[1] = { 0xE9 };
+static const struct among a_9[31] = {
+{ 1, s_9_0, 0, 1, 0},
+{ 2, s_9_1, -1, 1, 0},
+{ 1, s_9_2, 0, 1, 0},
+{ 2, s_9_3, -1, 1, 0},
+{ 2, s_9_4, -2, 1, 0},
+{ 2, s_9_5, -3, 1, 0},
+{ 2, s_9_6, -4, 2, 0},
+{ 2, s_9_7, -5, 3, 0},
+{ 2, s_9_8, -6, 1, 0},
+{ 1, s_9_9, 0, 1, 0},
+{ 2, s_9_10, -1, 1, 0},
+{ 2, s_9_11, 0, 1, 0},
+{ 3, s_9_12, -1, 1, 0},
+{ 3, s_9_13, -2, 2, 0},
+{ 3, s_9_14, -3, 3, 0},
+{ 3, s_9_15, -4, 1, 0},
+{ 2, s_9_16, 0, 1, 0},
+{ 3, s_9_17, -1, 1, 0},
+{ 4, s_9_18, -1, 2, 0},
+{ 2, s_9_19, 0, 1, 0},
+{ 3, s_9_20, -1, 1, 0},
+{ 4, s_9_21, -1, 3, 0},
+{ 1, s_9_22, 0, 1, 0},
+{ 2, s_9_23, -1, 1, 0},
+{ 2, s_9_24, -2, 1, 0},
+{ 2, s_9_25, -3, 1, 0},
+{ 2, s_9_26, -4, 2, 0},
+{ 2, s_9_27, -5, 3, 0},
+{ 1, s_9_28, 0, 1, 0},
+{ 1, s_9_29, 0, 2, 0},
+{ 1, s_9_30, 0, 3, 0}
 };
 
-static const symbol s_11_0[2] = { 'i', 'd' };
-static const symbol s_11_1[3] = { 'a', 'i', 'd' };
-static const symbol s_11_2[4] = { 'j', 'a', 'i', 'd' };
-static const symbol s_11_3[3] = { 'e', 'i', 'd' };
-static const symbol s_11_4[4] = { 'j', 'e', 'i', 'd' };
-static const symbol s_11_5[3] = { 0xE1, 'i', 'd' };
-static const symbol s_11_6[3] = { 0xE9, 'i', 'd' };
-static const symbol s_11_7[1] = { 'i' };
-static const symbol s_11_8[2] = { 'a', 'i' };
-static const symbol s_11_9[3] = { 'j', 'a', 'i' };
-static const symbol s_11_10[2] = { 'e', 'i' };
-static const symbol s_11_11[3] = { 'j', 'e', 'i' };
-static const symbol s_11_12[2] = { 0xE1, 'i' };
-static const symbol s_11_13[2] = { 0xE9, 'i' };
-static const symbol s_11_14[4] = { 'i', 't', 'e', 'k' };
-static const symbol s_11_15[5] = { 'e', 'i', 't', 'e', 'k' };
-static const symbol s_11_16[6] = { 'j', 'e', 'i', 't', 'e', 'k' };
-static const symbol s_11_17[5] = { 0xE9, 'i', 't', 'e', 'k' };
-static const symbol s_11_18[2] = { 'i', 'k' };
-static const symbol s_11_19[3] = { 'a', 'i', 'k' };
-static const symbol s_11_20[4] = { 'j', 'a', 'i', 'k' };
-static const symbol s_11_21[3] = { 'e', 'i', 'k' };
-static const symbol s_11_22[4] = { 'j', 'e', 'i', 'k' };
-static const symbol s_11_23[3] = { 0xE1, 'i', 'k' };
-static const symbol s_11_24[3] = { 0xE9, 'i', 'k' };
-static const symbol s_11_25[3] = { 'i', 'n', 'k' };
-static const symbol s_11_26[4] = { 'a', 'i', 'n', 'k' };
-static const symbol s_11_27[5] = { 'j', 'a', 'i', 'n', 'k' };
-static const symbol s_11_28[4] = { 'e', 'i', 'n', 'k' };
-static const symbol s_11_29[5] = { 'j', 'e', 'i', 'n', 'k' };
-static const symbol s_11_30[4] = { 0xE1, 'i', 'n', 'k' };
-static const symbol s_11_31[4] = { 0xE9, 'i', 'n', 'k' };
-static const symbol s_11_32[5] = { 'a', 'i', 't', 'o', 'k' };
-static const symbol s_11_33[6] = { 'j', 'a', 'i', 't', 'o', 'k' };
-static const symbol s_11_34[5] = { 0xE1, 'i', 't', 'o', 'k' };
-static const symbol s_11_35[2] = { 'i', 'm' };
-static const symbol s_11_36[3] = { 'a', 'i', 'm' };
-static const symbol s_11_37[4] = { 'j', 'a', 'i', 'm' };
-static const symbol s_11_38[3] = { 'e', 'i', 'm' };
-static const symbol s_11_39[4] = { 'j', 'e', 'i', 'm' };
-static const symbol s_11_40[3] = { 0xE1, 'i', 'm' };
-static const symbol s_11_41[3] = { 0xE9, 'i', 'm' };
-
-static const struct among a_11[42] =
-{
-{ 2, s_11_0, -1, 1, 0},
-{ 3, s_11_1, 0, 1, 0},
-{ 4, s_11_2, 1, 1, 0},
-{ 3, s_11_3, 0, 1, 0},
-{ 4, s_11_4, 3, 1, 0},
-{ 3, s_11_5, 0, 2, 0},
-{ 3, s_11_6, 0, 3, 0},
-{ 1, s_11_7, -1, 1, 0},
-{ 2, s_11_8, 7, 1, 0},
-{ 3, s_11_9, 8, 1, 0},
-{ 2, s_11_10, 7, 1, 0},
-{ 3, s_11_11, 10, 1, 0},
-{ 2, s_11_12, 7, 2, 0},
-{ 2, s_11_13, 7, 3, 0},
-{ 4, s_11_14, -1, 1, 0},
-{ 5, s_11_15, 14, 1, 0},
-{ 6, s_11_16, 15, 1, 0},
-{ 5, s_11_17, 14, 3, 0},
-{ 2, s_11_18, -1, 1, 0},
-{ 3, s_11_19, 18, 1, 0},
-{ 4, s_11_20, 19, 1, 0},
-{ 3, s_11_21, 18, 1, 0},
-{ 4, s_11_22, 21, 1, 0},
-{ 3, s_11_23, 18, 2, 0},
-{ 3, s_11_24, 18, 3, 0},
-{ 3, s_11_25, -1, 1, 0},
-{ 4, s_11_26, 25, 1, 0},
-{ 5, s_11_27, 26, 1, 0},
-{ 4, s_11_28, 25, 1, 0},
-{ 5, s_11_29, 28, 1, 0},
-{ 4, s_11_30, 25, 2, 0},
-{ 4, s_11_31, 25, 3, 0},
-{ 5, s_11_32, -1, 1, 0},
-{ 6, s_11_33, 32, 1, 0},
-{ 5, s_11_34, -1, 2, 0},
-{ 2, s_11_35, -1, 1, 0},
-{ 3, s_11_36, 35, 1, 0},
-{ 4, s_11_37, 36, 1, 0},
-{ 3, s_11_38, 35, 1, 0},
-{ 4, s_11_39, 38, 1, 0},
-{ 3, s_11_40, 35, 2, 0},
-{ 3, s_11_41, 35, 3, 0}
+static const symbol s_10_0[2] = { 'i', 'd' };
+static const symbol s_10_1[3] = { 'a', 'i', 'd' };
+static const symbol s_10_2[4] = { 'j', 'a', 'i', 'd' };
+static const symbol s_10_3[3] = { 'e', 'i', 'd' };
+static const symbol s_10_4[4] = { 'j', 'e', 'i', 'd' };
+static const symbol s_10_5[3] = { 0xE1, 'i', 'd' };
+static const symbol s_10_6[3] = { 0xE9, 'i', 'd' };
+static const symbol s_10_7[1] = { 'i' };
+static const symbol s_10_8[2] = { 'a', 'i' };
+static const symbol s_10_9[3] = { 'j', 'a', 'i' };
+static const symbol s_10_10[2] = { 'e', 'i' };
+static const symbol s_10_11[3] = { 'j', 'e', 'i' };
+static const symbol s_10_12[2] = { 0xE1, 'i' };
+static const symbol s_10_13[2] = { 0xE9, 'i' };
+static const symbol s_10_14[4] = { 'i', 't', 'e', 'k' };
+static const symbol s_10_15[5] = { 'e', 'i', 't', 'e', 'k' };
+static const symbol s_10_16[6] = { 'j', 'e', 'i', 't', 'e', 'k' };
+static const symbol s_10_17[5] = { 0xE9, 'i', 't', 'e', 'k' };
+static const symbol s_10_18[2] = { 'i', 'k' };
+static const symbol s_10_19[3] = { 'a', 'i', 'k' };
+static const symbol s_10_20[4] = { 'j', 'a', 'i', 'k' };
+static const symbol s_10_21[3] = { 'e', 'i', 'k' };
+static const symbol s_10_22[4] = { 'j', 'e', 'i', 'k' };
+static const symbol s_10_23[3] = { 0xE1, 'i', 'k' };
+static const symbol s_10_24[3] = { 0xE9, 'i', 'k' };
+static const symbol s_10_25[3] = { 'i', 'n', 'k' };
+static const symbol s_10_26[4] = { 'a', 'i', 'n', 'k' };
+static const symbol s_10_27[5] = { 'j', 'a', 'i', 'n', 'k' };
+static const symbol s_10_28[4] = { 'e', 'i', 'n', 'k' };
+static const symbol s_10_29[5] = { 'j', 'e', 'i', 'n', 'k' };
+static const symbol s_10_30[4] = { 0xE1, 'i', 'n', 'k' };
+static const symbol s_10_31[4] = { 0xE9, 'i', 'n', 'k' };
+static const symbol s_10_32[5] = { 'a', 'i', 't', 'o', 'k' };
+static const symbol s_10_33[6] = { 'j', 'a', 'i', 't', 'o', 'k' };
+static const symbol s_10_34[5] = { 0xE1, 'i', 't', 'o', 'k' };
+static const symbol s_10_35[2] = { 'i', 'm' };
+static const symbol s_10_36[3] = { 'a', 'i', 'm' };
+static const symbol s_10_37[4] = { 'j', 'a', 'i', 'm' };
+static const symbol s_10_38[3] = { 'e', 'i', 'm' };
+static const symbol s_10_39[4] = { 'j', 'e', 'i', 'm' };
+static const symbol s_10_40[3] = { 0xE1, 'i', 'm' };
+static const symbol s_10_41[3] = { 0xE9, 'i', 'm' };
+static const struct among a_10[42] = {
+{ 2, s_10_0, 0, 1, 0},
+{ 3, s_10_1, -1, 1, 0},
+{ 4, s_10_2, -1, 1, 0},
+{ 3, s_10_3, -3, 1, 0},
+{ 4, s_10_4, -1, 1, 0},
+{ 3, s_10_5, -5, 2, 0},
+{ 3, s_10_6, -6, 3, 0},
+{ 1, s_10_7, 0, 1, 0},
+{ 2, s_10_8, -1, 1, 0},
+{ 3, s_10_9, -1, 1, 0},
+{ 2, s_10_10, -3, 1, 0},
+{ 3, s_10_11, -1, 1, 0},
+{ 2, s_10_12, -5, 2, 0},
+{ 2, s_10_13, -6, 3, 0},
+{ 4, s_10_14, 0, 1, 0},
+{ 5, s_10_15, -1, 1, 0},
+{ 6, s_10_16, -1, 1, 0},
+{ 5, s_10_17, -3, 3, 0},
+{ 2, s_10_18, 0, 1, 0},
+{ 3, s_10_19, -1, 1, 0},
+{ 4, s_10_20, -1, 1, 0},
+{ 3, s_10_21, -3, 1, 0},
+{ 4, s_10_22, -1, 1, 0},
+{ 3, s_10_23, -5, 2, 0},
+{ 3, s_10_24, -6, 3, 0},
+{ 3, s_10_25, 0, 1, 0},
+{ 4, s_10_26, -1, 1, 0},
+{ 5, s_10_27, -1, 1, 0},
+{ 4, s_10_28, -3, 1, 0},
+{ 5, s_10_29, -1, 1, 0},
+{ 4, s_10_30, -5, 2, 0},
+{ 4, s_10_31, -6, 3, 0},
+{ 5, s_10_32, 0, 1, 0},
+{ 6, s_10_33, -1, 1, 0},
+{ 5, s_10_34, 0, 2, 0},
+{ 2, s_10_35, 0, 1, 0},
+{ 3, s_10_36, -1, 1, 0},
+{ 4, s_10_37, -1, 1, 0},
+{ 3, s_10_38, -3, 1, 0},
+{ 4, s_10_39, -1, 1, 0},
+{ 3, s_10_40, -5, 2, 0},
+{ 3, s_10_41, -6, 3, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 };
 
-static const symbol s_0[] = { 'a' };
-static const symbol s_1[] = { 'e' };
-static const symbol s_2[] = { 'e' };
-static const symbol s_3[] = { 'a' };
-static const symbol s_4[] = { 'a' };
-static const symbol s_5[] = { 'e' };
-static const symbol s_6[] = { 'a' };
-static const symbol s_7[] = { 'e' };
-static const symbol s_8[] = { 'e' };
-static const symbol s_9[] = { 'a' };
-static const symbol s_10[] = { 'a' };
-static const symbol s_11[] = { 'e' };
-static const symbol s_12[] = { 'a' };
-static const symbol s_13[] = { 'e' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        if (in_grouping(z, g_v, 97, 252, 0)) goto lab1;
-
-        if (in_grouping(z, g_v, 97, 252, 1) < 0) goto lab1;
-        {   int c2 = z->c;
-            if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((101187584 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3;
-            if (!find_among(z, a_0, 8)) goto lab3;
-            goto lab2;
-        lab3:
-            z->c = c2;
-            if (z->c >= z->l) goto lab1;
-            z->c++;
+    ((SN_local *)z)->i_p1 = z->l;
+    do {
+        int v_1 = z->c;
+        if (in_grouping(z, g_v, 97, 252, 0)) goto lab0;
+        {
+            int v_2 = z->c;
+            {
+                int ret = in_grouping(z, g_v, 97, 252, 1);
+                if (ret < 0) goto lab1;
+                z->c += ret;
+            }
+            ((SN_local *)z)->i_p1 = z->c;
+        lab1:
+            z->c = v_2;
         }
-    lab2:
-        z->I[0] = z->c;
-        goto lab0;
-    lab1:
-        z->c = c1;
-        if (out_grouping(z, g_v, 97, 252, 0)) return 0;
-
+        break;
+    lab0:
+        z->c = v_1;
         {
             int ret = out_grouping(z, g_v, 97, 252, 1);
             if (ret < 0) return 0;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    }
-lab0:
+        ((SN_local *)z)->i_p1 = z->c;
+    } while (0);
     return 1;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_v_ending(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0;
-    among_var = find_among_b(z, a_1, 2);
+    among_var = find_among_b(z, a_0, 2, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 1, s_0);
+            {
+                int ret = slice_from_s(z, 1, s_0);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_1);
+            {
+                int ret = slice_from_s(z, 1, s_1);
                 if (ret < 0) return ret;
             }
             break;
@@ -539,10 +489,11 @@ static int r_v_ending(struct SN_env * z) {
 }
 
 static int r_double(struct SN_env * z) {
-    {   int m_test1 = z->l - z->c;
+    {
+        int v_1 = z->l - z->c;
         if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-        if (!find_among_b(z, a_2, 23)) return 0;
-        z->c = z->l - m_test1;
+        if (!find_among_b(z, a_1, 23, 0)) return 0;
+        z->c = z->l - v_1;
     }
     return 1;
 }
@@ -551,10 +502,11 @@ static int r_undouble(struct SN_env * z) {
     if (z->c <= z->lb) return 0;
     z->c--;
     z->ket = z->c;
-z->c = z->c - 1;
-    if (z->c < z->lb) return 0;
+    if (z->c <= z->lb) return 0;
+    z->c--;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -563,57 +515,59 @@ z->c = z->c - 1;
 static int r_instrum(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0;
-    if (!find_among_b(z, a_3, 2)) return 0;
+    if (!find_among_b(z, a_2, 2, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = r_double(z);
+    {
+        int ret = r_double(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    {   int ret = r_undouble(z);
-        if (ret <= 0) return ret;
-    }
-    return 1;
+    return r_undouble(z);
 }
 
 static int r_case(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_4, 44)) return 0;
+    if (!find_among_b(z, a_3, 44, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    {   int ret = r_v_ending(z);
-        if (ret <= 0) return ret;
-    }
-    return 1;
+    return r_v_ending(z);
 }
 
 static int r_case_special(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 110 && z->p[z->c - 1] != 116)) return 0;
-    among_var = find_among_b(z, a_5, 3);
+    among_var = find_among_b(z, a_4, 3, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 1, s_2);
+            {
+                int ret = slice_from_s(z, 1, s_2);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_3);
+            {
+                int ret = slice_from_s(z, 1, s_3);
                 if (ret < 0) return ret;
             }
             break;
@@ -625,25 +579,29 @@ static int r_case_other(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0;
-    among_var = find_among_b(z, a_6, 6);
+    among_var = find_among_b(z, a_5, 6, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_4);
+            {
+                int ret = slice_from_s(z, 1, s_4);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 1, s_5);
+            {
+                int ret = slice_from_s(z, 1, s_5);
                 if (ret < 0) return ret;
             }
             break;
@@ -654,46 +612,50 @@ static int r_case_other(struct SN_env * z) {
 static int r_factive(struct SN_env * z) {
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 225 && z->p[z->c - 1] != 233)) return 0;
-    if (!find_among_b(z, a_7, 2)) return 0;
+    z->c--;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = r_double(z);
+    {
+        int ret = r_double(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
-    {   int ret = r_undouble(z);
-        if (ret <= 0) return ret;
-    }
-    return 1;
+    return r_undouble(z);
 }
 
 static int r_plural(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0;
-    among_var = find_among_b(z, a_8, 7);
+    among_var = find_among_b(z, a_7, 7, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_from_s(z, 1, s_6);
+            {
+                int ret = slice_from_s(z, 1, s_6);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_7);
+            {
+                int ret = slice_from_s(z, 1, s_7);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -705,25 +667,29 @@ static int r_owned(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 233)) return 0;
-    among_var = find_among_b(z, a_9, 12);
+    among_var = find_among_b(z, a_8, 12, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_8);
+            {
+                int ret = slice_from_s(z, 1, s_8);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 1, s_9);
+            {
+                int ret = slice_from_s(z, 1, s_9);
                 if (ret < 0) return ret;
             }
             break;
@@ -734,25 +700,29 @@ static int r_owned(struct SN_env * z) {
 static int r_sing_owner(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_10, 31);
+    among_var = find_among_b(z, a_9, 31, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_10);
+            {
+                int ret = slice_from_s(z, 1, s_10);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 1, s_11);
+            {
+                int ret = slice_from_s(z, 1, s_11);
                 if (ret < 0) return ret;
             }
             break;
@@ -764,25 +734,29 @@ static int r_plur_owner(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_11, 42);
+    among_var = find_among_b(z, a_10, 42, 0);
     if (!among_var) return 0;
     z->bra = z->c;
-    {   int ret = r_R1(z);
+    {
+        int ret = r_R1(z);
         if (ret <= 0) return ret;
     }
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_12);
+            {
+                int ret = slice_from_s(z, 1, s_12);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 1, s_13);
+            {
+                int ret = slice_from_s(z, 1, s_13);
                 if (ret < 0) return ret;
             }
             break;
@@ -791,73 +765,100 @@ static int r_plur_owner(struct SN_env * z) {
 }
 
 extern int hungarian_ISO_8859_2_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        {   int ret = r_mark_regions(z);
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_instrum(z);
+    {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_instrum(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_case(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_case(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
-    {   int m4 = z->l - z->c; (void)m4;
-        {   int ret = r_case_special(z);
+    {
+        int v_4 = z->l - z->c;
+        {
+            int ret = r_case_special(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m4;
+        z->c = z->l - v_4;
     }
-    {   int m5 = z->l - z->c; (void)m5;
-        {   int ret = r_case_other(z);
+    {
+        int v_5 = z->l - z->c;
+        {
+            int ret = r_case_other(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m5;
+        z->c = z->l - v_5;
     }
-    {   int m6 = z->l - z->c; (void)m6;
-        {   int ret = r_factive(z);
+    {
+        int v_6 = z->l - z->c;
+        {
+            int ret = r_factive(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m6;
+        z->c = z->l - v_6;
     }
-    {   int m7 = z->l - z->c; (void)m7;
-        {   int ret = r_owned(z);
+    {
+        int v_7 = z->l - z->c;
+        {
+            int ret = r_owned(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m7;
+        z->c = z->l - v_7;
     }
-    {   int m8 = z->l - z->c; (void)m8;
-        {   int ret = r_sing_owner(z);
+    {
+        int v_8 = z->l - z->c;
+        {
+            int ret = r_sing_owner(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m8;
+        z->c = z->l - v_8;
     }
-    {   int m9 = z->l - z->c; (void)m9;
-        {   int ret = r_plur_owner(z);
+    {
+        int v_9 = z->l - z->c;
+        {
+            int ret = r_plur_owner(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m9;
+        z->c = z->l - v_9;
     }
-    {   int m10 = z->l - z->c; (void)m10;
-        {   int ret = r_plural(z);
+    {
+        int v_10 = z->l - z->c;
+        {
+            int ret = r_plural(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m10;
+        z->c = z->l - v_10;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * hungarian_ISO_8859_2_create_env(void) { return SN_create_env(0, 1); }
+extern struct SN_env * hungarian_ISO_8859_2_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
 
-extern void hungarian_ISO_8859_2_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void hungarian_ISO_8859_2_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
diff --git a/src/backend/snowball/libstemmer/stem_ISO_8859_2_polish.c b/src/backend/snowball/libstemmer/stem_ISO_8859_2_polish.c
new file mode 100644 (file)
index 0000000..893d0ab
--- /dev/null
@@ -0,0 +1,520 @@
+/* Generated from polish.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
+
+#include "stem_ISO_8859_2_polish.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int polish_ISO_8859_2_stem(struct SN_env * z);
+#ifdef __cplusplus
+}
+#endif
+
+static int r_R1(struct SN_env * z);
+static int r_normalize_consonant(struct SN_env * z);
+static int r_remove_endings(struct SN_env * z);
+static int r_mark_regions(struct SN_env * z);
+
+static const symbol s_0[] = { 's' };
+static const symbol s_1[] = { 's' };
+static const symbol s_2[] = { 0xB3 };
+static const symbol s_3[] = { 's' };
+static const symbol s_4[] = { 'c' };
+static const symbol s_5[] = { 'n' };
+static const symbol s_6[] = { 's' };
+static const symbol s_7[] = { 'z' };
+
+static const symbol s_0_0[6] = { 'b', 'y', 0xB6, 'c', 'i', 'e' };
+static const symbol s_0_1[3] = { 'b', 'y', 'm' };
+static const symbol s_0_2[2] = { 'b', 'y' };
+static const symbol s_0_3[5] = { 'b', 'y', 0xB6, 'm', 'y' };
+static const symbol s_0_4[3] = { 'b', 'y', 0xB6 };
+static const struct among a_0[5] = {
+{ 6, s_0_0, 0, 1, 0},
+{ 3, s_0_1, 0, 1, 0},
+{ 2, s_0_2, 0, 1, 0},
+{ 5, s_0_3, 0, 1, 0},
+{ 3, s_0_4, 0, 1, 0}
+};
+
+static const symbol s_1_0[2] = { 0xB1, 'c' };
+static const symbol s_1_1[4] = { 'a', 'j', 0xB1, 'c' };
+static const symbol s_1_2[4] = { 's', 'z', 0xB1, 'c' };
+static const symbol s_1_3[2] = { 's', 'z' };
+static const symbol s_1_4[5] = { 'i', 'e', 'j', 's', 'z' };
+static const struct among a_1[5] = {
+{ 2, s_1_0, 0, 1, 0},
+{ 4, s_1_1, -1, 1, 0},
+{ 4, s_1_2, -2, 2, 0},
+{ 2, s_1_3, 0, 1, 0},
+{ 5, s_1_4, -1, 1, 0}
+};
+
+static const symbol s_2_0[1] = { 'a' };
+static const symbol s_2_1[3] = { 0xB1, 'c', 'a' };
+static const symbol s_2_2[5] = { 'a', 'j', 0xB1, 'c', 'a' };
+static const symbol s_2_3[5] = { 's', 'z', 0xB1, 'c', 'a' };
+static const symbol s_2_4[2] = { 'i', 'a' };
+static const symbol s_2_5[3] = { 's', 'z', 'a' };
+static const symbol s_2_6[6] = { 'i', 'e', 'j', 's', 'z', 'a' };
+static const symbol s_2_7[3] = { 'a', 0xB3, 'a' };
+static const symbol s_2_8[4] = { 'i', 'a', 0xB3, 'a' };
+static const symbol s_2_9[3] = { 'i', 0xB3, 'a' };
+static const symbol s_2_10[2] = { 0xB1, 'c' };
+static const symbol s_2_11[4] = { 'a', 'j', 0xB1, 'c' };
+static const symbol s_2_12[1] = { 'e' };
+static const symbol s_2_13[3] = { 0xB1, 'c', 'e' };
+static const symbol s_2_14[5] = { 'a', 'j', 0xB1, 'c', 'e' };
+static const symbol s_2_15[5] = { 's', 'z', 0xB1, 'c', 'e' };
+static const symbol s_2_16[2] = { 'i', 'e' };
+static const symbol s_2_17[3] = { 'c', 'i', 'e' };
+static const symbol s_2_18[4] = { 'a', 'c', 'i', 'e' };
+static const symbol s_2_19[4] = { 'e', 'c', 'i', 'e' };
+static const symbol s_2_20[4] = { 'i', 'c', 'i', 'e' };
+static const symbol s_2_21[5] = { 'a', 'j', 'c', 'i', 'e' };
+static const symbol s_2_22[6] = { 'l', 'i', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_23[7] = { 'a', 'l', 'i', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_24[8] = { 'i', 'e', 'l', 'i', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_25[7] = { 'i', 'l', 'i', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_26[6] = { 0xB3, 'y', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_27[7] = { 'a', 0xB3, 'y', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_28[8] = { 'i', 'a', 0xB3, 'y', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_29[7] = { 'i', 0xB3, 'y', 0xB6, 'c', 'i', 'e' };
+static const symbol s_2_30[3] = { 's', 'z', 'e' };
+static const symbol s_2_31[6] = { 'i', 'e', 'j', 's', 'z', 'e' };
+static const symbol s_2_32[3] = { 'a', 'c', 'h' };
+static const symbol s_2_33[4] = { 'i', 'a', 'c', 'h' };
+static const symbol s_2_34[3] = { 'i', 'c', 'h' };
+static const symbol s_2_35[3] = { 'y', 'c', 'h' };
+static const symbol s_2_36[1] = { 'i' };
+static const symbol s_2_37[3] = { 'a', 'l', 'i' };
+static const symbol s_2_38[4] = { 'i', 'e', 'l', 'i' };
+static const symbol s_2_39[3] = { 'i', 'l', 'i' };
+static const symbol s_2_40[3] = { 'a', 'm', 'i' };
+static const symbol s_2_41[4] = { 'i', 'a', 'm', 'i' };
+static const symbol s_2_42[3] = { 'i', 'm', 'i' };
+static const symbol s_2_43[3] = { 'y', 'm', 'i' };
+static const symbol s_2_44[3] = { 'o', 'w', 'i' };
+static const symbol s_2_45[4] = { 'i', 'o', 'w', 'i' };
+static const symbol s_2_46[2] = { 'a', 'j' };
+static const symbol s_2_47[2] = { 'e', 'j' };
+static const symbol s_2_48[3] = { 'i', 'e', 'j' };
+static const symbol s_2_49[2] = { 'a', 'm' };
+static const symbol s_2_50[4] = { 'a', 0xB3, 'a', 'm' };
+static const symbol s_2_51[5] = { 'i', 'a', 0xB3, 'a', 'm' };
+static const symbol s_2_52[4] = { 'i', 0xB3, 'a', 'm' };
+static const symbol s_2_53[2] = { 'e', 'm' };
+static const symbol s_2_54[3] = { 'i', 'e', 'm' };
+static const symbol s_2_55[4] = { 'a', 0xB3, 'e', 'm' };
+static const symbol s_2_56[5] = { 'i', 'a', 0xB3, 'e', 'm' };
+static const symbol s_2_57[4] = { 'i', 0xB3, 'e', 'm' };
+static const symbol s_2_58[2] = { 'i', 'm' };
+static const symbol s_2_59[2] = { 'o', 'm' };
+static const symbol s_2_60[3] = { 'i', 'o', 'm' };
+static const symbol s_2_61[2] = { 'y', 'm' };
+static const symbol s_2_62[1] = { 'o' };
+static const symbol s_2_63[3] = { 'e', 'g', 'o' };
+static const symbol s_2_64[4] = { 'i', 'e', 'g', 'o' };
+static const symbol s_2_65[3] = { 'a', 0xB3, 'o' };
+static const symbol s_2_66[4] = { 'i', 'a', 0xB3, 'o' };
+static const symbol s_2_67[3] = { 'i', 0xB3, 'o' };
+static const symbol s_2_68[1] = { 'u' };
+static const symbol s_2_69[2] = { 'i', 'u' };
+static const symbol s_2_70[3] = { 'e', 'm', 'u' };
+static const symbol s_2_71[4] = { 'i', 'e', 'm', 'u' };
+static const symbol s_2_72[2] = { 0xF3, 'w' };
+static const symbol s_2_73[1] = { 'y' };
+static const symbol s_2_74[3] = { 'a', 'm', 'y' };
+static const symbol s_2_75[3] = { 'e', 'm', 'y' };
+static const symbol s_2_76[3] = { 'i', 'm', 'y' };
+static const symbol s_2_77[5] = { 'l', 'i', 0xB6, 'm', 'y' };
+static const symbol s_2_78[6] = { 'a', 'l', 'i', 0xB6, 'm', 'y' };
+static const symbol s_2_79[7] = { 'i', 'e', 'l', 'i', 0xB6, 'm', 'y' };
+static const symbol s_2_80[6] = { 'i', 'l', 'i', 0xB6, 'm', 'y' };
+static const symbol s_2_81[5] = { 0xB3, 'y', 0xB6, 'm', 'y' };
+static const symbol s_2_82[6] = { 'a', 0xB3, 'y', 0xB6, 'm', 'y' };
+static const symbol s_2_83[7] = { 'i', 'a', 0xB3, 'y', 0xB6, 'm', 'y' };
+static const symbol s_2_84[6] = { 'i', 0xB3, 'y', 0xB6, 'm', 'y' };
+static const symbol s_2_85[3] = { 'a', 0xB3, 'y' };
+static const symbol s_2_86[4] = { 'i', 'a', 0xB3, 'y' };
+static const symbol s_2_87[3] = { 'i', 0xB3, 'y' };
+static const symbol s_2_88[3] = { 'a', 's', 'z' };
+static const symbol s_2_89[3] = { 'e', 's', 'z' };
+static const symbol s_2_90[3] = { 'i', 's', 'z' };
+static const symbol s_2_91[1] = { 0xB1 };
+static const symbol s_2_92[3] = { 0xB1, 'c', 0xB1 };
+static const symbol s_2_93[5] = { 'a', 'j', 0xB1, 'c', 0xB1 };
+static const symbol s_2_94[5] = { 's', 'z', 0xB1, 'c', 0xB1 };
+static const symbol s_2_95[2] = { 'i', 0xB1 };
+static const symbol s_2_96[3] = { 'a', 'j', 0xB1 };
+static const symbol s_2_97[3] = { 's', 'z', 0xB1 };
+static const symbol s_2_98[6] = { 'i', 'e', 'j', 's', 'z', 0xB1 };
+static const symbol s_2_99[2] = { 'a', 0xB3 };
+static const symbol s_2_100[3] = { 'i', 'a', 0xB3 };
+static const symbol s_2_101[2] = { 'i', 0xB3 };
+static const symbol s_2_102[3] = { 0xB3, 'a', 0xB6 };
+static const symbol s_2_103[4] = { 'a', 0xB3, 'a', 0xB6 };
+static const symbol s_2_104[5] = { 'i', 'a', 0xB3, 'a', 0xB6 };
+static const symbol s_2_105[4] = { 'i', 0xB3, 'a', 0xB6 };
+static const symbol s_2_106[3] = { 0xB3, 'e', 0xB6 };
+static const symbol s_2_107[4] = { 'a', 0xB3, 'e', 0xB6 };
+static const symbol s_2_108[5] = { 'i', 'a', 0xB3, 'e', 0xB6 };
+static const symbol s_2_109[4] = { 'i', 0xB3, 'e', 0xB6 };
+static const symbol s_2_110[2] = { 'a', 0xE6 };
+static const symbol s_2_111[3] = { 'i', 'e', 0xE6 };
+static const symbol s_2_112[2] = { 'i', 0xE6 };
+static const symbol s_2_113[2] = { 0xB1, 0xE6 };
+static const symbol s_2_114[3] = { 'a', 0xB6, 0xE6 };
+static const symbol s_2_115[3] = { 'e', 0xB6, 0xE6 };
+static const symbol s_2_116[1] = { 0xEA };
+static const symbol s_2_117[3] = { 's', 'z', 0xEA };
+static const struct among a_2[118] = {
+{ 1, s_2_0, 0, 1, 1},
+{ 3, s_2_1, -1, 1, 0},
+{ 5, s_2_2, -1, 1, 0},
+{ 5, s_2_3, -2, 2, 0},
+{ 2, s_2_4, -4, 1, 1},
+{ 3, s_2_5, -5, 1, 0},
+{ 6, s_2_6, -1, 1, 0},
+{ 3, s_2_7, -7, 1, 0},
+{ 4, s_2_8, -1, 1, 0},
+{ 3, s_2_9, -9, 1, 0},
+{ 2, s_2_10, 0, 1, 0},
+{ 4, s_2_11, -1, 1, 0},
+{ 1, s_2_12, 0, 1, 1},
+{ 3, s_2_13, -1, 1, 0},
+{ 5, s_2_14, -1, 1, 0},
+{ 5, s_2_15, -2, 2, 0},
+{ 2, s_2_16, -4, 1, 1},
+{ 3, s_2_17, -1, 1, 0},
+{ 4, s_2_18, -1, 1, 0},
+{ 4, s_2_19, -2, 1, 0},
+{ 4, s_2_20, -3, 1, 0},
+{ 5, s_2_21, -4, 1, 0},
+{ 6, s_2_22, -5, 4, 0},
+{ 7, s_2_23, -1, 1, 0},
+{ 8, s_2_24, -2, 1, 0},
+{ 7, s_2_25, -3, 1, 0},
+{ 6, s_2_26, -9, 4, 0},
+{ 7, s_2_27, -1, 1, 0},
+{ 8, s_2_28, -1, 1, 0},
+{ 7, s_2_29, -3, 1, 0},
+{ 3, s_2_30, -18, 1, 0},
+{ 6, s_2_31, -1, 1, 0},
+{ 3, s_2_32, 0, 1, 1},
+{ 4, s_2_33, -1, 1, 1},
+{ 3, s_2_34, 0, 5, 0},
+{ 3, s_2_35, 0, 5, 0},
+{ 1, s_2_36, 0, 1, 1},
+{ 3, s_2_37, -1, 1, 0},
+{ 4, s_2_38, -2, 1, 0},
+{ 3, s_2_39, -3, 1, 0},
+{ 3, s_2_40, -4, 1, 1},
+{ 4, s_2_41, -1, 1, 1},
+{ 3, s_2_42, -6, 5, 0},
+{ 3, s_2_43, -7, 5, 0},
+{ 3, s_2_44, -8, 1, 1},
+{ 4, s_2_45, -1, 1, 1},
+{ 2, s_2_46, 0, 1, 0},
+{ 2, s_2_47, 0, 5, 0},
+{ 3, s_2_48, -1, 5, 0},
+{ 2, s_2_49, 0, 1, 0},
+{ 4, s_2_50, -1, 1, 0},
+{ 5, s_2_51, -1, 1, 0},
+{ 4, s_2_52, -3, 1, 0},
+{ 2, s_2_53, 0, 1, 1},
+{ 3, s_2_54, -1, 1, 1},
+{ 4, s_2_55, -2, 1, 0},
+{ 5, s_2_56, -1, 1, 0},
+{ 4, s_2_57, -4, 1, 0},
+{ 2, s_2_58, 0, 5, 0},
+{ 2, s_2_59, 0, 1, 1},
+{ 3, s_2_60, -1, 1, 1},
+{ 2, s_2_61, 0, 5, 0},
+{ 1, s_2_62, 0, 1, 1},
+{ 3, s_2_63, -1, 5, 0},
+{ 4, s_2_64, -1, 5, 0},
+{ 3, s_2_65, -3, 1, 0},
+{ 4, s_2_66, -1, 1, 0},
+{ 3, s_2_67, -5, 1, 0},
+{ 1, s_2_68, 0, 1, 1},
+{ 2, s_2_69, -1, 1, 1},
+{ 3, s_2_70, -2, 5, 0},
+{ 4, s_2_71, -1, 5, 0},
+{ 2, s_2_72, 0, 1, 1},
+{ 1, s_2_73, 0, 5, 0},
+{ 3, s_2_74, -1, 1, 0},
+{ 3, s_2_75, -2, 1, 0},
+{ 3, s_2_76, -3, 1, 0},
+{ 5, s_2_77, -4, 4, 0},
+{ 6, s_2_78, -1, 1, 0},
+{ 7, s_2_79, -2, 1, 0},
+{ 6, s_2_80, -3, 1, 0},
+{ 5, s_2_81, -8, 4, 0},
+{ 6, s_2_82, -1, 1, 0},
+{ 7, s_2_83, -1, 1, 0},
+{ 6, s_2_84, -3, 1, 0},
+{ 3, s_2_85, -12, 1, 0},
+{ 4, s_2_86, -1, 1, 0},
+{ 3, s_2_87, -14, 1, 0},
+{ 3, s_2_88, 0, 1, 0},
+{ 3, s_2_89, 0, 1, 0},
+{ 3, s_2_90, 0, 1, 0},
+{ 1, s_2_91, 0, 1, 1},
+{ 3, s_2_92, -1, 1, 0},
+{ 5, s_2_93, -1, 1, 0},
+{ 5, s_2_94, -2, 2, 0},
+{ 2, s_2_95, -4, 1, 1},
+{ 3, s_2_96, -5, 1, 0},
+{ 3, s_2_97, -6, 3, 0},
+{ 6, s_2_98, -1, 1, 0},
+{ 2, s_2_99, 0, 1, 0},
+{ 3, s_2_100, -1, 1, 0},
+{ 2, s_2_101, 0, 1, 0},
+{ 3, s_2_102, 0, 4, 0},
+{ 4, s_2_103, -1, 1, 0},
+{ 5, s_2_104, -1, 1, 0},
+{ 4, s_2_105, -3, 1, 0},
+{ 3, s_2_106, 0, 4, 0},
+{ 4, s_2_107, -1, 1, 0},
+{ 5, s_2_108, -1, 1, 0},
+{ 4, s_2_109, -3, 1, 0},
+{ 2, s_2_110, 0, 1, 0},
+{ 3, s_2_111, 0, 1, 0},
+{ 2, s_2_112, 0, 1, 0},
+{ 2, s_2_113, 0, 1, 0},
+{ 3, s_2_114, 0, 1, 0},
+{ 3, s_2_115, 0, 1, 0},
+{ 1, s_2_116, 0, 1, 0},
+{ 3, s_2_117, -1, 2, 0}
+};
+
+static const symbol s_3_0[1] = { 0xB6 };
+static const symbol s_3_1[1] = { 0xBC };
+static const symbol s_3_2[1] = { 0xE6 };
+static const symbol s_3_3[1] = { 0xF1 };
+static const struct among a_3[4] = {
+{ 1, s_3_0, 0, 3, 0},
+{ 1, s_3_1, 0, 4, 0},
+{ 1, s_3_2, 0, 1, 0},
+{ 1, s_3_3, 0, 2, 0}
+};
+
+static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 4 };
+
+static int r_mark_regions(struct SN_env * z) {
+    ((SN_local *)z)->i_p1 = z->l;
+    {
+        int ret = out_grouping(z, g_v, 97, 243, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    {
+        int ret = in_grouping(z, g_v, 97, 243, 1);
+        if (ret < 0) return 0;
+        z->c += ret;
+    }
+    ((SN_local *)z)->i_p1 = z->c;
+    return 1;
+}
+
+static int r_R1(struct SN_env * z) {
+    return ((SN_local *)z)->i_p1 <= z->c;
+}
+
+static int r_remove_endings(struct SN_env * z) {
+    int among_var;
+    {
+        int v_1 = z->l - z->c;
+        {
+            int v_2;
+            if (z->c < ((SN_local *)z)->i_p1) goto lab0;
+            v_2 = z->lb; z->lb = ((SN_local *)z)->i_p1;
+            z->ket = z->c;
+            if (!find_among_b(z, a_0, 5, 0)) { z->lb = v_2; goto lab0; }
+            z->bra = z->c;
+            z->lb = v_2;
+        }
+        {
+            int ret = slice_del(z);
+            if (ret < 0) return ret;
+        }
+    lab0:
+        z->c = z->l - v_1;
+    }
+    z->ket = z->c;
+    among_var = find_among_b(z, a_2, 118, r_R1);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    switch (among_var) {
+        case 1:
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = slice_from_s(z, 1, s_0);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            do {
+                int v_3 = z->l - z->c;
+                {
+                    int v_4 = z->l - z->c;
+                    {
+                        int ret = r_R1(z);
+                        if (ret == 0) goto lab1;
+                        if (ret < 0) return ret;
+                    }
+                    z->c = z->l - v_4;
+                    {
+                        int ret = slice_del(z);
+                        if (ret < 0) return ret;
+                    }
+                }
+                break;
+            lab1:
+                z->c = z->l - v_3;
+                {
+                    int ret = slice_from_s(z, 1, s_1);
+                    if (ret < 0) return ret;
+                }
+            } while (0);
+            break;
+        case 4:
+            {
+                int ret = slice_from_s(z, 1, s_2);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 5:
+            {
+                int ret = slice_del(z);
+                if (ret < 0) return ret;
+            }
+            {
+                int v_5 = z->l - z->c;
+                z->ket = z->c;
+                if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 99 && z->p[z->c - 1] != 122)) { z->c = z->l - v_5; goto lab2; }
+                among_var = find_among_b(z, a_1, 5, 0);
+                if (!among_var) { z->c = z->l - v_5; goto lab2; }
+                z->bra = z->c;
+                switch (among_var) {
+                    case 1:
+                        {
+                            int ret = slice_del(z);
+                            if (ret < 0) return ret;
+                        }
+                        break;
+                    case 2:
+                        {
+                            int ret = slice_from_s(z, 1, s_3);
+                            if (ret < 0) return ret;
+                        }
+                        break;
+                }
+            lab2:
+                ;
+            }
+            break;
+    }
+    return 1;
+}
+
+static int r_normalize_consonant(struct SN_env * z) {
+    int among_var;
+    z->ket = z->c;
+    among_var = find_among_b(z, a_3, 4, 0);
+    if (!among_var) return 0;
+    z->bra = z->c;
+    if (z->c > z->lb) goto lab0;
+    return 0;
+lab0:
+    switch (among_var) {
+        case 1:
+            {
+                int ret = slice_from_s(z, 1, s_4);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 2:
+            {
+                int ret = slice_from_s(z, 1, s_5);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 3:
+            {
+                int ret = slice_from_s(z, 1, s_6);
+                if (ret < 0) return ret;
+            }
+            break;
+        case 4:
+            {
+                int ret = slice_from_s(z, 1, s_7);
+                if (ret < 0) return ret;
+            }
+            break;
+    }
+    return 1;
+}
+
+extern int polish_ISO_8859_2_stem(struct SN_env * z) {
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_mark_regions(z);
+            if (ret < 0) return ret;
+        }
+        z->c = v_1;
+    }
+    do {
+        int v_2 = z->c;
+        if (z->c + 2 > z->l) goto lab0;
+        z->c += 2;
+        z->lb = z->c; z->c = z->l;
+        {
+            int ret = r_remove_endings(z);
+            if (ret == 0) goto lab0;
+            if (ret < 0) return ret;
+        }
+        z->c = z->lb;
+        break;
+    lab0:
+        z->c = v_2;
+        z->lb = z->c; z->c = z->l;
+        {
+            int ret = r_normalize_consonant(z);
+            if (ret <= 0) return ret;
+        }
+        z->c = z->lb;
+    } while (0);
+    return 1;
+}
+
+extern struct SN_env * polish_ISO_8859_2_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p1 = 0;
+    }
+    return z;
+}
+
+extern void polish_ISO_8859_2_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
+
index f9f0973b3935ed0b33dc864871d3e18790aedf82..d44e3db4429fa8146b8d345759d4f4da9ab343c0 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from russian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_KOI8_R_russian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +21,7 @@ extern int russian_KOI8_R_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_tidy_up(struct SN_env * z);
 static int r_derivational(struct SN_env * z);
 static int r_noun(struct SN_env * z);
@@ -19,18 +32,9 @@ static int r_adjective(struct SN_env * z);
 static int r_perfective_gerund(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * russian_KOI8_R_create_env(void);
-extern void russian_KOI8_R_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 0xC5 };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[3] = { 0xD7, 0xDB, 0xC9 };
 static const symbol s_0_1[4] = { 0xC9, 0xD7, 0xDB, 0xC9 };
 static const symbol s_0_2[4] = { 0xD9, 0xD7, 0xDB, 0xC9 };
@@ -40,18 +44,16 @@ static const symbol s_0_5[2] = { 0xD9, 0xD7 };
 static const symbol s_0_6[5] = { 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 };
 static const symbol s_0_7[6] = { 0xC9, 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 };
 static const symbol s_0_8[6] = { 0xD9, 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 };
-
-static const struct among a_0[9] =
-{
-{ 3, s_0_0, -1, 1, 0},
-{ 4, s_0_1, 0, 2, 0},
-{ 4, s_0_2, 0, 2, 0},
-{ 1, s_0_3, -1, 1, 0},
-{ 2, s_0_4, 3, 2, 0},
-{ 2, s_0_5, 3, 2, 0},
-{ 5, s_0_6, -1, 1, 0},
-{ 6, s_0_7, 6, 2, 0},
-{ 6, s_0_8, 6, 2, 0}
+static const struct among a_0[9] = {
+{ 3, s_0_0, 0, 1, 0},
+{ 4, s_0_1, -1, 2, 0},
+{ 4, s_0_2, -2, 2, 0},
+{ 1, s_0_3, 0, 1, 0},
+{ 2, s_0_4, -1, 2, 0},
+{ 2, s_0_5, -2, 2, 0},
+{ 5, s_0_6, 0, 1, 0},
+{ 6, s_0_7, -1, 2, 0},
+{ 6, s_0_8, -2, 2, 0}
 };
 
 static const symbol s_1_0[2] = { 0xC0, 0xC0 };
@@ -80,35 +82,33 @@ static const symbol s_1_22[2] = { 0xC1, 0xD1 };
 static const symbol s_1_23[2] = { 0xD1, 0xD1 };
 static const symbol s_1_24[3] = { 0xC5, 0xCD, 0xD5 };
 static const symbol s_1_25[3] = { 0xCF, 0xCD, 0xD5 };
-
-static const struct among a_1[26] =
-{
-{ 2, s_1_0, -1, 1, 0},
-{ 2, s_1_1, -1, 1, 0},
-{ 2, s_1_2, -1, 1, 0},
-{ 2, s_1_3, -1, 1, 0},
-{ 2, s_1_4, -1, 1, 0},
-{ 2, s_1_5, -1, 1, 0},
-{ 2, s_1_6, -1, 1, 0},
-{ 2, s_1_7, -1, 1, 0},
-{ 2, s_1_8, -1, 1, 0},
-{ 2, s_1_9, -1, 1, 0},
-{ 3, s_1_10, -1, 1, 0},
-{ 3, s_1_11, -1, 1, 0},
-{ 2, s_1_12, -1, 1, 0},
-{ 2, s_1_13, -1, 1, 0},
-{ 2, s_1_14, -1, 1, 0},
-{ 2, s_1_15, -1, 1, 0},
-{ 2, s_1_16, -1, 1, 0},
-{ 2, s_1_17, -1, 1, 0},
-{ 2, s_1_18, -1, 1, 0},
-{ 2, s_1_19, -1, 1, 0},
-{ 3, s_1_20, -1, 1, 0},
-{ 3, s_1_21, -1, 1, 0},
-{ 2, s_1_22, -1, 1, 0},
-{ 2, s_1_23, -1, 1, 0},
-{ 3, s_1_24, -1, 1, 0},
-{ 3, s_1_25, -1, 1, 0}
+static const struct among a_1[26] = {
+{ 2, s_1_0, 0, 1, 0},
+{ 2, s_1_1, 0, 1, 0},
+{ 2, s_1_2, 0, 1, 0},
+{ 2, s_1_3, 0, 1, 0},
+{ 2, s_1_4, 0, 1, 0},
+{ 2, s_1_5, 0, 1, 0},
+{ 2, s_1_6, 0, 1, 0},
+{ 2, s_1_7, 0, 1, 0},
+{ 2, s_1_8, 0, 1, 0},
+{ 2, s_1_9, 0, 1, 0},
+{ 3, s_1_10, 0, 1, 0},
+{ 3, s_1_11, 0, 1, 0},
+{ 2, s_1_12, 0, 1, 0},
+{ 2, s_1_13, 0, 1, 0},
+{ 2, s_1_14, 0, 1, 0},
+{ 2, s_1_15, 0, 1, 0},
+{ 2, s_1_16, 0, 1, 0},
+{ 2, s_1_17, 0, 1, 0},
+{ 2, s_1_18, 0, 1, 0},
+{ 2, s_1_19, 0, 1, 0},
+{ 3, s_1_20, 0, 1, 0},
+{ 3, s_1_21, 0, 1, 0},
+{ 2, s_1_22, 0, 1, 0},
+{ 2, s_1_23, 0, 1, 0},
+{ 3, s_1_24, 0, 1, 0},
+{ 3, s_1_25, 0, 1, 0}
 };
 
 static const symbol s_2_0[2] = { 0xC5, 0xCD };
@@ -119,26 +119,22 @@ static const symbol s_2_4[3] = { 0xD9, 0xD7, 0xDB };
 static const symbol s_2_5[1] = { 0xDD };
 static const symbol s_2_6[2] = { 0xC0, 0xDD };
 static const symbol s_2_7[3] = { 0xD5, 0xC0, 0xDD };
-
-static const struct among a_2[8] =
-{
-{ 2, s_2_0, -1, 1, 0},
-{ 2, s_2_1, -1, 1, 0},
-{ 2, s_2_2, -1, 1, 0},
-{ 3, s_2_3, 2, 2, 0},
-{ 3, s_2_4, 2, 2, 0},
-{ 1, s_2_5, -1, 1, 0},
-{ 2, s_2_6, 5, 1, 0},
-{ 3, s_2_7, 6, 2, 0}
+static const struct among a_2[8] = {
+{ 2, s_2_0, 0, 1, 0},
+{ 2, s_2_1, 0, 1, 0},
+{ 2, s_2_2, 0, 1, 0},
+{ 3, s_2_3, -1, 2, 0},
+{ 3, s_2_4, -2, 2, 0},
+{ 1, s_2_5, 0, 1, 0},
+{ 2, s_2_6, -1, 1, 0},
+{ 3, s_2_7, -1, 2, 0}
 };
 
 static const symbol s_3_0[2] = { 0xD3, 0xD1 };
 static const symbol s_3_1[2] = { 0xD3, 0xD8 };
-
-static const struct among a_3[2] =
-{
-{ 2, s_3_0, -1, 1, 0},
-{ 2, s_3_1, -1, 1, 0}
+static const struct among a_3[2] = {
+{ 2, s_3_0, 0, 1, 0},
+{ 2, s_3_1, 0, 1, 0}
 };
 
 static const symbol s_4_0[1] = { 0xC0 };
@@ -187,55 +183,53 @@ static const symbol s_4_42[3] = { 0xC5, 0xDB, 0xD8 };
 static const symbol s_4_43[3] = { 0xC9, 0xDB, 0xD8 };
 static const symbol s_4_44[2] = { 0xCE, 0xD9 };
 static const symbol s_4_45[3] = { 0xC5, 0xCE, 0xD9 };
-
-static const struct among a_4[46] =
-{
-{ 1, s_4_0, -1, 2, 0},
-{ 2, s_4_1, 0, 2, 0},
-{ 2, s_4_2, -1, 1, 0},
-{ 3, s_4_3, 2, 2, 0},
-{ 3, s_4_4, 2, 2, 0},
-{ 2, s_4_5, -1, 1, 0},
-{ 3, s_4_6, 5, 2, 0},
-{ 3, s_4_7, -1, 1, 0},
-{ 3, s_4_8, -1, 2, 0},
-{ 3, s_4_9, -1, 1, 0},
-{ 4, s_4_10, 9, 2, 0},
-{ 4, s_4_11, 9, 2, 0},
-{ 2, s_4_12, -1, 1, 0},
-{ 3, s_4_13, 12, 2, 0},
-{ 3, s_4_14, 12, 2, 0},
-{ 1, s_4_15, -1, 1, 0},
-{ 2, s_4_16, 15, 2, 0},
-{ 2, s_4_17, 15, 2, 0},
-{ 1, s_4_18, -1, 1, 0},
-{ 2, s_4_19, 18, 2, 0},
-{ 2, s_4_20, 18, 2, 0},
-{ 2, s_4_21, -1, 1, 0},
-{ 2, s_4_22, -1, 2, 0},
-{ 2, s_4_23, -1, 2, 0},
-{ 1, s_4_24, -1, 1, 0},
-{ 2, s_4_25, 24, 2, 0},
-{ 2, s_4_26, -1, 1, 0},
-{ 3, s_4_27, 26, 2, 0},
-{ 3, s_4_28, 26, 2, 0},
-{ 2, s_4_29, -1, 1, 0},
-{ 3, s_4_30, 29, 2, 0},
-{ 3, s_4_31, 29, 1, 0},
-{ 2, s_4_32, -1, 1, 0},
-{ 3, s_4_33, 32, 2, 0},
-{ 2, s_4_34, -1, 1, 0},
-{ 3, s_4_35, 34, 2, 0},
-{ 2, s_4_36, -1, 2, 0},
-{ 2, s_4_37, -1, 2, 0},
-{ 2, s_4_38, -1, 2, 0},
-{ 2, s_4_39, -1, 1, 0},
-{ 3, s_4_40, 39, 2, 0},
-{ 3, s_4_41, 39, 2, 0},
-{ 3, s_4_42, -1, 1, 0},
-{ 3, s_4_43, -1, 2, 0},
-{ 2, s_4_44, -1, 1, 0},
-{ 3, s_4_45, 44, 2, 0}
+static const struct among a_4[46] = {
+{ 1, s_4_0, 0, 2, 0},
+{ 2, s_4_1, -1, 2, 0},
+{ 2, s_4_2, 0, 1, 0},
+{ 3, s_4_3, -1, 2, 0},
+{ 3, s_4_4, -2, 2, 0},
+{ 2, s_4_5, 0, 1, 0},
+{ 3, s_4_6, -1, 2, 0},
+{ 3, s_4_7, 0, 1, 0},
+{ 3, s_4_8, 0, 2, 0},
+{ 3, s_4_9, 0, 1, 0},
+{ 4, s_4_10, -1, 2, 0},
+{ 4, s_4_11, -2, 2, 0},
+{ 2, s_4_12, 0, 1, 0},
+{ 3, s_4_13, -1, 2, 0},
+{ 3, s_4_14, -2, 2, 0},
+{ 1, s_4_15, 0, 1, 0},
+{ 2, s_4_16, -1, 2, 0},
+{ 2, s_4_17, -2, 2, 0},
+{ 1, s_4_18, 0, 1, 0},
+{ 2, s_4_19, -1, 2, 0},
+{ 2, s_4_20, -2, 2, 0},
+{ 2, s_4_21, 0, 1, 0},
+{ 2, s_4_22, 0, 2, 0},
+{ 2, s_4_23, 0, 2, 0},
+{ 1, s_4_24, 0, 1, 0},
+{ 2, s_4_25, -1, 2, 0},
+{ 2, s_4_26, 0, 1, 0},
+{ 3, s_4_27, -1, 2, 0},
+{ 3, s_4_28, -2, 2, 0},
+{ 2, s_4_29, 0, 1, 0},
+{ 3, s_4_30, -1, 2, 0},
+{ 3, s_4_31, -2, 1, 0},
+{ 2, s_4_32, 0, 1, 0},
+{ 3, s_4_33, -1, 2, 0},
+{ 2, s_4_34, 0, 1, 0},
+{ 3, s_4_35, -1, 2, 0},
+{ 2, s_4_36, 0, 2, 0},
+{ 2, s_4_37, 0, 2, 0},
+{ 2, s_4_38, 0, 2, 0},
+{ 2, s_4_39, 0, 1, 0},
+{ 3, s_4_40, -1, 2, 0},
+{ 3, s_4_41, -2, 2, 0},
+{ 3, s_4_42, 0, 1, 0},
+{ 3, s_4_43, 0, 2, 0},
+{ 2, s_4_44, 0, 1, 0},
+{ 3, s_4_45, -1, 2, 0}
 };
 
 static const symbol s_5_0[1] = { 0xC0 };
@@ -274,138 +268,129 @@ static const symbol s_5_32[2] = { 0xC5, 0xD7 };
 static const symbol s_5_33[2] = { 0xCF, 0xD7 };
 static const symbol s_5_34[1] = { 0xD8 };
 static const symbol s_5_35[1] = { 0xD9 };
-
-static const struct among a_5[36] =
-{
-{ 1, s_5_0, -1, 1, 0},
-{ 2, s_5_1, 0, 1, 0},
-{ 2, s_5_2, 0, 1, 0},
-{ 1, s_5_3, -1, 1, 0},
-{ 1, s_5_4, -1, 1, 0},
-{ 2, s_5_5, 4, 1, 0},
-{ 2, s_5_6, 4, 1, 0},
-{ 2, s_5_7, -1, 1, 0},
-{ 2, s_5_8, -1, 1, 0},
-{ 3, s_5_9, 8, 1, 0},
-{ 1, s_5_10, -1, 1, 0},
-{ 2, s_5_11, 10, 1, 0},
-{ 2, s_5_12, 10, 1, 0},
-{ 3, s_5_13, 10, 1, 0},
-{ 3, s_5_14, 10, 1, 0},
-{ 4, s_5_15, 14, 1, 0},
-{ 1, s_5_16, -1, 1, 0},
-{ 2, s_5_17, 16, 1, 0},
-{ 3, s_5_18, 17, 1, 0},
-{ 2, s_5_19, 16, 1, 0},
-{ 2, s_5_20, 16, 1, 0},
-{ 2, s_5_21, -1, 1, 0},
-{ 2, s_5_22, -1, 1, 0},
-{ 3, s_5_23, 22, 1, 0},
-{ 2, s_5_24, -1, 1, 0},
-{ 2, s_5_25, -1, 1, 0},
-{ 3, s_5_26, 25, 1, 0},
-{ 1, s_5_27, -1, 1, 0},
-{ 1, s_5_28, -1, 1, 0},
-{ 2, s_5_29, 28, 1, 0},
-{ 2, s_5_30, 28, 1, 0},
-{ 1, s_5_31, -1, 1, 0},
-{ 2, s_5_32, -1, 1, 0},
-{ 2, s_5_33, -1, 1, 0},
-{ 1, s_5_34, -1, 1, 0},
-{ 1, s_5_35, -1, 1, 0}
+static const struct among a_5[36] = {
+{ 1, s_5_0, 0, 1, 0},
+{ 2, s_5_1, -1, 1, 0},
+{ 2, s_5_2, -2, 1, 0},
+{ 1, s_5_3, 0, 1, 0},
+{ 1, s_5_4, 0, 1, 0},
+{ 2, s_5_5, -1, 1, 0},
+{ 2, s_5_6, -2, 1, 0},
+{ 2, s_5_7, 0, 1, 0},
+{ 2, s_5_8, 0, 1, 0},
+{ 3, s_5_9, -1, 1, 0},
+{ 1, s_5_10, 0, 1, 0},
+{ 2, s_5_11, -1, 1, 0},
+{ 2, s_5_12, -2, 1, 0},
+{ 3, s_5_13, -3, 1, 0},
+{ 3, s_5_14, -4, 1, 0},
+{ 4, s_5_15, -1, 1, 0},
+{ 1, s_5_16, 0, 1, 0},
+{ 2, s_5_17, -1, 1, 0},
+{ 3, s_5_18, -1, 1, 0},
+{ 2, s_5_19, -3, 1, 0},
+{ 2, s_5_20, -4, 1, 0},
+{ 2, s_5_21, 0, 1, 0},
+{ 2, s_5_22, 0, 1, 0},
+{ 3, s_5_23, -1, 1, 0},
+{ 2, s_5_24, 0, 1, 0},
+{ 2, s_5_25, 0, 1, 0},
+{ 3, s_5_26, -1, 1, 0},
+{ 1, s_5_27, 0, 1, 0},
+{ 1, s_5_28, 0, 1, 0},
+{ 2, s_5_29, -1, 1, 0},
+{ 2, s_5_30, -2, 1, 0},
+{ 1, s_5_31, 0, 1, 0},
+{ 2, s_5_32, 0, 1, 0},
+{ 2, s_5_33, 0, 1, 0},
+{ 1, s_5_34, 0, 1, 0},
+{ 1, s_5_35, 0, 1, 0}
 };
 
 static const symbol s_6_0[3] = { 0xCF, 0xD3, 0xD4 };
 static const symbol s_6_1[4] = { 0xCF, 0xD3, 0xD4, 0xD8 };
-
-static const struct among a_6[2] =
-{
-{ 3, s_6_0, -1, 1, 0},
-{ 4, s_6_1, -1, 1, 0}
+static const struct among a_6[2] = {
+{ 3, s_6_0, 0, 1, 0},
+{ 4, s_6_1, 0, 1, 0}
 };
 
 static const symbol s_7_0[4] = { 0xC5, 0xCA, 0xDB, 0xC5 };
 static const symbol s_7_1[1] = { 0xCE };
 static const symbol s_7_2[1] = { 0xD8 };
 static const symbol s_7_3[3] = { 0xC5, 0xCA, 0xDB };
-
-static const struct among a_7[4] =
-{
-{ 4, s_7_0, -1, 1, 0},
-{ 1, s_7_1, -1, 2, 0},
-{ 1, s_7_2, -1, 3, 0},
-{ 3, s_7_3, -1, 1, 0}
+static const struct among a_7[4] = {
+{ 4, s_7_0, 0, 1, 0},
+{ 1, s_7_1, 0, 2, 0},
+{ 1, s_7_2, 0, 3, 0},
+{ 3, s_7_3, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 35, 130, 34, 18 };
 
-static const symbol s_0[] = { 0xC5 };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
         {
             int ret = out_grouping(z, g_v, 192, 220, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_pV = z->c;
         {
             int ret = in_grouping(z, g_v, 192, 220, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = out_grouping(z, g_v, 192, 220, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping(z, g_v, 192, 220, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_perfective_gerund(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((25166336 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_0, 9);
+    among_var = find_among_b(z, a_0, 9, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int m1 = z->l - z->c; (void)m1;
-                if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1;
+            do {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab0;
                 z->c--;
-                goto lab0;
-            lab1:
-                z->c = z->l - m1;
+                break;
+            lab0:
+                z->c = z->l - v_1;
                 if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0;
                 z->c--;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -416,9 +401,10 @@ static int r_perfective_gerund(struct SN_env * z) {
 static int r_adjective(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((2271009 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    if (!find_among_b(z, a_1, 26)) return 0;
+    if (!find_among_b(z, a_1, 26, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -426,33 +412,37 @@ static int r_adjective(struct SN_env * z) {
 
 static int r_adjectival(struct SN_env * z) {
     int among_var;
-    {   int ret = r_adjective(z);
+    {
+        int ret = r_adjective(z);
         if (ret <= 0) return ret;
     }
-    {   int m1 = z->l - z->c; (void)m1;
+    {
+        int v_1 = z->l - z->c;
         z->ket = z->c;
-        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((671113216 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; }
-        among_var = find_among_b(z, a_2, 8);
-        if (!among_var) { z->c = z->l - m1; goto lab0; }
+        if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((671113216 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - v_1; goto lab0; }
+        among_var = find_among_b(z, a_2, 8, 0);
+        if (!among_var) { z->c = z->l - v_1; goto lab0; }
         z->bra = z->c;
         switch (among_var) {
             case 1:
-                {   int m2 = z->l - z->c; (void)m2;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab2;
+                do {
+                    int v_2 = z->l - z->c;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1;
                     z->c--;
-                    goto lab1;
-                lab2:
-                    z->c = z->l - m2;
-                    if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) { z->c = z->l - m1; goto lab0; }
+                    break;
+                lab1:
+                    z->c = z->l - v_2;
+                    if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) { z->c = z->l - v_1; goto lab0; }
                     z->c--;
-                }
-            lab1:
-                {   int ret = slice_del(z);
+                } while (0);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
             case 2:
-                {   int ret = slice_del(z);
+                {
+                    int ret = slice_del(z);
                     if (ret < 0) return ret;
                 }
                 break;
@@ -466,9 +456,10 @@ static int r_adjectival(struct SN_env * z) {
 static int r_reflexive(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 209 && z->p[z->c - 1] != 216)) return 0;
-    if (!find_among_b(z, a_3, 2)) return 0;
+    if (!find_among_b(z, a_3, 2, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -478,27 +469,29 @@ static int r_verb(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((51443235 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_4, 46);
+    among_var = find_among_b(z, a_4, 46, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int m1 = z->l - z->c; (void)m1;
-                if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab1;
+            do {
+                int v_1 = z->l - z->c;
+                if (z->c <= z->lb || z->p[z->c - 1] != 0xC1) goto lab0;
                 z->c--;
-                goto lab0;
-            lab1:
-                z->c = z->l - m1;
+                break;
+            lab0:
+                z->c = z->l - v_1;
                 if (z->c <= z->lb || z->p[z->c - 1] != 0xD1) return 0;
                 z->c--;
-            }
-        lab0:
-            {   int ret = slice_del(z);
+            } while (0);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -509,9 +502,10 @@ static int r_verb(struct SN_env * z) {
 static int r_noun(struct SN_env * z) {
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((60991267 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    if (!find_among_b(z, a_5, 36)) return 0;
+    if (!find_among_b(z, a_5, 36, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -520,12 +514,14 @@ static int r_noun(struct SN_env * z) {
 static int r_derivational(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 212 && z->p[z->c - 1] != 216)) return 0;
-    if (!find_among_b(z, a_6, 2)) return 0;
+    if (!find_among_b(z, a_6, 2, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_R2(z);
+    {
+        int ret = r_R2(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -535,12 +531,13 @@ static int r_tidy_up(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((151011360 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_7, 4);
+    among_var = find_among_b(z, a_7, 4, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             z->ket = z->c;
@@ -549,19 +546,22 @@ static int r_tidy_up(struct SN_env * z) {
             z->bra = z->c;
             if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0;
             z->c--;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (z->c <= z->lb || z->p[z->c - 1] != 0xCE) return 0;
             z->c--;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -570,116 +570,138 @@ static int r_tidy_up(struct SN_env * z) {
 }
 
 extern int russian_KOI8_R_stem(struct SN_env * z) {
-    {   int c1 = z->c;
-        while(1) {
-            int c2 = z->c;
-            while(1) {
-                int c3 = z->c;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
+            while (1) {
+                int v_3 = z->c;
                 z->bra = z->c;
                 if (z->c == z->l || z->p[z->c] != 0xA3) goto lab2;
                 z->c++;
                 z->ket = z->c;
-                z->c = c3;
+                z->c = v_3;
                 break;
             lab2:
-                z->c = c3;
+                z->c = v_3;
                 if (z->c >= z->l) goto lab1;
                 z->c++;
             }
-            {   int ret = slice_from_s(z, 1, s_0);
+            {
+                int ret = slice_from_s(z, 1, s_0);
                 if (ret < 0) return ret;
             }
             continue;
         lab1:
-            z->c = c2;
+            z->c = v_2;
             break;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-
-    {   int mlimit4;
-        if (z->c < z->I[1]) return 0;
-        mlimit4 = z->lb; z->lb = z->I[1];
-        {   int m5 = z->l - z->c; (void)m5;
-            {   int m6 = z->l - z->c; (void)m6;
-                {   int ret = r_perfective_gerund(z);
-                    if (ret == 0) goto lab5;
+    {
+        int v_4;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_4 = z->lb; z->lb = ((SN_local *)z)->i_pV;
+        {
+            int v_5 = z->l - z->c;
+            do {
+                int v_6 = z->l - z->c;
+                {
+                    int ret = r_perfective_gerund(z);
+                    if (ret == 0) goto lab4;
                     if (ret < 0) return ret;
                 }
-                goto lab4;
-            lab5:
-                z->c = z->l - m6;
-                {   int m7 = z->l - z->c; (void)m7;
-                    {   int ret = r_reflexive(z);
-                        if (ret == 0) { z->c = z->l - m7; goto lab6; }
+                break;
+            lab4:
+                z->c = z->l - v_6;
+                {
+                    int v_7 = z->l - z->c;
+                    {
+                        int ret = r_reflexive(z);
+                        if (ret == 0) { z->c = z->l - v_7; goto lab5; }
                         if (ret < 0) return ret;
                     }
-                lab6:
+                lab5:
                     ;
                 }
-                {   int m8 = z->l - z->c; (void)m8;
-                    {   int ret = r_adjectival(z);
-                        if (ret == 0) goto lab8;
+                do {
+                    int v_8 = z->l - z->c;
+                    {
+                        int ret = r_adjectival(z);
+                        if (ret == 0) goto lab6;
                         if (ret < 0) return ret;
                     }
-                    goto lab7;
-                lab8:
-                    z->c = z->l - m8;
-                    {   int ret = r_verb(z);
-                        if (ret == 0) goto lab9;
+                    break;
+                lab6:
+                    z->c = z->l - v_8;
+                    {
+                        int ret = r_verb(z);
+                        if (ret == 0) goto lab7;
                         if (ret < 0) return ret;
                     }
-                    goto lab7;
-                lab9:
-                    z->c = z->l - m8;
-                    {   int ret = r_noun(z);
+                    break;
+                lab7:
+                    z->c = z->l - v_8;
+                    {
+                        int ret = r_noun(z);
                         if (ret == 0) goto lab3;
                         if (ret < 0) return ret;
                     }
-                }
-            lab7:
-                ;
-            }
-        lab4:
+                } while (0);
+            } while (0);
         lab3:
-            z->c = z->l - m5;
+            z->c = z->l - v_5;
         }
-        {   int m9 = z->l - z->c; (void)m9;
+        {
+            int v_9 = z->l - z->c;
             z->ket = z->c;
-            if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - m9; goto lab10; }
+            if (z->c <= z->lb || z->p[z->c - 1] != 0xC9) { z->c = z->l - v_9; goto lab8; }
             z->c--;
             z->bra = z->c;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
-        lab10:
+        lab8:
             ;
         }
-        {   int m10 = z->l - z->c; (void)m10;
-            {   int ret = r_derivational(z);
+        {
+            int v_10 = z->l - z->c;
+            {
+                int ret = r_derivational(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m10;
+            z->c = z->l - v_10;
         }
-        {   int m11 = z->l - z->c; (void)m11;
-            {   int ret = r_tidy_up(z);
+        {
+            int v_11 = z->l - z->c;
+            {
+                int ret = r_tidy_up(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m11;
+            z->c = z->l - v_11;
         }
-        z->lb = mlimit4;
+        z->lb = v_4;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * russian_KOI8_R_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * russian_KOI8_R_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void russian_KOI8_R_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void russian_KOI8_R_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 1f00dd95c89e5ebfcf5e173b4f94d064026b1272..bd039b57474544961e57ddf5b2a42e2ea5f30898 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from arabic.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_UTF_8_arabic.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    unsigned char b_is_defined;
+    unsigned char b_is_verb;
+    unsigned char b_is_noun;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int arabic_UTF_8_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_Checks1(struct SN_env * z);
 static int r_Normalize_pre(struct SN_env * z);
 static int r_Normalize_post(struct SN_env * z);
@@ -30,18 +44,81 @@ static int r_Prefix_Step3b_Noun(struct SN_env * z);
 static int r_Prefix_Step3a_Noun(struct SN_env * z);
 static int r_Prefix_Step2(struct SN_env * z);
 static int r_Prefix_Step1(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * arabic_UTF_8_create_env(void);
-extern void arabic_UTF_8_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { '0' };
+static const symbol s_1[] = { '1' };
+static const symbol s_2[] = { '2' };
+static const symbol s_3[] = { '3' };
+static const symbol s_4[] = { '4' };
+static const symbol s_5[] = { '5' };
+static const symbol s_6[] = { '6' };
+static const symbol s_7[] = { '7' };
+static const symbol s_8[] = { '8' };
+static const symbol s_9[] = { '9' };
+static const symbol s_10[] = { 0xD8, 0xA1 };
+static const symbol s_11[] = { 0xD8, 0xA3 };
+static const symbol s_12[] = { 0xD8, 0xA5 };
+static const symbol s_13[] = { 0xD8, 0xA6 };
+static const symbol s_14[] = { 0xD8, 0xA2 };
+static const symbol s_15[] = { 0xD8, 0xA4 };
+static const symbol s_16[] = { 0xD8, 0xA7 };
+static const symbol s_17[] = { 0xD8, 0xA8 };
+static const symbol s_18[] = { 0xD8, 0xA9 };
+static const symbol s_19[] = { 0xD8, 0xAA };
+static const symbol s_20[] = { 0xD8, 0xAB };
+static const symbol s_21[] = { 0xD8, 0xAC };
+static const symbol s_22[] = { 0xD8, 0xAD };
+static const symbol s_23[] = { 0xD8, 0xAE };
+static const symbol s_24[] = { 0xD8, 0xAF };
+static const symbol s_25[] = { 0xD8, 0xB0 };
+static const symbol s_26[] = { 0xD8, 0xB1 };
+static const symbol s_27[] = { 0xD8, 0xB2 };
+static const symbol s_28[] = { 0xD8, 0xB3 };
+static const symbol s_29[] = { 0xD8, 0xB4 };
+static const symbol s_30[] = { 0xD8, 0xB5 };
+static const symbol s_31[] = { 0xD8, 0xB6 };
+static const symbol s_32[] = { 0xD8, 0xB7 };
+static const symbol s_33[] = { 0xD8, 0xB8 };
+static const symbol s_34[] = { 0xD8, 0xB9 };
+static const symbol s_35[] = { 0xD8, 0xBA };
+static const symbol s_36[] = { 0xD9, 0x81 };
+static const symbol s_37[] = { 0xD9, 0x82 };
+static const symbol s_38[] = { 0xD9, 0x83 };
+static const symbol s_39[] = { 0xD9, 0x84 };
+static const symbol s_40[] = { 0xD9, 0x85 };
+static const symbol s_41[] = { 0xD9, 0x86 };
+static const symbol s_42[] = { 0xD9, 0x87 };
+static const symbol s_43[] = { 0xD9, 0x88 };
+static const symbol s_44[] = { 0xD9, 0x89 };
+static const symbol s_45[] = { 0xD9, 0x8A };
+static const symbol s_46[] = { 0xD9, 0x84, 0xD8, 0xA7 };
+static const symbol s_47[] = { 0xD9, 0x84, 0xD8, 0xA3 };
+static const symbol s_48[] = { 0xD9, 0x84, 0xD8, 0xA5 };
+static const symbol s_49[] = { 0xD9, 0x84, 0xD8, 0xA2 };
+static const symbol s_50[] = { 0xD8, 0xA1 };
+static const symbol s_51[] = { 0xD8, 0xA7 };
+static const symbol s_52[] = { 0xD9, 0x88 };
+static const symbol s_53[] = { 0xD9, 0x8A };
+static const symbol s_54[] = { 0xD8, 0xA3 };
+static const symbol s_55[] = { 0xD8, 0xA2 };
+static const symbol s_56[] = { 0xD8, 0xA7 };
+static const symbol s_57[] = { 0xD8, 0xA5 };
+static const symbol s_58[] = { 0xD8, 0xA7 };
+static const symbol s_59[] = { 0xD8, 0xA8 };
+static const symbol s_60[] = { 0xD9, 0x83 };
+static const symbol s_61[] = { 0xD9, 0x8A };
+static const symbol s_62[] = { 0xD8, 0xAA };
+static const symbol s_63[] = { 0xD9, 0x86 };
+static const symbol s_64[] = { 0xD8, 0xA3 };
+static const symbol s_65[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
+static const symbol s_66[] = { 0xD9, 0x86 };
+static const symbol s_67[] = { 0xD8, 0xA7, 0xD8, 0xAA };
+static const symbol s_68[] = { 0xD8, 0xAA };
+static const symbol s_69[] = { 0xD8, 0xA9 };
+static const symbol s_70[] = { 0xD9, 0x8A };
+static const symbol s_71[] = { 0xD9, 0x89 };
+static const symbol s_72[] = { 0xD9, 0x8A };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[2] = { 0xD9, 0x80 };
 static const symbol s_0_1[2] = { 0xD9, 0x8B };
 static const symbol s_0_2[2] = { 0xD9, 0x8C };
@@ -186,153 +263,151 @@ static const symbol s_0_140[3] = { 0xEF, 0xBB, 0xB9 };
 static const symbol s_0_141[3] = { 0xEF, 0xBB, 0xBA };
 static const symbol s_0_142[3] = { 0xEF, 0xBB, 0xBB };
 static const symbol s_0_143[3] = { 0xEF, 0xBB, 0xBC };
-
-static const struct among a_0[144] =
-{
-{ 2, s_0_0, -1, 1, 0},
-{ 2, s_0_1, -1, 1, 0},
-{ 2, s_0_2, -1, 1, 0},
-{ 2, s_0_3, -1, 1, 0},
-{ 2, s_0_4, -1, 1, 0},
-{ 2, s_0_5, -1, 1, 0},
-{ 2, s_0_6, -1, 1, 0},
-{ 2, s_0_7, -1, 1, 0},
-{ 2, s_0_8, -1, 1, 0},
-{ 2, s_0_9, -1, 2, 0},
-{ 2, s_0_10, -1, 3, 0},
-{ 2, s_0_11, -1, 4, 0},
-{ 2, s_0_12, -1, 5, 0},
-{ 2, s_0_13, -1, 6, 0},
-{ 2, s_0_14, -1, 7, 0},
-{ 2, s_0_15, -1, 8, 0},
-{ 2, s_0_16, -1, 9, 0},
-{ 2, s_0_17, -1, 10, 0},
-{ 2, s_0_18, -1, 11, 0},
-{ 3, s_0_19, -1, 12, 0},
-{ 3, s_0_20, -1, 16, 0},
-{ 3, s_0_21, -1, 16, 0},
-{ 3, s_0_22, -1, 13, 0},
-{ 3, s_0_23, -1, 13, 0},
-{ 3, s_0_24, -1, 17, 0},
-{ 3, s_0_25, -1, 17, 0},
-{ 3, s_0_26, -1, 14, 0},
-{ 3, s_0_27, -1, 14, 0},
-{ 3, s_0_28, -1, 15, 0},
-{ 3, s_0_29, -1, 15, 0},
-{ 3, s_0_30, -1, 15, 0},
-{ 3, s_0_31, -1, 15, 0},
-{ 3, s_0_32, -1, 18, 0},
-{ 3, s_0_33, -1, 18, 0},
-{ 3, s_0_34, -1, 19, 0},
-{ 3, s_0_35, -1, 19, 0},
-{ 3, s_0_36, -1, 19, 0},
-{ 3, s_0_37, -1, 19, 0},
-{ 3, s_0_38, -1, 20, 0},
-{ 3, s_0_39, -1, 20, 0},
-{ 3, s_0_40, -1, 21, 0},
-{ 3, s_0_41, -1, 21, 0},
-{ 3, s_0_42, -1, 21, 0},
-{ 3, s_0_43, -1, 21, 0},
-{ 3, s_0_44, -1, 22, 0},
-{ 3, s_0_45, -1, 22, 0},
-{ 3, s_0_46, -1, 22, 0},
-{ 3, s_0_47, -1, 22, 0},
-{ 3, s_0_48, -1, 23, 0},
-{ 3, s_0_49, -1, 23, 0},
-{ 3, s_0_50, -1, 23, 0},
-{ 3, s_0_51, -1, 23, 0},
-{ 3, s_0_52, -1, 24, 0},
-{ 3, s_0_53, -1, 24, 0},
-{ 3, s_0_54, -1, 24, 0},
-{ 3, s_0_55, -1, 24, 0},
-{ 3, s_0_56, -1, 25, 0},
-{ 3, s_0_57, -1, 25, 0},
-{ 3, s_0_58, -1, 25, 0},
-{ 3, s_0_59, -1, 25, 0},
-{ 3, s_0_60, -1, 26, 0},
-{ 3, s_0_61, -1, 26, 0},
-{ 3, s_0_62, -1, 27, 0},
-{ 3, s_0_63, -1, 27, 0},
-{ 3, s_0_64, -1, 28, 0},
-{ 3, s_0_65, -1, 28, 0},
-{ 3, s_0_66, -1, 29, 0},
-{ 3, s_0_67, -1, 29, 0},
-{ 3, s_0_68, -1, 30, 0},
-{ 3, s_0_69, -1, 30, 0},
-{ 3, s_0_70, -1, 30, 0},
-{ 3, s_0_71, -1, 30, 0},
-{ 3, s_0_72, -1, 31, 0},
-{ 3, s_0_73, -1, 31, 0},
-{ 3, s_0_74, -1, 31, 0},
-{ 3, s_0_75, -1, 31, 0},
-{ 3, s_0_76, -1, 32, 0},
-{ 3, s_0_77, -1, 32, 0},
-{ 3, s_0_78, -1, 32, 0},
-{ 3, s_0_79, -1, 32, 0},
-{ 3, s_0_80, -1, 33, 0},
-{ 3, s_0_81, -1, 33, 0},
-{ 3, s_0_82, -1, 33, 0},
-{ 3, s_0_83, -1, 33, 0},
-{ 3, s_0_84, -1, 34, 0},
-{ 3, s_0_85, -1, 34, 0},
-{ 3, s_0_86, -1, 34, 0},
-{ 3, s_0_87, -1, 34, 0},
-{ 3, s_0_88, -1, 35, 0},
-{ 3, s_0_89, -1, 35, 0},
-{ 3, s_0_90, -1, 35, 0},
-{ 3, s_0_91, -1, 35, 0},
-{ 3, s_0_92, -1, 36, 0},
-{ 3, s_0_93, -1, 36, 0},
-{ 3, s_0_94, -1, 36, 0},
-{ 3, s_0_95, -1, 36, 0},
-{ 3, s_0_96, -1, 37, 0},
-{ 3, s_0_97, -1, 37, 0},
-{ 3, s_0_98, -1, 37, 0},
-{ 3, s_0_99, -1, 37, 0},
-{ 3, s_0_100, -1, 38, 0},
-{ 3, s_0_101, -1, 38, 0},
-{ 3, s_0_102, -1, 38, 0},
-{ 3, s_0_103, -1, 38, 0},
-{ 3, s_0_104, -1, 39, 0},
-{ 3, s_0_105, -1, 39, 0},
-{ 3, s_0_106, -1, 39, 0},
-{ 3, s_0_107, -1, 39, 0},
-{ 3, s_0_108, -1, 40, 0},
-{ 3, s_0_109, -1, 40, 0},
-{ 3, s_0_110, -1, 40, 0},
-{ 3, s_0_111, -1, 40, 0},
-{ 3, s_0_112, -1, 41, 0},
-{ 3, s_0_113, -1, 41, 0},
-{ 3, s_0_114, -1, 41, 0},
-{ 3, s_0_115, -1, 41, 0},
-{ 3, s_0_116, -1, 42, 0},
-{ 3, s_0_117, -1, 42, 0},
-{ 3, s_0_118, -1, 42, 0},
-{ 3, s_0_119, -1, 42, 0},
-{ 3, s_0_120, -1, 43, 0},
-{ 3, s_0_121, -1, 43, 0},
-{ 3, s_0_122, -1, 43, 0},
-{ 3, s_0_123, -1, 43, 0},
-{ 3, s_0_124, -1, 44, 0},
-{ 3, s_0_125, -1, 44, 0},
-{ 3, s_0_126, -1, 44, 0},
-{ 3, s_0_127, -1, 44, 0},
-{ 3, s_0_128, -1, 45, 0},
-{ 3, s_0_129, -1, 45, 0},
-{ 3, s_0_130, -1, 46, 0},
-{ 3, s_0_131, -1, 46, 0},
-{ 3, s_0_132, -1, 47, 0},
-{ 3, s_0_133, -1, 47, 0},
-{ 3, s_0_134, -1, 47, 0},
-{ 3, s_0_135, -1, 47, 0},
-{ 3, s_0_136, -1, 51, 0},
-{ 3, s_0_137, -1, 51, 0},
-{ 3, s_0_138, -1, 49, 0},
-{ 3, s_0_139, -1, 49, 0},
-{ 3, s_0_140, -1, 50, 0},
-{ 3, s_0_141, -1, 50, 0},
-{ 3, s_0_142, -1, 48, 0},
-{ 3, s_0_143, -1, 48, 0}
+static const struct among a_0[144] = {
+{ 2, s_0_0, 0, 1, 0},
+{ 2, s_0_1, 0, 1, 0},
+{ 2, s_0_2, 0, 1, 0},
+{ 2, s_0_3, 0, 1, 0},
+{ 2, s_0_4, 0, 1, 0},
+{ 2, s_0_5, 0, 1, 0},
+{ 2, s_0_6, 0, 1, 0},
+{ 2, s_0_7, 0, 1, 0},
+{ 2, s_0_8, 0, 1, 0},
+{ 2, s_0_9, 0, 2, 0},
+{ 2, s_0_10, 0, 3, 0},
+{ 2, s_0_11, 0, 4, 0},
+{ 2, s_0_12, 0, 5, 0},
+{ 2, s_0_13, 0, 6, 0},
+{ 2, s_0_14, 0, 7, 0},
+{ 2, s_0_15, 0, 8, 0},
+{ 2, s_0_16, 0, 9, 0},
+{ 2, s_0_17, 0, 10, 0},
+{ 2, s_0_18, 0, 11, 0},
+{ 3, s_0_19, 0, 12, 0},
+{ 3, s_0_20, 0, 16, 0},
+{ 3, s_0_21, 0, 16, 0},
+{ 3, s_0_22, 0, 13, 0},
+{ 3, s_0_23, 0, 13, 0},
+{ 3, s_0_24, 0, 17, 0},
+{ 3, s_0_25, 0, 17, 0},
+{ 3, s_0_26, 0, 14, 0},
+{ 3, s_0_27, 0, 14, 0},
+{ 3, s_0_28, 0, 15, 0},
+{ 3, s_0_29, 0, 15, 0},
+{ 3, s_0_30, 0, 15, 0},
+{ 3, s_0_31, 0, 15, 0},
+{ 3, s_0_32, 0, 18, 0},
+{ 3, s_0_33, 0, 18, 0},
+{ 3, s_0_34, 0, 19, 0},
+{ 3, s_0_35, 0, 19, 0},
+{ 3, s_0_36, 0, 19, 0},
+{ 3, s_0_37, 0, 19, 0},
+{ 3, s_0_38, 0, 20, 0},
+{ 3, s_0_39, 0, 20, 0},
+{ 3, s_0_40, 0, 21, 0},
+{ 3, s_0_41, 0, 21, 0},
+{ 3, s_0_42, 0, 21, 0},
+{ 3, s_0_43, 0, 21, 0},
+{ 3, s_0_44, 0, 22, 0},
+{ 3, s_0_45, 0, 22, 0},
+{ 3, s_0_46, 0, 22, 0},
+{ 3, s_0_47, 0, 22, 0},
+{ 3, s_0_48, 0, 23, 0},
+{ 3, s_0_49, 0, 23, 0},
+{ 3, s_0_50, 0, 23, 0},
+{ 3, s_0_51, 0, 23, 0},
+{ 3, s_0_52, 0, 24, 0},
+{ 3, s_0_53, 0, 24, 0},
+{ 3, s_0_54, 0, 24, 0},
+{ 3, s_0_55, 0, 24, 0},
+{ 3, s_0_56, 0, 25, 0},
+{ 3, s_0_57, 0, 25, 0},
+{ 3, s_0_58, 0, 25, 0},
+{ 3, s_0_59, 0, 25, 0},
+{ 3, s_0_60, 0, 26, 0},
+{ 3, s_0_61, 0, 26, 0},
+{ 3, s_0_62, 0, 27, 0},
+{ 3, s_0_63, 0, 27, 0},
+{ 3, s_0_64, 0, 28, 0},
+{ 3, s_0_65, 0, 28, 0},
+{ 3, s_0_66, 0, 29, 0},
+{ 3, s_0_67, 0, 29, 0},
+{ 3, s_0_68, 0, 30, 0},
+{ 3, s_0_69, 0, 30, 0},
+{ 3, s_0_70, 0, 30, 0},
+{ 3, s_0_71, 0, 30, 0},
+{ 3, s_0_72, 0, 31, 0},
+{ 3, s_0_73, 0, 31, 0},
+{ 3, s_0_74, 0, 31, 0},
+{ 3, s_0_75, 0, 31, 0},
+{ 3, s_0_76, 0, 32, 0},
+{ 3, s_0_77, 0, 32, 0},
+{ 3, s_0_78, 0, 32, 0},
+{ 3, s_0_79, 0, 32, 0},
+{ 3, s_0_80, 0, 33, 0},
+{ 3, s_0_81, 0, 33, 0},
+{ 3, s_0_82, 0, 33, 0},
+{ 3, s_0_83, 0, 33, 0},
+{ 3, s_0_84, 0, 34, 0},
+{ 3, s_0_85, 0, 34, 0},
+{ 3, s_0_86, 0, 34, 0},
+{ 3, s_0_87, 0, 34, 0},
+{ 3, s_0_88, 0, 35, 0},
+{ 3, s_0_89, 0, 35, 0},
+{ 3, s_0_90, 0, 35, 0},
+{ 3, s_0_91, 0, 35, 0},
+{ 3, s_0_92, 0, 36, 0},
+{ 3, s_0_93, 0, 36, 0},
+{ 3, s_0_94, 0, 36, 0},
+{ 3, s_0_95, 0, 36, 0},
+{ 3, s_0_96, 0, 37, 0},
+{ 3, s_0_97, 0, 37, 0},
+{ 3, s_0_98, 0, 37, 0},
+{ 3, s_0_99, 0, 37, 0},
+{ 3, s_0_100, 0, 38, 0},
+{ 3, s_0_101, 0, 38, 0},
+{ 3, s_0_102, 0, 38, 0},
+{ 3, s_0_103, 0, 38, 0},
+{ 3, s_0_104, 0, 39, 0},
+{ 3, s_0_105, 0, 39, 0},
+{ 3, s_0_106, 0, 39, 0},
+{ 3, s_0_107, 0, 39, 0},
+{ 3, s_0_108, 0, 40, 0},
+{ 3, s_0_109, 0, 40, 0},
+{ 3, s_0_110, 0, 40, 0},
+{ 3, s_0_111, 0, 40, 0},
+{ 3, s_0_112, 0, 41, 0},
+{ 3, s_0_113, 0, 41, 0},
+{ 3, s_0_114, 0, 41, 0},
+{ 3, s_0_115, 0, 41, 0},
+{ 3, s_0_116, 0, 42, 0},
+{ 3, s_0_117, 0, 42, 0},
+{ 3, s_0_118, 0, 42, 0},
+{ 3, s_0_119, 0, 42, 0},
+{ 3, s_0_120, 0, 43, 0},
+{ 3, s_0_121, 0, 43, 0},
+{ 3, s_0_122, 0, 43, 0},
+{ 3, s_0_123, 0, 43, 0},
+{ 3, s_0_124, 0, 44, 0},
+{ 3, s_0_125, 0, 44, 0},
+{ 3, s_0_126, 0, 44, 0},
+{ 3, s_0_127, 0, 44, 0},
+{ 3, s_0_128, 0, 45, 0},
+{ 3, s_0_129, 0, 45, 0},
+{ 3, s_0_130, 0, 46, 0},
+{ 3, s_0_131, 0, 46, 0},
+{ 3, s_0_132, 0, 47, 0},
+{ 3, s_0_133, 0, 47, 0},
+{ 3, s_0_134, 0, 47, 0},
+{ 3, s_0_135, 0, 47, 0},
+{ 3, s_0_136, 0, 51, 0},
+{ 3, s_0_137, 0, 51, 0},
+{ 3, s_0_138, 0, 49, 0},
+{ 3, s_0_139, 0, 49, 0},
+{ 3, s_0_140, 0, 50, 0},
+{ 3, s_0_141, 0, 50, 0},
+{ 3, s_0_142, 0, 48, 0},
+{ 3, s_0_143, 0, 48, 0}
 };
 
 static const symbol s_1_0[2] = { 0xD8, 0xA2 };
@@ -340,14 +415,12 @@ static const symbol s_1_1[2] = { 0xD8, 0xA3 };
 static const symbol s_1_2[2] = { 0xD8, 0xA4 };
 static const symbol s_1_3[2] = { 0xD8, 0xA5 };
 static const symbol s_1_4[2] = { 0xD8, 0xA6 };
-
-static const struct among a_1[5] =
-{
-{ 2, s_1_0, -1, 1, 0},
-{ 2, s_1_1, -1, 1, 0},
-{ 2, s_1_2, -1, 1, 0},
-{ 2, s_1_3, -1, 1, 0},
-{ 2, s_1_4, -1, 1, 0}
+static const struct among a_1[5] = {
+{ 2, s_1_0, 0, 1, 0},
+{ 2, s_1_1, 0, 1, 0},
+{ 2, s_1_2, 0, 1, 0},
+{ 2, s_1_3, 0, 1, 0},
+{ 2, s_1_4, 0, 1, 0}
 };
 
 static const symbol s_2_0[2] = { 0xD8, 0xA2 };
@@ -355,27 +428,23 @@ static const symbol s_2_1[2] = { 0xD8, 0xA3 };
 static const symbol s_2_2[2] = { 0xD8, 0xA4 };
 static const symbol s_2_3[2] = { 0xD8, 0xA5 };
 static const symbol s_2_4[2] = { 0xD8, 0xA6 };
-
-static const struct among a_2[5] =
-{
-{ 2, s_2_0, -1, 1, 0},
-{ 2, s_2_1, -1, 1, 0},
-{ 2, s_2_2, -1, 2, 0},
-{ 2, s_2_3, -1, 1, 0},
-{ 2, s_2_4, -1, 3, 0}
+static const struct among a_2[5] = {
+{ 2, s_2_0, 0, 1, 0},
+{ 2, s_2_1, 0, 1, 0},
+{ 2, s_2_2, 0, 2, 0},
+{ 2, s_2_3, 0, 1, 0},
+{ 2, s_2_4, 0, 3, 0}
 };
 
 static const symbol s_3_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_3_1[6] = { 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_3_2[6] = { 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_3_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
-
-static const struct among a_3[4] =
-{
-{ 4, s_3_0, -1, 2, 0},
-{ 6, s_3_1, -1, 1, 0},
-{ 6, s_3_2, -1, 1, 0},
-{ 4, s_3_3, -1, 2, 0}
+static const struct among a_3[4] = {
+{ 4, s_3_0, 0, 2, 0},
+{ 6, s_3_1, 0, 1, 0},
+{ 6, s_3_2, 0, 1, 0},
+{ 4, s_3_3, 0, 2, 0}
 };
 
 static const symbol s_4_0[4] = { 0xD8, 0xA3, 0xD8, 0xA2 };
@@ -383,73 +452,61 @@ static const symbol s_4_1[4] = { 0xD8, 0xA3, 0xD8, 0xA3 };
 static const symbol s_4_2[4] = { 0xD8, 0xA3, 0xD8, 0xA4 };
 static const symbol s_4_3[4] = { 0xD8, 0xA3, 0xD8, 0xA5 };
 static const symbol s_4_4[4] = { 0xD8, 0xA3, 0xD8, 0xA7 };
-
-static const struct among a_4[5] =
-{
-{ 4, s_4_0, -1, 2, 0},
-{ 4, s_4_1, -1, 1, 0},
-{ 4, s_4_2, -1, 1, 0},
-{ 4, s_4_3, -1, 4, 0},
-{ 4, s_4_4, -1, 3, 0}
+static const struct among a_4[5] = {
+{ 4, s_4_0, 0, 2, 0},
+{ 4, s_4_1, 0, 1, 0},
+{ 4, s_4_2, 0, 1, 0},
+{ 4, s_4_3, 0, 4, 0},
+{ 4, s_4_4, 0, 3, 0}
 };
 
 static const symbol s_5_0[2] = { 0xD9, 0x81 };
 static const symbol s_5_1[2] = { 0xD9, 0x88 };
-
-static const struct among a_5[2] =
-{
-{ 2, s_5_0, -1, 1, 0},
-{ 2, s_5_1, -1, 1, 0}
+static const struct among a_5[2] = {
+{ 2, s_5_0, 0, 1, 0},
+{ 2, s_5_1, 0, 1, 0}
 };
 
 static const symbol s_6_0[4] = { 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_6_1[6] = { 0xD8, 0xA8, 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_6_2[6] = { 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x84 };
 static const symbol s_6_3[4] = { 0xD9, 0x84, 0xD9, 0x84 };
-
-static const struct among a_6[4] =
-{
-{ 4, s_6_0, -1, 2, 0},
-{ 6, s_6_1, -1, 1, 0},
-{ 6, s_6_2, -1, 1, 0},
-{ 4, s_6_3, -1, 2, 0}
+static const struct among a_6[4] = {
+{ 4, s_6_0, 0, 2, 0},
+{ 6, s_6_1, 0, 1, 0},
+{ 6, s_6_2, 0, 1, 0},
+{ 4, s_6_3, 0, 2, 0}
 };
 
 static const symbol s_7_0[2] = { 0xD8, 0xA8 };
 static const symbol s_7_1[4] = { 0xD8, 0xA8, 0xD8, 0xA7 };
 static const symbol s_7_2[4] = { 0xD8, 0xA8, 0xD8, 0xA8 };
 static const symbol s_7_3[4] = { 0xD9, 0x83, 0xD9, 0x83 };
-
-static const struct among a_7[4] =
-{
-{ 2, s_7_0, -1, 1, 0},
-{ 4, s_7_1, 0, -1, 0},
-{ 4, s_7_2, 0, 2, 0},
-{ 4, s_7_3, -1, 3, 0}
+static const struct among a_7[4] = {
+{ 2, s_7_0, 0, 1, 0},
+{ 4, s_7_1, -1, -1, 0},
+{ 4, s_7_2, -2, 2, 0},
+{ 4, s_7_3, 0, 3, 0}
 };
 
 static const symbol s_8_0[4] = { 0xD8, 0xB3, 0xD8, 0xA3 };
 static const symbol s_8_1[4] = { 0xD8, 0xB3, 0xD8, 0xAA };
 static const symbol s_8_2[4] = { 0xD8, 0xB3, 0xD9, 0x86 };
 static const symbol s_8_3[4] = { 0xD8, 0xB3, 0xD9, 0x8A };
-
-static const struct among a_8[4] =
-{
-{ 4, s_8_0, -1, 4, 0},
-{ 4, s_8_1, -1, 2, 0},
-{ 4, s_8_2, -1, 3, 0},
-{ 4, s_8_3, -1, 1, 0}
+static const struct among a_8[4] = {
+{ 4, s_8_0, 0, 4, 0},
+{ 4, s_8_1, 0, 2, 0},
+{ 4, s_8_2, 0, 3, 0},
+{ 4, s_8_3, 0, 1, 0}
 };
 
 static const symbol s_9_0[6] = { 0xD8, 0xAA, 0xD8, 0xB3, 0xD8, 0xAA };
 static const symbol s_9_1[6] = { 0xD9, 0x86, 0xD8, 0xB3, 0xD8, 0xAA };
 static const symbol s_9_2[6] = { 0xD9, 0x8A, 0xD8, 0xB3, 0xD8, 0xAA };
-
-static const struct among a_9[3] =
-{
-{ 6, s_9_0, -1, 1, 0},
-{ 6, s_9_1, -1, 1, 0},
-{ 6, s_9_2, -1, 1, 0}
+static const struct among a_9[3] = {
+{ 6, s_9_0, 0, 1, 0},
+{ 6, s_9_1, 0, 1, 0},
+{ 6, s_9_2, 0, 1, 0}
 };
 
 static const symbol s_10_0[2] = { 0xD9, 0x83 };
@@ -462,559 +519,496 @@ static const symbol s_10_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 };
 static const symbol s_10_7[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 };
 static const symbol s_10_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
 static const symbol s_10_9[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
-
-static const struct among a_10[10] =
-{
-{ 2, s_10_0, -1, 1, 0},
-{ 4, s_10_1, -1, 2, 0},
-{ 4, s_10_2, -1, 2, 0},
-{ 4, s_10_3, -1, 2, 0},
-{ 2, s_10_4, -1, 1, 0},
-{ 2, s_10_5, -1, 1, 0},
-{ 6, s_10_6, -1, 3, 0},
-{ 6, s_10_7, -1, 3, 0},
-{ 4, s_10_8, -1, 2, 0},
-{ 4, s_10_9, -1, 2, 0}
+static const struct among a_10[10] = {
+{ 2, s_10_0, 0, 1, 0},
+{ 4, s_10_1, 0, 2, 0},
+{ 4, s_10_2, 0, 2, 0},
+{ 4, s_10_3, 0, 2, 0},
+{ 2, s_10_4, 0, 1, 0},
+{ 2, s_10_5, 0, 1, 0},
+{ 6, s_10_6, 0, 3, 0},
+{ 6, s_10_7, 0, 3, 0},
+{ 4, s_10_8, 0, 2, 0},
+{ 4, s_10_9, 0, 2, 0}
 };
 
-static const symbol s_11_0[2] = { 0xD9, 0x86 };
-
-static const struct among a_11[1] =
-{
-{ 2, s_11_0, -1, 1, 0}
+static const symbol s_11_0[2] = { 0xD9, 0x88 };
+static const symbol s_11_1[2] = { 0xD9, 0x8A };
+static const symbol s_11_2[2] = { 0xD8, 0xA7 };
+static const struct among a_11[3] = {
+{ 2, s_11_0, 0, 1, 0},
+{ 2, s_11_1, 0, 1, 0},
+{ 2, s_11_2, 0, 1, 0}
 };
 
-static const symbol s_12_0[2] = { 0xD9, 0x88 };
-static const symbol s_12_1[2] = { 0xD9, 0x8A };
-static const symbol s_12_2[2] = { 0xD8, 0xA7 };
-
-static const struct among a_12[3] =
-{
-{ 2, s_12_0, -1, 1, 0},
-{ 2, s_12_1, -1, 1, 0},
-{ 2, s_12_2, -1, 1, 0}
+static const symbol s_12_0[2] = { 0xD9, 0x83 };
+static const symbol s_12_1[4] = { 0xD9, 0x83, 0xD9, 0x85 };
+static const symbol s_12_2[4] = { 0xD9, 0x87, 0xD9, 0x85 };
+static const symbol s_12_3[4] = { 0xD9, 0x83, 0xD9, 0x86 };
+static const symbol s_12_4[4] = { 0xD9, 0x87, 0xD9, 0x86 };
+static const symbol s_12_5[2] = { 0xD9, 0x87 };
+static const symbol s_12_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88 };
+static const symbol s_12_7[4] = { 0xD9, 0x86, 0xD9, 0x8A };
+static const symbol s_12_8[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 };
+static const symbol s_12_9[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 };
+static const symbol s_12_10[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
+static const symbol s_12_11[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
+static const struct among a_12[12] = {
+{ 2, s_12_0, 0, 1, 0},
+{ 4, s_12_1, 0, 2, 0},
+{ 4, s_12_2, 0, 2, 0},
+{ 4, s_12_3, 0, 2, 0},
+{ 4, s_12_4, 0, 2, 0},
+{ 2, s_12_5, 0, 1, 0},
+{ 6, s_12_6, 0, 3, 0},
+{ 4, s_12_7, 0, 2, 0},
+{ 6, s_12_8, 0, 3, 0},
+{ 6, s_12_9, 0, 3, 0},
+{ 4, s_12_10, 0, 2, 0},
+{ 4, s_12_11, 0, 2, 0}
 };
 
-static const symbol s_13_0[4] = { 0xD8, 0xA7, 0xD8, 0xAA };
-
-static const struct among a_13[1] =
-{
-{ 4, s_13_0, -1, 1, 0}
+static const symbol s_13_0[2] = { 0xD9, 0x86 };
+static const symbol s_13_1[4] = { 0xD9, 0x88, 0xD9, 0x86 };
+static const symbol s_13_2[4] = { 0xD9, 0x8A, 0xD9, 0x86 };
+static const symbol s_13_3[4] = { 0xD8, 0xA7, 0xD9, 0x86 };
+static const symbol s_13_4[4] = { 0xD8, 0xAA, 0xD9, 0x86 };
+static const symbol s_13_5[2] = { 0xD9, 0x8A };
+static const symbol s_13_6[2] = { 0xD8, 0xA7 };
+static const symbol s_13_7[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7 };
+static const symbol s_13_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
+static const symbol s_13_9[4] = { 0xD8, 0xAA, 0xD8, 0xA7 };
+static const symbol s_13_10[2] = { 0xD8, 0xAA };
+static const struct among a_13[11] = {
+{ 2, s_13_0, 0, 1, 0},
+{ 4, s_13_1, -1, 3, 0},
+{ 4, s_13_2, -2, 3, 0},
+{ 4, s_13_3, -3, 3, 0},
+{ 4, s_13_4, -4, 2, 0},
+{ 2, s_13_5, 0, 1, 0},
+{ 2, s_13_6, 0, 1, 0},
+{ 6, s_13_7, -1, 4, 0},
+{ 4, s_13_8, -2, 2, 0},
+{ 4, s_13_9, -3, 2, 0},
+{ 2, s_13_10, 0, 1, 0}
 };
 
-static const symbol s_14_0[2] = { 0xD8, 0xAA };
-
-static const struct among a_14[1] =
-{
-{ 2, s_14_0, -1, 1, 0}
-};
-
-static const symbol s_15_0[2] = { 0xD8, 0xA9 };
-
-static const struct among a_15[1] =
-{
-{ 2, s_15_0, -1, 1, 0}
+static const symbol s_14_0[4] = { 0xD8, 0xAA, 0xD9, 0x85 };
+static const symbol s_14_1[4] = { 0xD9, 0x88, 0xD8, 0xA7 };
+static const struct among a_14[2] = {
+{ 4, s_14_0, 0, 1, 0},
+{ 4, s_14_1, 0, 1, 0}
 };
 
-static const symbol s_16_0[2] = { 0xD9, 0x8A };
-
-static const struct among a_16[1] =
-{
-{ 2, s_16_0, -1, 1, 0}
-};
-
-static const symbol s_17_0[2] = { 0xD9, 0x83 };
-static const symbol s_17_1[4] = { 0xD9, 0x83, 0xD9, 0x85 };
-static const symbol s_17_2[4] = { 0xD9, 0x87, 0xD9, 0x85 };
-static const symbol s_17_3[4] = { 0xD9, 0x83, 0xD9, 0x86 };
-static const symbol s_17_4[4] = { 0xD9, 0x87, 0xD9, 0x86 };
-static const symbol s_17_5[2] = { 0xD9, 0x87 };
-static const symbol s_17_6[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x88 };
-static const symbol s_17_7[4] = { 0xD9, 0x86, 0xD9, 0x8A };
-static const symbol s_17_8[6] = { 0xD9, 0x83, 0xD9, 0x85, 0xD8, 0xA7 };
-static const symbol s_17_9[6] = { 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xA7 };
-static const symbol s_17_10[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
-static const symbol s_17_11[4] = { 0xD9, 0x87, 0xD8, 0xA7 };
-
-static const struct among a_17[12] =
-{
-{ 2, s_17_0, -1, 1, 0},
-{ 4, s_17_1, -1, 2, 0},
-{ 4, s_17_2, -1, 2, 0},
-{ 4, s_17_3, -1, 2, 0},
-{ 4, s_17_4, -1, 2, 0},
-{ 2, s_17_5, -1, 1, 0},
-{ 6, s_17_6, -1, 3, 0},
-{ 4, s_17_7, -1, 2, 0},
-{ 6, s_17_8, -1, 3, 0},
-{ 6, s_17_9, -1, 3, 0},
-{ 4, s_17_10, -1, 2, 0},
-{ 4, s_17_11, -1, 2, 0}
-};
-
-static const symbol s_18_0[2] = { 0xD9, 0x86 };
-static const symbol s_18_1[4] = { 0xD9, 0x88, 0xD9, 0x86 };
-static const symbol s_18_2[4] = { 0xD9, 0x8A, 0xD9, 0x86 };
-static const symbol s_18_3[4] = { 0xD8, 0xA7, 0xD9, 0x86 };
-static const symbol s_18_4[4] = { 0xD8, 0xAA, 0xD9, 0x86 };
-static const symbol s_18_5[2] = { 0xD9, 0x8A };
-static const symbol s_18_6[2] = { 0xD8, 0xA7 };
-static const symbol s_18_7[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xA7 };
-static const symbol s_18_8[4] = { 0xD9, 0x86, 0xD8, 0xA7 };
-static const symbol s_18_9[4] = { 0xD8, 0xAA, 0xD8, 0xA7 };
-static const symbol s_18_10[2] = { 0xD8, 0xAA };
-
-static const struct among a_18[11] =
-{
-{ 2, s_18_0, -1, 1, 0},
-{ 4, s_18_1, 0, 3, 0},
-{ 4, s_18_2, 0, 3, 0},
-{ 4, s_18_3, 0, 3, 0},
-{ 4, s_18_4, 0, 2, 0},
-{ 2, s_18_5, -1, 1, 0},
-{ 2, s_18_6, -1, 1, 0},
-{ 6, s_18_7, 6, 4, 0},
-{ 4, s_18_8, 6, 2, 0},
-{ 4, s_18_9, 6, 2, 0},
-{ 2, s_18_10, -1, 1, 0}
-};
-
-static const symbol s_19_0[4] = { 0xD8, 0xAA, 0xD9, 0x85 };
-static const symbol s_19_1[4] = { 0xD9, 0x88, 0xD8, 0xA7 };
-
-static const struct among a_19[2] =
-{
-{ 4, s_19_0, -1, 1, 0},
-{ 4, s_19_1, -1, 1, 0}
-};
-
-static const symbol s_20_0[2] = { 0xD9, 0x88 };
-static const symbol s_20_1[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88 };
-
-static const struct among a_20[2] =
-{
-{ 2, s_20_0, -1, 1, 0},
-{ 6, s_20_1, 0, 2, 0}
+static const symbol s_15_0[2] = { 0xD9, 0x88 };
+static const symbol s_15_1[6] = { 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x88 };
+static const struct among a_15[2] = {
+{ 2, s_15_0, 0, 1, 0},
+{ 6, s_15_1, -1, 2, 0}
 };
 
-static const symbol s_21_0[2] = { 0xD9, 0x89 };
-
-static const struct among a_21[1] =
-{
-{ 2, s_21_0, -1, 1, 0}
-};
-
-static const symbol s_0[] = { '0' };
-static const symbol s_1[] = { '1' };
-static const symbol s_2[] = { '2' };
-static const symbol s_3[] = { '3' };
-static const symbol s_4[] = { '4' };
-static const symbol s_5[] = { '5' };
-static const symbol s_6[] = { '6' };
-static const symbol s_7[] = { '7' };
-static const symbol s_8[] = { '8' };
-static const symbol s_9[] = { '9' };
-static const symbol s_10[] = { 0xD8, 0xA1 };
-static const symbol s_11[] = { 0xD8, 0xA3 };
-static const symbol s_12[] = { 0xD8, 0xA5 };
-static const symbol s_13[] = { 0xD8, 0xA6 };
-static const symbol s_14[] = { 0xD8, 0xA2 };
-static const symbol s_15[] = { 0xD8, 0xA4 };
-static const symbol s_16[] = { 0xD8, 0xA7 };
-static const symbol s_17[] = { 0xD8, 0xA8 };
-static const symbol s_18[] = { 0xD8, 0xA9 };
-static const symbol s_19[] = { 0xD8, 0xAA };
-static const symbol s_20[] = { 0xD8, 0xAB };
-static const symbol s_21[] = { 0xD8, 0xAC };
-static const symbol s_22[] = { 0xD8, 0xAD };
-static const symbol s_23[] = { 0xD8, 0xAE };
-static const symbol s_24[] = { 0xD8, 0xAF };
-static const symbol s_25[] = { 0xD8, 0xB0 };
-static const symbol s_26[] = { 0xD8, 0xB1 };
-static const symbol s_27[] = { 0xD8, 0xB2 };
-static const symbol s_28[] = { 0xD8, 0xB3 };
-static const symbol s_29[] = { 0xD8, 0xB4 };
-static const symbol s_30[] = { 0xD8, 0xB5 };
-static const symbol s_31[] = { 0xD8, 0xB6 };
-static const symbol s_32[] = { 0xD8, 0xB7 };
-static const symbol s_33[] = { 0xD8, 0xB8 };
-static const symbol s_34[] = { 0xD8, 0xB9 };
-static const symbol s_35[] = { 0xD8, 0xBA };
-static const symbol s_36[] = { 0xD9, 0x81 };
-static const symbol s_37[] = { 0xD9, 0x82 };
-static const symbol s_38[] = { 0xD9, 0x83 };
-static const symbol s_39[] = { 0xD9, 0x84 };
-static const symbol s_40[] = { 0xD9, 0x85 };
-static const symbol s_41[] = { 0xD9, 0x86 };
-static const symbol s_42[] = { 0xD9, 0x87 };
-static const symbol s_43[] = { 0xD9, 0x88 };
-static const symbol s_44[] = { 0xD9, 0x89 };
-static const symbol s_45[] = { 0xD9, 0x8A };
-static const symbol s_46[] = { 0xD9, 0x84, 0xD8, 0xA7 };
-static const symbol s_47[] = { 0xD9, 0x84, 0xD8, 0xA3 };
-static const symbol s_48[] = { 0xD9, 0x84, 0xD8, 0xA5 };
-static const symbol s_49[] = { 0xD9, 0x84, 0xD8, 0xA2 };
-static const symbol s_50[] = { 0xD8, 0xA1 };
-static const symbol s_51[] = { 0xD8, 0xA7 };
-static const symbol s_52[] = { 0xD9, 0x88 };
-static const symbol s_53[] = { 0xD9, 0x8A };
-static const symbol s_54[] = { 0xD8, 0xA3 };
-static const symbol s_55[] = { 0xD8, 0xA2 };
-static const symbol s_56[] = { 0xD8, 0xA7 };
-static const symbol s_57[] = { 0xD8, 0xA5 };
-static const symbol s_58[] = { 0xD8, 0xA7 };
-static const symbol s_59[] = { 0xD8, 0xA8 };
-static const symbol s_60[] = { 0xD9, 0x83 };
-static const symbol s_61[] = { 0xD9, 0x8A };
-static const symbol s_62[] = { 0xD8, 0xAA };
-static const symbol s_63[] = { 0xD9, 0x86 };
-static const symbol s_64[] = { 0xD8, 0xA3 };
-static const symbol s_65[] = { 0xD8, 0xA7, 0xD8, 0xB3, 0xD8, 0xAA };
-static const symbol s_66[] = { 0xD9, 0x8A };
-
 static int r_Normalize_pre(struct SN_env * z) {
     int among_var;
-    {   int c1 = z->c;
-        while(1) {
-            int c2 = z->c;
-            {   int c3 = z->c;
+    {
+        int v_1 = z->c;
+        while (1) {
+            int v_2 = z->c;
+            do {
+                int v_3 = z->c;
                 z->bra = z->c;
-                among_var = find_among(z, a_0, 144);
-                if (!among_var) goto lab3;
+                among_var = find_among(z, a_0, 144, 0);
+                if (!among_var) goto lab2;
                 z->ket = z->c;
                 switch (among_var) {
                     case 1:
-                        {   int ret = slice_del(z);
+                        {
+                            int ret = slice_del(z);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 2:
-                        {   int ret = slice_from_s(z, 1, s_0);
+                        {
+                            int ret = slice_from_s(z, 1, s_0);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 3:
-                        {   int ret = slice_from_s(z, 1, s_1);
+                        {
+                            int ret = slice_from_s(z, 1, s_1);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 4:
-                        {   int ret = slice_from_s(z, 1, s_2);
+                        {
+                            int ret = slice_from_s(z, 1, s_2);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 5:
-                        {   int ret = slice_from_s(z, 1, s_3);
+                        {
+                            int ret = slice_from_s(z, 1, s_3);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 6:
-                        {   int ret = slice_from_s(z, 1, s_4);
+                        {
+                            int ret = slice_from_s(z, 1, s_4);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 7:
-                        {   int ret = slice_from_s(z, 1, s_5);
+                        {
+                            int ret = slice_from_s(z, 1, s_5);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 8:
-                        {   int ret = slice_from_s(z, 1, s_6);
+                        {
+                            int ret = slice_from_s(z, 1, s_6);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 9:
-                        {   int ret = slice_from_s(z, 1, s_7);
+                        {
+                            int ret = slice_from_s(z, 1, s_7);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 10:
-                        {   int ret = slice_from_s(z, 1, s_8);
+                        {
+                            int ret = slice_from_s(z, 1, s_8);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 11:
-                        {   int ret = slice_from_s(z, 1, s_9);
+                        {
+                            int ret = slice_from_s(z, 1, s_9);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 12:
-                        {   int ret = slice_from_s(z, 2, s_10);
+                        {
+                            int ret = slice_from_s(z, 2, s_10);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 13:
-                        {   int ret = slice_from_s(z, 2, s_11);
+                        {
+                            int ret = slice_from_s(z, 2, s_11);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 14:
-                        {   int ret = slice_from_s(z, 2, s_12);
+                        {
+                            int ret = slice_from_s(z, 2, s_12);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 15:
-                        {   int ret = slice_from_s(z, 2, s_13);
+                        {
+                            int ret = slice_from_s(z, 2, s_13);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 16:
-                        {   int ret = slice_from_s(z, 2, s_14);
+                        {
+                            int ret = slice_from_s(z, 2, s_14);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 17:
-                        {   int ret = slice_from_s(z, 2, s_15);
+                        {
+                            int ret = slice_from_s(z, 2, s_15);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 18:
-                        {   int ret = slice_from_s(z, 2, s_16);
+                        {
+                            int ret = slice_from_s(z, 2, s_16);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 19:
-                        {   int ret = slice_from_s(z, 2, s_17);
+                        {
+                            int ret = slice_from_s(z, 2, s_17);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 20:
-                        {   int ret = slice_from_s(z, 2, s_18);
+                        {
+                            int ret = slice_from_s(z, 2, s_18);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 21:
-                        {   int ret = slice_from_s(z, 2, s_19);
+                        {
+                            int ret = slice_from_s(z, 2, s_19);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 22:
-                        {   int ret = slice_from_s(z, 2, s_20);
+                        {
+                            int ret = slice_from_s(z, 2, s_20);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 23:
-                        {   int ret = slice_from_s(z, 2, s_21);
+                        {
+                            int ret = slice_from_s(z, 2, s_21);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 24:
-                        {   int ret = slice_from_s(z, 2, s_22);
+                        {
+                            int ret = slice_from_s(z, 2, s_22);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 25:
-                        {   int ret = slice_from_s(z, 2, s_23);
+                        {
+                            int ret = slice_from_s(z, 2, s_23);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 26:
-                        {   int ret = slice_from_s(z, 2, s_24);
+                        {
+                            int ret = slice_from_s(z, 2, s_24);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 27:
-                        {   int ret = slice_from_s(z, 2, s_25);
+                        {
+                            int ret = slice_from_s(z, 2, s_25);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 28:
-                        {   int ret = slice_from_s(z, 2, s_26);
+                        {
+                            int ret = slice_from_s(z, 2, s_26);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 29:
-                        {   int ret = slice_from_s(z, 2, s_27);
+                        {
+                            int ret = slice_from_s(z, 2, s_27);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 30:
-                        {   int ret = slice_from_s(z, 2, s_28);
+                        {
+                            int ret = slice_from_s(z, 2, s_28);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 31:
-                        {   int ret = slice_from_s(z, 2, s_29);
+                        {
+                            int ret = slice_from_s(z, 2, s_29);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 32:
-                        {   int ret = slice_from_s(z, 2, s_30);
+                        {
+                            int ret = slice_from_s(z, 2, s_30);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 33:
-                        {   int ret = slice_from_s(z, 2, s_31);
+                        {
+                            int ret = slice_from_s(z, 2, s_31);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 34:
-                        {   int ret = slice_from_s(z, 2, s_32);
+                        {
+                            int ret = slice_from_s(z, 2, s_32);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 35:
-                        {   int ret = slice_from_s(z, 2, s_33);
+                        {
+                            int ret = slice_from_s(z, 2, s_33);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 36:
-                        {   int ret = slice_from_s(z, 2, s_34);
+                        {
+                            int ret = slice_from_s(z, 2, s_34);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 37:
-                        {   int ret = slice_from_s(z, 2, s_35);
+                        {
+                            int ret = slice_from_s(z, 2, s_35);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 38:
-                        {   int ret = slice_from_s(z, 2, s_36);
+                        {
+                            int ret = slice_from_s(z, 2, s_36);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 39:
-                        {   int ret = slice_from_s(z, 2, s_37);
+                        {
+                            int ret = slice_from_s(z, 2, s_37);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 40:
-                        {   int ret = slice_from_s(z, 2, s_38);
+                        {
+                            int ret = slice_from_s(z, 2, s_38);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 41:
-                        {   int ret = slice_from_s(z, 2, s_39);
+                        {
+                            int ret = slice_from_s(z, 2, s_39);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 42:
-                        {   int ret = slice_from_s(z, 2, s_40);
+                        {
+                            int ret = slice_from_s(z, 2, s_40);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 43:
-                        {   int ret = slice_from_s(z, 2, s_41);
+                        {
+                            int ret = slice_from_s(z, 2, s_41);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 44:
-                        {   int ret = slice_from_s(z, 2, s_42);
+                        {
+                            int ret = slice_from_s(z, 2, s_42);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 45:
-                        {   int ret = slice_from_s(z, 2, s_43);
+                        {
+                            int ret = slice_from_s(z, 2, s_43);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 46:
-                        {   int ret = slice_from_s(z, 2, s_44);
+                        {
+                            int ret = slice_from_s(z, 2, s_44);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 47:
-                        {   int ret = slice_from_s(z, 2, s_45);
+                        {
+                            int ret = slice_from_s(z, 2, s_45);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 48:
-                        {   int ret = slice_from_s(z, 4, s_46);
+                        {
+                            int ret = slice_from_s(z, 4, s_46);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 49:
-                        {   int ret = slice_from_s(z, 4, s_47);
+                        {
+                            int ret = slice_from_s(z, 4, s_47);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 50:
-                        {   int ret = slice_from_s(z, 4, s_48);
+                        {
+                            int ret = slice_from_s(z, 4, s_48);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 51:
-                        {   int ret = slice_from_s(z, 4, s_49);
+                        {
+                            int ret = slice_from_s(z, 4, s_49);
                             if (ret < 0) return ret;
                         }
                         break;
                 }
-                goto lab2;
-            lab3:
-                z->c = c3;
-                {   int ret = skip_utf8(z->p, z->c, z->l, 1);
+                break;
+            lab2:
+                z->c = v_3;
+                {
+                    int ret = skip_utf8(z->p, z->c, z->l, 1);
                     if (ret < 0) goto lab1;
                     z->c = ret;
                 }
-            }
-        lab2:
+            } while (0);
             continue;
         lab1:
-            z->c = c2;
+            z->c = v_2;
             break;
         }
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
 
 static int r_Normalize_post(struct SN_env * z) {
     int among_var;
-    {   int c1 = z->c;
+    {
+        int v_1 = z->c;
         z->lb = z->c; z->c = z->l;
-
         z->ket = z->c;
         if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 5 || !((124 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
-        if (!find_among_b(z, a_1, 5)) goto lab0;
+        if (!find_among_b(z, a_1, 5, 0)) goto lab0;
         z->bra = z->c;
-        {   int ret = slice_from_s(z, 2, s_50);
+        {
+            int ret = slice_from_s(z, 2, s_50);
             if (ret < 0) return ret;
         }
         z->c = z->lb;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c2 = z->c;
-        while(1) {
-            int c3 = z->c;
-            {   int c4 = z->c;
+    {
+        int v_2 = z->c;
+        while (1) {
+            int v_3 = z->c;
+            do {
+                int v_4 = z->c;
                 z->bra = z->c;
-                if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((124 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab4;
-                among_var = find_among(z, a_2, 5);
-                if (!among_var) goto lab4;
+                if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((124 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3;
+                among_var = find_among(z, a_2, 5, 0);
+                if (!among_var) goto lab3;
                 z->ket = z->c;
                 switch (among_var) {
                     case 1:
-                        {   int ret = slice_from_s(z, 2, s_51);
+                        {
+                            int ret = slice_from_s(z, 2, s_51);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 2:
-                        {   int ret = slice_from_s(z, 2, s_52);
+                        {
+                            int ret = slice_from_s(z, 2, s_52);
                             if (ret < 0) return ret;
                         }
                         break;
                     case 3:
-                        {   int ret = slice_from_s(z, 2, s_53);
+                        {
+                            int ret = slice_from_s(z, 2, s_53);
                             if (ret < 0) return ret;
                         }
                         break;
                 }
-                goto lab3;
-            lab4:
-                z->c = c4;
-                {   int ret = skip_utf8(z->p, z->c, z->l, 1);
+                break;
+            lab3:
+                z->c = v_4;
+                {
+                    int ret = skip_utf8(z->p, z->c, z->l, 1);
                     if (ret < 0) goto lab2;
                     z->c = ret;
                 }
-            }
-        lab3:
+            } while (0);
             continue;
         lab2:
-            z->c = c3;
+            z->c = v_3;
             break;
         }
-        z->c = c2;
+        z->c = v_2;
     }
     return 1;
 }
@@ -1023,21 +1017,21 @@ static int r_Checks1(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0;
-    among_var = find_among(z, a_3, 4);
+    among_var = find_among(z, a_3, 4, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) <= 4) return 0;
-            z->I[2] = 1;
-            z->I[1] = 0;
-            z->I[0] = 1;
+            ((SN_local *)z)->b_is_noun = 1;
+            ((SN_local *)z)->b_is_verb = 0;
+            ((SN_local *)z)->b_is_defined = 1;
             break;
         case 2:
             if (len_utf8(z->p) <= 3) return 0;
-            z->I[2] = 1;
-            z->I[1] = 0;
-            z->I[0] = 1;
+            ((SN_local *)z)->b_is_noun = 1;
+            ((SN_local *)z)->b_is_verb = 0;
+            ((SN_local *)z)->b_is_defined = 1;
             break;
     }
     return 1;
@@ -1047,31 +1041,35 @@ static int r_Prefix_Step1(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 3 >= z->l || z->p[z->c + 3] >> 5 != 5 || !((188 >> (z->p[z->c + 3] & 0x1f)) & 1)) return 0;
-    among_var = find_among(z, a_4, 5);
+    among_var = find_among(z, a_4, 5, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_54);
+            {
+                int ret = slice_from_s(z, 2, s_54);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_55);
+            {
+                int ret = slice_from_s(z, 2, s_55);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_56);
+            {
+                int ret = slice_from_s(z, 2, s_56);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_57);
+            {
+                int ret = slice_from_s(z, 2, s_57);
                 if (ret < 0) return ret;
             }
             break;
@@ -1082,16 +1080,18 @@ static int r_Prefix_Step1(struct SN_env * z) {
 static int r_Prefix_Step2(struct SN_env * z) {
     z->bra = z->c;
     if (z->c + 1 >= z->l || (z->p[z->c + 1] != 129 && z->p[z->c + 1] != 136)) return 0;
-    if (!find_among(z, a_5, 2)) return 0;
+    if (!find_among(z, a_5, 2, 0)) return 0;
     z->ket = z->c;
     if (len_utf8(z->p) <= 3) return 0;
-    {   int c1 = z->c;
+    {
+        int v_1 = z->c;
         if (!(eq_s(z, 2, s_58))) goto lab0;
         return 0;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1101,19 +1101,21 @@ static int r_Prefix_Step3a_Noun(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 3 >= z->l || (z->p[z->c + 3] != 132 && z->p[z->c + 3] != 167)) return 0;
-    among_var = find_among(z, a_6, 4);
+    among_var = find_among(z, a_6, 4, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) <= 5) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) <= 4) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1125,25 +1127,28 @@ static int r_Prefix_Step3b_Noun(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
     if (z->c + 1 >= z->l || (z->p[z->c + 1] != 168 && z->p[z->c + 1] != 131)) return 0;
-    among_var = find_among(z, a_7, 4);
+    among_var = find_among(z, a_7, 4, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_59);
+            {
+                int ret = slice_from_s(z, 2, s_59);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) <= 3) return 0;
-            {   int ret = slice_from_s(z, 2, s_60);
+            {
+                int ret = slice_from_s(z, 2, s_60);
                 if (ret < 0) return ret;
             }
             break;
@@ -1154,31 +1159,35 @@ static int r_Prefix_Step3b_Noun(struct SN_env * z) {
 static int r_Prefix_Step3_Verb(struct SN_env * z) {
     int among_var;
     z->bra = z->c;
-    among_var = find_among(z, a_8, 4);
+    among_var = find_among(z, a_8, 4, 0);
     if (!among_var) return 0;
     z->ket = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) <= 4) return 0;
-            {   int ret = slice_from_s(z, 2, s_61);
+            {
+                int ret = slice_from_s(z, 2, s_61);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) <= 4) return 0;
-            {   int ret = slice_from_s(z, 2, s_62);
+            {
+                int ret = slice_from_s(z, 2, s_62);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) <= 4) return 0;
-            {   int ret = slice_from_s(z, 2, s_63);
+            {
+                int ret = slice_from_s(z, 2, s_63);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
             if (len_utf8(z->p) <= 4) return 0;
-            {   int ret = slice_from_s(z, 2, s_64);
+            {
+                int ret = slice_from_s(z, 2, s_64);
                 if (ret < 0) return ret;
             }
             break;
@@ -1189,12 +1198,13 @@ static int r_Prefix_Step3_Verb(struct SN_env * z) {
 static int r_Prefix_Step4_Verb(struct SN_env * z) {
     z->bra = z->c;
     if (z->c + 5 >= z->l || z->p[z->c + 5] != 170) return 0;
-    if (!find_among(z, a_9, 3)) return 0;
+    if (!find_among(z, a_9, 3, 0)) return 0;
     z->ket = z->c;
     if (len_utf8(z->p) <= 4) return 0;
-    z->I[1] = 1;
-    z->I[2] = 0;
-    {   int ret = slice_from_s(z, 6, s_65);
+    ((SN_local *)z)->b_is_verb = 1;
+    ((SN_local *)z)->b_is_noun = 0;
+    {
+        int ret = slice_from_s(z, 6, s_65);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1203,25 +1213,28 @@ static int r_Prefix_Step4_Verb(struct SN_env * z) {
 static int r_Suffix_Noun_Step1a(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_10, 10);
+    among_var = find_among_b(z, a_10, 10, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) < 4) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) < 5) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) < 6) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1231,11 +1244,11 @@ static int r_Suffix_Noun_Step1a(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step1b(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 134) return 0;
-    if (!find_among_b(z, a_11, 1)) return 0;
+    if (!(eq_s_b(z, 2, s_66))) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) <= 5) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1243,10 +1256,11 @@ static int r_Suffix_Noun_Step1b(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step2a(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_12, 3)) return 0;
+    if (!find_among_b(z, a_11, 3, 0)) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) <= 4) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1254,11 +1268,11 @@ static int r_Suffix_Noun_Step2a(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step2b(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 3 <= z->lb || z->p[z->c - 1] != 170) return 0;
-    if (!find_among_b(z, a_13, 1)) return 0;
+    if (!(eq_s_b(z, 4, s_67))) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) < 5) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1266,11 +1280,11 @@ static int r_Suffix_Noun_Step2b(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step2c1(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 170) return 0;
-    if (!find_among_b(z, a_14, 1)) return 0;
+    if (!(eq_s_b(z, 2, s_68))) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) < 4) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1278,11 +1292,11 @@ static int r_Suffix_Noun_Step2c1(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step2c2(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 169) return 0;
-    if (!find_among_b(z, a_15, 1)) return 0;
+    if (!(eq_s_b(z, 2, s_69))) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) < 4) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1290,11 +1304,11 @@ static int r_Suffix_Noun_Step2c2(struct SN_env * z) {
 
 static int r_Suffix_Noun_Step3(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 138) return 0;
-    if (!find_among_b(z, a_16, 1)) return 0;
+    if (!(eq_s_b(z, 2, s_70))) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) < 3) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1303,25 +1317,28 @@ static int r_Suffix_Noun_Step3(struct SN_env * z) {
 static int r_Suffix_Verb_Step1(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_17, 12);
+    among_var = find_among_b(z, a_12, 12, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) < 4) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) < 5) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) < 6) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1332,31 +1349,35 @@ static int r_Suffix_Verb_Step1(struct SN_env * z) {
 static int r_Suffix_Verb_Step2a(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
-    among_var = find_among_b(z, a_18, 11);
+    among_var = find_among_b(z, a_13, 11, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) < 4) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) < 5) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
             if (len_utf8(z->p) <= 5) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
             if (len_utf8(z->p) < 6) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1367,10 +1388,11 @@ static int r_Suffix_Verb_Step2a(struct SN_env * z) {
 static int r_Suffix_Verb_Step2b(struct SN_env * z) {
     z->ket = z->c;
     if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 133 && z->p[z->c - 1] != 167)) return 0;
-    if (!find_among_b(z, a_19, 2)) return 0;
+    if (!find_among_b(z, a_14, 2, 0)) return 0;
     z->bra = z->c;
     if (len_utf8(z->p) < 5) return 0;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -1380,19 +1402,21 @@ static int r_Suffix_Verb_Step2c(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] != 136) return 0;
-    among_var = find_among_b(z, a_20, 2);
+    among_var = find_among_b(z, a_15, 2, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
             if (len_utf8(z->p) < 4) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
             if (len_utf8(z->p) < 6) return 0;
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1402,263 +1426,301 @@ static int r_Suffix_Verb_Step2c(struct SN_env * z) {
 
 static int r_Suffix_All_alef_maqsura(struct SN_env * z) {
     z->ket = z->c;
-    if (z->c - 1 <= z->lb || z->p[z->c - 1] != 137) return 0;
-    if (!find_among_b(z, a_21, 1)) return 0;
+    if (!(eq_s_b(z, 2, s_71))) return 0;
     z->bra = z->c;
-    {   int ret = slice_from_s(z, 2, s_66);
+    {
+        int ret = slice_from_s(z, 2, s_72);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int arabic_UTF_8_stem(struct SN_env * z) {
-    z->I[2] = 1;
-    z->I[1] = 1;
-    z->I[0] = 0;
-    {   int c1 = z->c;
-        {   int ret = r_Checks1(z);
+    ((SN_local *)z)->b_is_noun = 1;
+    ((SN_local *)z)->b_is_verb = 1;
+    ((SN_local *)z)->b_is_defined = 0;
+    {
+        int v_1 = z->c;
+        {
+            int ret = r_Checks1(z);
             if (ret < 0) return ret;
         }
-        z->c = c1;
+        z->c = v_1;
     }
-
-    {   int ret = r_Normalize_pre(z);
+    {
+        int ret = r_Normalize_pre(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    {   int m2 = z->l - z->c; (void)m2;
-        {   int m3 = z->l - z->c; (void)m3;
-            if (!(z->I[1])) goto lab2;
-            {   int m4 = z->l - z->c; (void)m4;
-                {   int i = 1;
-                    while(1) {
-                        int m5 = z->l - z->c; (void)m5;
-                        {   int ret = r_Suffix_Verb_Step1(z);
-                            if (ret == 0) goto lab5;
+    {
+        int v_2 = z->l - z->c;
+        do {
+            int v_3 = z->l - z->c;
+            if (!((SN_local *)z)->b_is_verb) goto lab1;
+            do {
+                int v_4 = z->l - z->c;
+                {
+                    int v_5 = 1;
+                    while (1) {
+                        int v_6 = z->l - z->c;
+                        {
+                            int ret = r_Suffix_Verb_Step1(z);
+                            if (ret == 0) goto lab3;
                             if (ret < 0) return ret;
                         }
-                        i--;
+                        v_5--;
                         continue;
-                    lab5:
-                        z->c = z->l - m5;
+                    lab3:
+                        z->c = z->l - v_6;
                         break;
                     }
-                    if (i > 0) goto lab4;
+                    if (v_5 > 0) goto lab2;
                 }
-                {   int m6 = z->l - z->c; (void)m6;
-                    {   int ret = r_Suffix_Verb_Step2a(z);
-                        if (ret == 0) goto lab7;
+                do {
+                    int v_7 = z->l - z->c;
+                    {
+                        int ret = r_Suffix_Verb_Step2a(z);
+                        if (ret == 0) goto lab4;
                         if (ret < 0) return ret;
                     }
-                    goto lab6;
-                lab7:
-                    z->c = z->l - m6;
-                    {   int ret = r_Suffix_Verb_Step2c(z);
-                        if (ret == 0) goto lab8;
+                    break;
+                lab4:
+                    z->c = z->l - v_7;
+                    {
+                        int ret = r_Suffix_Verb_Step2c(z);
+                        if (ret == 0) goto lab5;
                         if (ret < 0) return ret;
                     }
-                    goto lab6;
-                lab8:
-                    z->c = z->l - m6;
-                    {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
-                        if (ret < 0) goto lab4;
+                    break;
+                lab5:
+                    z->c = z->l - v_7;
+                    {
+                        int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
+                        if (ret < 0) goto lab2;
                         z->c = ret;
                     }
-                }
-            lab6:
-                goto lab3;
-            lab4:
-                z->c = z->l - m4;
-                {   int ret = r_Suffix_Verb_Step2b(z);
-                    if (ret == 0) goto lab9;
+                } while (0);
+                break;
+            lab2:
+                z->c = z->l - v_4;
+                {
+                    int ret = r_Suffix_Verb_Step2b(z);
+                    if (ret == 0) goto lab6;
                     if (ret < 0) return ret;
                 }
-                goto lab3;
-            lab9:
-                z->c = z->l - m4;
-                {   int ret = r_Suffix_Verb_Step2a(z);
-                    if (ret == 0) goto lab2;
+                break;
+            lab6:
+                z->c = z->l - v_4;
+                {
+                    int ret = r_Suffix_Verb_Step2a(z);
+                    if (ret == 0) goto lab1;
                     if (ret < 0) return ret;
                 }
-            }
-        lab3:
-            goto lab1;
-        lab2:
-            z->c = z->l - m3;
-            if (!(z->I[2])) goto lab10;
-            {   int m7 = z->l - z->c; (void)m7;
-                {   int m8 = z->l - z->c; (void)m8;
-                    {   int ret = r_Suffix_Noun_Step2c2(z);
-                        if (ret == 0) goto lab13;
+            } while (0);
+            break;
+        lab1:
+            z->c = z->l - v_3;
+            if (!((SN_local *)z)->b_is_noun) goto lab7;
+            {
+                int v_8 = z->l - z->c;
+                do {
+                    int v_9 = z->l - z->c;
+                    {
+                        int ret = r_Suffix_Noun_Step2c2(z);
+                        if (ret == 0) goto lab9;
                         if (ret < 0) return ret;
                     }
-                    goto lab12;
-                lab13:
-                    z->c = z->l - m8;
-
-                    if (!(z->I[0])) goto lab15;
-                    goto lab14;
-                lab15:
-                    {   int ret = r_Suffix_Noun_Step1a(z);
-                        if (ret == 0) goto lab14;
+                    break;
+                lab9:
+                    z->c = z->l - v_9;
+                    if (((SN_local *)z)->b_is_defined) goto lab10;
+                    {
+                        int ret = r_Suffix_Noun_Step1a(z);
+                        if (ret == 0) goto lab10;
                         if (ret < 0) return ret;
                     }
-                    {   int m9 = z->l - z->c; (void)m9;
-                        {   int ret = r_Suffix_Noun_Step2a(z);
-                            if (ret == 0) goto lab17;
+                    do {
+                        int v_10 = z->l - z->c;
+                        {
+                            int ret = r_Suffix_Noun_Step2a(z);
+                            if (ret == 0) goto lab11;
                             if (ret < 0) return ret;
                         }
-                        goto lab16;
-                    lab17:
-                        z->c = z->l - m9;
-                        {   int ret = r_Suffix_Noun_Step2b(z);
-                            if (ret == 0) goto lab18;
+                        break;
+                    lab11:
+                        z->c = z->l - v_10;
+                        {
+                            int ret = r_Suffix_Noun_Step2b(z);
+                            if (ret == 0) goto lab12;
                             if (ret < 0) return ret;
                         }
-                        goto lab16;
-                    lab18:
-                        z->c = z->l - m9;
-                        {   int ret = r_Suffix_Noun_Step2c1(z);
-                            if (ret == 0) goto lab19;
+                        break;
+                    lab12:
+                        z->c = z->l - v_10;
+                        {
+                            int ret = r_Suffix_Noun_Step2c1(z);
+                            if (ret == 0) goto lab13;
                             if (ret < 0) return ret;
                         }
-                        goto lab16;
-                    lab19:
-                        z->c = z->l - m9;
-                        {   int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
-                            if (ret < 0) goto lab14;
+                        break;
+                    lab13:
+                        z->c = z->l - v_10;
+                        {
+                            int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
+                            if (ret < 0) goto lab10;
                             z->c = ret;
                         }
-                    }
-                lab16:
-                    goto lab12;
-                lab14:
-                    z->c = z->l - m8;
-                    {   int ret = r_Suffix_Noun_Step1b(z);
-                        if (ret == 0) goto lab20;
+                    } while (0);
+                    break;
+                lab10:
+                    z->c = z->l - v_9;
+                    {
+                        int ret = r_Suffix_Noun_Step1b(z);
+                        if (ret == 0) goto lab14;
                         if (ret < 0) return ret;
                     }
-                    {   int m10 = z->l - z->c; (void)m10;
-                        {   int ret = r_Suffix_Noun_Step2a(z);
-                            if (ret == 0) goto lab22;
+                    do {
+                        int v_11 = z->l - z->c;
+                        {
+                            int ret = r_Suffix_Noun_Step2a(z);
+                            if (ret == 0) goto lab15;
                             if (ret < 0) return ret;
                         }
-                        goto lab21;
-                    lab22:
-                        z->c = z->l - m10;
-                        {   int ret = r_Suffix_Noun_Step2b(z);
-                            if (ret == 0) goto lab23;
+                        break;
+                    lab15:
+                        z->c = z->l - v_11;
+                        {
+                            int ret = r_Suffix_Noun_Step2b(z);
+                            if (ret == 0) goto lab16;
                             if (ret < 0) return ret;
                         }
-                        goto lab21;
-                    lab23:
-                        z->c = z->l - m10;
-                        {   int ret = r_Suffix_Noun_Step2c1(z);
-                            if (ret == 0) goto lab20;
+                        break;
+                    lab16:
+                        z->c = z->l - v_11;
+                        {
+                            int ret = r_Suffix_Noun_Step2c1(z);
+                            if (ret == 0) goto lab14;
                             if (ret < 0) return ret;
                         }
-                    }
-                lab21:
-                    goto lab12;
-                lab20:
-                    z->c = z->l - m8;
-
-                    if (!(z->I[0])) goto lab25;
-                    goto lab24;
-                lab25:
-                    {   int ret = r_Suffix_Noun_Step2a(z);
-                        if (ret == 0) goto lab24;
+                    } while (0);
+                    break;
+                lab14:
+                    z->c = z->l - v_9;
+                    if (((SN_local *)z)->b_is_defined) goto lab17;
+                    {
+                        int ret = r_Suffix_Noun_Step2a(z);
+                        if (ret == 0) goto lab17;
                         if (ret < 0) return ret;
                     }
-                    goto lab12;
-                lab24:
-                    z->c = z->l - m8;
-                    {   int ret = r_Suffix_Noun_Step2b(z);
-                        if (ret == 0) { z->c = z->l - m7; goto lab11; }
+                    break;
+                lab17:
+                    z->c = z->l - v_9;
+                    {
+                        int ret = r_Suffix_Noun_Step2b(z);
+                        if (ret == 0) { z->c = z->l - v_8; goto lab8; }
                         if (ret < 0) return ret;
                     }
-                }
-            lab12:
-            lab11:
+                } while (0);
+            lab8:
                 ;
             }
-            {   int ret = r_Suffix_Noun_Step3(z);
-                if (ret == 0) goto lab10;
+            {
+                int ret = r_Suffix_Noun_Step3(z);
+                if (ret == 0) goto lab7;
                 if (ret < 0) return ret;
             }
-            goto lab1;
-        lab10:
-            z->c = z->l - m3;
-            {   int ret = r_Suffix_All_alef_maqsura(z);
+            break;
+        lab7:
+            z->c = z->l - v_3;
+            {
+                int ret = r_Suffix_All_alef_maqsura(z);
                 if (ret == 0) goto lab0;
                 if (ret < 0) return ret;
             }
-        }
-    lab1:
+        } while (0);
     lab0:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
     }
     z->c = z->lb;
-    {   int c11 = z->c;
-        {   int c12 = z->c;
-            {   int ret = r_Prefix_Step1(z);
-                if (ret == 0) { z->c = c12; goto lab27; }
+    {
+        int v_12 = z->c;
+        {
+            int v_13 = z->c;
+            {
+                int ret = r_Prefix_Step1(z);
+                if (ret == 0) { z->c = v_13; goto lab19; }
                 if (ret < 0) return ret;
             }
-        lab27:
+        lab19:
             ;
         }
-        {   int c13 = z->c;
-            {   int ret = r_Prefix_Step2(z);
-                if (ret == 0) { z->c = c13; goto lab28; }
+        {
+            int v_14 = z->c;
+            {
+                int ret = r_Prefix_Step2(z);
+                if (ret == 0) { z->c = v_14; goto lab20; }
                 if (ret < 0) return ret;
             }
-        lab28:
+        lab20:
             ;
         }
-        {   int c14 = z->c;
-            {   int ret = r_Prefix_Step3a_Noun(z);
-                if (ret == 0) goto lab30;
+        do {
+            int v_15 = z->c;
+            {
+                int ret = r_Prefix_Step3a_Noun(z);
+                if (ret == 0) goto lab21;
                 if (ret < 0) return ret;
             }
-            goto lab29;
-        lab30:
-            z->c = c14;
-            if (!(z->I[2])) goto lab31;
-            {   int ret = r_Prefix_Step3b_Noun(z);
-                if (ret == 0) goto lab31;
+            break;
+        lab21:
+            z->c = v_15;
+            if (!((SN_local *)z)->b_is_noun) goto lab22;
+            {
+                int ret = r_Prefix_Step3b_Noun(z);
+                if (ret == 0) goto lab22;
                 if (ret < 0) return ret;
             }
-            goto lab29;
-        lab31:
-            z->c = c14;
-            if (!(z->I[1])) goto lab26;
-            {   int c15 = z->c;
-                {   int ret = r_Prefix_Step3_Verb(z);
-                    if (ret == 0) { z->c = c15; goto lab32; }
+            break;
+        lab22:
+            z->c = v_15;
+            if (!((SN_local *)z)->b_is_verb) goto lab18;
+            {
+                int v_16 = z->c;
+                {
+                    int ret = r_Prefix_Step3_Verb(z);
+                    if (ret == 0) { z->c = v_16; goto lab23; }
                     if (ret < 0) return ret;
                 }
-            lab32:
+            lab23:
                 ;
             }
-            {   int ret = r_Prefix_Step4_Verb(z);
-                if (ret == 0) goto lab26;
+            {
+                int ret = r_Prefix_Step4_Verb(z);
+                if (ret == 0) goto lab18;
                 if (ret < 0) return ret;
             }
-        }
-    lab29:
-    lab26:
-        z->c = c11;
+        } while (0);
+    lab18:
+        z->c = v_12;
     }
-
-    {   int ret = r_Normalize_post(z);
+    {
+        int ret = r_Normalize_post(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
-extern struct SN_env * arabic_UTF_8_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * arabic_UTF_8_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->b_is_defined = 0;
+        ((SN_local *)z)->b_is_verb = 0;
+        ((SN_local *)z)->b_is_noun = 0;
+    }
+    return z;
+}
 
-extern void arabic_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void arabic_UTF_8_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 81ec52fef2b2e1e9c9db06f65dac19c19c73f0da..0ec4250bdc31202f11784b1938b51efe237433a5 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from armenian.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_UTF_8_armenian.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,24 +21,15 @@ extern int armenian_UTF_8_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_ending(struct SN_env * z);
 static int r_noun(struct SN_env * z);
 static int r_verb(struct SN_env * z);
 static int r_adjective(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
 
 
-extern struct SN_env * armenian_UTF_8_create_env(void);
-extern void armenian_UTF_8_close_env(struct SN_env * z);
-
-
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[6] = { 0xD5, 0xA2, 0xD5, 0xA1, 0xD6, 0x80 };
 static const symbol s_0_1[8] = { 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA4 };
 static const symbol s_0_2[10] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD6, 0x80, 0xD5, 0xA4 };
@@ -50,32 +53,30 @@ static const symbol s_0_19[4] = { 0xD5, 0xAB, 0xD5, 0xBE };
 static const symbol s_0_20[4] = { 0xD5, 0xA1, 0xD5, 0xBF };
 static const symbol s_0_21[8] = { 0xD5, 0xA1, 0xD5, 0xBE, 0xD5, 0xA5, 0xD5, 0xBF };
 static const symbol s_0_22[6] = { 0xD5, 0xAF, 0xD5, 0xB8, 0xD5, 0xBF };
-
-static const struct among a_0[23] =
-{
-{ 6, s_0_0, -1, 1, 0},
-{ 8, s_0_1, -1, 1, 0},
-{ 10, s_0_2, 1, 1, 0},
-{ 6, s_0_3, -1, 1, 0},
-{ 6, s_0_4, -1, 1, 0},
-{ 8, s_0_5, -1, 1, 0},
-{ 4, s_0_6, -1, 1, 0},
-{ 8, s_0_7, -1, 1, 0},
-{ 8, s_0_8, -1, 1, 0},
-{ 8, s_0_9, -1, 1, 0},
-{ 4, s_0_10, -1, 1, 0},
-{ 8, s_0_11, 10, 1, 0},
-{ 8, s_0_12, 10, 1, 0},
-{ 8, s_0_13, -1, 1, 0},
-{ 4, s_0_14, -1, 1, 0},
-{ 6, s_0_15, 14, 1, 0},
-{ 8, s_0_16, 14, 1, 0},
-{ 8, s_0_17, -1, 1, 0},
-{ 6, s_0_18, -1, 1, 0},
-{ 4, s_0_19, -1, 1, 0},
-{ 4, s_0_20, -1, 1, 0},
-{ 8, s_0_21, -1, 1, 0},
-{ 6, s_0_22, -1, 1, 0}
+static const struct among a_0[23] = {
+{ 6, s_0_0, 0, 1, 0},
+{ 8, s_0_1, 0, 1, 0},
+{ 10, s_0_2, -1, 1, 0},
+{ 6, s_0_3, 0, 1, 0},
+{ 6, s_0_4, 0, 1, 0},
+{ 8, s_0_5, 0, 1, 0},
+{ 4, s_0_6, 0, 1, 0},
+{ 8, s_0_7, 0, 1, 0},
+{ 8, s_0_8, 0, 1, 0},
+{ 8, s_0_9, 0, 1, 0},
+{ 4, s_0_10, 0, 1, 0},
+{ 8, s_0_11, -1, 1, 0},
+{ 8, s_0_12, -2, 1, 0},
+{ 8, s_0_13, 0, 1, 0},
+{ 4, s_0_14, 0, 1, 0},
+{ 6, s_0_15, -1, 1, 0},
+{ 8, s_0_16, -2, 1, 0},
+{ 8, s_0_17, 0, 1, 0},
+{ 6, s_0_18, 0, 1, 0},
+{ 4, s_0_19, 0, 1, 0},
+{ 4, s_0_20, 0, 1, 0},
+{ 8, s_0_21, 0, 1, 0},
+{ 6, s_0_22, 0, 1, 0}
 };
 
 static const symbol s_1_0[4] = { 0xD5, 0xA1, 0xD6, 0x80 };
@@ -149,80 +150,78 @@ static const symbol s_1_67[8] = { 0xD5, 0xA1, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xBE
 static const symbol s_1_68[8] = { 0xD5, 0xA5, 0xD6, 0x81, 0xD5, 0xA1, 0xD5, 0xBE };
 static const symbol s_1_69[8] = { 0xD5, 0xA1, 0xD5, 0xAC, 0xD5, 0xB8, 0xD5, 0xBE };
 static const symbol s_1_70[8] = { 0xD5, 0xA5, 0xD5, 0xAC, 0xD5, 0xB8, 0xD5, 0xBE };
-
-static const struct among a_1[71] =
-{
-{ 4, s_1_0, -1, 1, 0},
-{ 8, s_1_1, 0, 1, 0},
-{ 8, s_1_2, 0, 1, 0},
-{ 10, s_1_3, -1, 1, 0},
-{ 8, s_1_4, -1, 1, 0},
-{ 8, s_1_5, -1, 1, 0},
-{ 10, s_1_6, 5, 1, 0},
-{ 10, s_1_7, -1, 1, 0},
-{ 10, s_1_8, -1, 1, 0},
-{ 4, s_1_9, -1, 1, 0},
-{ 4, s_1_10, -1, 1, 0},
-{ 10, s_1_11, 10, 1, 0},
-{ 8, s_1_12, -1, 1, 0},
-{ 8, s_1_13, -1, 1, 0},
-{ 4, s_1_14, -1, 1, 0},
-{ 6, s_1_15, 14, 1, 0},
-{ 8, s_1_16, 15, 1, 0},
-{ 10, s_1_17, -1, 1, 0},
-{ 8, s_1_18, -1, 1, 0},
-{ 8, s_1_19, -1, 1, 0},
-{ 10, s_1_20, 19, 1, 0},
-{ 6, s_1_21, -1, 1, 0},
-{ 8, s_1_22, 21, 1, 0},
-{ 10, s_1_23, 22, 1, 0},
-{ 12, s_1_24, -1, 1, 0},
-{ 10, s_1_25, -1, 1, 0},
-{ 10, s_1_26, -1, 1, 0},
-{ 12, s_1_27, 26, 1, 0},
-{ 2, s_1_28, -1, 1, 0},
-{ 6, s_1_29, 28, 1, 0},
-{ 6, s_1_30, 28, 1, 0},
-{ 4, s_1_31, -1, 1, 0},
-{ 8, s_1_32, -1, 1, 0},
-{ 6, s_1_33, -1, 1, 0},
-{ 6, s_1_34, -1, 1, 0},
-{ 8, s_1_35, 34, 1, 0},
-{ 4, s_1_36, -1, 1, 0},
-{ 6, s_1_37, 36, 1, 0},
-{ 10, s_1_38, 36, 1, 0},
-{ 8, s_1_39, 36, 1, 0},
-{ 8, s_1_40, 36, 1, 0},
-{ 4, s_1_41, -1, 1, 0},
-{ 6, s_1_42, 41, 1, 0},
-{ 6, s_1_43, 41, 1, 0},
-{ 8, s_1_44, 43, 1, 0},
-{ 10, s_1_45, 44, 1, 0},
-{ 6, s_1_46, 41, 1, 0},
-{ 6, s_1_47, 41, 1, 0},
-{ 10, s_1_48, 47, 1, 0},
-{ 10, s_1_49, 47, 1, 0},
-{ 6, s_1_50, 41, 1, 0},
-{ 8, s_1_51, 50, 1, 0},
-{ 8, s_1_52, 50, 1, 0},
-{ 10, s_1_53, 52, 1, 0},
-{ 6, s_1_54, -1, 1, 0},
-{ 6, s_1_55, -1, 1, 0},
-{ 8, s_1_56, 55, 1, 0},
-{ 4, s_1_57, -1, 1, 0},
-{ 6, s_1_58, 57, 1, 0},
-{ 8, s_1_59, 58, 1, 0},
-{ 10, s_1_60, -1, 1, 0},
-{ 8, s_1_61, -1, 1, 0},
-{ 8, s_1_62, -1, 1, 0},
-{ 10, s_1_63, 62, 1, 0},
-{ 8, s_1_64, -1, 1, 0},
-{ 8, s_1_65, -1, 1, 0},
-{ 4, s_1_66, -1, 1, 0},
-{ 8, s_1_67, 66, 1, 0},
-{ 8, s_1_68, 66, 1, 0},
-{ 8, s_1_69, -1, 1, 0},
-{ 8, s_1_70, -1, 1, 0}
+static const struct among a_1[71] = {
+{ 4, s_1_0, 0, 1, 0},
+{ 8, s_1_1, -1, 1, 0},
+{ 8, s_1_2, -2, 1, 0},
+{ 10, s_1_3, 0, 1, 0},
+{ 8, s_1_4, 0, 1, 0},
+{ 8, s_1_5, 0, 1, 0},
+{ 10, s_1_6, -1, 1, 0},
+{ 10, s_1_7, 0, 1, 0},
+{ 10, s_1_8, 0, 1, 0},
+{ 4, s_1_9, 0, 1, 0},
+{ 4, s_1_10, 0, 1, 0},
+{ 10, s_1_11, -1, 1, 0},
+{ 8, s_1_12, 0, 1, 0},
+{ 8, s_1_13, 0, 1, 0},
+{ 4, s_1_14, 0, 1, 0},
+{ 6, s_1_15, -1, 1, 0},
+{ 8, s_1_16, -1, 1, 0},
+{ 10, s_1_17, 0, 1, 0},
+{ 8, s_1_18, 0, 1, 0},
+{ 8, s_1_19, 0, 1, 0},
+{ 10, s_1_20, -1, 1, 0},
+{ 6, s_1_21, 0, 1, 0},
+{ 8, s_1_22, -1, 1, 0},
+{ 10, s_1_23, -1, 1, 0},
+{ 12, s_1_24, 0, 1, 0},
+{ 10, s_1_25, 0, 1, 0},
+{ 10, s_1_26, 0, 1, 0},
+{ 12, s_1_27, -1, 1, 0},
+{ 2, s_1_28, 0, 1, 0},
+{ 6, s_1_29, -1, 1, 0},
+{ 6, s_1_30, -2, 1, 0},
+{ 4, s_1_31, 0, 1, 0},
+{ 8, s_1_32, 0, 1, 0},
+{ 6, s_1_33, 0, 1, 0},
+{ 6, s_1_34, 0, 1, 0},
+{ 8, s_1_35, -1, 1, 0},
+{ 4, s_1_36, 0, 1, 0},
+{ 6, s_1_37, -1, 1, 0},
+{ 10, s_1_38, -2, 1, 0},
+{ 8, s_1_39, -3, 1, 0},
+{ 8, s_1_40, -4, 1, 0},
+{ 4, s_1_41, 0, 1, 0},
+{ 6, s_1_42, -1, 1, 0},
+{ 6, s_1_43, -2, 1, 0},
+{ 8, s_1_44, -1, 1, 0},
+{ 10, s_1_45, -1, 1, 0},
+{ 6, s_1_46, -5, 1, 0},
+{ 6, s_1_47, -6, 1, 0},
+{ 10, s_1_48, -1, 1, 0},
+{ 10, s_1_49, -2, 1, 0},
+{ 6, s_1_50, -9, 1, 0},
+{ 8, s_1_51, -1, 1, 0},
+{ 8, s_1_52, -2, 1, 0},
+{ 10, s_1_53, -1, 1, 0},
+{ 6, s_1_54, 0, 1, 0},
+{ 6, s_1_55, 0, 1, 0},
+{ 8, s_1_56, -1, 1, 0},
+{ 4, s_1_57, 0, 1, 0},
+{ 6, s_1_58, -1, 1, 0},
+{ 8, s_1_59, -1, 1, 0},
+{ 10, s_1_60, 0, 1, 0},
+{ 8, s_1_61, 0, 1, 0},
+{ 8, s_1_62, 0, 1, 0},
+{ 10, s_1_63, -1, 1, 0},
+{ 8, s_1_64, 0, 1, 0},
+{ 8, s_1_65, 0, 1, 0},
+{ 4, s_1_66, 0, 1, 0},
+{ 8, s_1_67, -1, 1, 0},
+{ 8, s_1_68, -2, 1, 0},
+{ 8, s_1_69, 0, 1, 0},
+{ 8, s_1_70, 0, 1, 0}
 };
 
 static const symbol s_2_0[6] = { 0xD5, 0xA3, 0xD5, 0xA1, 0xD6, 0x80 };
@@ -265,49 +264,47 @@ static const symbol s_2_36[6] = { 0xD5, 0xA1, 0xD5, 0xAE, 0xD5, 0xB8 };
 static const symbol s_2_37[4] = { 0xD5, 0xAB, 0xD5, 0xB9 };
 static const symbol s_2_38[6] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xBD };
 static const symbol s_2_39[8] = { 0xD5, 0xB8, 0xD6, 0x82, 0xD5, 0xBD, 0xD5, 0xBF };
-
-static const struct among a_2[40] =
-{
-{ 6, s_2_0, -1, 1, 0},
-{ 6, s_2_1, -1, 1, 0},
-{ 8, s_2_2, 1, 1, 0},
-{ 8, s_2_3, -1, 1, 0},
-{ 4, s_2_4, -1, 1, 0},
-{ 4, s_2_5, -1, 1, 0},
-{ 2, s_2_6, -1, 1, 0},
-{ 6, s_2_7, 6, 1, 0},
-{ 6, s_2_8, 6, 1, 0},
-{ 4, s_2_9, 6, 1, 0},
-{ 8, s_2_10, 9, 1, 0},
-{ 8, s_2_11, 9, 1, 0},
-{ 8, s_2_12, 6, 1, 0},
-{ 8, s_2_13, 6, 1, 0},
-{ 8, s_2_14, 6, 1, 0},
-{ 10, s_2_15, 14, 1, 0},
-{ 6, s_2_16, 6, 1, 0},
-{ 6, s_2_17, 6, 1, 0},
-{ 6, s_2_18, 6, 1, 0},
-{ 6, s_2_19, -1, 1, 0},
-{ 8, s_2_20, -1, 1, 0},
-{ 4, s_2_21, -1, 1, 0},
-{ 8, s_2_22, -1, 1, 0},
-{ 4, s_2_23, -1, 1, 0},
-{ 6, s_2_24, -1, 1, 0},
-{ 4, s_2_25, -1, 1, 0},
-{ 6, s_2_26, 25, 1, 0},
-{ 8, s_2_27, 25, 1, 0},
-{ 4, s_2_28, -1, 1, 0},
-{ 8, s_2_29, -1, 1, 0},
-{ 14, s_2_30, 29, 1, 0},
-{ 4, s_2_31, -1, 1, 0},
-{ 8, s_2_32, 31, 1, 0},
-{ 6, s_2_33, 31, 1, 0},
-{ 8, s_2_34, 31, 1, 0},
-{ 8, s_2_35, -1, 1, 0},
-{ 6, s_2_36, -1, 1, 0},
-{ 4, s_2_37, -1, 1, 0},
-{ 6, s_2_38, -1, 1, 0},
-{ 8, s_2_39, -1, 1, 0}
+static const struct among a_2[40] = {
+{ 6, s_2_0, 0, 1, 0},
+{ 6, s_2_1, 0, 1, 0},
+{ 8, s_2_2, -1, 1, 0},
+{ 8, s_2_3, 0, 1, 0},
+{ 4, s_2_4, 0, 1, 0},
+{ 4, s_2_5, 0, 1, 0},
+{ 2, s_2_6, 0, 1, 0},
+{ 6, s_2_7, -1, 1, 0},
+{ 6, s_2_8, -2, 1, 0},
+{ 4, s_2_9, -3, 1, 0},
+{ 8, s_2_10, -1, 1, 0},
+{ 8, s_2_11, -2, 1, 0},
+{ 8, s_2_12, -6, 1, 0},
+{ 8, s_2_13, -7, 1, 0},
+{ 8, s_2_14, -8, 1, 0},
+{ 10, s_2_15, -1, 1, 0},
+{ 6, s_2_16, -10, 1, 0},
+{ 6, s_2_17, -11, 1, 0},
+{ 6, s_2_18, -12, 1, 0},
+{ 6, s_2_19, 0, 1, 0},
+{ 8, s_2_20, 0, 1, 0},
+{ 4, s_2_21, 0, 1, 0},
+{ 8, s_2_22, 0, 1, 0},
+{ 4, s_2_23, 0, 1, 0},
+{ 6, s_2_24, 0, 1, 0},
+{ 4, s_2_25, 0, 1, 0},
+{ 6, s_2_26, -1, 1, 0},
+{ 8, s_2_27, -2, 1, 0},
+{ 4, s_2_28, 0, 1, 0},
+{ 8, s_2_29, 0, 1, 0},
+{ 14, s_2_30, -1, 1, 0},
+{ 4, s_2_31, 0, 1, 0},
+{ 8, s_2_32, -1, 1, 0},
+{ 6, s_2_33, -2, 1, 0},
+{ 8, s_2_34, -3, 1, 0},
+{ 8, s_2_35, 0, 1, 0},
+{ 6, s_2_36, 0, 1, 0},
+{ 4, s_2_37, 0, 1, 0},
+{ 6, s_2_38, 0, 1, 0},
+{ 8, s_2_39, 0, 1, 0}
 };
 
 static const symbol s_3_0[4] = { 0xD5, 0xA5, 0xD6, 0x80 };
@@ -367,116 +364,111 @@ static const symbol s_3_53[8] = { 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD5, 0xBE
 static const symbol s_3_54[10] = { 0xD5, 0xB6, 0xD5, 0xA5, 0xD6, 0x80, 0xD5, 0xB8, 0xD5, 0xBE };
 static const symbol s_3_55[8] = { 0xD5, 0xA1, 0xD5, 0xB6, 0xD5, 0xB8, 0xD5, 0xBE };
 static const symbol s_3_56[6] = { 0xD5, 0xBE, 0xD5, 0xB8, 0xD5, 0xBE };
-
-static const struct among a_3[57] =
-{
-{ 4, s_3_0, -1, 1, 0},
-{ 6, s_3_1, 0, 1, 0},
-{ 2, s_3_2, -1, 1, 0},
-{ 6, s_3_3, 2, 1, 0},
-{ 4, s_3_4, 2, 1, 0},
-{ 8, s_3_5, 4, 1, 0},
-{ 10, s_3_6, 5, 1, 0},
-{ 6, s_3_7, 4, 1, 0},
-{ 10, s_3_8, 4, 1, 0},
-{ 8, s_3_9, 4, 1, 0},
-{ 6, s_3_10, 4, 1, 0},
-{ 4, s_3_11, 2, 1, 0},
-{ 4, s_3_12, -1, 1, 0},
-{ 4, s_3_13, -1, 1, 0},
-{ 6, s_3_14, -1, 1, 0},
-{ 2, s_3_15, -1, 1, 0},
-{ 6, s_3_16, 15, 1, 0},
-{ 8, s_3_17, 16, 1, 0},
-{ 6, s_3_18, 15, 1, 0},
-{ 6, s_3_19, 15, 1, 0},
-{ 14, s_3_20, 19, 1, 0},
-{ 8, s_3_21, 19, 1, 0},
-{ 6, s_3_22, 15, 1, 0},
-{ 2, s_3_23, -1, 1, 0},
-{ 6, s_3_24, 23, 1, 0},
-{ 8, s_3_25, 24, 1, 0},
-{ 6, s_3_26, 23, 1, 0},
-{ 14, s_3_27, 26, 1, 0},
-{ 8, s_3_28, 26, 1, 0},
-{ 6, s_3_29, 23, 1, 0},
-{ 2, s_3_30, -1, 1, 0},
-{ 6, s_3_31, 30, 1, 0},
-{ 8, s_3_32, 31, 1, 0},
-{ 4, s_3_33, 30, 1, 0},
-{ 10, s_3_34, -1, 1, 0},
-{ 12, s_3_35, 34, 1, 0},
-{ 10, s_3_36, -1, 1, 0},
-{ 2, s_3_37, -1, 1, 0},
-{ 6, s_3_38, 37, 1, 0},
-{ 8, s_3_39, 38, 1, 0},
-{ 6, s_3_40, 37, 1, 0},
-{ 4, s_3_41, 37, 1, 0},
-{ 12, s_3_42, 41, 1, 0},
-{ 6, s_3_43, 41, 1, 0},
-{ 4, s_3_44, 37, 1, 0},
-{ 8, s_3_45, 44, 1, 0},
-{ 10, s_3_46, 45, 1, 0},
-{ 14, s_3_47, 37, 1, 0},
-{ 4, s_3_48, -1, 1, 0},
-{ 14, s_3_49, -1, 1, 0},
-{ 8, s_3_50, -1, 1, 0},
-{ 6, s_3_51, -1, 1, 0},
-{ 4, s_3_52, -1, 1, 0},
-{ 8, s_3_53, 52, 1, 0},
-{ 10, s_3_54, 53, 1, 0},
-{ 8, s_3_55, 52, 1, 0},
-{ 6, s_3_56, 52, 1, 0}
+static const struct among a_3[57] = {
+{ 4, s_3_0, 0, 1, 0},
+{ 6, s_3_1, -1, 1, 0},
+{ 2, s_3_2, 0, 1, 0},
+{ 6, s_3_3, -1, 1, 0},
+{ 4, s_3_4, -2, 1, 0},
+{ 8, s_3_5, -1, 1, 0},
+{ 10, s_3_6, -1, 1, 0},
+{ 6, s_3_7, -3, 1, 0},
+{ 10, s_3_8, -4, 1, 0},
+{ 8, s_3_9, -5, 1, 0},
+{ 6, s_3_10, -6, 1, 0},
+{ 4, s_3_11, -9, 1, 0},
+{ 4, s_3_12, 0, 1, 0},
+{ 4, s_3_13, 0, 1, 0},
+{ 6, s_3_14, 0, 1, 0},
+{ 2, s_3_15, 0, 1, 0},
+{ 6, s_3_16, -1, 1, 0},
+{ 8, s_3_17, -1, 1, 0},
+{ 6, s_3_18, -3, 1, 0},
+{ 6, s_3_19, -4, 1, 0},
+{ 14, s_3_20, -1, 1, 0},
+{ 8, s_3_21, -2, 1, 0},
+{ 6, s_3_22, -7, 1, 0},
+{ 2, s_3_23, 0, 1, 0},
+{ 6, s_3_24, -1, 1, 0},
+{ 8, s_3_25, -1, 1, 0},
+{ 6, s_3_26, -3, 1, 0},
+{ 14, s_3_27, -1, 1, 0},
+{ 8, s_3_28, -2, 1, 0},
+{ 6, s_3_29, -6, 1, 0},
+{ 2, s_3_30, 0, 1, 0},
+{ 6, s_3_31, -1, 1, 0},
+{ 8, s_3_32, -1, 1, 0},
+{ 4, s_3_33, -3, 1, 0},
+{ 10, s_3_34, 0, 1, 0},
+{ 12, s_3_35, -1, 1, 0},
+{ 10, s_3_36, 0, 1, 0},
+{ 2, s_3_37, 0, 1, 0},
+{ 6, s_3_38, -1, 1, 0},
+{ 8, s_3_39, -1, 1, 0},
+{ 6, s_3_40, -3, 1, 0},
+{ 4, s_3_41, -4, 1, 0},
+{ 12, s_3_42, -1, 1, 0},
+{ 6, s_3_43, -2, 1, 0},
+{ 4, s_3_44, -7, 1, 0},
+{ 8, s_3_45, -1, 1, 0},
+{ 10, s_3_46, -1, 1, 0},
+{ 14, s_3_47, -10, 1, 0},
+{ 4, s_3_48, 0, 1, 0},
+{ 14, s_3_49, 0, 1, 0},
+{ 8, s_3_50, 0, 1, 0},
+{ 6, s_3_51, 0, 1, 0},
+{ 4, s_3_52, 0, 1, 0},
+{ 8, s_3_53, -1, 1, 0},
+{ 10, s_3_54, -1, 1, 0},
+{ 8, s_3_55, -3, 1, 0},
+{ 6, s_3_56, -4, 1, 0}
 };
 
 static const unsigned char g_v[] = { 209, 4, 128, 0, 18 };
 
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
         {
             int ret = out_grouping_U(z, g_v, 1377, 1413, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_pV = z->c;
         {
             int ret = in_grouping_U(z, g_v, 1377, 1413, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = out_grouping_U(z, g_v, 1377, 1413, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-
         {
             int ret = in_grouping_U(z, g_v, 1377, 1413, 1);
             if (ret < 0) goto lab0;
             z->c += ret;
         }
-        z->I[0] = z->c;
+        ((SN_local *)z)->i_p2 = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
     return 1;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_adjective(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_0, 23)) return 0;
+    if (!find_among_b(z, a_0, 23, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -484,9 +476,10 @@ static int r_adjective(struct SN_env * z) {
 
 static int r_verb(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_1, 71)) return 0;
+    if (!find_among_b(z, a_1, 71, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -494,9 +487,10 @@ static int r_verb(struct SN_env * z) {
 
 static int r_noun(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_2, 40)) return 0;
+    if (!find_among_b(z, a_2, 40, 0)) return 0;
     z->bra = z->c;
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
@@ -504,59 +498,77 @@ static int r_noun(struct SN_env * z) {
 
 static int r_ending(struct SN_env * z) {
     z->ket = z->c;
-    if (!find_among_b(z, a_3, 57)) return 0;
+    if (!find_among_b(z, a_3, 57, 0)) return 0;
     z->bra = z->c;
-    {   int ret = r_R2(z);
+    {
+        int ret = r_R2(z);
         if (ret <= 0) return ret;
     }
-    {   int ret = slice_del(z);
+    {
+        int ret = slice_del(z);
         if (ret < 0) return ret;
     }
     return 1;
 }
 
 extern int armenian_UTF_8_stem(struct SN_env * z) {
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-
-    {   int mlimit1;
-        if (z->c < z->I[1]) return 0;
-        mlimit1 = z->lb; z->lb = z->I[1];
-        {   int m2 = z->l - z->c; (void)m2;
-            {   int ret = r_ending(z);
+    {
+        int v_1;
+        if (z->c < ((SN_local *)z)->i_pV) return 0;
+        v_1 = z->lb; z->lb = ((SN_local *)z)->i_pV;
+        {
+            int v_2 = z->l - z->c;
+            {
+                int ret = r_ending(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m2;
+            z->c = z->l - v_2;
         }
-        {   int m3 = z->l - z->c; (void)m3;
-            {   int ret = r_verb(z);
+        {
+            int v_3 = z->l - z->c;
+            {
+                int ret = r_verb(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m3;
+            z->c = z->l - v_3;
         }
-        {   int m4 = z->l - z->c; (void)m4;
-            {   int ret = r_adjective(z);
+        {
+            int v_4 = z->l - z->c;
+            {
+                int ret = r_adjective(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m4;
+            z->c = z->l - v_4;
         }
-        {   int m5 = z->l - z->c; (void)m5;
-            {   int ret = r_noun(z);
+        {
+            int v_5 = z->l - z->c;
+            {
+                int ret = r_noun(z);
                 if (ret < 0) return ret;
             }
-            z->c = z->l - m5;
+            z->c = z->l - v_5;
         }
-        z->lb = mlimit1;
+        z->lb = v_1;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * armenian_UTF_8_create_env(void) { return SN_create_env(0, 2); }
+extern struct SN_env * armenian_UTF_8_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void armenian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void armenian_UTF_8_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index 67b5b4835b8728e44db0760eeb8fb6edcdc56201..9f29692f4282a469778024ae7add28845d1a79d8 100644 (file)
@@ -1,6 +1,19 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from basque.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_UTF_8_basque.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+    int i_pV;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +22,7 @@ extern int basque_UTF_8_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_R1(struct SN_env * z);
 static int r_R2(struct SN_env * z);
 static int r_RV(struct SN_env * z);
@@ -16,18 +30,12 @@ static int r_mark_regions(struct SN_env * z);
 static int r_adjetiboak(struct SN_env * z);
 static int r_izenak(struct SN_env * z);
 static int r_aditzak(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
 
+static const symbol s_0[] = { 'j', 'o', 'k' };
+static const symbol s_1[] = { 't', 'r', 'a' };
+static const symbol s_2[] = { 'm', 'i', 'n', 'u', 't', 'u' };
+static const symbol s_3[] = { 'z' };
 
-extern struct SN_env * basque_UTF_8_create_env(void);
-extern void basque_UTF_8_close_env(struct SN_env * z);
-
-
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_0[4] = { 'i', 'd', 'e', 'a' };
 static const symbol s_0_1[5] = { 'b', 'i', 'd', 'e', 'a' };
 static const symbol s_0_2[5] = { 'k', 'i', 'd', 'e', 'a' };
@@ -137,118 +145,116 @@ static const symbol s_0_105[5] = { 'e', 'r', 'r', 'e', 'z' };
 static const symbol s_0_106[4] = { 't', 'z', 'e', 'z' };
 static const symbol s_0_107[5] = { 'g', 'a', 'i', 't', 'z' };
 static const symbol s_0_108[5] = { 'k', 'a', 'i', 't', 'z' };
-
-static const struct among a_0[109] =
-{
-{ 4, s_0_0, -1, 1, 0},
-{ 5, s_0_1, 0, 1, 0},
-{ 5, s_0_2, 0, 1, 0},
-{ 5, s_0_3, 0, 1, 0},
-{ 6, s_0_4, -1, 1, 0},
-{ 5, s_0_5, -1, 1, 0},
-{ 6, s_0_6, -1, 1, 0},
-{ 7, s_0_7, -1, 1, 0},
-{ 5, s_0_8, -1, 1, 0},
-{ 5, s_0_9, -1, 1, 0},
-{ 5, s_0_10, -1, 1, 0},
-{ 4, s_0_11, -1, 1, 0},
-{ 5, s_0_12, -1, 1, 0},
-{ 6, s_0_13, 12, 1, 0},
-{ 5, s_0_14, -1, 1, 0},
-{ 6, s_0_15, -1, 2, 0},
-{ 6, s_0_16, -1, 1, 0},
-{ 2, s_0_17, -1, 1, 0},
-{ 5, s_0_18, 17, 1, 0},
-{ 2, s_0_19, -1, 1, 0},
-{ 4, s_0_20, -1, 1, 0},
-{ 4, s_0_21, -1, 1, 0},
-{ 4, s_0_22, -1, 1, 0},
-{ 5, s_0_23, -1, 1, 0},
-{ 6, s_0_24, 23, 1, 0},
-{ 4, s_0_25, -1, 1, 0},
-{ 4, s_0_26, -1, 1, 0},
-{ 6, s_0_27, -1, 1, 0},
-{ 3, s_0_28, -1, 1, 0},
-{ 4, s_0_29, 28, 1, 0},
-{ 7, s_0_30, 29, 4, 0},
-{ 4, s_0_31, 28, 1, 0},
-{ 4, s_0_32, 28, 1, 0},
-{ 4, s_0_33, -1, 1, 0},
-{ 5, s_0_34, 33, 1, 0},
-{ 4, s_0_35, -1, 1, 0},
-{ 4, s_0_36, -1, 1, 0},
-{ 4, s_0_37, -1, 1, 0},
-{ 4, s_0_38, -1, 1, 0},
-{ 3, s_0_39, -1, 1, 0},
-{ 4, s_0_40, 39, 1, 0},
-{ 6, s_0_41, -1, 1, 0},
-{ 3, s_0_42, -1, 1, 0},
-{ 6, s_0_43, 42, 1, 0},
-{ 3, s_0_44, -1, 2, 0},
-{ 6, s_0_45, 44, 1, 0},
-{ 6, s_0_46, 44, 1, 0},
-{ 6, s_0_47, 44, 1, 0},
-{ 3, s_0_48, -1, 1, 0},
-{ 4, s_0_49, 48, 1, 0},
-{ 4, s_0_50, 48, 1, 0},
-{ 4, s_0_51, 48, 1, 0},
-{ 5, s_0_52, -1, 1, 0},
-{ 5, s_0_53, -1, 1, 0},
-{ 5, s_0_54, -1, 1, 0},
-{ 2, s_0_55, -1, 1, 0},
-{ 4, s_0_56, 55, 1, 0},
-{ 5, s_0_57, 55, 1, 0},
-{ 6, s_0_58, 55, 1, 0},
-{ 4, s_0_59, -1, 1, 0},
-{ 4, s_0_60, -1, 1, 0},
-{ 3, s_0_61, -1, 1, 0},
-{ 4, s_0_62, 61, 1, 0},
-{ 3, s_0_63, -1, 1, 0},
-{ 4, s_0_64, -1, 1, 0},
-{ 5, s_0_65, 64, 1, 0},
-{ 2, s_0_66, -1, 1, 0},
-{ 3, s_0_67, -1, 1, 0},
-{ 4, s_0_68, 67, 1, 0},
-{ 4, s_0_69, 67, 1, 0},
-{ 4, s_0_70, 67, 1, 0},
-{ 5, s_0_71, 70, 1, 0},
-{ 5, s_0_72, -1, 2, 0},
-{ 5, s_0_73, -1, 1, 0},
-{ 5, s_0_74, -1, 1, 0},
-{ 6, s_0_75, 74, 1, 0},
-{ 2, s_0_76, -1, 1, 0},
-{ 3, s_0_77, 76, 1, 0},
-{ 4, s_0_78, 77, 1, 0},
-{ 3, s_0_79, 76, 1, 0},
-{ 4, s_0_80, 76, 1, 0},
-{ 7, s_0_81, -1, 3, 0},
-{ 3, s_0_82, -1, 1, 0},
-{ 3, s_0_83, -1, 1, 0},
-{ 3, s_0_84, -1, 1, 0},
-{ 5, s_0_85, 84, 1, 0},
-{ 4, s_0_86, -1, 1, 0},
-{ 5, s_0_87, 86, 1, 0},
-{ 3, s_0_88, -1, 1, 0},
-{ 5, s_0_89, -1, 1, 0},
-{ 2, s_0_90, -1, 1, 0},
-{ 3, s_0_91, 90, 1, 0},
-{ 3, s_0_92, -1, 1, 0},
-{ 4, s_0_93, -1, 1, 0},
-{ 2, s_0_94, -1, 1, 0},
-{ 3, s_0_95, 94, 1, 0},
-{ 4, s_0_96, -1, 1, 0},
-{ 2, s_0_97, -1, 1, 0},
-{ 5, s_0_98, -1, 1, 0},
-{ 2, s_0_99, -1, 1, 0},
-{ 3, s_0_100, 99, 1, 0},
-{ 6, s_0_101, 100, 1, 0},
-{ 4, s_0_102, 100, 1, 0},
-{ 6, s_0_103, 99, 5, 0},
-{ 2, s_0_104, -1, 1, 0},
-{ 5, s_0_105, 104, 1, 0},
-{ 4, s_0_106, 104, 1, 0},
-{ 5, s_0_107, -1, 1, 0},
-{ 5, s_0_108, -1, 1, 0}
+static const struct among a_0[109] = {
+{ 4, s_0_0, 0, 1, 0},
+{ 5, s_0_1, -1, 1, 0},
+{ 5, s_0_2, -2, 1, 0},
+{ 5, s_0_3, -3, 1, 0},
+{ 6, s_0_4, 0, 1, 0},
+{ 5, s_0_5, 0, 1, 0},
+{ 6, s_0_6, 0, 1, 0},
+{ 7, s_0_7, 0, 1, 0},
+{ 5, s_0_8, 0, 1, 0},
+{ 5, s_0_9, 0, 1, 0},
+{ 5, s_0_10, 0, 1, 0},
+{ 4, s_0_11, 0, 1, 0},
+{ 5, s_0_12, 0, 1, 0},
+{ 6, s_0_13, -1, 1, 0},
+{ 5, s_0_14, 0, 1, 0},
+{ 6, s_0_15, 0, 2, 0},
+{ 6, s_0_16, 0, 1, 0},
+{ 2, s_0_17, 0, 1, 0},
+{ 5, s_0_18, -1, 1, 0},
+{ 2, s_0_19, 0, 1, 0},
+{ 4, s_0_20, 0, 1, 0},
+{ 4, s_0_21, 0, 1, 0},
+{ 4, s_0_22, 0, 1, 0},
+{ 5, s_0_23, 0, 1, 0},
+{ 6, s_0_24, -1, 1, 0},
+{ 4, s_0_25, 0, 1, 0},
+{ 4, s_0_26, 0, 1, 0},
+{ 6, s_0_27, 0, 1, 0},
+{ 3, s_0_28, 0, 1, 0},
+{ 4, s_0_29, -1, 1, 0},
+{ 7, s_0_30, -1, -1, 0},
+{ 4, s_0_31, -3, 1, 0},
+{ 4, s_0_32, -4, 1, 0},
+{ 4, s_0_33, 0, 1, 0},
+{ 5, s_0_34, -1, 1, 0},
+{ 4, s_0_35, 0, 1, 0},
+{ 4, s_0_36, 0, 1, 0},
+{ 4, s_0_37, 0, 1, 0},
+{ 4, s_0_38, 0, 1, 0},
+{ 3, s_0_39, 0, 1, 0},
+{ 4, s_0_40, -1, 1, 0},
+{ 6, s_0_41, 0, 1, 0},
+{ 3, s_0_42, 0, 1, 0},
+{ 6, s_0_43, -1, 1, 0},
+{ 3, s_0_44, 0, 2, 0},
+{ 6, s_0_45, -1, 1, 0},
+{ 6, s_0_46, -2, 1, 0},
+{ 6, s_0_47, -3, 1, 0},
+{ 3, s_0_48, 0, 1, 0},
+{ 4, s_0_49, -1, 1, 0},
+{ 4, s_0_50, -2, 1, 0},
+{ 4, s_0_51, -3, 1, 0},
+{ 5, s_0_52, 0, 1, 0},
+{ 5, s_0_53, 0, 1, 0},
+{ 5, s_0_54, 0, 1, 0},
+{ 2, s_0_55, 0, 1, 0},
+{ 4, s_0_56, -1, 1, 0},
+{ 5, s_0_57, -2, 1, 0},
+{ 6, s_0_58, -3, 1, 0},
+{ 4, s_0_59, 0, 1, 0},
+{ 4, s_0_60, 0, 1, 0},
+{ 3, s_0_61, 0, 1, 0},
+{ 4, s_0_62, -1, 1, 0},
+{ 3, s_0_63, 0, 1, 0},
+{ 4, s_0_64, 0, 1, 0},
+{ 5, s_0_65, -1, 1, 0},
+{ 2, s_0_66, 0, 1, 0},
+{ 3, s_0_67, 0, 1, 0},
+{ 4, s_0_68, -1, 1, 0},
+{ 4, s_0_69, -2, 1, 0},
+{ 4, s_0_70, -3, 1, 0},
+{ 5, s_0_71, -1, 1, 0},
+{ 5, s_0_72, 0, 2, 0},
+{ 5, s_0_73, 0, 1, 0},
+{ 5, s_0_74, 0, 1, 0},
+{ 6, s_0_75, -1, 1, 0},
+{ 2, s_0_76, 0, 1, 0},
+{ 3, s_0_77, -1, 1, 0},
+{ 4, s_0_78, -1, 1, 0},
+{ 3, s_0_79, -3, 1, 0},
+{ 4, s_0_80, -4, 1, 0},
+{ 7, s_0_81, 0, -1, 0},
+{ 3, s_0_82, 0, 1, 0},
+{ 3, s_0_83, 0, 1, 0},
+{ 3, s_0_84, 0, 1, 0},
+{ 5, s_0_85, -1, 1, 0},
+{ 4, s_0_86, 0, 1, 0},
+{ 5, s_0_87, -1, 1, 0},
+{ 3, s_0_88, 0, 1, 0},
+{ 5, s_0_89, 0, 1, 0},
+{ 2, s_0_90, 0, 1, 0},
+{ 3, s_0_91, -1, 1, 0},
+{ 3, s_0_92, 0, 1, 0},
+{ 4, s_0_93, 0, 1, 0},
+{ 2, s_0_94, 0, 1, 0},
+{ 3, s_0_95, -1, 1, 0},
+{ 4, s_0_96, 0, 1, 0},
+{ 2, s_0_97, 0, 1, 0},
+{ 5, s_0_98, 0, 1, 0},
+{ 2, s_0_99, 0, 1, 0},
+{ 3, s_0_100, -1, 1, 0},
+{ 6, s_0_101, -1, 1, 0},
+{ 4, s_0_102, -2, 1, 0},
+{ 6, s_0_103, -4, -1, 0},
+{ 2, s_0_104, 0, 1, 0},
+{ 5, s_0_105, -1, 1, 0},
+{ 4, s_0_106, -2, 1, 0},
+{ 5, s_0_107, 0, 1, 0},
+{ 5, s_0_108, 0, 1, 0}
 };
 
 static const symbol s_1_0[3] = { 'a', 'd', 'a' };
@@ -546,304 +552,302 @@ static const symbol s_1_291[2] = { 'e', 'z' };
 static const symbol s_1_292[4] = { 'e', 'r', 'o', 'z' };
 static const symbol s_1_293[2] = { 't', 'z' };
 static const symbol s_1_294[5] = { 'k', 'o', 'i', 't', 'z' };
-
-static const struct among a_1[295] =
-{
-{ 3, s_1_0, -1, 1, 0},
-{ 4, s_1_1, 0, 1, 0},
-{ 4, s_1_2, -1, 1, 0},
-{ 5, s_1_3, -1, 1, 0},
-{ 5, s_1_4, -1, 1, 0},
-{ 5, s_1_5, -1, 1, 0},
-{ 5, s_1_6, -1, 1, 0},
-{ 6, s_1_7, 6, 1, 0},
-{ 6, s_1_8, 6, 1, 0},
-{ 5, s_1_9, -1, 1, 0},
-{ 5, s_1_10, -1, 1, 0},
-{ 6, s_1_11, 10, 1, 0},
-{ 5, s_1_12, -1, 1, 0},
-{ 4, s_1_13, -1, 1, 0},
-{ 5, s_1_14, -1, 1, 0},
-{ 3, s_1_15, -1, 1, 0},
-{ 4, s_1_16, 15, 1, 0},
-{ 6, s_1_17, 15, 1, 0},
-{ 4, s_1_18, 15, 1, 0},
-{ 5, s_1_19, 18, 1, 0},
-{ 3, s_1_20, -1, 1, 0},
-{ 6, s_1_21, -1, 1, 0},
-{ 3, s_1_22, -1, 1, 0},
-{ 5, s_1_23, 22, 1, 0},
-{ 5, s_1_24, 22, 1, 0},
-{ 5, s_1_25, 22, 1, 0},
-{ 5, s_1_26, -1, 1, 0},
-{ 2, s_1_27, -1, 1, 0},
-{ 4, s_1_28, 27, 1, 0},
-{ 4, s_1_29, -1, 1, 0},
-{ 5, s_1_30, -1, 1, 0},
-{ 6, s_1_31, 30, 1, 0},
-{ 6, s_1_32, -1, 1, 0},
-{ 6, s_1_33, -1, 1, 0},
-{ 4, s_1_34, -1, 1, 0},
-{ 4, s_1_35, -1, 1, 0},
-{ 5, s_1_36, 35, 1, 0},
-{ 5, s_1_37, 35, 1, 0},
-{ 5, s_1_38, -1, 1, 0},
-{ 4, s_1_39, -1, 1, 0},
-{ 3, s_1_40, -1, 1, 0},
-{ 5, s_1_41, 40, 1, 0},
-{ 3, s_1_42, -1, 1, 0},
-{ 4, s_1_43, 42, 1, 0},
-{ 4, s_1_44, -1, 1, 0},
-{ 5, s_1_45, 44, 1, 0},
-{ 5, s_1_46, 44, 1, 0},
-{ 5, s_1_47, 44, 1, 0},
-{ 4, s_1_48, -1, 1, 0},
-{ 5, s_1_49, 48, 1, 0},
-{ 5, s_1_50, 48, 1, 0},
-{ 6, s_1_51, -1, 2, 0},
-{ 6, s_1_52, -1, 1, 0},
-{ 6, s_1_53, -1, 1, 0},
-{ 5, s_1_54, -1, 1, 0},
-{ 4, s_1_55, -1, 1, 0},
-{ 3, s_1_56, -1, 1, 0},
-{ 4, s_1_57, -1, 1, 0},
-{ 5, s_1_58, -1, 1, 0},
-{ 6, s_1_59, -1, 1, 0},
-{ 2, s_1_60, -1, 1, 0},
-{ 4, s_1_61, 60, 3, 0},
-{ 5, s_1_62, 60, 10, 0},
-{ 3, s_1_63, 60, 1, 0},
-{ 3, s_1_64, 60, 1, 0},
-{ 3, s_1_65, 60, 1, 0},
-{ 6, s_1_66, -1, 1, 0},
-{ 4, s_1_67, -1, 1, 0},
-{ 5, s_1_68, -1, 1, 0},
-{ 5, s_1_69, -1, 1, 0},
-{ 4, s_1_70, -1, 1, 0},
-{ 3, s_1_71, -1, 1, 0},
-{ 2, s_1_72, -1, 1, 0},
-{ 4, s_1_73, 72, 1, 0},
-{ 3, s_1_74, 72, 1, 0},
-{ 7, s_1_75, 74, 1, 0},
-{ 7, s_1_76, 74, 1, 0},
-{ 6, s_1_77, 74, 1, 0},
-{ 5, s_1_78, 72, 1, 0},
-{ 6, s_1_79, 78, 1, 0},
-{ 4, s_1_80, 72, 1, 0},
-{ 4, s_1_81, 72, 1, 0},
-{ 5, s_1_82, 72, 1, 0},
-{ 3, s_1_83, 72, 1, 0},
-{ 4, s_1_84, 83, 1, 0},
-{ 5, s_1_85, 83, 1, 0},
-{ 6, s_1_86, 85, 1, 0},
-{ 5, s_1_87, -1, 1, 0},
-{ 6, s_1_88, 87, 1, 0},
-{ 4, s_1_89, -1, 1, 0},
-{ 4, s_1_90, -1, 1, 0},
-{ 3, s_1_91, -1, 1, 0},
-{ 5, s_1_92, 91, 1, 0},
-{ 4, s_1_93, 91, 1, 0},
-{ 3, s_1_94, -1, 1, 0},
-{ 5, s_1_95, 94, 1, 0},
-{ 4, s_1_96, -1, 1, 0},
-{ 5, s_1_97, 96, 1, 0},
-{ 5, s_1_98, 96, 1, 0},
-{ 4, s_1_99, -1, 1, 0},
-{ 4, s_1_100, -1, 1, 0},
-{ 4, s_1_101, -1, 1, 0},
-{ 3, s_1_102, -1, 1, 0},
-{ 4, s_1_103, 102, 1, 0},
-{ 4, s_1_104, 102, 1, 0},
-{ 4, s_1_105, -1, 1, 0},
-{ 4, s_1_106, -1, 1, 0},
-{ 4, s_1_107, -1, 1, 0},
-{ 2, s_1_108, -1, 1, 0},
-{ 3, s_1_109, 108, 1, 0},
-{ 4, s_1_110, 109, 1, 0},
-{ 5, s_1_111, 109, 1, 0},
-{ 5, s_1_112, 109, 1, 0},
-{ 4, s_1_113, 109, 1, 0},
-{ 5, s_1_114, 113, 1, 0},
-{ 5, s_1_115, 109, 1, 0},
-{ 4, s_1_116, 108, 1, 0},
-{ 4, s_1_117, 108, 1, 0},
-{ 4, s_1_118, 108, 1, 0},
-{ 3, s_1_119, 108, 2, 0},
-{ 6, s_1_120, 108, 1, 0},
-{ 5, s_1_121, 108, 1, 0},
-{ 3, s_1_122, 108, 1, 0},
-{ 2, s_1_123, -1, 1, 0},
-{ 3, s_1_124, 123, 1, 0},
-{ 2, s_1_125, -1, 1, 0},
-{ 3, s_1_126, 125, 1, 0},
-{ 4, s_1_127, 126, 1, 0},
-{ 3, s_1_128, 125, 1, 0},
-{ 3, s_1_129, -1, 1, 0},
-{ 6, s_1_130, 129, 1, 0},
-{ 5, s_1_131, 129, 1, 0},
-{ 5, s_1_132, -1, 1, 0},
-{ 5, s_1_133, -1, 1, 0},
-{ 5, s_1_134, -1, 1, 0},
-{ 4, s_1_135, -1, 1, 0},
-{ 3, s_1_136, -1, 1, 0},
-{ 6, s_1_137, 136, 1, 0},
-{ 5, s_1_138, 136, 1, 0},
-{ 4, s_1_139, -1, 1, 0},
-{ 3, s_1_140, -1, 1, 0},
-{ 4, s_1_141, 140, 1, 0},
-{ 2, s_1_142, -1, 1, 0},
-{ 3, s_1_143, 142, 1, 0},
-{ 5, s_1_144, 142, 1, 0},
-{ 3, s_1_145, 142, 2, 0},
-{ 6, s_1_146, 145, 1, 0},
-{ 5, s_1_147, 145, 1, 0},
-{ 6, s_1_148, 145, 1, 0},
-{ 6, s_1_149, 145, 1, 0},
-{ 6, s_1_150, 145, 1, 0},
-{ 4, s_1_151, -1, 1, 0},
-{ 4, s_1_152, -1, 1, 0},
-{ 4, s_1_153, -1, 1, 0},
-{ 4, s_1_154, -1, 1, 0},
-{ 5, s_1_155, 154, 1, 0},
-{ 5, s_1_156, 154, 1, 0},
-{ 4, s_1_157, -1, 1, 0},
-{ 2, s_1_158, -1, 1, 0},
-{ 4, s_1_159, -1, 1, 0},
-{ 5, s_1_160, 159, 1, 0},
-{ 4, s_1_161, -1, 1, 0},
-{ 3, s_1_162, -1, 1, 0},
-{ 4, s_1_163, -1, 1, 0},
-{ 2, s_1_164, -1, 1, 0},
-{ 5, s_1_165, 164, 1, 0},
-{ 3, s_1_166, 164, 1, 0},
-{ 4, s_1_167, 166, 1, 0},
-{ 2, s_1_168, -1, 1, 0},
-{ 5, s_1_169, -1, 1, 0},
-{ 2, s_1_170, -1, 1, 0},
-{ 4, s_1_171, 170, 1, 0},
-{ 4, s_1_172, 170, 1, 0},
-{ 4, s_1_173, 170, 1, 0},
-{ 4, s_1_174, -1, 1, 0},
-{ 3, s_1_175, -1, 1, 0},
-{ 2, s_1_176, -1, 1, 0},
-{ 4, s_1_177, 176, 1, 0},
-{ 5, s_1_178, 177, 1, 0},
-{ 5, s_1_179, 176, 8, 0},
-{ 5, s_1_180, 176, 1, 0},
-{ 5, s_1_181, 176, 1, 0},
-{ 3, s_1_182, -1, 1, 0},
-{ 3, s_1_183, -1, 1, 0},
-{ 4, s_1_184, 183, 1, 0},
-{ 4, s_1_185, 183, 1, 0},
-{ 4, s_1_186, -1, 1, 0},
-{ 3, s_1_187, -1, 1, 0},
-{ 2, s_1_188, -1, 1, 0},
-{ 4, s_1_189, 188, 1, 0},
-{ 2, s_1_190, -1, 1, 0},
-{ 3, s_1_191, 190, 1, 0},
-{ 3, s_1_192, 190, 1, 0},
-{ 3, s_1_193, -1, 1, 0},
-{ 4, s_1_194, 193, 1, 0},
-{ 4, s_1_195, 193, 1, 0},
-{ 4, s_1_196, 193, 1, 0},
-{ 5, s_1_197, -1, 2, 0},
-{ 5, s_1_198, -1, 1, 0},
-{ 5, s_1_199, -1, 1, 0},
-{ 4, s_1_200, -1, 1, 0},
-{ 3, s_1_201, -1, 1, 0},
-{ 2, s_1_202, -1, 1, 0},
-{ 5, s_1_203, -1, 1, 0},
-{ 3, s_1_204, -1, 1, 0},
-{ 2, s_1_205, -1, 1, 0},
-{ 2, s_1_206, -1, 1, 0},
-{ 5, s_1_207, -1, 1, 0},
-{ 5, s_1_208, -1, 1, 0},
-{ 3, s_1_209, -1, 1, 0},
-{ 4, s_1_210, 209, 1, 0},
-{ 3, s_1_211, -1, 1, 0},
-{ 3, s_1_212, -1, 1, 0},
-{ 4, s_1_213, 212, 1, 0},
-{ 2, s_1_214, -1, 4, 0},
-{ 3, s_1_215, 214, 2, 0},
-{ 6, s_1_216, 215, 1, 0},
-{ 6, s_1_217, 215, 1, 0},
-{ 5, s_1_218, 215, 1, 0},
-{ 3, s_1_219, 214, 4, 0},
-{ 4, s_1_220, 214, 4, 0},
-{ 4, s_1_221, -1, 1, 0},
-{ 5, s_1_222, 221, 1, 0},
-{ 3, s_1_223, -1, 1, 0},
-{ 3, s_1_224, -1, 1, 0},
-{ 3, s_1_225, -1, 1, 0},
-{ 4, s_1_226, -1, 1, 0},
-{ 5, s_1_227, 226, 1, 0},
-{ 5, s_1_228, -1, 1, 0},
-{ 4, s_1_229, -1, 1, 0},
-{ 5, s_1_230, 229, 1, 0},
-{ 2, s_1_231, -1, 1, 0},
-{ 3, s_1_232, 231, 1, 0},
-{ 3, s_1_233, -1, 1, 0},
-{ 2, s_1_234, -1, 1, 0},
-{ 5, s_1_235, 234, 5, 0},
-{ 4, s_1_236, 234, 1, 0},
-{ 5, s_1_237, 236, 1, 0},
-{ 3, s_1_238, 234, 1, 0},
-{ 6, s_1_239, 234, 1, 0},
-{ 3, s_1_240, 234, 1, 0},
-{ 4, s_1_241, 234, 1, 0},
-{ 8, s_1_242, 241, 6, 0},
-{ 3, s_1_243, 234, 1, 0},
-{ 2, s_1_244, -1, 1, 0},
-{ 4, s_1_245, 244, 1, 0},
-{ 2, s_1_246, -1, 1, 0},
-{ 3, s_1_247, 246, 1, 0},
-{ 5, s_1_248, 247, 9, 0},
-{ 4, s_1_249, 247, 1, 0},
-{ 4, s_1_250, 247, 1, 0},
-{ 3, s_1_251, 246, 1, 0},
-{ 4, s_1_252, 246, 1, 0},
-{ 3, s_1_253, 246, 1, 0},
-{ 3, s_1_254, -1, 1, 0},
-{ 2, s_1_255, -1, 1, 0},
-{ 3, s_1_256, 255, 1, 0},
-{ 3, s_1_257, 255, 1, 0},
-{ 3, s_1_258, -1, 1, 0},
-{ 3, s_1_259, -1, 1, 0},
-{ 6, s_1_260, 259, 1, 0},
-{ 3, s_1_261, -1, 1, 0},
-{ 2, s_1_262, -1, 1, 0},
-{ 2, s_1_263, -1, 1, 0},
-{ 3, s_1_264, 263, 1, 0},
-{ 5, s_1_265, 263, 1, 0},
-{ 5, s_1_266, 263, 7, 0},
-{ 4, s_1_267, 263, 1, 0},
-{ 4, s_1_268, 263, 1, 0},
-{ 3, s_1_269, 263, 1, 0},
-{ 4, s_1_270, 263, 1, 0},
-{ 2, s_1_271, -1, 2, 0},
-{ 3, s_1_272, 271, 1, 0},
-{ 2, s_1_273, -1, 1, 0},
-{ 3, s_1_274, -1, 1, 0},
-{ 2, s_1_275, -1, 1, 0},
-{ 5, s_1_276, 275, 1, 0},
-{ 4, s_1_277, 275, 1, 0},
-{ 4, s_1_278, -1, 1, 0},
-{ 4, s_1_279, -1, 2, 0},
-{ 4, s_1_280, -1, 1, 0},
-{ 3, s_1_281, -1, 1, 0},
-{ 2, s_1_282, -1, 1, 0},
-{ 4, s_1_283, 282, 4, 0},
-{ 5, s_1_284, 282, 1, 0},
-{ 4, s_1_285, 282, 1, 0},
-{ 3, s_1_286, -1, 1, 0},
-{ 2, s_1_287, -1, 1, 0},
-{ 3, s_1_288, 287, 1, 0},
-{ 6, s_1_289, 288, 1, 0},
-{ 1, s_1_290, -1, 1, 0},
-{ 2, s_1_291, 290, 1, 0},
-{ 4, s_1_292, 290, 1, 0},
-{ 2, s_1_293, 290, 1, 0},
-{ 5, s_1_294, 293, 1, 0}
+static const struct among a_1[295] = {
+{ 3, s_1_0, 0, 1, 0},
+{ 4, s_1_1, -1, 1, 0},
+{ 4, s_1_2, 0, 1, 0},
+{ 5, s_1_3, 0, 1, 0},
+{ 5, s_1_4, 0, 1, 0},
+{ 5, s_1_5, 0, 1, 0},
+{ 5, s_1_6, 0, 1, 0},
+{ 6, s_1_7, -1, 1, 0},
+{ 6, s_1_8, -2, 1, 0},
+{ 5, s_1_9, 0, 1, 0},
+{ 5, s_1_10, 0, 1, 0},
+{ 6, s_1_11, -1, 1, 0},
+{ 5, s_1_12, 0, 1, 0},
+{ 4, s_1_13, 0, 1, 0},
+{ 5, s_1_14, 0, 1, 0},
+{ 3, s_1_15, 0, 1, 0},
+{ 4, s_1_16, -1, 1, 0},
+{ 6, s_1_17, -2, 1, 0},
+{ 4, s_1_18, -3, 1, 0},
+{ 5, s_1_19, -1, 1, 0},
+{ 3, s_1_20, 0, 1, 0},
+{ 6, s_1_21, 0, 1, 0},
+{ 3, s_1_22, 0, 1, 0},
+{ 5, s_1_23, -1, 1, 0},
+{ 5, s_1_24, -2, 1, 0},
+{ 5, s_1_25, -3, 1, 0},
+{ 5, s_1_26, 0, 1, 0},
+{ 2, s_1_27, 0, 1, 0},
+{ 4, s_1_28, -1, 1, 0},
+{ 4, s_1_29, 0, 1, 0},
+{ 5, s_1_30, 0, 1, 0},
+{ 6, s_1_31, -1, 1, 0},
+{ 6, s_1_32, 0, 1, 0},
+{ 6, s_1_33, 0, 1, 0},
+{ 4, s_1_34, 0, 1, 0},
+{ 4, s_1_35, 0, 1, 0},
+{ 5, s_1_36, -1, 1, 0},
+{ 5, s_1_37, -2, 1, 0},
+{ 5, s_1_38, 0, 1, 0},
+{ 4, s_1_39, 0, 1, 0},
+{ 3, s_1_40, 0, 1, 0},
+{ 5, s_1_41, -1, 1, 0},
+{ 3, s_1_42, 0, 1, 0},
+{ 4, s_1_43, -1, 1, 0},
+{ 4, s_1_44, 0, 1, 0},
+{ 5, s_1_45, -1, 1, 0},
+{ 5, s_1_46, -2, 1, 0},
+{ 5, s_1_47, -3, 1, 0},
+{ 4, s_1_48, 0, 1, 0},
+{ 5, s_1_49, -1, 1, 0},
+{ 5, s_1_50, -2, 1, 0},
+{ 6, s_1_51, 0, 2, 0},
+{ 6, s_1_52, 0, 1, 0},
+{ 6, s_1_53, 0, 1, 0},
+{ 5, s_1_54, 0, 1, 0},
+{ 4, s_1_55, 0, 1, 0},
+{ 3, s_1_56, 0, 1, 0},
+{ 4, s_1_57, 0, 1, 0},
+{ 5, s_1_58, 0, 1, 0},
+{ 6, s_1_59, 0, 1, 0},
+{ 2, s_1_60, 0, 1, 0},
+{ 4, s_1_61, -1, 3, 0},
+{ 5, s_1_62, -2, -1, 0},
+{ 3, s_1_63, -3, 1, 0},
+{ 3, s_1_64, -4, 1, 0},
+{ 3, s_1_65, -5, 1, 0},
+{ 6, s_1_66, 0, 1, 0},
+{ 4, s_1_67, 0, 1, 0},
+{ 5, s_1_68, 0, 1, 0},
+{ 5, s_1_69, 0, 1, 0},
+{ 4, s_1_70, 0, 1, 0},
+{ 3, s_1_71, 0, 1, 0},
+{ 2, s_1_72, 0, 1, 0},
+{ 4, s_1_73, -1, 1, 0},
+{ 3, s_1_74, -2, 1, 0},
+{ 7, s_1_75, -1, 1, 0},
+{ 7, s_1_76, -2, 1, 0},
+{ 6, s_1_77, -3, 1, 0},
+{ 5, s_1_78, -6, 1, 0},
+{ 6, s_1_79, -1, 1, 0},
+{ 4, s_1_80, -8, 1, 0},
+{ 4, s_1_81, -9, 1, 0},
+{ 5, s_1_82, -10, 1, 0},
+{ 3, s_1_83, -11, 1, 0},
+{ 4, s_1_84, -1, 1, 0},
+{ 5, s_1_85, -2, 1, 0},
+{ 6, s_1_86, -1, 1, 0},
+{ 5, s_1_87, 0, 1, 0},
+{ 6, s_1_88, -1, 1, 0},
+{ 4, s_1_89, 0, 1, 0},
+{ 4, s_1_90, 0, 1, 0},
+{ 3, s_1_91, 0, 1, 0},
+{ 5, s_1_92, -1, 1, 0},
+{ 4, s_1_93, -2, 1, 0},
+{ 3, s_1_94, 0, 1, 0},
+{ 5, s_1_95, -1, 1, 0},
+{ 4, s_1_96, 0, 1, 0},
+{ 5, s_1_97, -1, 1, 0},
+{ 5, s_1_98, -2, 1, 0},
+{ 4, s_1_99, 0, 1, 0},
+{ 4, s_1_100, 0, 1, 0},
+{ 4, s_1_101, 0, 1, 0},
+{ 3, s_1_102, 0, 1, 0},
+{ 4, s_1_103, -1, 1, 0},
+{ 4, s_1_104, -2, 1, 0},
+{ 4, s_1_105, 0, 1, 0},
+{ 4, s_1_106, 0, 1, 0},
+{ 4, s_1_107, 0, 1, 0},
+{ 2, s_1_108, 0, 1, 0},
+{ 3, s_1_109, -1, 1, 0},
+{ 4, s_1_110, -1, 1, 0},
+{ 5, s_1_111, -2, 1, 0},
+{ 5, s_1_112, -3, 1, 0},
+{ 4, s_1_113, -4, 1, 0},
+{ 5, s_1_114, -1, 1, 0},
+{ 5, s_1_115, -6, 1, 0},
+{ 4, s_1_116, -8, 1, 0},
+{ 4, s_1_117, -9, 1, 0},
+{ 4, s_1_118, -10, 1, 0},
+{ 3, s_1_119, -11, 2, 0},
+{ 6, s_1_120, -12, 1, 0},
+{ 5, s_1_121, -13, 1, 0},
+{ 3, s_1_122, -14, 1, 0},
+{ 2, s_1_123, 0, 1, 0},
+{ 3, s_1_124, -1, 1, 0},
+{ 2, s_1_125, 0, 1, 0},
+{ 3, s_1_126, -1, 1, 0},
+{ 4, s_1_127, -1, 1, 0},
+{ 3, s_1_128, -3, 1, 0},
+{ 3, s_1_129, 0, 1, 0},
+{ 6, s_1_130, -1, 1, 0},
+{ 5, s_1_131, -2, 1, 0},
+{ 5, s_1_132, 0, 1, 0},
+{ 5, s_1_133, 0, 1, 0},
+{ 5, s_1_134, 0, 1, 0},
+{ 4, s_1_135, 0, 1, 0},
+{ 3, s_1_136, 0, 1, 0},
+{ 6, s_1_137, -1, 1, 0},
+{ 5, s_1_138, -2, 1, 0},
+{ 4, s_1_139, 0, 1, 0},
+{ 3, s_1_140, 0, 1, 0},
+{ 4, s_1_141, -1, 1, 0},
+{ 2, s_1_142, 0, 1, 0},
+{ 3, s_1_143, -1, 1, 0},
+{ 5, s_1_144, -2, 1, 0},
+{ 3, s_1_145, -3, 2, 0},
+{ 6, s_1_146, -1, 1, 0},
+{ 5, s_1_147, -2, 1, 0},
+{ 6, s_1_148, -3, 1, 0},
+{ 6, s_1_149, -4, 1, 0},
+{ 6, s_1_150, -5, 1, 0},
+{ 4, s_1_151, 0, 1, 0},
+{ 4, s_1_152, 0, 1, 0},
+{ 4, s_1_153, 0, 1, 0},
+{ 4, s_1_154, 0, 1, 0},
+{ 5, s_1_155, -1, 1, 0},
+{ 5, s_1_156, -2, 1, 0},
+{ 4, s_1_157, 0, 1, 0},
+{ 2, s_1_158, 0, 1, 0},
+{ 4, s_1_159, 0, 1, 0},
+{ 5, s_1_160, -1, 1, 0},
+{ 4, s_1_161, 0, 1, 0},
+{ 3, s_1_162, 0, 1, 0},
+{ 4, s_1_163, 0, 1, 0},
+{ 2, s_1_164, 0, 1, 0},
+{ 5, s_1_165, -1, 1, 0},
+{ 3, s_1_166, -2, 1, 0},
+{ 4, s_1_167, -1, 1, 0},
+{ 2, s_1_168, 0, 1, 0},
+{ 5, s_1_169, 0, 1, 0},
+{ 2, s_1_170, 0, 1, 0},
+{ 4, s_1_171, -1, 1, 0},
+{ 4, s_1_172, -2, 1, 0},
+{ 4, s_1_173, -3, 1, 0},
+{ 4, s_1_174, 0, 1, 0},
+{ 3, s_1_175, 0, 1, 0},
+{ 2, s_1_176, 0, 1, 0},
+{ 4, s_1_177, -1, 1, 0},
+{ 5, s_1_178, -1, 1, 0},
+{ 5, s_1_179, -3, -1, 0},
+{ 5, s_1_180, -4, 1, 0},
+{ 5, s_1_181, -5, 1, 0},
+{ 3, s_1_182, 0, 1, 0},
+{ 3, s_1_183, 0, 1, 0},
+{ 4, s_1_184, -1, 1, 0},
+{ 4, s_1_185, -2, 1, 0},
+{ 4, s_1_186, 0, 1, 0},
+{ 3, s_1_187, 0, 1, 0},
+{ 2, s_1_188, 0, 1, 0},
+{ 4, s_1_189, -1, 1, 0},
+{ 2, s_1_190, 0, 1, 0},
+{ 3, s_1_191, -1, 1, 0},
+{ 3, s_1_192, -2, 1, 0},
+{ 3, s_1_193, 0, 1, 0},
+{ 4, s_1_194, -1, 1, 0},
+{ 4, s_1_195, -2, 1, 0},
+{ 4, s_1_196, -3, 1, 0},
+{ 5, s_1_197, 0, 2, 0},
+{ 5, s_1_198, 0, 1, 0},
+{ 5, s_1_199, 0, 1, 0},
+{ 4, s_1_200, 0, 1, 0},
+{ 3, s_1_201, 0, 1, 0},
+{ 2, s_1_202, 0, 1, 0},
+{ 5, s_1_203, 0, 1, 0},
+{ 3, s_1_204, 0, 1, 0},
+{ 2, s_1_205, 0, 1, 0},
+{ 2, s_1_206, 0, 1, 0},
+{ 5, s_1_207, 0, 1, 0},
+{ 5, s_1_208, 0, 1, 0},
+{ 3, s_1_209, 0, 1, 0},
+{ 4, s_1_210, -1, 1, 0},
+{ 3, s_1_211, 0, 1, 0},
+{ 3, s_1_212, 0, 1, 0},
+{ 4, s_1_213, -1, 1, 0},
+{ 2, s_1_214, 0, 4, 0},
+{ 3, s_1_215, -1, 2, 0},
+{ 6, s_1_216, -1, 1, 0},
+{ 6, s_1_217, -2, 1, 0},
+{ 5, s_1_218, -3, 1, 0},
+{ 3, s_1_219, -5, 4, 0},
+{ 4, s_1_220, -6, 4, 0},
+{ 4, s_1_221, 0, 1, 0},
+{ 5, s_1_222, -1, 1, 0},
+{ 3, s_1_223, 0, 1, 0},
+{ 3, s_1_224, 0, 1, 0},
+{ 3, s_1_225, 0, 1, 0},
+{ 4, s_1_226, 0, 1, 0},
+{ 5, s_1_227, -1, 1, 0},
+{ 5, s_1_228, 0, 1, 0},
+{ 4, s_1_229, 0, 1, 0},
+{ 5, s_1_230, -1, 1, 0},
+{ 2, s_1_231, 0, 1, 0},
+{ 3, s_1_232, -1, 1, 0},
+{ 3, s_1_233, 0, 1, 0},
+{ 2, s_1_234, 0, 1, 0},
+{ 5, s_1_235, -1, 5, 0},
+{ 4, s_1_236, -2, 1, 0},
+{ 5, s_1_237, -1, 1, 0},
+{ 3, s_1_238, -4, 1, 0},
+{ 6, s_1_239, -5, 1, 0},
+{ 3, s_1_240, -6, 1, 0},
+{ 4, s_1_241, -7, 1, 0},
+{ 8, s_1_242, -1, 6, 0},
+{ 3, s_1_243, -9, 1, 0},
+{ 2, s_1_244, 0, 1, 0},
+{ 4, s_1_245, -1, 1, 0},
+{ 2, s_1_246, 0, 1, 0},
+{ 3, s_1_247, -1, 1, 0},
+{ 5, s_1_248, -1, -1, 0},
+{ 4, s_1_249, -2, 1, 0},
+{ 4, s_1_250, -3, 1, 0},
+{ 3, s_1_251, -5, 1, 0},
+{ 4, s_1_252, -6, 1, 0},
+{ 3, s_1_253, -7, 1, 0},
+{ 3, s_1_254, 0, 1, 0},
+{ 2, s_1_255, 0, 1, 0},
+{ 3, s_1_256, -1, 1, 0},
+{ 3, s_1_257, -2, 1, 0},
+{ 3, s_1_258, 0, 1, 0},
+{ 3, s_1_259, 0, 1, 0},
+{ 6, s_1_260, -1, 1, 0},
+{ 3, s_1_261, 0, 1, 0},
+{ 2, s_1_262, 0, 1, 0},
+{ 2, s_1_263, 0, 1, 0},
+{ 3, s_1_264, -1, 1, 0},
+{ 5, s_1_265, -2, 1, 0},
+{ 5, s_1_266, -3, -1, 0},
+{ 4, s_1_267, -4, 1, 0},
+{ 4, s_1_268, -5, 1, 0},
+{ 3, s_1_269, -6, 1, 0},
+{ 4, s_1_270, -7, 1, 0},
+{ 2, s_1_271, 0, 2, 0},
+{ 3, s_1_272, -1, 1, 0},
+{ 2, s_1_273, 0, 1, 0},
+{ 3, s_1_274, 0, 1, 0},
+{ 2, s_1_275, 0, 1, 0},
+{ 5, s_1_276, -1, 1, 0},
+{ 4, s_1_277, -2, 1, 0},
+{ 4, s_1_278, 0, 1, 0},
+{ 4, s_1_279, 0, 2, 0},
+{ 4, s_1_280, 0, 1, 0},
+{ 3, s_1_281, 0, 1, 0},
+{ 2, s_1_282, 0, 1, 0},
+{ 4, s_1_283, -1, 4, 0},
+{ 5, s_1_284, -2, 1, 0},
+{ 4, s_1_285, -3, 1, 0},
+{ 3, s_1_286, 0, 1, 0},
+{ 2, s_1_287, 0, 1, 0},
+{ 3, s_1_288, -1, 1, 0},
+{ 6, s_1_289, -1, 1, 0},
+{ 1, s_1_290, 0, 1, 0},
+{ 2, s_1_291, -1, 1, 0},
+{ 4, s_1_292, -2, 1, 0},
+{ 2, s_1_293, -3, 1, 0},
+{ 5, s_1_294, -1, 1, 0}
 };
 
 static const symbol s_2_0[4] = { 'z', 'l', 'e', 'a' };
@@ -865,181 +869,151 @@ static const symbol s_2_15[2] = { 'g', 'o' };
 static const symbol s_2_16[2] = { 'r', 'o' };
 static const symbol s_2_17[3] = { 'e', 'r', 'o' };
 static const symbol s_2_18[2] = { 't', 'o' };
-
-static const struct among a_2[19] =
-{
-{ 4, s_2_0, -1, 2, 0},
-{ 5, s_2_1, -1, 1, 0},
-{ 2, s_2_2, -1, 1, 0},
-{ 3, s_2_3, -1, 1, 0},
-{ 4, s_2_4, -1, 1, 0},
-{ 4, s_2_5, -1, 1, 0},
-{ 4, s_2_6, -1, 1, 0},
-{ 4, s_2_7, -1, 1, 0},
-{ 2, s_2_8, -1, 1, 0},
-{ 2, s_2_9, -1, 1, 0},
-{ 2, s_2_10, -1, 1, 0},
-{ 5, s_2_11, 10, 1, 0},
-{ 3, s_2_12, 10, 1, 0},
-{ 5, s_2_13, 12, 1, 0},
-{ 4, s_2_14, 10, 1, 0},
-{ 2, s_2_15, -1, 1, 0},
-{ 2, s_2_16, -1, 1, 0},
-{ 3, s_2_17, 16, 1, 0},
-{ 2, s_2_18, -1, 1, 0}
+static const struct among a_2[19] = {
+{ 4, s_2_0, 0, 2, 0},
+{ 5, s_2_1, 0, 1, 0},
+{ 2, s_2_2, 0, 1, 0},
+{ 3, s_2_3, 0, 1, 0},
+{ 4, s_2_4, 0, 1, 0},
+{ 4, s_2_5, 0, 1, 0},
+{ 4, s_2_6, 0, 1, 0},
+{ 4, s_2_7, 0, 1, 0},
+{ 2, s_2_8, 0, 1, 0},
+{ 2, s_2_9, 0, 1, 0},
+{ 2, s_2_10, 0, 1, 0},
+{ 5, s_2_11, -1, 1, 0},
+{ 3, s_2_12, -2, 1, 0},
+{ 5, s_2_13, -1, 1, 0},
+{ 4, s_2_14, -4, 1, 0},
+{ 2, s_2_15, 0, 1, 0},
+{ 2, s_2_16, 0, 1, 0},
+{ 3, s_2_17, -1, 1, 0},
+{ 2, s_2_18, 0, 1, 0}
 };
 
 static const unsigned char g_v[] = { 17, 65, 16 };
 
-static const symbol s_0[] = { 'a', 't', 's', 'e', 'd', 'e', 'n' };
-static const symbol s_1[] = { 'a', 'r', 'a', 'b', 'e', 'r', 'a' };
-static const symbol s_2[] = { 'b', 'a', 'd', 'i', 't', 'u' };
-static const symbol s_3[] = { 'j', 'o', 'k' };
-static const symbol s_4[] = { 't', 'r', 'a' };
-static const symbol s_5[] = { 'm', 'i', 'n', 'u', 't', 'u' };
-static const symbol s_6[] = { 'z', 'e', 'h', 'a', 'r' };
-static const symbol s_7[] = { 'g', 'e', 'l', 'd', 'i' };
-static const symbol s_8[] = { 'i', 'g', 'a', 'r', 'o' };
-static const symbol s_9[] = { 'a', 'u', 'r', 'k', 'a' };
-static const symbol s_10[] = { 'z' };
-
 static int r_mark_regions(struct SN_env * z) {
-    z->I[2] = z->l;
-    z->I[1] = z->l;
-    z->I[0] = z->l;
-    {   int c1 = z->c;
-        {   int c2 = z->c;
-            if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2;
-            {   int c3 = z->c;
-                if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab4;
-
+    ((SN_local *)z)->i_pV = z->l;
+    ((SN_local *)z)->i_p1 = z->l;
+    ((SN_local *)z)->i_p2 = z->l;
+    {
+        int v_1 = z->c;
+        do {
+            int v_2 = z->c;
+            if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab1;
+            do {
+                int v_3 = z->c;
+                if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab2;
                 {
                     int ret = out_grouping_U(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab4;
+                    if (ret < 0) goto lab2;
                     z->c += ret;
                 }
-                goto lab3;
-            lab4:
-                z->c = c3;
-                if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab2;
-
+                break;
+            lab2:
+                z->c = v_3;
+                if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab1;
                 {
                     int ret = in_grouping_U(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab2;
+                    if (ret < 0) goto lab1;
                     z->c += ret;
                 }
-            }
-        lab3:
-            goto lab1;
-        lab2:
-            z->c = c2;
+            } while (0);
+            break;
+        lab1:
+            z->c = v_2;
             if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab0;
-            {   int c4 = z->c;
-                if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab6;
-
+            do {
+                int v_4 = z->c;
+                if (out_grouping_U(z, g_v, 97, 117, 0)) goto lab3;
                 {
                     int ret = out_grouping_U(z, g_v, 97, 117, 1);
-                    if (ret < 0) goto lab6;
+                    if (ret < 0) goto lab3;
                     z->c += ret;
                 }
-                goto lab5;
-            lab6:
-                z->c = c4;
+                break;
+            lab3:
+                z->c = v_4;
                 if (in_grouping_U(z, g_v, 97, 117, 0)) goto lab0;
-                {   int ret = skip_utf8(z->p, z->c, z->l, 1);
+                {
+                    int ret = skip_utf8(z->p, z->c, z->l, 1);
                     if (ret < 0) goto lab0;
                     z->c = ret;
                 }
-            }
-        lab5:
-            ;
-        }
-    lab1:
-        z->I[2] = z->c;
+            } while (0);
+        } while (0);
+        ((SN_local *)z)->i_pV = z->c;
     lab0:
-        z->c = c1;
+        z->c = v_1;
     }
-    {   int c5 = z->c;
-
+    {
+        int v_5 = z->c;
         {
             int ret = out_grouping_U(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping_U(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[1] = z->c;
-
+        ((SN_local *)z)->i_p1 = z->c;
         {
             int ret = out_grouping_U(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-
         {
             int ret = in_grouping_U(z, g_v, 97, 117, 1);
-            if (ret < 0) goto lab7;
+            if (ret < 0) goto lab4;
             z->c += ret;
         }
-        z->I[0] = z->c;
-    lab7:
-        z->c = c5;
+        ((SN_local *)z)->i_p2 = z->c;
+    lab4:
+        z->c = v_5;
     }
     return 1;
 }
 
 static int r_RV(struct SN_env * z) {
-    return z->I[2] <= z->c;
+    return ((SN_local *)z)->i_pV <= z->c;
 }
 
 static int r_R2(struct SN_env * z) {
-    return z->I[0] <= z->c;
+    return ((SN_local *)z)->i_p2 <= z->c;
 }
 
 static int r_R1(struct SN_env * z) {
-    return z->I[1] <= z->c;
+    return ((SN_local *)z)->i_p1 <= z->c;
 }
 
 static int r_aditzak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((70566434 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_0, 109);
+    among_var = find_among_b(z, a_0, 109, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 3:
-            {   int ret = slice_from_s(z, 7, s_0);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 4:
-            {   int ret = slice_from_s(z, 7, s_1);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 5:
-            {   int ret = slice_from_s(z, 6, s_2);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
@@ -1051,66 +1025,55 @@ static int r_izenak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((71162402 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_1, 295);
+    among_var = find_among_b(z, a_1, 295, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = r_R2(z);
+            {
+                int ret = r_R2(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 3:
-            {   int ret = slice_from_s(z, 3, s_3);
+            {
+                int ret = slice_from_s(z, 3, s_0);
                 if (ret < 0) return ret;
             }
             break;
         case 4:
-            {   int ret = r_R1(z);
+            {
+                int ret = r_R1(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 5:
-            {   int ret = slice_from_s(z, 3, s_4);
+            {
+                int ret = slice_from_s(z, 3, s_1);
                 if (ret < 0) return ret;
             }
             break;
         case 6:
-            {   int ret = slice_from_s(z, 6, s_5);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 7:
-            {   int ret = slice_from_s(z, 5, s_6);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 8:
-            {   int ret = slice_from_s(z, 5, s_7);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 9:
-            {   int ret = slice_from_s(z, 5, s_8);
-                if (ret < 0) return ret;
-            }
-            break;
-        case 10:
-            {   int ret = slice_from_s(z, 5, s_9);
+            {
+                int ret = slice_from_s(z, 6, s_2);
                 if (ret < 0) return ret;
             }
             break;
@@ -1122,20 +1085,23 @@ static int r_adjetiboak(struct SN_env * z) {
     int among_var;
     z->ket = z->c;
     if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((35362 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
-    among_var = find_among_b(z, a_2, 19);
+    among_var = find_among_b(z, a_2, 19, 0);
     if (!among_var) return 0;
     z->bra = z->c;
     switch (among_var) {
         case 1:
-            {   int ret = r_RV(z);
+            {
+                int ret = r_RV(z);
                 if (ret <= 0) return ret;
             }
-            {   int ret = slice_del(z);
+            {
+                int ret = slice_del(z);
                 if (ret < 0) return ret;
             }
             break;
         case 2:
-            {   int ret = slice_from_s(z, 1, s_10);
+            {
+                int ret = slice_from_s(z, 1, s_3);
                 if (ret < 0) return ret;
             }
             break;
@@ -1144,45 +1110,58 @@ static int r_adjetiboak(struct SN_env * z) {
 }
 
 extern int basque_UTF_8_stem(struct SN_env * z) {
-
-    {   int ret = r_mark_regions(z);
+    {
+        int ret = r_mark_regions(z);
         if (ret < 0) return ret;
     }
     z->lb = z->c; z->c = z->l;
-
-    while(1) {
-        int m1 = z->l - z->c; (void)m1;
-        {   int ret = r_aditzak(z);
+    while (1) {
+        int v_1 = z->l - z->c;
+        {
+            int ret = r_aditzak(z);
             if (ret == 0) goto lab0;
             if (ret < 0) return ret;
         }
         continue;
     lab0:
-        z->c = z->l - m1;
+        z->c = z->l - v_1;
         break;
     }
-    while(1) {
-        int m2 = z->l - z->c; (void)m2;
-        {   int ret = r_izenak(z);
+    while (1) {
+        int v_2 = z->l - z->c;
+        {
+            int ret = r_izenak(z);
             if (ret == 0) goto lab1;
             if (ret < 0) return ret;
         }
         continue;
     lab1:
-        z->c = z->l - m2;
+        z->c = z->l - v_2;
         break;
     }
-    {   int m3 = z->l - z->c; (void)m3;
-        {   int ret = r_adjetiboak(z);
+    {
+        int v_3 = z->l - z->c;
+        {
+            int ret = r_adjetiboak(z);
             if (ret < 0) return ret;
         }
-        z->c = z->l - m3;
+        z->c = z->l - v_3;
     }
     z->c = z->lb;
     return 1;
 }
 
-extern struct SN_env * basque_UTF_8_create_env(void) { return SN_create_env(0, 3); }
+extern struct SN_env * basque_UTF_8_create_env(void) {
+    struct SN_env * z = SN_new_env(sizeof(SN_local));
+    if (z) {
+        ((SN_local *)z)->i_p2 = 0;
+        ((SN_local *)z)->i_p1 = 0;
+        ((SN_local *)z)->i_pV = 0;
+    }
+    return z;
+}
 
-extern void basque_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
+extern void basque_UTF_8_close_env(struct SN_env * z) {
+    SN_delete_env(z);
+}
 
index d261407883b150db7f36e386458ff1f5eca37332..8b363e3ea01d9e70272bf7a2164559114ef78a21 100644 (file)
@@ -1,6 +1,18 @@
-/* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
+/* Generated from catalan.sbl by Snowball 3.0.0 - https://snowballstem.org/ */
 
-#include "header.h"
+#include "stem_UTF_8_catalan.h"
+
+#include <stddef.h>
+
+#include "snowball_runtime.h"
+
+struct SN_local {
+    struct SN_env z;
+    int i_p2;
+    int i_p1;
+};
+
+typedef struct SN_local SN_local;
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,6 +21,7 @@ extern int catalan_UTF_8_stem(struct SN_env * z);
 #ifdef __cplusplus
 }
 #endif
+
 static int r_residual_suffix(struct SN_env * z);
 static int r_verb_suffix(struct SN_env * z);
 static int r_standard_suffix(struct SN_env * z);
@@ -17,18 +30,18 @@ static int r_R2(struct SN_env * z);
 static int r_R1(struct SN_env * z);
 static int r_mark_regions(struct SN_env * z);
 static int r_cleaning(struct SN_env * z);
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern struct SN_env * catalan_UTF_8_create_env(void);
-extern void catalan_UTF_8_close_env(struct SN_env * z);
 
+static const symbol s_0[] = { 'a' };
+static const symbol s_1[] = { 'e' };
+static const symbol s_2[] = { 'i' };
+static const symbol s_3[] = { 'o' };
+static const symbol s_4[] = { 'u' };
+static const symbol s_5[] = { '.' };
+static const symbol s_6[] = { 'l', 'o', 'g' };
+static const symbol s_7[] = { 'i', 'c' };
+static const symbol s_8[] = { 'c' };
+static const symbol s_9[] = { 'i', 'c' };
 
-#ifdef __cplusplus
-}
-#endif
 static const symbol s_0_1[2] = { 0xC2, 0xB7 };
 static const symbol s_0_2[2] = { 0xC3, 0xA0 };
 static const symbol s_0_3[2] = { 0xC3, 0xA1 };
@@ -41,22 +54,20 @@ static const symbol s_0_9[2] = { 0xC3, 0xB2 };
 static const symbol s_0_10[2] = { 0xC3, 0xB3 };
 static const symbol s_0_11[2] = { 0xC3, 0xBA };
 static const symbol s_0_12[2] = { 0xC3, 0xBC };
-
-static const struct among a_0[13] =
-{
-{ 0, 0, -1, 7, 0},
-{ 2, s_0_1, 0, 6, 0},
-{ 2, s_0_2, 0, 1, 0},
-{ 2, s_0_3, 0, 1, 0},
-{ 2, s_0_4, 0, 2, 0},
-{ 2, s_0_5, 0, 2, 0},
-{ 2, s_0_6, 0, 3, 0},
-{ 2, s_0_7, 0, 3, 0},
-{ 2, s_0_8, 0, 3, 0},
-{ 2, s_0_9, 0, 4, 0},
-{ 2, s_0_10, 0, 4, 0},
-{ 2, s_0_11, 0, 5, 0},
-{ 2, s_0_12, 0, 5, 0}
+static const struct among a_0[13] = {
+{ 0, 0, 0, 7, 0},
+{ 2, s_0_1, -1, 6, 0},
+{ 2, s_0_2, -2, 1, 0},
+{ 2, s_0_3, -3, 1, 0},
+{ 2, s_0_4, -4, 2, 0},
+{ 2, s_0_5, -5, 2, 0},
+{ 2, s_0_6, -6, 3, 0},
+{ 2, s_0_7, -7, 3, 0},
+{ 2, s_0_8, -8, 3, 0},
+{ 2, s_0_9, -9, 4, 0},
+{ 2, s_0_10, -10, 4, 0},
+{ 2, s_0_11, -11, 5, 0},
+{ 2, s_0_12, -12, 5, 0}
 };
 
 static const symbol s_1_0[2] = { 'l', 'a' };
@@ -98,48 +109,46 @@ static const symbol s_1_35[3] = { 'v', 'o', 's' };
 static const symbol s_1_36[2] = { 'u', 's' };
 static const symbol s_1_37[3] = { '-', 'u', 's' };
 static const symbol s_1_38[2] = { '\'', 't' };
-
-static const struct among a_1[39] =
-{
-{ 2, s_1_0, -1, 1, 0},
-{ 3, s_1_1, 0, 1, 0},
-{ 4, s_1_2, 0, 1, 0},
-{ 2, s_1_3, -1, 1, 0},
-{ 2, s_1_4, -1, 1, 0},
-{ 3, s_1_5, 4, 1, 0},
-{ 2, s_1_6, -1, 1, 0},
-{ 3, s_1_7, -1, 1, 0},
-{ 2, s_1_8, -1, 1, 0},
-{ 3, s_1_9, 8, 1, 0},
-{ 2, s_1_10, -1, 1, 0},
-{ 3, s_1_11, 10, 1, 0},
-{ 2, s_1_12, -1, 1, 0},
-{ 2, s_1_13, -1, 1, 0},
-{ 2, s_1_14, -1, 1, 0},
-{ 2, s_1_15, -1, 1, 0},
-{ 2, s_1_16, -1, 1, 0},
-{ 2, s_1_17, -1, 1, 0},
-{ 3, s_1_18, 17, 1, 0},
-{ 2, s_1_19, -1, 1, 0},
-{ 4, s_1_20, 19, 1, 0},
-{ 2, s_1_21, -1, 1, 0},
-{ 3, s_1_22, -1, 1, 0},
-{ 5, s_1_23, 22, 1, 0},
-{ 3, s_1_24, -1, 1, 0},
-{ 4, s_1_25, 24, 1, 0},
-{ 3, s_1_26, -1, 1, 0},
-{ 3, s_1_27, -1, 1, 0},
-{ 3, s_1_28, -1, 1, 0},
-{ 3, s_1_29, -1, 1, 0},
-{ 3, s_1_30, -1, 1, 0},
-{ 3, s_1_31, -1, 1, 0},
-{ 5, s_1_32, 31, 1, 0},
-{ 3, s_1_33, -1, 1, 0},
-{ 4, s_1_34, 33, 1, 0},
-{ 3, s_1_35, -1, 1, 0},
-{ 2, s_1_36, -1, 1, 0},
-{ 3, s_1_37, 36, 1, 0},
-{ 2, s_1_38, -1, 1, 0}
+static const struct among a_1[39] = {
+{ 2, s_1_0, 0, 1, 0},
+{ 3, s_1_1, -1, 1, 0},
+{ 4, s_1_2, -2, 1, 0},
+{ 2, s_1_3, 0, 1, 0},
+{ 2, s_1_4, 0, 1, 0},
+{ 3, s_1_5, -1, 1, 0},
+{ 2, s_1_6, 0, 1, 0},
+{ 3, s_1_7, 0, 1, 0},
+{ 2, s_1_8, 0, 1, 0},
+{ 3, s_1_9, -1, 1, 0},
+{ 2, s_1_10, 0, 1, 0},
+{ 3, s_1_11, -1, 1, 0},
+{ 2, s_1_12, 0, 1, 0},
+{ 2, s_1_13, 0, 1, 0},
+{ 2, s_1_14, 0, 1, 0},
+{ 2, s_1_15, 0, 1, 0},
+{ 2, s_1_16, 0, 1, 0},
+{ 2, s_1_17, 0, 1, 0},
+{ 3, s_1_18, -1, 1, 0},
+{ 2, s_1_19, 0, 1, 0},
+{ 4, s_1_20, -1, 1, 0},
+{ 2, s_1_21, 0, 1, 0},
+{ 3, s_1_22, 0, 1, 0},
+{ 5, s_1_23, -1, 1, 0},
+{ 3, s_1_24, 0, 1, 0},
+{ 4, s_1_25, -1, 1, 0},
+{ 3, s_1_26, 0, 1, 0},
+{ 3, s_1_27, 0, 1, 0},
+{ 3, s_1_28, 0, 1, 0},
+{ 3, s_1_29, 0, 1, 0},
+{ 3, s_1_30, 0, 1, 0},
+{ 3, s_1_31, 0, 1, 0},
+{ 5, s_1_32, -1, 1, 0},
+{ 3, s_1_33, 0, 1, 0},
+{ 4, s_1_34, -1, 1, 0},
+{ 3, s_1_35, 0, 1, 0},
+{ 2, s_1_36, 0, 1, 0},
+{ 3, s_1_37, -1, 1, 0},
+{ 2, s_1_38, 0, 1, 0}
 };
 
 static const symbol s_2_0[3] = { 'i', 'c', 'a' };
@@ -342,209 +351,207 @@ static const symbol s_2_196[2] = { 0xC3, 0xB3 };
 static const symbol s_2_197[3] = { 'i', 0xC3, 0xB3 };
 static const symbol s_2_198[4] = { 'c', 'i', 0xC3, 0xB3 };
 static const symbol s_2_199[5] = { 'a', 'c', 'i', 0xC3, 0xB3 };
-
-static const struct among a_2[200] =
-{
-{ 3, s_2_0, -1, 4, 0},
-{ 7, s_2_1, 0, 3, 0},
-{ 4, s_2_2, -1, 1, 0},
-{ 3, s_2_3, -1, 2, 0},
-{ 5, s_2_4, -1, 1, 0},
-{ 5, s_2_5, -1, 1, 0},
-{ 6, s_2_6, -1, 1, 0},
-{ 5, s_2_7, -1, 1, 0},
-{ 5, s_2_8, -1, 3, 0},
-{ 4, s_2_9, -1, 1, 0},
-{ 6, s_2_10, 9, 1, 0},
-{ 4, s_2_11, -1, 1, 0},
-{ 5, s_2_12, -1, 1, 0},
-{ 7, s_2_13, -1, 1, 0},
-{ 4, s_2_14, -1, 1, 0},
-{ 4, s_2_15, -1, 1, 0},
-{ 6, s_2_16, -1, 1, 0},
-{ 3, s_2_17, -1, 1, 0},
-{ 7, s_2_18, 17, 1, 0},
-{ 9, s_2_19, 18, 5, 0},
-{ 3, s_2_20, -1, 1, 0},
-{ 3, s_2_21, -1, 1, 0},
-{ 3, s_2_22, -1, 1, 0},
-{ 5, s_2_23, 22, 1, 0},
-{ 3, s_2_24, -1, 1, 0},
-{ 4, s_2_25, 24, 1, 0},
-{ 5, s_2_26, 25, 1, 0},
-{ 5, s_2_27, -1, 1, 0},
-{ 3, s_2_28, -1, 1, 0},
-{ 3, s_2_29, -1, 1, 0},
-{ 4, s_2_30, -1, 1, 0},
-{ 4, s_2_31, -1, 1, 0},
-{ 4, s_2_32, -1, 1, 0},
-{ 3, s_2_33, -1, 1, 0},
-{ 3, s_2_34, -1, 1, 0},
-{ 3, s_2_35, -1, 1, 0},
-{ 4, s_2_36, -1, 1, 0},
-{ 7, s_2_37, 36, 1, 0},
-{ 7, s_2_38, 36, 1, 0},
-{ 3, s_2_39, -1, 1, 0},
-{ 5, s_2_40, 39, 1, 0},
-{ 4, s_2_41, -1, 1, 0},
-{ 6, s_2_42, -1, 3, 0},
-{ 2, s_2_43, -1, 4, 0},
-{ 6, s_2_44, 43, 1, 0},
-{ 3, s_2_45, -1, 1, 0},
-{ 3, s_2_46, -1, 1, 0},
-{ 2, s_2_47, -1, 1, 0},
-{ 4, s_2_48, -1, 1, 0},
-{ 3, s_2_49, -1, 1, 0},
-{ 4, s_2_50, 49, 1, 0},
-{ 4, s_2_51, 49, 1, 0},
-{ 4, s_2_52, -1, 1, 0},
-{ 7, s_2_53, 52, 1, 0},
-{ 7, s_2_54, 52, 1, 0},
-{ 6, s_2_55, 52, 1, 0},
-{ 4, s_2_56, -1, 1, 0},
-{ 4, s_2_57, -1, 1, 0},
-{ 4, s_2_58, -1, 1, 0},
-{ 3, s_2_59, -1, 1, 0},
-{ 4, s_2_60, -1, 1, 0},
-{ 4, s_2_61, -1, 3, 0},
-{ 3, s_2_62, -1, 1, 0},
-{ 4, s_2_63, -1, 1, 0},
-{ 2, s_2_64, -1, 1, 0},
-{ 2, s_2_65, -1, 1, 0},
-{ 3, s_2_66, -1, 1, 0},
-{ 3, s_2_67, -1, 1, 0},
-{ 5, s_2_68, -1, 1, 0},
-{ 4, s_2_69, -1, 1, 0},
-{ 5, s_2_70, -1, 1, 0},
-{ 6, s_2_71, -1, 1, 0},
-{ 6, s_2_72, -1, 1, 0},
-{ 6, s_2_73, -1, 1, 0},
-{ 8, s_2_74, 73, 5, 0},
-{ 4, s_2_75, -1, 1, 0},
-{ 6, s_2_76, -1, 1, 0},
-{ 2, s_2_77, -1, 1, 0},
-{ 6, s_2_78, 77, 1, 0},
-{ 4, s_2_79, 77, 1, 0},
-{ 4, s_2_80, 77, 1, 0},
-{ 4, s_2_81, 77, 1, 0},
-{ 5, s_2_82, 77, 1, 0},
-{ 3, s_2_83, -1, 1, 0},
-{ 2, s_2_84, -1, 1, 0},
-{ 3, s_2_85, 84, 1, 0},
-{ 3, s_2_86, -1, 1, 0},
-{ 5, s_2_87, -1, 1, 0},
-{ 3, s_2_88, -1, 4, 0},
-{ 7, s_2_89, 88, 3, 0},
-{ 3, s_2_90, -1, 1, 0},
-{ 4, s_2_91, -1, 1, 0},
-{ 4, s_2_92, -1, 2, 0},
-{ 6, s_2_93, -1, 1, 0},
-{ 6, s_2_94, -1, 1, 0},
-{ 7, s_2_95, -1, 1, 0},
-{ 6, s_2_96, -1, 1, 0},
-{ 6, s_2_97, -1, 3, 0},
-{ 5, s_2_98, -1, 1, 0},
-{ 6, s_2_99, -1, 1, 0},
-{ 5, s_2_100, -1, 1, 0},
-{ 6, s_2_101, -1, 1, 0},
-{ 8, s_2_102, -1, 1, 0},
-{ 4, s_2_103, -1, 1, 0},
-{ 5, s_2_104, 103, 1, 0},
-{ 5, s_2_105, 103, 1, 0},
-{ 4, s_2_106, -1, 1, 0},
-{ 8, s_2_107, 106, 1, 0},
-{ 10, s_2_108, 107, 5, 0},
-{ 6, s_2_109, -1, 1, 0},
-{ 5, s_2_110, -1, 1, 0},
-{ 8, s_2_111, 110, 1, 0},
-{ 4, s_2_112, -1, 1, 0},
-{ 4, s_2_113, -1, 1, 0},
-{ 4, s_2_114, -1, 1, 0},
-{ 5, s_2_115, 114, 1, 0},
-{ 6, s_2_116, 115, 1, 0},
-{ 5, s_2_117, -1, 1, 0},
-{ 4, s_2_118, -1, 1, 0},
-{ 4, s_2_119, -1, 1, 0},
-{ 5, s_2_120, -1, 1, 0},
-{ 5, s_2_121, -1, 1, 0},
-{ 4, s_2_122, -1, 1, 0},
-{ 4, s_2_123, -1, 1, 0},
-{ 5, s_2_124, -1, 1, 0},
-{ 8, s_2_125, 124, 1, 0},
-{ 8, s_2_126, 124, 1, 0},
-{ 5, s_2_127, -1, 4, 0},
-{ 9, s_2_128, 127, 3, 0},
-{ 4, s_2_129, -1, 1, 0},
-{ 6, s_2_130, 129, 1, 0},
-{ 7, s_2_131, -1, 3, 0},
-{ 10, s_2_132, -1, 1, 0},
-{ 4, s_2_133, -1, 1, 0},
-{ 5, s_2_134, -1, 1, 0},
-{ 5, s_2_135, -1, 3, 0},
-{ 4, s_2_136, -1, 1, 0},
-{ 5, s_2_137, -1, 1, 0},
-{ 2, s_2_138, -1, 1, 0},
-{ 3, s_2_139, 138, 1, 0},
-{ 4, s_2_140, 138, 1, 0},
-{ 3, s_2_141, -1, 1, 0},
-{ 7, s_2_142, 141, 1, 0},
-{ 9, s_2_143, 142, 5, 0},
-{ 4, s_2_144, -1, 1, 0},
-{ 5, s_2_145, 144, 1, 0},
-{ 6, s_2_146, 145, 2, 0},
-{ 4, s_2_147, -1, 1, 0},
-{ 4, s_2_148, -1, 1, 0},
-{ 5, s_2_149, -1, 1, 0},
-{ 5, s_2_150, -1, 1, 0},
-{ 3, s_2_151, -1, 1, 0},
-{ 3, s_2_152, -1, 1, 0},
-{ 4, s_2_153, 152, 1, 0},
-{ 5, s_2_154, 153, 1, 0},
-{ 5, s_2_155, 153, 1, 0},
-{ 3, s_2_156, -1, 1, 0},
-{ 5, s_2_157, 156, 1, 0},
-{ 8, s_2_158, 157, 1, 0},
-{ 7, s_2_159, 157, 1, 0},
-{ 9, s_2_160, 159, 1, 0},
-{ 6, s_2_161, 156, 1, 0},
-{ 3, s_2_162, -1, 1, 0},
-{ 4, s_2_163, -1, 1, 0},
-{ 4, s_2_164, -1, 1, 0},
-{ 5, s_2_165, 164, 1, 0},
-{ 6, s_2_166, 165, 1, 0},
-{ 3, s_2_167, -1, 1, 0},
-{ 3, s_2_168, -1, 1, 0},
-{ 3, s_2_169, -1, 1, 0},
-{ 5, s_2_170, 169, 1, 0},
-{ 5, s_2_171, 169, 1, 0},
-{ 3, s_2_172, -1, 1, 0},
-{ 3, s_2_173, -1, 1, 0},
-{ 3, s_2_174, -1, 1, 0},
-{ 4, s_2_175, 174, 1, 0},
-{ 3, s_2_176, -1, 1, 0},
-{ 4, s_2_177, -1, 1, 0},
-{ 7, s_2_178, 177, 1, 0},
-{ 6, s_2_179, 177, 1, 0},
-{ 8, s_2_180, 179, 1, 0},
-{ 5, s_2_181, -1, 1, 0},
-{ 2, s_2_182, -1, 1, 0},
-{ 3, s_2_183, -1, 1, 0},
-{ 3, s_2_184, -1, 1, 0},
-{ 4, s_2_185, 184, 1, 0},
-{ 4, s_2_186, 184, 1, 0},
-{ 5, s_2_187, 186, 1, 0},
-{ 7, s_2_188, 187, 1, 0},
-{ 2, s_2_189, -1, 1, 0},
-{ 5, s_2_190, -1, 1, 0},
-{ 6, s_2_191, -1, 1, 0},
-{ 6, s_2_192, -1, 1, 0},
-{ 4, s_2_193, -1, 1, 0},
-{ 6, s_2_194, -1, 1, 0},
-{ 4, s_2_195, -1, 1, 0},
-{ 2, s_2_196, -1, 1, 0},
-{ 3, s_2_197, 196, 1, 0},
-{ 4, s_2_198, 197, 1, 0},
-{ 5, s_2_199, 198, 1, 0}
+static const struct among a_2[200] = {
+{ 3, s_2_0, 0, 4, 0},
+{ 7, s_2_1, -1, 3, 0},
+{ 4, s_2_2, 0, 1, 0},
+{ 3, s_2_3, 0, 2, 0},
+{ 5, s_2_4, 0, 1, 0},
+{ 5, s_2_5, 0, 1, 0},
+{ 6, s_2_6, 0, 1, 0},
+{ 5, s_2_7, 0, 1, 0},
+{ 5, s_2_8, 0, 3, 0},
+{ 4, s_2_9, 0, 1, 0},
+{ 6, s_2_10, -1, 1, 0},
+{ 4, s_2_11, 0, 1, 0},
+{ 5, s_2_12, 0, 1, 0},
+{ 7, s_2_13, 0, 1, 0},
+{ 4, s_2_14, 0, 1, 0},
+{ 4, s_2_15, 0, 1, 0},
+{ 6, s_2_16, 0, 1, 0},
+{ 3, s_2_17, 0, 1, 0},
+{ 7, s_2_18, -1, 1, 0},
+{ 9, s_2_19, -1, 5, 0},
+{ 3, s_2_20, 0, 1, 0},
+{ 3, s_2_21, 0, 1, 0},
+{ 3, s_2_22, 0, 1, 0},
+{ 5, s_2_23, -1, 1, 0},
+{ 3, s_2_24, 0, 1, 0},
+{ 4, s_2_25, -1, 1, 0},
+{ 5, s_2_26, -1, 1, 0},
+{ 5, s_2_27, 0, 1, 0},
+{ 3, s_2_28, 0, 1, 0},
+{ 3, s_2_29, 0, 1, 0},
+{ 4, s_2_30, 0, 1, 0},
+{ 4, s_2_31, 0, 1, 0},
+{ 4, s_2_32, 0, 1, 0},
+{ 3, s_2_33, 0, 1, 0},
+{ 3, s_2_34, 0, 1, 0},
+{ 3, s_2_35, 0, 1, 0},
+{ 4, s_2_36, 0, 1, 0},
+{ 7, s_2_37, -1, 1, 0},
+{ 7, s_2_38, -2, 1, 0},
+{ 3, s_2_39, 0, 1, 0},
+{ 5, s_2_40, -1, 1, 0},
+{ 4, s_2_41, 0, 1, 0},
+{ 6, s_2_42, 0, 3, 0},
+{ 2, s_2_43, 0, 4, 0},
+{ 6, s_2_44, -1, 1, 0},
+{ 3, s_2_45, 0, 1, 0},
+{ 3, s_2_46, 0, 1, 0},
+{ 2, s_2_47, 0, 1, 0},
+{ 4, s_2_48, 0, 1, 0},
+{ 3, s_2_49, 0, 1, 0},
+{ 4, s_2_50, -1, 1, 0},
+{ 4, s_2_51, -2, 1, 0},
+{ 4, s_2_52, 0, 1, 0},
+{ 7, s_2_53, -1, 1, 0},
+{ 7, s_2_54, -2, 1, 0},
+{ 6, s_2_55, -3, 1, 0},
+{ 4, s_2_56, 0, 1, 0},
+{ 4, s_2_57, 0, 1, 0},
+{ 4, s_2_58, 0, 1, 0},
+{ 3, s_2_59, 0, 1, 0},
+{ 4, s_2_60, 0, 1, 0},
+{ 4, s_2_61, 0, 3, 0},
+{ 3, s_2_62, 0, 1, 0},
+{ 4, s_2_63, 0, 1, 0},
+{ 2, s_2_64, 0, 1, 0},
+{ 2, s_2_65, 0, 1, 0},
+{ 3, s_2_66, 0, 1, 0},
+{ 3, s_2_67, 0, 1, 0},
+{ 5, s_2_68, 0, 1, 0},
+{ 4, s_2_69, 0, 1, 0},
+{ 5, s_2_70, 0, 1, 0},
+{ 6, s_2_71, 0, 1, 0},
+{ 6, s_2_72, 0, 1, 0},
+{ 6, s_2_73, 0, 1, 0},
+{ 8, s_2_74, -1, 5, 0},
+{ 4, s_2_75, 0, 1, 0},
+{ 6, s_2_76, 0, 1, 0},
+{ 2, s_2_77, 0, 1, 0},
+{ 6, s_2_78, -1, 1, 0},
+{ 4, s_2_79, -2, 1, 0},
+{ 4, s_2_80, -3, 1, 0},
+{ 4, s_2_81, -4, 1, 0},