From 7cdc374bfa5c83d0f99468410988fc9f5ff26047 Mon Sep 17 00:00:00 2001 From: Dennis Schafroth Date: Tue, 9 Nov 2010 13:06:53 +0100 Subject: [PATCH 1/1] Copy of Snowball Stemming Library To be use as sub module for yaz. --- .gitignore | 1 + MANIFEST | 72 ++ Makefile | 9 + README | 125 ++ examples/stemwords.c | 209 ++++ include/libstemmer.h | 79 ++ libstemmer/libstemmer.c | 95 ++ libstemmer/libstemmer_c.in | 95 ++ libstemmer/libstemmer_utf8.c | 95 ++ libstemmer/modules.h | 190 ++++ libstemmer/modules.txt | 50 + libstemmer/modules_utf8.h | 121 ++ libstemmer/modules_utf8.txt | 49 + mkinc.mak | 82 ++ mkinc_utf8.mak | 52 + runtime/api.c | 66 ++ runtime/api.h | 26 + runtime/header.h | 58 + runtime/utilities.c | 478 ++++++++ src_c/stem_ISO_8859_1_danish.c | 337 ++++++ src_c/stem_ISO_8859_1_danish.h | 16 + src_c/stem_ISO_8859_1_dutch.c | 624 ++++++++++ src_c/stem_ISO_8859_1_dutch.h | 16 + src_c/stem_ISO_8859_1_english.c | 1117 ++++++++++++++++++ src_c/stem_ISO_8859_1_english.h | 16 + src_c/stem_ISO_8859_1_finnish.c | 762 +++++++++++++ src_c/stem_ISO_8859_1_finnish.h | 16 + src_c/stem_ISO_8859_1_french.c | 1246 ++++++++++++++++++++ src_c/stem_ISO_8859_1_french.h | 16 + src_c/stem_ISO_8859_1_german.c | 521 +++++++++ src_c/stem_ISO_8859_1_german.h | 16 + src_c/stem_ISO_8859_1_hungarian.c | 1230 ++++++++++++++++++++ src_c/stem_ISO_8859_1_hungarian.h | 16 + src_c/stem_ISO_8859_1_italian.c | 1065 +++++++++++++++++ src_c/stem_ISO_8859_1_italian.h | 16 + src_c/stem_ISO_8859_1_norwegian.c | 297 +++++ src_c/stem_ISO_8859_1_norwegian.h | 16 + src_c/stem_ISO_8859_1_porter.c | 749 ++++++++++++ src_c/stem_ISO_8859_1_porter.h | 16 + src_c/stem_ISO_8859_1_portuguese.c | 1017 +++++++++++++++++ src_c/stem_ISO_8859_1_portuguese.h | 16 + src_c/stem_ISO_8859_1_spanish.c | 1093 ++++++++++++++++++ src_c/stem_ISO_8859_1_spanish.h | 16 + src_c/stem_ISO_8859_1_swedish.c | 307 +++++ src_c/stem_ISO_8859_1_swedish.h | 16 + src_c/stem_ISO_8859_2_romanian.c | 998 ++++++++++++++++ src_c/stem_ISO_8859_2_romanian.h | 16 + src_c/stem_KOI8_R_russian.c | 700 ++++++++++++ src_c/stem_KOI8_R_russian.h | 16 + src_c/stem_UTF_8_danish.c | 339 ++++++ src_c/stem_UTF_8_danish.h | 16 + src_c/stem_UTF_8_dutch.c | 634 +++++++++++ src_c/stem_UTF_8_dutch.h | 16 + src_c/stem_UTF_8_english.c | 1125 ++++++++++++++++++ src_c/stem_UTF_8_english.h | 16 + src_c/stem_UTF_8_finnish.c | 768 +++++++++++++ src_c/stem_UTF_8_finnish.h | 16 + src_c/stem_UTF_8_french.c | 1256 ++++++++++++++++++++ src_c/stem_UTF_8_french.h | 16 + src_c/stem_UTF_8_german.c | 527 +++++++++ src_c/stem_UTF_8_german.h | 16 + src_c/stem_UTF_8_hungarian.c | 1234 ++++++++++++++++++++ src_c/stem_UTF_8_hungarian.h | 16 + src_c/stem_UTF_8_italian.c | 1073 ++++++++++++++++++ src_c/stem_UTF_8_italian.h | 16 + src_c/stem_UTF_8_norwegian.c | 299 +++++ src_c/stem_UTF_8_norwegian.h | 16 + src_c/stem_UTF_8_porter.c | 755 ++++++++++++ src_c/stem_UTF_8_porter.h | 16 + src_c/stem_UTF_8_portuguese.c | 1023 +++++++++++++++++ src_c/stem_UTF_8_portuguese.h | 16 + src_c/stem_UTF_8_romanian.c | 1004 ++++++++++++++++ src_c/stem_UTF_8_romanian.h | 16 + src_c/stem_UTF_8_russian.c | 694 ++++++++++++ src_c/stem_UTF_8_russian.h | 16 + src_c/stem_UTF_8_spanish.c | 1097 ++++++++++++++++++ src_c/stem_UTF_8_spanish.h | 16 + src_c/stem_UTF_8_swedish.c | 309 +++++ src_c/stem_UTF_8_swedish.h | 16 + src_c/stem_UTF_8_turkish.c | 2205 ++++++++++++++++++++++++++++++++++++ src_c/stem_UTF_8_turkish.h | 16 + stemwords | Bin 0 -> 506016 bytes 82 files changed, 28853 insertions(+) create mode 100644 .gitignore create mode 100644 MANIFEST create mode 100644 Makefile create mode 100644 README create mode 100644 examples/stemwords.c create mode 100644 include/libstemmer.h create mode 100644 libstemmer/libstemmer.c create mode 100644 libstemmer/libstemmer_c.in create mode 100644 libstemmer/libstemmer_utf8.c create mode 100644 libstemmer/modules.h create mode 100644 libstemmer/modules.txt create mode 100644 libstemmer/modules_utf8.h create mode 100644 libstemmer/modules_utf8.txt create mode 100644 mkinc.mak create mode 100644 mkinc_utf8.mak create mode 100644 runtime/api.c create mode 100644 runtime/api.h create mode 100644 runtime/header.h create mode 100644 runtime/utilities.c create mode 100644 src_c/stem_ISO_8859_1_danish.c create mode 100644 src_c/stem_ISO_8859_1_danish.h create mode 100644 src_c/stem_ISO_8859_1_dutch.c create mode 100644 src_c/stem_ISO_8859_1_dutch.h create mode 100644 src_c/stem_ISO_8859_1_english.c create mode 100644 src_c/stem_ISO_8859_1_english.h create mode 100644 src_c/stem_ISO_8859_1_finnish.c create mode 100644 src_c/stem_ISO_8859_1_finnish.h create mode 100644 src_c/stem_ISO_8859_1_french.c create mode 100644 src_c/stem_ISO_8859_1_french.h create mode 100644 src_c/stem_ISO_8859_1_german.c create mode 100644 src_c/stem_ISO_8859_1_german.h create mode 100644 src_c/stem_ISO_8859_1_hungarian.c create mode 100644 src_c/stem_ISO_8859_1_hungarian.h create mode 100644 src_c/stem_ISO_8859_1_italian.c create mode 100644 src_c/stem_ISO_8859_1_italian.h create mode 100644 src_c/stem_ISO_8859_1_norwegian.c create mode 100644 src_c/stem_ISO_8859_1_norwegian.h create mode 100644 src_c/stem_ISO_8859_1_porter.c create mode 100644 src_c/stem_ISO_8859_1_porter.h create mode 100644 src_c/stem_ISO_8859_1_portuguese.c create mode 100644 src_c/stem_ISO_8859_1_portuguese.h create mode 100644 src_c/stem_ISO_8859_1_spanish.c create mode 100644 src_c/stem_ISO_8859_1_spanish.h create mode 100644 src_c/stem_ISO_8859_1_swedish.c create mode 100644 src_c/stem_ISO_8859_1_swedish.h create mode 100644 src_c/stem_ISO_8859_2_romanian.c create mode 100644 src_c/stem_ISO_8859_2_romanian.h create mode 100644 src_c/stem_KOI8_R_russian.c create mode 100644 src_c/stem_KOI8_R_russian.h create mode 100644 src_c/stem_UTF_8_danish.c create mode 100644 src_c/stem_UTF_8_danish.h create mode 100644 src_c/stem_UTF_8_dutch.c create mode 100644 src_c/stem_UTF_8_dutch.h create mode 100644 src_c/stem_UTF_8_english.c create mode 100644 src_c/stem_UTF_8_english.h create mode 100644 src_c/stem_UTF_8_finnish.c create mode 100644 src_c/stem_UTF_8_finnish.h create mode 100644 src_c/stem_UTF_8_french.c create mode 100644 src_c/stem_UTF_8_french.h create mode 100644 src_c/stem_UTF_8_german.c create mode 100644 src_c/stem_UTF_8_german.h create mode 100644 src_c/stem_UTF_8_hungarian.c create mode 100644 src_c/stem_UTF_8_hungarian.h create mode 100644 src_c/stem_UTF_8_italian.c create mode 100644 src_c/stem_UTF_8_italian.h create mode 100644 src_c/stem_UTF_8_norwegian.c create mode 100644 src_c/stem_UTF_8_norwegian.h create mode 100644 src_c/stem_UTF_8_porter.c create mode 100644 src_c/stem_UTF_8_porter.h create mode 100644 src_c/stem_UTF_8_portuguese.c create mode 100644 src_c/stem_UTF_8_portuguese.h create mode 100644 src_c/stem_UTF_8_romanian.c create mode 100644 src_c/stem_UTF_8_romanian.h create mode 100644 src_c/stem_UTF_8_russian.c create mode 100644 src_c/stem_UTF_8_russian.h create mode 100644 src_c/stem_UTF_8_spanish.c create mode 100644 src_c/stem_UTF_8_spanish.h create mode 100644 src_c/stem_UTF_8_swedish.c create mode 100644 src_c/stem_UTF_8_swedish.h create mode 100644 src_c/stem_UTF_8_turkish.c create mode 100644 src_c/stem_UTF_8_turkish.h create mode 100755 stemwords diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761abc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..93a313d --- /dev/null +++ b/MANIFEST @@ -0,0 +1,72 @@ +README +src_c/stem_ISO_8859_1_danish.c +src_c/stem_ISO_8859_1_danish.h +src_c/stem_ISO_8859_1_dutch.c +src_c/stem_ISO_8859_1_dutch.h +src_c/stem_ISO_8859_1_english.c +src_c/stem_ISO_8859_1_english.h +src_c/stem_ISO_8859_1_finnish.c +src_c/stem_ISO_8859_1_finnish.h +src_c/stem_ISO_8859_1_french.c +src_c/stem_ISO_8859_1_french.h +src_c/stem_ISO_8859_1_german.c +src_c/stem_ISO_8859_1_german.h +src_c/stem_ISO_8859_1_hungarian.c +src_c/stem_ISO_8859_1_hungarian.h +src_c/stem_ISO_8859_1_italian.c +src_c/stem_ISO_8859_1_italian.h +src_c/stem_ISO_8859_1_norwegian.c +src_c/stem_ISO_8859_1_norwegian.h +src_c/stem_ISO_8859_1_porter.c +src_c/stem_ISO_8859_1_porter.h +src_c/stem_ISO_8859_1_portuguese.c +src_c/stem_ISO_8859_1_portuguese.h +src_c/stem_ISO_8859_1_spanish.c +src_c/stem_ISO_8859_1_spanish.h +src_c/stem_ISO_8859_1_swedish.c +src_c/stem_ISO_8859_1_swedish.h +src_c/stem_ISO_8859_2_romanian.c +src_c/stem_ISO_8859_2_romanian.h +src_c/stem_KOI8_R_russian.c +src_c/stem_KOI8_R_russian.h +src_c/stem_UTF_8_danish.c +src_c/stem_UTF_8_danish.h +src_c/stem_UTF_8_dutch.c +src_c/stem_UTF_8_dutch.h +src_c/stem_UTF_8_english.c +src_c/stem_UTF_8_english.h +src_c/stem_UTF_8_finnish.c +src_c/stem_UTF_8_finnish.h +src_c/stem_UTF_8_french.c +src_c/stem_UTF_8_french.h +src_c/stem_UTF_8_german.c +src_c/stem_UTF_8_german.h +src_c/stem_UTF_8_hungarian.c +src_c/stem_UTF_8_hungarian.h +src_c/stem_UTF_8_italian.c +src_c/stem_UTF_8_italian.h +src_c/stem_UTF_8_norwegian.c +src_c/stem_UTF_8_norwegian.h +src_c/stem_UTF_8_porter.c +src_c/stem_UTF_8_porter.h +src_c/stem_UTF_8_portuguese.c +src_c/stem_UTF_8_portuguese.h +src_c/stem_UTF_8_romanian.c +src_c/stem_UTF_8_romanian.h +src_c/stem_UTF_8_russian.c +src_c/stem_UTF_8_russian.h +src_c/stem_UTF_8_spanish.c +src_c/stem_UTF_8_spanish.h +src_c/stem_UTF_8_swedish.c +src_c/stem_UTF_8_swedish.h +src_c/stem_UTF_8_turkish.c +src_c/stem_UTF_8_turkish.h +runtime/api.c +runtime/api.h +runtime/header.h +runtime/utilities.c +libstemmer/libstemmer.c +libstemmer/libstemmer_utf8.c +libstemmer/modules.h +libstemmer/modules_utf8.h +include/libstemmer.h diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..64d6c8e --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +include mkinc.mak +CFLAGS=-Iinclude +all: libstemmer.o stemwords +libstemmer.o: $(snowball_sources:.c=.o) + $(AR) -cru $@ $^ +stemwords: examples/stemwords.o libstemmer.o + $(CC) -o $@ $^ +clean: + rm -f stemwords *.o src_c/*.o runtime/*.o libstemmer/*.o diff --git a/README b/README new file mode 100644 index 0000000..9d3af8b --- /dev/null +++ b/README @@ -0,0 +1,125 @@ +libstemmer_c +============ + +This document pertains to the C version of the libstemmer distribution, +available for download from: + +http://snowball.tartarus.org/dist/libstemmer_c.tgz + + +Compiling the library +===================== + +A simple makefile is provided for Unix style systems. On such systems, it +should be possible simply to run "make", and the file "libstemmer.o" +and the example program "stemwords" will be generated. + +If this doesn't work on your system, you need to write your own build +system (or call the compiler directly). The files to compile are +all contained in the "libstemmer", "runtime" and "src_c" directories, +and the public header file is contained in the "include" directory. + +The library comes in two flavours; UTF-8 only, and UTF-8 plus other character +sets. To use the utf-8 only flavour, compile "libstemmer_utf8.c" instead of +"libstemmer.c". + +For convenience "mkinc.mak" is a makefile fragment listing the source files and +header files used to compile the standard version of the library. +"mkinc_utf8.mak" is a comparable makefile fragment listing just the source +files for the UTF-8 only version of the library. + + +Using the library +================= + +The library provides a simple C API. Essentially, a new stemmer can +be obtained by using "sb_stemmer_new". "sb_stemmer_stem" is then +used to stem a word, "sb_stemmer_length" returns the stemmed +length of the last word processed, and "sb_stemmer_delete" is +used to delete a stemmer. + +Creating a stemmer is a relatively expensive operation - the expected +usage pattern is that a new stemmer is created when needed, used +to stem many words, and deleted after some time. + +Stemmers are re-entrant, but not threadsafe. In other words, if +you wish to access the same stemmer object from multiple threads, +you must ensure that all access is protected by a mutex or similar +device. + +libstemmer does not currently incorporate any mechanism for caching the results +of stemming operations. Such caching can greatly increase the performance of a +stemmer under certain situations, so suitable patches will be considered for +inclusion. + +The standard libstemmer sources contain an algorithm for each of the supported +languages. The algorithm may be selected using the english name of the +language, or using the 2 or 3 letter ISO 639 language codes. In addition, +the traditional "Porter" stemming algorithm for english is included for +backwards compatibility purposes, but we recommend use of the "English" +stemmer in preference for new projects. + +(Some minor algorithms which are included only as curiosities in the snowball +website, such as the Lovins stemmer and the Kraaij Pohlmann stemmer, are not +included in the standard libstemmer sources. These are not really supported by +the snowball project, but it would be possible to compile a modified libstemmer +library containing these if desired.) + + +The stemwords example +===================== + +The stemwords example program allows you to run any of the stemmers +compiled into the libstemmer library on a sample vocabulary. For +details on how to use it, run it with the "-h" command line option. + + +Using the library in a larger system +==================================== + +If you are incorporating the library into the build system of a larger +program, I recommend copying the unpacked tarball without modification into +a subdirectory of the sources of your program. Future versions of the +library are intended to keep the same structure, so this will keep the +work required to move to a new version of the library to a minimum. + +As an additional convenience, the list of source and header files used +in the library is detailed in mkinc.mak - a file which is in a suitable +format for inclusion by a Makefile. By including this file in your build +system, you can link the snowball system into your program with a few +extra rules. + +Using the library in a system using GNU autotools +================================================= + +The libstemmer_c library can be integrated into a larger system which uses the +GNU autotool framework (and in particular, automake and autoconf) as follows: + +1) Unpack libstemmer_c.tgz in the top level project directory so that there is + a libstemmer_c subdirectory of the top level directory of the project. + +2) Add a file "Makefile.am" to the unpacked libstemmer_c folder, containing: + +noinst_LTLIBRARIES = libstemmer.la +include $(srcdir)/mkinc.mak +noinst_HEADERS = $(snowball_headers) +libstemmer_la_SOURCES = $(snowball_sources) + +(You may also need to add other lines to this, for example, if you are using +compiler options which are not compatible with compiling the libstemmer +library.) + +3) Add libstemmer_c to the AC_CONFIG_FILES declaration in the project's + configure.ac file. + +4) Add to the top level makefile the following lines (or modify existing + assignments to these variables appropriately): + +AUTOMAKE_OPTIONS = subdir-objects +AM_CPPFLAGS = -I$(top_srcdir)/libstemmer_c/include +SUBDIRS=libstemmer_c +_LIBADD = libstemmer_c/libstemmer.la + +(Where is the name of the library or executable which links against +libstemmer.) + diff --git a/examples/stemwords.c b/examples/stemwords.c new file mode 100644 index 0000000..128ea7a --- /dev/null +++ b/examples/stemwords.c @@ -0,0 +1,209 @@ +/* This is a simple program which uses libstemmer to provide a command + * line interface for stemming using any of the algorithms provided. + */ + +#include +#include /* for malloc, free */ +#include /* for memmove */ +#include /* for isupper, tolower */ + +#include "libstemmer.h" + +const char * progname; +static int pretty = 1; + +static void +stem_file(struct sb_stemmer * stemmer, FILE * f_in, FILE * f_out) +{ +#define INC 10 + int lim = INC; + sb_symbol * b = (sb_symbol *) malloc(lim * sizeof(sb_symbol)); + + while(1) { + int ch = getc(f_in); + if (ch == EOF) { + free(b); return; + } + { + int i = 0; + int inlen = 0; + while(1) { + if (ch == '\n' || ch == EOF) break; + if (i == lim) { + sb_symbol * newb; + newb = (sb_symbol *) + realloc(b, (lim + INC) * sizeof(sb_symbol)); + if (newb == 0) goto error; + b = newb; + lim = lim + INC; + } + /* Update count of utf-8 characters. */ + if (ch < 0x80 || ch > 0xBF) inlen += 1; + /* force lower case: */ + if (isupper(ch)) ch = tolower(ch); + + b[i] = ch; + i++; + ch = getc(f_in); + } + + { + const sb_symbol * stemmed = sb_stemmer_stem(stemmer, b, i); + if (stemmed == NULL) + { + fprintf(stderr, "Out of memory"); + exit(1); + } + else + { + if (pretty == 1) { + fwrite(b, i, 1, f_out); + fputs(" -> ", f_out); + } else if (pretty == 2) { + fwrite(b, i, 1, f_out); + if (sb_stemmer_length(stemmer) > 0) { + int j; + if (inlen < 30) { + for (j = 30 - inlen; j > 0; j--) + fputs(" ", f_out); + } else { + fputs("\n", f_out); + for (j = 30; j > 0; j--) + fputs(" ", f_out); + } + } + } + + fputs((char *)stemmed, f_out); + putc('\n', f_out); + } + } + } + } +error: + if (b != 0) free(b); + return; +} + +/** Display the command line syntax, and then exit. + * @param n The value to exit with. + */ +static void +usage(int n) +{ + printf("usage: %s [-l ] [-i ] [-o ] [-c ] [-p[2]] [-h]\n" + "\n" + "The input file consists of a list of words to be stemmed, one per\n" + "line. Words should be in lower case, but (for English) A-Z letters\n" + "are mapped to their a-z equivalents anyway. If omitted, stdin is\n" + "used.\n" + "\n" + "If -c is given, the argument is the character encoding of the input\n" + "and output files. If it is omitted, the UTF-8 encoding is used.\n" + "\n" + "If -p is given the output file consists of each word of the input\n" + "file followed by \"->\" followed by its stemmed equivalent.\n" + "If -p2 is given the output file is a two column layout containing\n" + "the input words in the first column and the stemmed eqivalents in\n" + "the second column.\n" + "Otherwise, the output file consists of the stemmed words, one per\n" + "line.\n" + "\n" + "-h displays this help\n", + progname); + exit(n); +} + +int +main(int argc, char * argv[]) +{ + char * in = 0; + char * out = 0; + FILE * f_in; + FILE * f_out; + struct sb_stemmer * stemmer; + + char * language = "english"; + char * charenc = NULL; + + char * s; + int i = 1; + pretty = 0; + + progname = argv[0]; + + while(i < argc) { + s = argv[i++]; + if (s[0] == '-') { + if (strcmp(s, "-o") == 0) { + if (i >= argc) { + fprintf(stderr, "%s requires an argument\n", s); + exit(1); + } + out = argv[i++]; + } else if (strcmp(s, "-i") == 0) { + if (i >= argc) { + fprintf(stderr, "%s requires an argument\n", s); + exit(1); + } + in = argv[i++]; + } else if (strcmp(s, "-l") == 0) { + if (i >= argc) { + fprintf(stderr, "%s requires an argument\n", s); + exit(1); + } + language = argv[i++]; + } else if (strcmp(s, "-c") == 0) { + if (i >= argc) { + fprintf(stderr, "%s requires an argument\n", s); + exit(1); + } + charenc = argv[i++]; + } else if (strcmp(s, "-p2") == 0) { + pretty = 2; + } else if (strcmp(s, "-p") == 0) { + pretty = 1; + } else if (strcmp(s, "-h") == 0) { + usage(0); + } else { + fprintf(stderr, "option %s unknown\n", s); + usage(1); + } + } else { + fprintf(stderr, "unexpected parameter %s\n", s); + usage(1); + } + } + + /* prepare the files */ + f_in = (in == 0) ? stdin : fopen(in, "r"); + if (f_in == 0) { + fprintf(stderr, "file %s not found\n", in); + exit(1); + } + f_out = (out == 0) ? stdout : fopen(out, "w"); + if (f_out == 0) { + fprintf(stderr, "file %s cannot be opened\n", out); + exit(1); + } + + /* do the stemming process: */ + stemmer = sb_stemmer_new(language, charenc); + if (stemmer == 0) { + if (charenc == NULL) { + fprintf(stderr, "language `%s' not available for stemming\n", language); + exit(1); + } else { + fprintf(stderr, "language `%s' not available for stemming in encoding `%s'\n", language, charenc); + exit(1); + } + } + stem_file(stemmer, f_in, f_out); + sb_stemmer_delete(stemmer); + + if (in != 0) (void) fclose(f_in); + if (out != 0) (void) fclose(f_out); + + return 0; +} + diff --git a/include/libstemmer.h b/include/libstemmer.h new file mode 100644 index 0000000..9d86b85 --- /dev/null +++ b/include/libstemmer.h @@ -0,0 +1,79 @@ + +/* Make header file work when included from C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +struct sb_stemmer; +typedef unsigned char sb_symbol; + +/* FIXME - should be able to get a version number for each stemming + * algorithm (which will be incremented each time the output changes). */ + +/** Returns an array of the names of the available stemming algorithms. + * Note that these are the canonical names - aliases (ie, other names for + * the same algorithm) will not be included in the list. + * The list is terminated with a null pointer. + * + * The list must not be modified in any way. + */ +const char ** sb_stemmer_list(void); + +/** Create a new stemmer object, using the specified algorithm, for the + * specified character encoding. + * + * All algorithms will usually be available in UTF-8, but may also be + * available in other character encodings. + * + * @param algorithm The algorithm name. This is either the english + * name of the algorithm, or the 2 or 3 letter ISO 639 codes for the + * language. Note that case is significant in this parameter - the + * value should be supplied in lower case. + * + * @param charenc The character encoding. NULL may be passed as + * this value, in which case UTF-8 encoding will be assumed. Otherwise, + * the argument may be one of "UTF_8", "ISO_8859_1" (ie, Latin 1), + * "CP850" (ie, MS-DOS Latin 1) or "KOI8_R" (Russian). Note that + * case is significant in this parameter. + * + * @return NULL if the specified algorithm is not recognised, or the + * algorithm is not available for the requested encoding. Otherwise, + * returns a pointer to a newly created stemmer for the requested algorithm. + * The returned pointer must be deleted by calling sb_stemmer_delete(). + * + * @note NULL will also be returned if an out of memory error occurs. + */ +struct sb_stemmer * sb_stemmer_new(const char * algorithm, const char * charenc); + +/** Delete a stemmer object. + * + * This frees all resources allocated for the stemmer. After calling + * this function, the supplied stemmer may no longer be used in any way. + * + * It is safe to pass a null pointer to this function - this will have + * no effect. + */ +void sb_stemmer_delete(struct sb_stemmer * stemmer); + +/** Stem a word. + * + * The return value is owned by the stemmer - it must not be freed or + * modified, and it will become invalid when the stemmer is called again, + * or if the stemmer is freed. + * + * The length of the return value can be obtained using sb_stemmer_length(). + * + * If an out-of-memory error occurs, this will return NULL. + */ +const sb_symbol * sb_stemmer_stem(struct sb_stemmer * stemmer, + const sb_symbol * word, int size); + +/** Get the length of the result of the last stemmed word. + * This should not be called before sb_stemmer_stem() has been called. + */ +int sb_stemmer_length(struct sb_stemmer * stemmer); + +#ifdef __cplusplus +} +#endif + diff --git a/libstemmer/libstemmer.c b/libstemmer/libstemmer.c new file mode 100644 index 0000000..20c7c9d --- /dev/null +++ b/libstemmer/libstemmer.c @@ -0,0 +1,95 @@ + +#include +#include +#include "../include/libstemmer.h" +#include "../runtime/api.h" +#include "modules.h" + +struct sb_stemmer { + struct SN_env * (*create)(void); + void (*close)(struct SN_env *); + int (*stem)(struct SN_env *); + + struct SN_env * env; +}; + +extern const char ** +sb_stemmer_list(void) +{ + return algorithm_names; +} + +static stemmer_encoding_t +sb_getenc(const char * charenc) +{ + struct stemmer_encoding * encoding; + if (charenc == NULL) return ENC_UTF_8; + for (encoding = encodings; encoding->name != 0; encoding++) { + if (strcmp(encoding->name, charenc) == 0) break; + } + if (encoding->name == NULL) return ENC_UNKNOWN; + return encoding->enc; +} + +extern struct sb_stemmer * +sb_stemmer_new(const char * algorithm, const char * charenc) +{ + stemmer_encoding_t enc; + struct stemmer_modules * module; + struct sb_stemmer * stemmer; + + enc = sb_getenc(charenc); + if (enc == ENC_UNKNOWN) return NULL; + + for (module = modules; module->name != 0; module++) { + if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break; + } + if (module->name == NULL) return NULL; + + stemmer = (struct sb_stemmer *) malloc(sizeof(struct sb_stemmer)); + if (stemmer == NULL) return NULL; + + stemmer->create = module->create; + stemmer->close = module->close; + stemmer->stem = module->stem; + + stemmer->env = stemmer->create(); + if (stemmer->env == NULL) + { + sb_stemmer_delete(stemmer); + return NULL; + } + + return stemmer; +} + +void +sb_stemmer_delete(struct sb_stemmer * stemmer) +{ + if (stemmer == 0) return; + if (stemmer->close == 0) return; + stemmer->close(stemmer->env); + stemmer->close = 0; + free(stemmer); +} + +const sb_symbol * +sb_stemmer_stem(struct sb_stemmer * stemmer, const sb_symbol * word, int size) +{ + int ret; + if (SN_set_current(stemmer->env, size, (const symbol *)(word))) + { + stemmer->env->l = 0; + return NULL; + } + ret = stemmer->stem(stemmer->env); + if (ret < 0) return NULL; + stemmer->env->p[stemmer->env->l] = 0; + return (const sb_symbol *)(stemmer->env->p); +} + +int +sb_stemmer_length(struct sb_stemmer * stemmer) +{ + return stemmer->env->l; +} diff --git a/libstemmer/libstemmer_c.in b/libstemmer/libstemmer_c.in new file mode 100644 index 0000000..4de5798 --- /dev/null +++ b/libstemmer/libstemmer_c.in @@ -0,0 +1,95 @@ + +#include +#include +#include "../include/libstemmer.h" +#include "../runtime/api.h" +#include "@MODULES_H@" + +struct sb_stemmer { + struct SN_env * (*create)(void); + void (*close)(struct SN_env *); + int (*stem)(struct SN_env *); + + struct SN_env * env; +}; + +extern const char ** +sb_stemmer_list(void) +{ + return algorithm_names; +} + +static stemmer_encoding_t +sb_getenc(const char * charenc) +{ + struct stemmer_encoding * encoding; + if (charenc == NULL) return ENC_UTF_8; + for (encoding = encodings; encoding->name != 0; encoding++) { + if (strcmp(encoding->name, charenc) == 0) break; + } + if (encoding->name == NULL) return ENC_UNKNOWN; + return encoding->enc; +} + +extern struct sb_stemmer * +sb_stemmer_new(const char * algorithm, const char * charenc) +{ + stemmer_encoding_t enc; + struct stemmer_modules * module; + struct sb_stemmer * stemmer; + + enc = sb_getenc(charenc); + if (enc == ENC_UNKNOWN) return NULL; + + for (module = modules; module->name != 0; module++) { + if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break; + } + if (module->name == NULL) return NULL; + + stemmer = (struct sb_stemmer *) malloc(sizeof(struct sb_stemmer)); + if (stemmer == NULL) return NULL; + + stemmer->create = module->create; + stemmer->close = module->close; + stemmer->stem = module->stem; + + stemmer->env = stemmer->create(); + if (stemmer->env == NULL) + { + sb_stemmer_delete(stemmer); + return NULL; + } + + return stemmer; +} + +void +sb_stemmer_delete(struct sb_stemmer * stemmer) +{ + if (stemmer == 0) return; + if (stemmer->close == 0) return; + stemmer->close(stemmer->env); + stemmer->close = 0; + free(stemmer); +} + +const sb_symbol * +sb_stemmer_stem(struct sb_stemmer * stemmer, const sb_symbol * word, int size) +{ + int ret; + if (SN_set_current(stemmer->env, size, (const symbol *)(word))) + { + stemmer->env->l = 0; + return NULL; + } + ret = stemmer->stem(stemmer->env); + if (ret < 0) return NULL; + stemmer->env->p[stemmer->env->l] = 0; + return (const sb_symbol *)(stemmer->env->p); +} + +int +sb_stemmer_length(struct sb_stemmer * stemmer) +{ + return stemmer->env->l; +} diff --git a/libstemmer/libstemmer_utf8.c b/libstemmer/libstemmer_utf8.c new file mode 100644 index 0000000..1cad3e6 --- /dev/null +++ b/libstemmer/libstemmer_utf8.c @@ -0,0 +1,95 @@ + +#include +#include +#include "../include/libstemmer.h" +#include "../runtime/api.h" +#include "modules_utf8.h" + +struct sb_stemmer { + struct SN_env * (*create)(void); + void (*close)(struct SN_env *); + int (*stem)(struct SN_env *); + + struct SN_env * env; +}; + +extern const char ** +sb_stemmer_list(void) +{ + return algorithm_names; +} + +static stemmer_encoding_t +sb_getenc(const char * charenc) +{ + struct stemmer_encoding * encoding; + if (charenc == NULL) return ENC_UTF_8; + for (encoding = encodings; encoding->name != 0; encoding++) { + if (strcmp(encoding->name, charenc) == 0) break; + } + if (encoding->name == NULL) return ENC_UNKNOWN; + return encoding->enc; +} + +extern struct sb_stemmer * +sb_stemmer_new(const char * algorithm, const char * charenc) +{ + stemmer_encoding_t enc; + struct stemmer_modules * module; + struct sb_stemmer * stemmer; + + enc = sb_getenc(charenc); + if (enc == ENC_UNKNOWN) return NULL; + + for (module = modules; module->name != 0; module++) { + if (strcmp(module->name, algorithm) == 0 && module->enc == enc) break; + } + if (module->name == NULL) return NULL; + + stemmer = (struct sb_stemmer *) malloc(sizeof(struct sb_stemmer)); + if (stemmer == NULL) return NULL; + + stemmer->create = module->create; + stemmer->close = module->close; + stemmer->stem = module->stem; + + stemmer->env = stemmer->create(); + if (stemmer->env == NULL) + { + sb_stemmer_delete(stemmer); + return NULL; + } + + return stemmer; +} + +void +sb_stemmer_delete(struct sb_stemmer * stemmer) +{ + if (stemmer == 0) return; + if (stemmer->close == 0) return; + stemmer->close(stemmer->env); + stemmer->close = 0; + free(stemmer); +} + +const sb_symbol * +sb_stemmer_stem(struct sb_stemmer * stemmer, const sb_symbol * word, int size) +{ + int ret; + if (SN_set_current(stemmer->env, size, (const symbol *)(word))) + { + stemmer->env->l = 0; + return NULL; + } + ret = stemmer->stem(stemmer->env); + if (ret < 0) return NULL; + stemmer->env->p[stemmer->env->l] = 0; + return (const sb_symbol *)(stemmer->env->p); +} + +int +sb_stemmer_length(struct sb_stemmer * stemmer) +{ + return stemmer->env->l; +} diff --git a/libstemmer/modules.h b/libstemmer/modules.h new file mode 100644 index 0000000..7a1f685 --- /dev/null +++ b/libstemmer/modules.h @@ -0,0 +1,190 @@ +/* libstemmer/modules.h: List of stemming modules. + * + * This file is generated by mkmodules.pl from a list of module names. + * Do not edit manually. + * + * Modules included by this file are: danish, dutch, english, finnish, french, + * german, hungarian, italian, norwegian, porter, portuguese, romanian, + * russian, spanish, swedish, turkish + */ + +#include "../src_c/stem_ISO_8859_1_danish.h" +#include "../src_c/stem_UTF_8_danish.h" +#include "../src_c/stem_ISO_8859_1_dutch.h" +#include "../src_c/stem_UTF_8_dutch.h" +#include "../src_c/stem_ISO_8859_1_english.h" +#include "../src_c/stem_UTF_8_english.h" +#include "../src_c/stem_ISO_8859_1_finnish.h" +#include "../src_c/stem_UTF_8_finnish.h" +#include "../src_c/stem_ISO_8859_1_french.h" +#include "../src_c/stem_UTF_8_french.h" +#include "../src_c/stem_ISO_8859_1_german.h" +#include "../src_c/stem_UTF_8_german.h" +#include "../src_c/stem_ISO_8859_1_hungarian.h" +#include "../src_c/stem_UTF_8_hungarian.h" +#include "../src_c/stem_ISO_8859_1_italian.h" +#include "../src_c/stem_UTF_8_italian.h" +#include "../src_c/stem_ISO_8859_1_norwegian.h" +#include "../src_c/stem_UTF_8_norwegian.h" +#include "../src_c/stem_ISO_8859_1_porter.h" +#include "../src_c/stem_UTF_8_porter.h" +#include "../src_c/stem_ISO_8859_1_portuguese.h" +#include "../src_c/stem_UTF_8_portuguese.h" +#include "../src_c/stem_ISO_8859_2_romanian.h" +#include "../src_c/stem_UTF_8_romanian.h" +#include "../src_c/stem_KOI8_R_russian.h" +#include "../src_c/stem_UTF_8_russian.h" +#include "../src_c/stem_ISO_8859_1_spanish.h" +#include "../src_c/stem_UTF_8_spanish.h" +#include "../src_c/stem_ISO_8859_1_swedish.h" +#include "../src_c/stem_UTF_8_swedish.h" +#include "../src_c/stem_UTF_8_turkish.h" + +typedef enum { + ENC_UNKNOWN=0, + ENC_ISO_8859_1, + ENC_ISO_8859_2, + ENC_KOI8_R, + ENC_UTF_8 +} stemmer_encoding_t; + +struct stemmer_encoding { + const char * name; + stemmer_encoding_t enc; +}; +static struct stemmer_encoding encodings[] = { + {"ISO_8859_1", ENC_ISO_8859_1}, + {"ISO_8859_2", ENC_ISO_8859_2}, + {"KOI8_R", ENC_KOI8_R}, + {"UTF_8", ENC_UTF_8}, + {0,ENC_UNKNOWN} +}; + +struct stemmer_modules { + const char * name; + stemmer_encoding_t enc; + struct SN_env * (*create)(void); + void (*close)(struct SN_env *); + int (*stem)(struct SN_env *); +}; +static struct stemmer_modules modules[] = { + {"da", ENC_ISO_8859_1, danish_ISO_8859_1_create_env, danish_ISO_8859_1_close_env, danish_ISO_8859_1_stem}, + {"da", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"dan", ENC_ISO_8859_1, danish_ISO_8859_1_create_env, danish_ISO_8859_1_close_env, danish_ISO_8859_1_stem}, + {"dan", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"danish", ENC_ISO_8859_1, danish_ISO_8859_1_create_env, danish_ISO_8859_1_close_env, danish_ISO_8859_1_stem}, + {"danish", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"de", ENC_ISO_8859_1, german_ISO_8859_1_create_env, german_ISO_8859_1_close_env, german_ISO_8859_1_stem}, + {"de", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"deu", ENC_ISO_8859_1, german_ISO_8859_1_create_env, german_ISO_8859_1_close_env, german_ISO_8859_1_stem}, + {"deu", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"dut", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem}, + {"dut", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"dutch", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem}, + {"dutch", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"en", ENC_ISO_8859_1, english_ISO_8859_1_create_env, english_ISO_8859_1_close_env, english_ISO_8859_1_stem}, + {"en", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"eng", ENC_ISO_8859_1, english_ISO_8859_1_create_env, english_ISO_8859_1_close_env, english_ISO_8859_1_stem}, + {"eng", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"english", ENC_ISO_8859_1, english_ISO_8859_1_create_env, english_ISO_8859_1_close_env, english_ISO_8859_1_stem}, + {"english", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"es", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem}, + {"es", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"esl", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem}, + {"esl", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"fi", ENC_ISO_8859_1, finnish_ISO_8859_1_create_env, finnish_ISO_8859_1_close_env, finnish_ISO_8859_1_stem}, + {"fi", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"fin", ENC_ISO_8859_1, finnish_ISO_8859_1_create_env, finnish_ISO_8859_1_close_env, finnish_ISO_8859_1_stem}, + {"fin", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"finnish", ENC_ISO_8859_1, finnish_ISO_8859_1_create_env, finnish_ISO_8859_1_close_env, finnish_ISO_8859_1_stem}, + {"finnish", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"fr", ENC_ISO_8859_1, french_ISO_8859_1_create_env, french_ISO_8859_1_close_env, french_ISO_8859_1_stem}, + {"fr", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"fra", ENC_ISO_8859_1, french_ISO_8859_1_create_env, french_ISO_8859_1_close_env, french_ISO_8859_1_stem}, + {"fra", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"fre", ENC_ISO_8859_1, french_ISO_8859_1_create_env, french_ISO_8859_1_close_env, french_ISO_8859_1_stem}, + {"fre", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"french", ENC_ISO_8859_1, french_ISO_8859_1_create_env, french_ISO_8859_1_close_env, french_ISO_8859_1_stem}, + {"french", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"ger", ENC_ISO_8859_1, german_ISO_8859_1_create_env, german_ISO_8859_1_close_env, german_ISO_8859_1_stem}, + {"ger", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"german", ENC_ISO_8859_1, german_ISO_8859_1_create_env, german_ISO_8859_1_close_env, german_ISO_8859_1_stem}, + {"german", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"hu", ENC_ISO_8859_1, hungarian_ISO_8859_1_create_env, hungarian_ISO_8859_1_close_env, hungarian_ISO_8859_1_stem}, + {"hu", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"hun", ENC_ISO_8859_1, hungarian_ISO_8859_1_create_env, hungarian_ISO_8859_1_close_env, hungarian_ISO_8859_1_stem}, + {"hun", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"hungarian", ENC_ISO_8859_1, hungarian_ISO_8859_1_create_env, hungarian_ISO_8859_1_close_env, hungarian_ISO_8859_1_stem}, + {"hungarian", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"it", ENC_ISO_8859_1, italian_ISO_8859_1_create_env, italian_ISO_8859_1_close_env, italian_ISO_8859_1_stem}, + {"it", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"ita", ENC_ISO_8859_1, italian_ISO_8859_1_create_env, italian_ISO_8859_1_close_env, italian_ISO_8859_1_stem}, + {"ita", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"italian", ENC_ISO_8859_1, italian_ISO_8859_1_create_env, italian_ISO_8859_1_close_env, italian_ISO_8859_1_stem}, + {"italian", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"nl", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem}, + {"nl", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"nld", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem}, + {"nld", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"no", ENC_ISO_8859_1, norwegian_ISO_8859_1_create_env, norwegian_ISO_8859_1_close_env, norwegian_ISO_8859_1_stem}, + {"no", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"nor", ENC_ISO_8859_1, norwegian_ISO_8859_1_create_env, norwegian_ISO_8859_1_close_env, norwegian_ISO_8859_1_stem}, + {"nor", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"norwegian", ENC_ISO_8859_1, norwegian_ISO_8859_1_create_env, norwegian_ISO_8859_1_close_env, norwegian_ISO_8859_1_stem}, + {"norwegian", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"por", ENC_ISO_8859_1, portuguese_ISO_8859_1_create_env, portuguese_ISO_8859_1_close_env, portuguese_ISO_8859_1_stem}, + {"por", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"porter", ENC_ISO_8859_1, porter_ISO_8859_1_create_env, porter_ISO_8859_1_close_env, porter_ISO_8859_1_stem}, + {"porter", ENC_UTF_8, porter_UTF_8_create_env, porter_UTF_8_close_env, porter_UTF_8_stem}, + {"portuguese", ENC_ISO_8859_1, portuguese_ISO_8859_1_create_env, portuguese_ISO_8859_1_close_env, portuguese_ISO_8859_1_stem}, + {"portuguese", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"pt", ENC_ISO_8859_1, portuguese_ISO_8859_1_create_env, portuguese_ISO_8859_1_close_env, portuguese_ISO_8859_1_stem}, + {"pt", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"ro", ENC_ISO_8859_2, romanian_ISO_8859_2_create_env, romanian_ISO_8859_2_close_env, romanian_ISO_8859_2_stem}, + {"ro", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"romanian", ENC_ISO_8859_2, romanian_ISO_8859_2_create_env, romanian_ISO_8859_2_close_env, romanian_ISO_8859_2_stem}, + {"romanian", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"ron", ENC_ISO_8859_2, romanian_ISO_8859_2_create_env, romanian_ISO_8859_2_close_env, romanian_ISO_8859_2_stem}, + {"ron", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"ru", ENC_KOI8_R, russian_KOI8_R_create_env, russian_KOI8_R_close_env, russian_KOI8_R_stem}, + {"ru", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"rum", ENC_ISO_8859_2, romanian_ISO_8859_2_create_env, romanian_ISO_8859_2_close_env, romanian_ISO_8859_2_stem}, + {"rum", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"rus", ENC_KOI8_R, russian_KOI8_R_create_env, russian_KOI8_R_close_env, russian_KOI8_R_stem}, + {"rus", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"russian", ENC_KOI8_R, russian_KOI8_R_create_env, russian_KOI8_R_close_env, russian_KOI8_R_stem}, + {"russian", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"spa", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem}, + {"spa", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"spanish", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem}, + {"spanish", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"sv", ENC_ISO_8859_1, swedish_ISO_8859_1_create_env, swedish_ISO_8859_1_close_env, swedish_ISO_8859_1_stem}, + {"sv", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"swe", ENC_ISO_8859_1, swedish_ISO_8859_1_create_env, swedish_ISO_8859_1_close_env, swedish_ISO_8859_1_stem}, + {"swe", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"swedish", ENC_ISO_8859_1, swedish_ISO_8859_1_create_env, swedish_ISO_8859_1_close_env, swedish_ISO_8859_1_stem}, + {"swedish", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"tr", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {"tur", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {"turkish", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {0,ENC_UNKNOWN,0,0,0} +}; +static const char * algorithm_names[] = { + "danish", + "dutch", + "english", + "finnish", + "french", + "german", + "hungarian", + "italian", + "norwegian", + "porter", + "portuguese", + "romanian", + "russian", + "spanish", + "swedish", + "turkish", + 0 +}; diff --git a/libstemmer/modules.txt b/libstemmer/modules.txt new file mode 100644 index 0000000..ddde920 --- /dev/null +++ b/libstemmer/modules.txt @@ -0,0 +1,50 @@ +# This file contains a list of stemmers to include in the distribution. +# The format is a set of space separated lines - on each line: +# First item is name of stemmer. +# Second item is comma separated list of character sets. +# Third item is comma separated list of names to refer to the stemmer by. +# +# Lines starting with a #, or blank lines, are ignored. + +# List all the main algorithms for each language, in UTF-8, and also with +# the most commonly used encoding. + +danish UTF_8,ISO_8859_1 danish,da,dan +dutch UTF_8,ISO_8859_1 dutch,nl,dut,nld +english UTF_8,ISO_8859_1 english,en,eng +finnish UTF_8,ISO_8859_1 finnish,fi,fin +french UTF_8,ISO_8859_1 french,fr,fre,fra +german UTF_8,ISO_8859_1 german,de,ger,deu +hungarian UTF_8,ISO_8859_1 hungarian,hu,hun +italian UTF_8,ISO_8859_1 italian,it,ita +norwegian UTF_8,ISO_8859_1 norwegian,no,nor +portuguese UTF_8,ISO_8859_1 portuguese,pt,por +romanian UTF_8,ISO_8859_2 romanian,ro,rum,ron +russian UTF_8,KOI8_R russian,ru,rus +spanish UTF_8,ISO_8859_1 spanish,es,esl,spa +swedish UTF_8,ISO_8859_1 swedish,sv,swe +turkish UTF_8 turkish,tr,tur + +# Also include the traditional porter algorithm for english. +# The porter algorithm is included in the libstemmer distribution to assist +# with backwards compatibility, but for new systems the english algorithm +# should be used in preference. +porter UTF_8,ISO_8859_1 porter + +# Some other stemmers in the snowball project are not included in the standard +# distribution. To compile a libstemmer with them in, add them to this list, +# and regenerate the distribution. (You will need a full source checkout for +# this.) They are included in the snowball website as curiosities, but are not +# intended for general use, and use of them is is not fully supported. These +# algorithms are: +# +# german2 - This is a slight modification of the german stemmer. +#german2 UTF_8,ISO_8859_1 german2 +# +# kraaij_pohlmann - This is a different dutch stemmer. +#kraaij_pohlmann UTF_8,ISO_8859_1 kraaij_pohlmann +# +# lovins - This is an english stemmer, but fairly outdated, and +# only really applicable to a restricted type of input text +# (keywords in academic publications). +#lovins UTF_8,ISO_8859_1 lovins diff --git a/libstemmer/modules_utf8.h b/libstemmer/modules_utf8.h new file mode 100644 index 0000000..6a7cc92 --- /dev/null +++ b/libstemmer/modules_utf8.h @@ -0,0 +1,121 @@ +/* libstemmer/modules_utf8.h: List of stemming modules. + * + * This file is generated by mkmodules.pl from a list of module names. + * Do not edit manually. + * + * Modules included by this file are: danish, dutch, english, finnish, french, + * german, hungarian, italian, norwegian, porter, portuguese, romanian, + * russian, spanish, swedish, turkish + */ + +#include "../src_c/stem_UTF_8_danish.h" +#include "../src_c/stem_UTF_8_dutch.h" +#include "../src_c/stem_UTF_8_english.h" +#include "../src_c/stem_UTF_8_finnish.h" +#include "../src_c/stem_UTF_8_french.h" +#include "../src_c/stem_UTF_8_german.h" +#include "../src_c/stem_UTF_8_hungarian.h" +#include "../src_c/stem_UTF_8_italian.h" +#include "../src_c/stem_UTF_8_norwegian.h" +#include "../src_c/stem_UTF_8_porter.h" +#include "../src_c/stem_UTF_8_portuguese.h" +#include "../src_c/stem_UTF_8_romanian.h" +#include "../src_c/stem_UTF_8_russian.h" +#include "../src_c/stem_UTF_8_spanish.h" +#include "../src_c/stem_UTF_8_swedish.h" +#include "../src_c/stem_UTF_8_turkish.h" + +typedef enum { + ENC_UNKNOWN=0, + ENC_UTF_8 +} stemmer_encoding_t; + +struct stemmer_encoding { + const char * name; + stemmer_encoding_t enc; +}; +static struct stemmer_encoding encodings[] = { + {"UTF_8", ENC_UTF_8}, + {0,ENC_UNKNOWN} +}; + +struct stemmer_modules { + const char * name; + stemmer_encoding_t enc; + struct SN_env * (*create)(void); + void (*close)(struct SN_env *); + int (*stem)(struct SN_env *); +}; +static struct stemmer_modules modules[] = { + {"da", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"dan", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"danish", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem}, + {"de", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"deu", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"dut", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"dutch", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"en", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"eng", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"english", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem}, + {"es", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"esl", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"fi", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"fin", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"finnish", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem}, + {"fr", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"fra", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"fre", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"french", ENC_UTF_8, french_UTF_8_create_env, french_UTF_8_close_env, french_UTF_8_stem}, + {"ger", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"german", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem}, + {"hu", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"hun", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"hungarian", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem}, + {"it", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"ita", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"italian", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem}, + {"nl", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"nld", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem}, + {"no", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"nor", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"norwegian", ENC_UTF_8, norwegian_UTF_8_create_env, norwegian_UTF_8_close_env, norwegian_UTF_8_stem}, + {"por", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"porter", ENC_UTF_8, porter_UTF_8_create_env, porter_UTF_8_close_env, porter_UTF_8_stem}, + {"portuguese", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"pt", ENC_UTF_8, portuguese_UTF_8_create_env, portuguese_UTF_8_close_env, portuguese_UTF_8_stem}, + {"ro", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"romanian", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"ron", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"ru", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"rum", ENC_UTF_8, romanian_UTF_8_create_env, romanian_UTF_8_close_env, romanian_UTF_8_stem}, + {"rus", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"russian", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem}, + {"spa", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"spanish", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem}, + {"sv", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"swe", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"swedish", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem}, + {"tr", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {"tur", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {"turkish", ENC_UTF_8, turkish_UTF_8_create_env, turkish_UTF_8_close_env, turkish_UTF_8_stem}, + {0,ENC_UNKNOWN,0,0,0} +}; +static const char * algorithm_names[] = { + "danish", + "dutch", + "english", + "finnish", + "french", + "german", + "hungarian", + "italian", + "norwegian", + "porter", + "portuguese", + "romanian", + "russian", + "spanish", + "swedish", + "turkish", + 0 +}; diff --git a/libstemmer/modules_utf8.txt b/libstemmer/modules_utf8.txt new file mode 100644 index 0000000..60a0e1d --- /dev/null +++ b/libstemmer/modules_utf8.txt @@ -0,0 +1,49 @@ +# This file contains a list of stemmers to include in the distribution. +# The format is a set of space separated lines - on each line: +# First item is name of stemmer. +# Second item is comma separated list of character sets. +# Third item is comma separated list of names to refer to the stemmer by. +# +# Lines starting with a #, or blank lines, are ignored. + +# List all the main algorithms for each language, in UTF-8. + +danish UTF_8 danish,da,dan +dutch UTF_8 dutch,nl,dut,nld +english UTF_8 english,en,eng +finnish UTF_8 finnish,fi,fin +french UTF_8 french,fr,fre,fra +german UTF_8 german,de,ger,deu +hungarian UTF_8 hungarian,hu,hun +italian UTF_8 italian,it,ita +norwegian UTF_8 norwegian,no,nor +portuguese UTF_8 portuguese,pt,por +romanian UTF_8 romanian,ro,rum,ron +russian UTF_8 russian,ru,rus +spanish UTF_8 spanish,es,esl,spa +swedish UTF_8 swedish,sv,swe +turkish UTF_8 turkish,tr,tur + +# Also include the traditional porter algorithm for english. +# The porter algorithm is included in the libstemmer distribution to assist +# with backwards compatibility, but for new systems the english algorithm +# should be used in preference. +porter UTF_8 porter + +# Some other stemmers in the snowball project are not included in the standard +# distribution. To compile a libstemmer with them in, add them to this list, +# and regenerate the distribution. (You will need a full source checkout for +# this.) They are included in the snowball website as curiosities, but are not +# intended for general use, and use of them is is not fully supported. These +# algorithms are: +# +# german2 - This is a slight modification of the german stemmer. +#german2 UTF_8 german2 +# +# kraaij_pohlmann - This is a different dutch stemmer. +#kraaij_pohlmann UTF_8 kraaij_pohlmann +# +# lovins - This is an english stemmer, but fairly outdated, and +# only really applicable to a restricted type of input text +# (keywords in academic publications). +#lovins UTF_8 lovins diff --git a/mkinc.mak b/mkinc.mak new file mode 100644 index 0000000..0c07199 --- /dev/null +++ b/mkinc.mak @@ -0,0 +1,82 @@ +# libstemmer/mkinc.mak: List of stemming module source files +# +# This file is generated by mkmodules.pl from a list of module names. +# Do not edit manually. +# +# Modules included by this file are: danish, dutch, english, finnish, french, +# german, hungarian, italian, norwegian, porter, portuguese, romanian, +# russian, spanish, swedish, turkish + +snowball_sources= \ + src_c/stem_ISO_8859_1_danish.c \ + src_c/stem_UTF_8_danish.c \ + src_c/stem_ISO_8859_1_dutch.c \ + src_c/stem_UTF_8_dutch.c \ + src_c/stem_ISO_8859_1_english.c \ + src_c/stem_UTF_8_english.c \ + src_c/stem_ISO_8859_1_finnish.c \ + src_c/stem_UTF_8_finnish.c \ + src_c/stem_ISO_8859_1_french.c \ + src_c/stem_UTF_8_french.c \ + src_c/stem_ISO_8859_1_german.c \ + src_c/stem_UTF_8_german.c \ + src_c/stem_ISO_8859_1_hungarian.c \ + src_c/stem_UTF_8_hungarian.c \ + src_c/stem_ISO_8859_1_italian.c \ + src_c/stem_UTF_8_italian.c \ + src_c/stem_ISO_8859_1_norwegian.c \ + src_c/stem_UTF_8_norwegian.c \ + src_c/stem_ISO_8859_1_porter.c \ + src_c/stem_UTF_8_porter.c \ + src_c/stem_ISO_8859_1_portuguese.c \ + src_c/stem_UTF_8_portuguese.c \ + src_c/stem_ISO_8859_2_romanian.c \ + src_c/stem_UTF_8_romanian.c \ + src_c/stem_KOI8_R_russian.c \ + src_c/stem_UTF_8_russian.c \ + src_c/stem_ISO_8859_1_spanish.c \ + src_c/stem_UTF_8_spanish.c \ + src_c/stem_ISO_8859_1_swedish.c \ + src_c/stem_UTF_8_swedish.c \ + src_c/stem_UTF_8_turkish.c \ + runtime/api.c \ + runtime/utilities.c \ + libstemmer/libstemmer.c + +snowball_headers= \ + src_c/stem_ISO_8859_1_danish.h \ + src_c/stem_UTF_8_danish.h \ + src_c/stem_ISO_8859_1_dutch.h \ + src_c/stem_UTF_8_dutch.h \ + src_c/stem_ISO_8859_1_english.h \ + src_c/stem_UTF_8_english.h \ + src_c/stem_ISO_8859_1_finnish.h \ + src_c/stem_UTF_8_finnish.h \ + src_c/stem_ISO_8859_1_french.h \ + src_c/stem_UTF_8_french.h \ + src_c/stem_ISO_8859_1_german.h \ + src_c/stem_UTF_8_german.h \ + src_c/stem_ISO_8859_1_hungarian.h \ + src_c/stem_UTF_8_hungarian.h \ + src_c/stem_ISO_8859_1_italian.h \ + src_c/stem_UTF_8_italian.h \ + src_c/stem_ISO_8859_1_norwegian.h \ + src_c/stem_UTF_8_norwegian.h \ + src_c/stem_ISO_8859_1_porter.h \ + src_c/stem_UTF_8_porter.h \ + src_c/stem_ISO_8859_1_portuguese.h \ + src_c/stem_UTF_8_portuguese.h \ + src_c/stem_ISO_8859_2_romanian.h \ + src_c/stem_UTF_8_romanian.h \ + src_c/stem_KOI8_R_russian.h \ + src_c/stem_UTF_8_russian.h \ + src_c/stem_ISO_8859_1_spanish.h \ + src_c/stem_UTF_8_spanish.h \ + src_c/stem_ISO_8859_1_swedish.h \ + src_c/stem_UTF_8_swedish.h \ + src_c/stem_UTF_8_turkish.h \ + include/libstemmer.h \ + libstemmer/modules.h \ + runtime/api.h \ + runtime/header.h + diff --git a/mkinc_utf8.mak b/mkinc_utf8.mak new file mode 100644 index 0000000..a8b260a --- /dev/null +++ b/mkinc_utf8.mak @@ -0,0 +1,52 @@ +# libstemmer/mkinc_utf8.mak: List of stemming module source files +# +# This file is generated by mkmodules.pl from a list of module names. +# Do not edit manually. +# +# Modules included by this file are: danish, dutch, english, finnish, french, +# german, hungarian, italian, norwegian, porter, portuguese, romanian, +# russian, spanish, swedish, turkish + +snowball_sources= \ + src_c/stem_UTF_8_danish.c \ + src_c/stem_UTF_8_dutch.c \ + src_c/stem_UTF_8_english.c \ + src_c/stem_UTF_8_finnish.c \ + src_c/stem_UTF_8_french.c \ + src_c/stem_UTF_8_german.c \ + src_c/stem_UTF_8_hungarian.c \ + src_c/stem_UTF_8_italian.c \ + src_c/stem_UTF_8_norwegian.c \ + src_c/stem_UTF_8_porter.c \ + src_c/stem_UTF_8_portuguese.c \ + src_c/stem_UTF_8_romanian.c \ + src_c/stem_UTF_8_russian.c \ + src_c/stem_UTF_8_spanish.c \ + src_c/stem_UTF_8_swedish.c \ + src_c/stem_UTF_8_turkish.c \ + runtime/api.c \ + runtime/utilities.c \ + libstemmer/libstemmer_utf8.c + +snowball_headers= \ + src_c/stem_UTF_8_danish.h \ + src_c/stem_UTF_8_dutch.h \ + src_c/stem_UTF_8_english.h \ + src_c/stem_UTF_8_finnish.h \ + src_c/stem_UTF_8_french.h \ + src_c/stem_UTF_8_german.h \ + src_c/stem_UTF_8_hungarian.h \ + src_c/stem_UTF_8_italian.h \ + src_c/stem_UTF_8_norwegian.h \ + src_c/stem_UTF_8_porter.h \ + src_c/stem_UTF_8_portuguese.h \ + src_c/stem_UTF_8_romanian.h \ + src_c/stem_UTF_8_russian.h \ + src_c/stem_UTF_8_spanish.h \ + src_c/stem_UTF_8_swedish.h \ + src_c/stem_UTF_8_turkish.h \ + include/libstemmer.h \ + libstemmer/modules_utf8.h \ + runtime/api.h \ + runtime/header.h + diff --git a/runtime/api.c b/runtime/api.c new file mode 100644 index 0000000..40039ef --- /dev/null +++ b/runtime/api.c @@ -0,0 +1,66 @@ + +#include /* for calloc, free */ +#include "header.h" + +extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size) +{ + struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env)); + if (z == NULL) return NULL; + 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 (B_size) + { + z->B = (unsigned char *) calloc(B_size, sizeof(unsigned char)); + if (z->B == NULL) goto error; + } + + return z; +error: + SN_close_env(z, S_size); + return NULL; +} + +extern void SN_close_env(struct SN_env * z, int S_size) +{ + if (z == NULL) return; + if (S_size) + { + int i; + for (i = 0; i < S_size; i++) + { + lose_s(z->S[i]); + } + free(z->S); + } + free(z->I); + free(z->B); + 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); + z->c = 0; + return err; +} + diff --git a/runtime/api.h b/runtime/api.h new file mode 100644 index 0000000..8b997f0 --- /dev/null +++ b/runtime/api.h @@ -0,0 +1,26 @@ + +typedef unsigned char symbol; + +/* Or replace 'char' above with 'short' for 16 bit characters. + + More precisely, replace 'char' with whatever type guarantees the + character width you need. Note however that sizeof(symbol) should divide + HEAD, defined in header.h as 2*sizeof(int), without remainder, otherwise + there is an alignment problem. In the unlikely event of a problem here, + consult Martin Porter. + +*/ + +struct SN_env { + symbol * p; + int c; int l; int lb; int bra; int ket; + symbol * * S; + int * I; + unsigned char * B; +}; + +extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size); +extern void SN_close_env(struct SN_env * z, int S_size); + +extern int SN_set_current(struct SN_env * z, int size, const symbol * s); + diff --git a/runtime/header.h b/runtime/header.h new file mode 100644 index 0000000..4d3078f --- /dev/null +++ b/runtime/header.h @@ -0,0 +1,58 @@ + +#include + +#include "api.h" + +#define MAXINT INT_MAX +#define MININT INT_MIN + +#define HEAD 2*sizeof(int) + +#define SIZE(p) ((int *)(p))[-1] +#define SET_SIZE(p, n) ((int *)(p))[-1] = n +#define CAPACITY(p) ((int *)(p))[-2] + +struct among +{ int s_size; /* number of chars in string */ + const symbol * s; /* search string */ + int substring_i;/* index to longest matching substring */ + int result; /* result of the lookup */ + int (* function)(struct SN_env *); +}; + +extern symbol * create_s(void); +extern void lose_s(symbol * p); + +extern int skip_utf8(const symbol * p, int c, int lb, int l, int n); + +extern int in_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int in_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int out_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int out_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); + +extern int in_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int in_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int out_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); +extern int out_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat); + +extern int eq_s(struct SN_env * z, int s_size, const symbol * s); +extern int eq_s_b(struct SN_env * z, int s_size, const symbol * s); +extern int eq_v(struct SN_env * z, const symbol * p); +extern int eq_v_b(struct SN_env * z, const symbol * p); + +extern int find_among(struct SN_env * z, const struct among * v, int v_size); +extern int find_among_b(struct SN_env * z, const struct among * v, int v_size); + +extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s, int * adjustment); +extern int slice_from_s(struct SN_env * z, int s_size, const symbol * s); +extern int slice_from_v(struct SN_env * z, const symbol * p); +extern int slice_del(struct SN_env * z); + +extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, const symbol * s); +extern int insert_v(struct SN_env * z, int bra, int ket, const symbol * p); + +extern symbol * slice_to(struct SN_env * z, symbol * p); +extern symbol * assign_to(struct SN_env * z, symbol * p); + +extern void debug(struct SN_env * z, int number, int line_count); + diff --git a/runtime/utilities.c b/runtime/utilities.c new file mode 100644 index 0000000..1840f02 --- /dev/null +++ b/runtime/utilities.c @@ -0,0 +1,478 @@ + +#include +#include +#include + +#include "header.h" + +#define unless(C) if(!(C)) + +#define CREATE_SIZE 1 + +extern symbol * create_s(void) { + symbol * p; + void * mem = malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol)); + if (mem == NULL) return NULL; + p = (symbol *) (HEAD + (char *) mem); + CAPACITY(p) = CREATE_SIZE; + SET_SIZE(p, CREATE_SIZE); + return p; +} + +extern void lose_s(symbol * p) { + if (p == NULL) return; + free((char *) p - HEAD); +} + +/* + new_p = skip_utf8(p, c, lb, l, n); skips n characters forwards from p + c + if n +ve, or n characters backwards from p + c - 1 if n -ve. new_p is the new + position, or 0 on failure. + + -- used to implement hop and next in the utf8 case. +*/ + +extern int skip_utf8(const symbol * p, int c, int lb, int l, int n) { + int b; + if (n >= 0) { + for (; n > 0; n--) { + if (c >= l) return -1; + b = p[c++]; + if (b >= 0xC0) { /* 1100 0000 */ + while (c < l) { + b = p[c]; + if (b >= 0xC0 || b < 0x80) break; + /* break unless b is 10------ */ + c++; + } + } + } + } else { + for (; n < 0; n++) { + if (c <= lb) return -1; + b = p[--c]; + if (b >= 0x80) { /* 1000 0000 */ + while (c > lb) { + b = p[c]; + if (b >= 0xC0) break; /* 1100 0000 */ + c--; + } + } + } + } + return c; +} + +/* Code for character groupings: utf8 cases */ + +static int get_utf8(const symbol * p, int c, int l, int * slot) { + int b0, b1; + if (c >= l) return 0; + b0 = p[c++]; + if (b0 < 0xC0 || c == l) { /* 1100 0000 */ + * slot = b0; return 1; + } + b1 = p[c++]; + if (b0 < 0xE0 || c == l) { /* 1110 0000 */ + * slot = (b0 & 0x1F) << 6 | (b1 & 0x3F); return 2; + } + * slot = (b0 & 0xF) << 12 | (b1 & 0x3F) << 6 | (p[c] & 0x3F); return 3; +} + +static int get_b_utf8(const symbol * p, int c, int lb, int * slot) { + int b0, b1; + if (c <= lb) return 0; + b0 = p[--c]; + if (b0 < 0x80 || c == lb) { /* 1000 0000 */ + * slot = b0; return 1; + } + b1 = p[--c]; + if (b1 >= 0xC0 || c == lb) { /* 1100 0000 */ + * slot = (b1 & 0x1F) << 6 | (b0 & 0x3F); return 2; + } + * slot = (p[c] & 0xF) << 12 | (b1 & 0x3F) << 6 | (b0 & 0x3F); return 3; +} + +extern int in_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + unless (w) return -1; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c += w; + } while (repeat); + return 0; +} + +extern int in_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + unless (w) return -1; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c -= w; + } while (repeat); + return 0; +} + +extern int out_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + unless (w) return -1; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c += w; + } while (repeat); + return 0; +} + +extern int out_grouping_b_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + unless (w) return -1; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return w; + z->c -= w; + } while (repeat); + return 0; +} + +/* Code for character groupings: non-utf8 cases */ + +extern int in_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + if (z->c >= z->l) return -1; + ch = z->p[z->c]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c++; + } while (repeat); + return 0; +} + +extern int in_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + if (z->c <= z->lb) return -1; + ch = z->p[z->c - 1]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c--; + } while (repeat); + return 0; +} + +extern int out_grouping(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + if (z->c >= z->l) return -1; + ch = z->p[z->c]; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c++; + } while (repeat); + return 0; +} + +extern int out_grouping_b(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { + do { + int ch; + if (z->c <= z->lb) return -1; + ch = z->p[z->c - 1]; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) + return 1; + z->c--; + } while (repeat); + return 0; +} + +extern int eq_s(struct SN_env * z, int s_size, const symbol * s) { + if (z->l - z->c < s_size || memcmp(z->p + z->c, s, s_size * sizeof(symbol)) != 0) return 0; + z->c += s_size; return 1; +} + +extern int eq_s_b(struct SN_env * z, int s_size, const symbol * s) { + if (z->c - z->lb < s_size || memcmp(z->p + z->c - s_size, s, s_size * sizeof(symbol)) != 0) return 0; + z->c -= s_size; return 1; +} + +extern int eq_v(struct SN_env * z, const symbol * p) { + return eq_s(z, SIZE(p), p); +} + +extern int eq_v_b(struct SN_env * z, const symbol * p) { + return eq_s_b(z, SIZE(p), p); +} + +extern int find_among(struct SN_env * z, const struct among * v, int v_size) { + + int i = 0; + int j = v_size; + + int c = z->c; int l = z->l; + symbol * q = z->p + c; + + const struct among * w; + + int common_i = 0; + int common_j = 0; + + int first_key_inspected = 0; + + while(1) { + int k = i + ((j - i) >> 1); + int diff = 0; + int common = common_i < common_j ? common_i : common_j; /* smaller */ + w = v + k; + { + int i2; for (i2 = common; i2 < w->s_size; i2++) { + if (c + common == l) { diff = -1; break; } + diff = q[common] - w->s[i2]; + if (diff != 0) break; + common++; + } + } + if (diff < 0) { j = k; common_j = common; } + else { i = k; common_i = common; } + if (j - i <= 1) { + if (i > 0) break; /* v->s has been inspected */ + if (j == i) break; /* only one item in v */ + + /* - but now we need to go round once more to get + v->s inspected. This looks messy, but is actually + the optimal approach. */ + + if (first_key_inspected) break; + first_key_inspected = 1; + } + } + while(1) { + w = v + i; + if (common_i >= w->s_size) { + z->c = c + w->s_size; + if (w->function == 0) return w->result; + { + int res = w->function(z); + z->c = c + w->s_size; + if (res) return w->result; + } + } + i = w->substring_i; + if (i < 0) return 0; + } +} + +/* find_among_b is for backwards processing. Same comments apply */ + +extern int find_among_b(struct SN_env * z, const struct among * v, int v_size) { + + int i = 0; + int j = v_size; + + int c = z->c; int lb = z->lb; + symbol * q = z->p + c - 1; + + const struct among * w; + + int common_i = 0; + int common_j = 0; + + int first_key_inspected = 0; + + while(1) { + int k = i + ((j - i) >> 1); + int diff = 0; + int common = common_i < common_j ? common_i : common_j; + w = v + k; + { + int i2; for (i2 = w->s_size - 1 - common; i2 >= 0; i2--) { + if (c - common == lb) { diff = -1; break; } + diff = q[- common] - w->s[i2]; + if (diff != 0) break; + common++; + } + } + if (diff < 0) { j = k; common_j = common; } + else { i = k; common_i = common; } + if (j - i <= 1) { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = 1; + } + } + while(1) { + w = v + i; + if (common_i >= w->s_size) { + z->c = c - w->s_size; + if (w->function == 0) return w->result; + { + int res = w->function(z); + z->c = c - w->s_size; + if (res) return w->result; + } + } + i = w->substring_i; + if (i < 0) return 0; + } +} + + +/* Increase the size of the buffer pointed to by p to at least n symbols. + * If insufficient memory, returns NULL and frees the old buffer. + */ +static symbol * increase_size(symbol * p, int n) { + symbol * q; + int new_size = n + 20; + void * mem = realloc((char *) p - HEAD, + HEAD + (new_size + 1) * sizeof(symbol)); + if (mem == NULL) { + lose_s(p); + return NULL; + } + q = (symbol *) (HEAD + (char *)mem); + CAPACITY(q) = new_size; + return q; +} + +/* to replace symbols between c_bra and c_ket in z->p by the + s_size symbols at s. + Returns 0 on success, -1 on error. + Also, frees z->p (and sets it to NULL) on error. +*/ +extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s, int * adjptr) +{ + int adjustment; + int len; + if (z->p == NULL) { + z->p = create_s(); + if (z->p == NULL) return -1; + } + adjustment = s_size - (c_ket - c_bra); + len = SIZE(z->p); + if (adjustment != 0) { + if (adjustment + len > CAPACITY(z->p)) { + z->p = increase_size(z->p, adjustment + len); + if (z->p == NULL) return -1; + } + memmove(z->p + c_ket + adjustment, + z->p + c_ket, + (len - c_ket) * sizeof(symbol)); + SET_SIZE(z->p, adjustment + len); + z->l += adjustment; + if (z->c >= c_ket) + z->c += adjustment; + else + if (z->c > c_bra) + z->c = c_bra; + } + unless (s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol)); + if (adjptr != NULL) + *adjptr = adjustment; + return 0; +} + +static int slice_check(struct SN_env * z) { + + if (z->bra < 0 || + z->bra > z->ket || + z->ket > z->l || + z->p == NULL || + z->l > SIZE(z->p)) /* this line could be removed */ + { +#if 0 + fprintf(stderr, "faulty slice operation:\n"); + debug(z, -1, 0); +#endif + return -1; + } + return 0; +} + +extern int slice_from_s(struct SN_env * z, int s_size, const symbol * s) { + if (slice_check(z)) return -1; + return replace_s(z, z->bra, z->ket, s_size, s, NULL); +} + +extern int slice_from_v(struct SN_env * z, const symbol * p) { + return slice_from_s(z, SIZE(p), p); +} + +extern int slice_del(struct SN_env * z) { + return slice_from_s(z, 0, 0); +} + +extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, const symbol * s) { + int adjustment; + if (replace_s(z, bra, ket, s_size, s, &adjustment)) + return -1; + if (bra <= z->bra) z->bra += adjustment; + if (bra <= z->ket) z->ket += adjustment; + return 0; +} + +extern int insert_v(struct SN_env * z, int bra, int ket, const symbol * p) { + int adjustment; + if (replace_s(z, bra, ket, SIZE(p), p, &adjustment)) + return -1; + if (bra <= z->bra) z->bra += adjustment; + if (bra <= z->ket) z->ket += adjustment; + return 0; +} + +extern symbol * slice_to(struct SN_env * z, symbol * p) { + if (slice_check(z)) { + lose_s(p); + return NULL; + } + { + int len = z->ket - z->bra; + if (CAPACITY(p) < len) { + p = increase_size(p, len); + if (p == NULL) + return NULL; + } + memmove(p, z->p + z->bra, len * sizeof(symbol)); + SET_SIZE(p, len); + } + return p; +} + +extern symbol * assign_to(struct SN_env * z, symbol * p) { + int len = z->l; + if (CAPACITY(p) < len) { + p = increase_size(p, len); + if (p == NULL) + return NULL; + } + memmove(p, z->p, len * sizeof(symbol)); + SET_SIZE(p, len); + return p; +} + +#if 0 +extern void debug(struct SN_env * z, int number, int line_count) { + int i; + int limit = SIZE(z->p); + /*if (number >= 0) printf("%3d (line %4d): '", number, line_count);*/ + if (number >= 0) printf("%3d (line %4d): [%d]'", number, line_count,limit); + for (i = 0; i <= limit; i++) { + if (z->lb == i) printf("{"); + if (z->bra == i) printf("["); + if (z->c == i) printf("|"); + if (z->ket == i) printf("]"); + if (z->l == i) printf("}"); + if (i < limit) + { int ch = z->p[i]; + if (ch == 0) ch = '#'; + printf("%c", ch); + } + } + printf("'\n"); +} +#endif diff --git a/src_c/stem_ISO_8859_1_danish.c b/src_c/stem_ISO_8859_1_danish.c new file mode 100644 index 0000000..a47bf8b --- /dev/null +++ b/src_c/stem_ISO_8859_1_danish.c @@ -0,0 +1,337 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); + + +#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' }; +static const symbol s_0_3[1] = { 'e' }; +static const symbol s_0_4[5] = { 'e', 'r', 'e', 'd', 'e' }; +static const symbol s_0_5[4] = { 'e', 'n', 'd', 'e' }; +static const symbol s_0_6[6] = { 'e', 'r', 'e', 'n', 'd', 'e' }; +static const symbol s_0_7[3] = { 'e', 'n', 'e' }; +static const symbol s_0_8[4] = { 'e', 'r', 'n', 'e' }; +static const symbol s_0_9[3] = { 'e', 'r', 'e' }; +static const symbol s_0_10[2] = { 'e', 'n' }; +static const symbol s_0_11[5] = { 'h', 'e', 'd', 'e', 'n' }; +static const symbol s_0_12[4] = { 'e', 'r', 'e', 'n' }; +static const symbol s_0_13[2] = { 'e', 'r' }; +static const symbol s_0_14[5] = { 'h', 'e', 'd', 'e', 'r' }; +static const symbol s_0_15[4] = { 'e', 'r', 'e', 'r' }; +static const symbol s_0_16[1] = { 's' }; +static const symbol s_0_17[4] = { 'h', 'e', 'd', 's' }; +static const symbol s_0_18[2] = { 'e', 's' }; +static const symbol s_0_19[5] = { 'e', 'n', 'd', 'e', 's' }; +static const symbol s_0_20[7] = { 'e', 'r', 'e', 'n', 'd', 'e', 's' }; +static const symbol s_0_21[4] = { 'e', 'n', 'e', 's' }; +static const symbol s_0_22[5] = { 'e', 'r', 'n', 'e', 's' }; +static const symbol s_0_23[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_0_24[3] = { 'e', 'n', 's' }; +static const symbol s_0_25[6] = { 'h', 'e', 'd', 'e', 'n', 's' }; +static const symbol s_0_26[5] = { 'e', 'r', 'e', 'n', 's' }; +static const symbol s_0_27[3] = { 'e', 'r', 's' }; +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] = +{ +/* 0 */ { 3, s_0_0, -1, 1, 0}, +/* 1 */ { 5, s_0_1, 0, 1, 0}, +/* 2 */ { 4, s_0_2, -1, 1, 0}, +/* 3 */ { 1, s_0_3, -1, 1, 0}, +/* 4 */ { 5, s_0_4, 3, 1, 0}, +/* 5 */ { 4, s_0_5, 3, 1, 0}, +/* 6 */ { 6, s_0_6, 5, 1, 0}, +/* 7 */ { 3, s_0_7, 3, 1, 0}, +/* 8 */ { 4, s_0_8, 3, 1, 0}, +/* 9 */ { 3, s_0_9, 3, 1, 0}, +/* 10 */ { 2, s_0_10, -1, 1, 0}, +/* 11 */ { 5, s_0_11, 10, 1, 0}, +/* 12 */ { 4, s_0_12, 10, 1, 0}, +/* 13 */ { 2, s_0_13, -1, 1, 0}, +/* 14 */ { 5, s_0_14, 13, 1, 0}, +/* 15 */ { 4, s_0_15, 13, 1, 0}, +/* 16 */ { 1, s_0_16, -1, 2, 0}, +/* 17 */ { 4, s_0_17, 16, 1, 0}, +/* 18 */ { 2, s_0_18, 16, 1, 0}, +/* 19 */ { 5, s_0_19, 18, 1, 0}, +/* 20 */ { 7, s_0_20, 19, 1, 0}, +/* 21 */ { 4, s_0_21, 18, 1, 0}, +/* 22 */ { 5, s_0_22, 18, 1, 0}, +/* 23 */ { 4, s_0_23, 18, 1, 0}, +/* 24 */ { 3, s_0_24, 16, 1, 0}, +/* 25 */ { 6, s_0_25, 24, 1, 0}, +/* 26 */ { 5, s_0_26, 24, 1, 0}, +/* 27 */ { 3, s_0_27, 16, 1, 0}, +/* 28 */ { 3, s_0_28, 16, 1, 0}, +/* 29 */ { 5, s_0_29, 28, 1, 0}, +/* 30 */ { 2, s_0_30, -1, 1, 0}, +/* 31 */ { 4, s_0_31, 30, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -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[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] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 4, s_2_2, 1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 1, 0}, +/* 4 */ { 4, s_2_4, -1, 2, 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 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[0] = z->l; + { int c_test = z->c; /* test, line 33 */ + { int ret = z->c + 3; + if (0 > ret || ret > z->l) return 0; + z->c = ret; /* hop, line 33 */ + } + z->I[1] = z->c; /* setmark x, line 33 */ + z->c = c_test; + } + if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 34 */ + { /* gopast */ /* non v, line 34 */ + int ret = in_grouping(z, g_v, 97, 248, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 34 */ + /* try, line 35 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 41 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 41 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 41 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 32); /* substring, line 41 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 41 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 48 */ + 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); /* delete, line 50 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 55 */ + { int mlimit; /* setlimit, line 56 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 56 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 56 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit; return 0; } /* substring, line 56 */ + z->bra = z->c; /* ], line 56 */ + z->lb = mlimit; + } + z->c = z->l - m_test; + } + if (z->c <= z->lb) return 0; + z->c--; /* next, line 62 */ + z->bra = z->c; /* ], line 62 */ + { int ret = slice_del(z); /* delete, line 62 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 66 */ + z->ket = z->c; /* [, line 66 */ + if (!(eq_s_b(z, 2, s_0))) goto lab0; + z->bra = z->c; /* ], line 66 */ + if (!(eq_s_b(z, 2, s_1))) goto lab0; + { int ret = slice_del(z); /* delete, line 66 */ + if (ret < 0) return ret; + } + lab0: + z->c = z->l - m1; + } + { int mlimit; /* setlimit, line 67 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 67 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + z->ket = z->c; /* [, line 67 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 5); /* substring, line 67 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 67 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 70 */ + if (ret < 0) return ret; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 70 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab1; /* call consonant_pair, line 70 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m3; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_2); /* <-, line 72 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_undouble(struct SN_env * z) { + { int mlimit; /* setlimit, line 76 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 76 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 76 */ + if (out_grouping_b(z, g_v, 97, 248, 0)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 76 */ + z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 76 */ + if (z->S[0] == 0) return -1; /* -> ch, line 76 */ + z->lb = mlimit; + } + if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 77 */ + { int ret = slice_del(z); /* delete, line 78 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int danish_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 84 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 84 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 85 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 86 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 86 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 87 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 87 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 88 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 88 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 89 */ + { int ret = r_undouble(z); + if (ret == 0) goto lab4; /* call undouble, line 89 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * danish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2, 0); } + +extern void danish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); } + diff --git a/src_c/stem_ISO_8859_1_danish.h b/src_c/stem_ISO_8859_1_danish.h new file mode 100644 index 0000000..49c5559 --- /dev/null +++ b/src_c/stem_ISO_8859_1_danish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int danish_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_dutch.c b/src_c/stem_ISO_8859_1_dutch.c new file mode 100644 index 0000000..31dad47 --- /dev/null +++ b/src_c/stem_ISO_8859_1_dutch.c @@ -0,0 +1,624 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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_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); + + +#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, 0, -1, 6, 0}, +/* 1 */ { 1, s_0_1, 0, 1, 0}, +/* 2 */ { 1, s_0_2, 0, 1, 0}, +/* 3 */ { 1, s_0_3, 0, 2, 0}, +/* 4 */ { 1, s_0_4, 0, 2, 0}, +/* 5 */ { 1, s_0_5, 0, 3, 0}, +/* 6 */ { 1, s_0_6, 0, 3, 0}, +/* 7 */ { 1, s_0_7, 0, 4, 0}, +/* 8 */ { 1, s_0_8, 0, 4, 0}, +/* 9 */ { 1, s_0_9, 0, 5, 0}, +/* 10 */ { 1, s_0_10, 0, 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, -1, 3, 0}, +/* 1 */ { 1, s_1_1, 0, 2, 0}, +/* 2 */ { 1, s_1_2, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -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] = +{ +/* 0 */ { 3, s_3_0, -1, 2, 0}, +/* 1 */ { 2, s_3_1, -1, 3, 0}, +/* 2 */ { 2, s_3_2, -1, 2, 0}, +/* 3 */ { 5, s_3_3, 2, 1, 0}, +/* 4 */ { 1, s_3_4, -1, 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] = +{ +/* 0 */ { 3, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 2, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 3, 0}, +/* 4 */ { 4, s_4_4, -1, 4, 0}, +/* 5 */ { 3, s_4_5, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, -1, 0}, +/* 1 */ { 2, s_5_1, -1, -1, 0}, +/* 2 */ { 2, s_5_2, -1, -1, 0}, +/* 3 */ { 2, s_5_3, -1, -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 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[] = { 'Y' }; +static const symbol s_7[] = { 'i' }; +static const symbol s_8[] = { 'I' }; +static const symbol s_9[] = { 'y' }; +static const symbol s_10[] = { 'Y' }; +static const symbol s_11[] = { 'y' }; +static const symbol s_12[] = { 'i' }; +static const symbol s_13[] = { 'e' }; +static const symbol s_14[] = { 'g', 'e', 'm' }; +static const symbol s_15[] = { 'h', 'e', 'i', 'd' }; +static const symbol s_16[] = { 'h', 'e', 'i', 'd' }; +static const symbol s_17[] = { 'c' }; +static const symbol s_18[] = { 'e', 'n' }; +static const symbol s_19[] = { 'i', 'g' }; +static const symbol s_20[] = { 'e' }; +static const symbol s_21[] = { 'e' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + { int c_test = z->c; /* test, line 42 */ + while(1) { /* repeat, line 42 */ + int c1 = z->c; + z->bra = z->c; /* [, line 43 */ + 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); /* substring, line 43 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 43 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 45 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 47 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 49 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 6: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 54 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + { int c_keep = z->c; /* try, line 57 */ + z->bra = z->c; /* [, line 57 */ + if (!(eq_s(z, 1, s_5))) { z->c = c_keep; goto lab1; } + z->ket = z->c; /* ], line 57 */ + { int ret = slice_from_s(z, 1, s_6); /* <-, line 57 */ + if (ret < 0) return ret; + } + lab1: + ; + } + while(1) { /* repeat, line 58 */ + int c2 = z->c; + while(1) { /* goto, line 58 */ + int c3 = z->c; + if (in_grouping(z, g_v, 97, 232, 0)) goto lab3; + z->bra = z->c; /* [, line 59 */ + { int c4 = z->c; /* or, line 59 */ + if (!(eq_s(z, 1, s_7))) goto lab5; + z->ket = z->c; /* ], line 59 */ + if (in_grouping(z, g_v, 97, 232, 0)) goto lab5; + { int ret = slice_from_s(z, 1, s_8); /* <-, line 59 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = c4; + if (!(eq_s(z, 1, s_9))) goto lab3; + z->ket = z->c; /* ], line 60 */ + { int ret = slice_from_s(z, 1, s_10); /* <-, line 60 */ + if (ret < 0) return ret; + } + } + lab4: + z->c = c3; + break; + lab3: + z->c = c3; + if (z->c >= z->l) goto lab2; + z->c++; /* goto, line 58 */ + } + continue; + lab2: + z->c = c2; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { /* gopast */ /* grouping v, line 69 */ + int ret = out_grouping(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 69 */ + int ret = in_grouping(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 69 */ + /* try, line 70 */ + if (!(z->I[0] < 3)) goto lab0; + z->I[0] = 3; +lab0: + { /* gopast */ /* grouping v, line 71 */ + int ret = out_grouping(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 71 */ + int ret = in_grouping(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 71 */ + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 75 */ + int c1 = z->c; + z->bra = z->c; /* [, line 77 */ + 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); /* substring, line 77 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 77 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 80 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_undouble(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 91 */ + 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; /* among, line 91 */ + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 91 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 91 */ + z->bra = z->c; /* ], line 91 */ + { int ret = slice_del(z); /* delete, line 91 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_e_ending(struct SN_env * z) { + z->B[0] = 0; /* unset e_found, line 95 */ + z->ket = z->c; /* [, line 96 */ + if (!(eq_s_b(z, 1, s_13))) return 0; + z->bra = z->c; /* ], line 96 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 96 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 96 */ + if (out_grouping_b(z, g_v, 97, 232, 0)) return 0; + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set e_found, line 97 */ + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 98 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_en_ending(struct SN_env * z) { + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 102 */ + if (ret < 0) return ret; + } + { int m1 = z->l - z->c; (void)m1; /* and, line 102 */ + 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; /* not, line 102 */ + if (!(eq_s_b(z, 3, s_14))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + } + { int ret = slice_del(z); /* delete, line 102 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 103 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 107 */ + z->ket = z->c; /* [, line 108 */ + 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); /* substring, line 108 */ + if (!(among_var)) goto lab0; + z->bra = z->c; /* ], line 108 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_15); /* <-, line 110 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_en_ending(z); + if (ret == 0) goto lab0; /* call en_ending, line 113 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 116 */ + if (ret < 0) return ret; + } + if (out_grouping_b(z, g_v_j, 97, 232, 0)) goto lab0; + { int ret = slice_del(z); /* delete, line 116 */ + if (ret < 0) return ret; + } + break; + } + lab0: + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 120 */ + { int ret = r_e_ending(z); + if (ret == 0) goto lab1; /* call e_ending, line 120 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 122 */ + z->ket = z->c; /* [, line 122 */ + if (!(eq_s_b(z, 4, s_16))) goto lab2; + z->bra = z->c; /* ], line 122 */ + { int ret = r_R2(z); + if (ret == 0) goto lab2; /* call R2, line 122 */ + if (ret < 0) return ret; + } + { int m4 = z->l - z->c; (void)m4; /* not, line 122 */ + if (!(eq_s_b(z, 1, s_17))) goto lab3; + goto lab2; + lab3: + z->c = z->l - m4; + } + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 123 */ + if (!(eq_s_b(z, 2, s_18))) goto lab2; + z->bra = z->c; /* ], line 123 */ + { int ret = r_en_ending(z); + if (ret == 0) goto lab2; /* call en_ending, line 123 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 126 */ + z->ket = z->c; /* [, line 127 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4; + among_var = find_among_b(z, a_4, 6); /* substring, line 127 */ + if (!(among_var)) goto lab4; + z->bra = z->c; /* ], line 127 */ + switch(among_var) { + case 0: goto lab4; + case 1: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 129 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 130 */ + z->ket = z->c; /* [, line 130 */ + if (!(eq_s_b(z, 2, s_19))) goto lab6; + z->bra = z->c; /* ], line 130 */ + { int ret = r_R2(z); + if (ret == 0) goto lab6; /* call R2, line 130 */ + if (ret < 0) return ret; + } + { int m7 = z->l - z->c; (void)m7; /* not, line 130 */ + if (!(eq_s_b(z, 1, s_20))) goto lab7; + goto lab6; + lab7: + z->c = z->l - m7; + } + { int ret = slice_del(z); /* delete, line 130 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_undouble(z); + if (ret == 0) goto lab4; /* call undouble, line 130 */ + if (ret < 0) return ret; + } + } + lab5: + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 133 */ + if (ret < 0) return ret; + } + { int m8 = z->l - z->c; (void)m8; /* not, line 133 */ + if (!(eq_s_b(z, 1, s_21))) goto lab8; + goto lab4; + lab8: + z->c = z->l - m8; + } + { int ret = slice_del(z); /* delete, line 133 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 136 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 136 */ + if (ret < 0) return ret; + } + { int ret = r_e_ending(z); + if (ret == 0) goto lab4; /* call e_ending, line 136 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 139 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 139 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 142 */ + if (ret < 0) return ret; + } + if (!(z->B[0])) goto lab4; /* Boolean test e_found, line 142 */ + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + break; + } + lab4: + z->c = z->l - m5; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 146 */ + if (out_grouping_b(z, g_v_I, 73, 232, 0)) goto lab9; + { int m_test = z->l - z->c; /* test, line 148 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab9; + if (!(find_among_b(z, a_5, 4))) goto lab9; /* among, line 149 */ + if (out_grouping_b(z, g_v, 97, 232, 0)) goto lab9; + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 152 */ + if (z->c <= z->lb) goto lab9; + z->c--; /* next, line 152 */ + z->bra = z->c; /* ], line 152 */ + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m9; + } + return 1; +} + +extern int dutch_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 159 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 159 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 160 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 160 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 161 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 162 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab2; /* call standard_suffix, line 162 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + z->c = z->lb; + { int c4 = z->c; /* do, line 163 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab3; /* call postlude, line 163 */ + if (ret < 0) return ret; + } + lab3: + z->c = c4; + } + return 1; +} + +extern struct SN_env * dutch_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void dutch_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_dutch.h b/src_c/stem_ISO_8859_1_dutch.h new file mode 100644 index 0000000..e67d111 --- /dev/null +++ b/src_c/stem_ISO_8859_1_dutch.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int dutch_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_english.c b/src_c/stem_ISO_8859_1_english.c new file mode 100644 index 0000000..556b6ab --- /dev/null +++ b/src_c/stem_ISO_8859_1_english.c @@ -0,0 +1,1117 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_Step_3(struct SN_env * z); +static int r_Step_2(struct SN_env * z); +static int r_Step_1c(struct SN_env * z); +static int r_Step_1b(struct SN_env * z); +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); +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); + + +#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] = +{ +/* 0 */ { 5, s_0_0, -1, -1, 0}, +/* 1 */ { 6, s_0_1, -1, -1, 0}, +/* 2 */ { 5, s_0_2, -1, -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] = +{ +/* 0 */ { 1, s_1_0, -1, 1, 0}, +/* 1 */ { 3, s_1_1, 0, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 1, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'e', 'd' }; +static const symbol s_2_1[1] = { 's' }; +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] = +{ +/* 0 */ { 3, s_2_0, -1, 2, 0}, +/* 1 */ { 1, s_2_1, -1, 3, 0}, +/* 2 */ { 3, s_2_2, 1, 2, 0}, +/* 3 */ { 4, s_2_3, 1, 1, 0}, +/* 4 */ { 2, s_2_4, 1, -1, 0}, +/* 5 */ { 2, s_2_5, 1, -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, 0, -1, 3, 0}, +/* 1 */ { 2, s_3_1, 0, 2, 0}, +/* 2 */ { 2, s_3_2, 0, 2, 0}, +/* 3 */ { 2, s_3_3, 0, 2, 0}, +/* 4 */ { 2, s_3_4, 0, 2, 0}, +/* 5 */ { 2, s_3_5, 0, 1, 0}, +/* 6 */ { 2, s_3_6, 0, 2, 0}, +/* 7 */ { 2, s_3_7, 0, 2, 0}, +/* 8 */ { 2, s_3_8, 0, 2, 0}, +/* 9 */ { 2, s_3_9, 0, 2, 0}, +/* 10 */ { 2, s_3_10, 0, 1, 0}, +/* 11 */ { 2, s_3_11, 0, 2, 0}, +/* 12 */ { 2, s_3_12, 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] = +{ +/* 0 */ { 2, s_4_0, -1, 2, 0}, +/* 1 */ { 3, s_4_1, 0, 1, 0}, +/* 2 */ { 3, s_4_2, -1, 2, 0}, +/* 3 */ { 4, s_4_3, -1, 2, 0}, +/* 4 */ { 5, s_4_4, 3, 1, 0}, +/* 5 */ { 5, s_4_5, -1, 2, 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] = +{ +/* 0 */ { 4, s_5_0, -1, 3, 0}, +/* 1 */ { 4, s_5_1, -1, 2, 0}, +/* 2 */ { 3, s_5_2, -1, 13, 0}, +/* 3 */ { 2, s_5_3, -1, 16, 0}, +/* 4 */ { 3, s_5_4, 3, 12, 0}, +/* 5 */ { 4, s_5_5, 4, 4, 0}, +/* 6 */ { 4, s_5_6, 3, 8, 0}, +/* 7 */ { 5, s_5_7, 3, 14, 0}, +/* 8 */ { 6, s_5_8, 3, 15, 0}, +/* 9 */ { 5, s_5_9, 3, 10, 0}, +/* 10 */ { 5, s_5_10, 3, 5, 0}, +/* 11 */ { 5, s_5_11, -1, 8, 0}, +/* 12 */ { 6, s_5_12, -1, 12, 0}, +/* 13 */ { 5, s_5_13, -1, 11, 0}, +/* 14 */ { 6, s_5_14, -1, 1, 0}, +/* 15 */ { 7, s_5_15, 14, 7, 0}, +/* 16 */ { 5, s_5_16, -1, 8, 0}, +/* 17 */ { 5, s_5_17, -1, 7, 0}, +/* 18 */ { 7, s_5_18, 17, 6, 0}, +/* 19 */ { 4, s_5_19, -1, 6, 0}, +/* 20 */ { 4, s_5_20, -1, 7, 0}, +/* 21 */ { 7, s_5_21, -1, 11, 0}, +/* 22 */ { 7, s_5_22, -1, 9, 0}, +/* 23 */ { 7, s_5_23, -1, 10, 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] = +{ +/* 0 */ { 5, s_6_0, -1, 4, 0}, +/* 1 */ { 5, s_6_1, -1, 6, 0}, +/* 2 */ { 5, s_6_2, -1, 3, 0}, +/* 3 */ { 5, s_6_3, -1, 4, 0}, +/* 4 */ { 4, s_6_4, -1, 4, 0}, +/* 5 */ { 6, s_6_5, -1, 1, 0}, +/* 6 */ { 7, s_6_6, 5, 2, 0}, +/* 7 */ { 3, s_6_7, -1, 5, 0}, +/* 8 */ { 4, s_6_8, -1, 5, 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] = +{ +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 4, s_7_1, -1, 1, 0}, +/* 2 */ { 4, s_7_2, -1, 1, 0}, +/* 3 */ { 4, s_7_3, -1, 1, 0}, +/* 4 */ { 4, s_7_4, -1, 1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 3, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 3, s_7_8, -1, 1, 0}, +/* 9 */ { 2, s_7_9, -1, 1, 0}, +/* 10 */ { 3, s_7_10, -1, 1, 0}, +/* 11 */ { 3, s_7_11, -1, 2, 0}, +/* 12 */ { 2, s_7_12, -1, 1, 0}, +/* 13 */ { 3, s_7_13, -1, 1, 0}, +/* 14 */ { 3, s_7_14, -1, 1, 0}, +/* 15 */ { 3, s_7_15, -1, 1, 0}, +/* 16 */ { 4, s_7_16, 15, 1, 0}, +/* 17 */ { 5, s_7_17, 16, 1, 0} +}; + +static const symbol s_8_0[1] = { 'e' }; +static const symbol s_8_1[1] = { 'l' }; + +static const struct among a_8[2] = +{ +/* 0 */ { 1, s_8_0, -1, 1, 0}, +/* 1 */ { 1, s_8_1, -1, 2, 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] = +{ +/* 0 */ { 7, s_9_0, -1, -1, 0}, +/* 1 */ { 7, s_9_1, -1, -1, 0}, +/* 2 */ { 6, s_9_2, -1, -1, 0}, +/* 3 */ { 7, s_9_3, -1, -1, 0}, +/* 4 */ { 6, s_9_4, -1, -1, 0}, +/* 5 */ { 7, s_9_5, -1, -1, 0}, +/* 6 */ { 7, s_9_6, -1, -1, 0}, +/* 7 */ { 6, s_9_7, -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 struct among a_10[18] = +{ +/* 0 */ { 5, s_10_0, -1, -1, 0}, +/* 1 */ { 5, s_10_1, -1, -1, 0}, +/* 2 */ { 4, s_10_2, -1, -1, 0}, +/* 3 */ { 6, s_10_3, -1, -1, 0}, +/* 4 */ { 5, s_10_4, -1, 3, 0}, +/* 5 */ { 5, s_10_5, -1, 9, 0}, +/* 6 */ { 6, s_10_6, -1, 7, 0}, +/* 7 */ { 4, s_10_7, -1, -1, 0}, +/* 8 */ { 4, s_10_8, -1, 6, 0}, +/* 9 */ { 5, s_10_9, -1, 4, 0}, +/* 10 */ { 4, s_10_10, -1, -1, 0}, +/* 11 */ { 4, s_10_11, -1, 10, 0}, +/* 12 */ { 6, s_10_12, -1, 11, 0}, +/* 13 */ { 5, s_10_13, -1, 2, 0}, +/* 14 */ { 4, s_10_14, -1, 1, 0}, +/* 15 */ { 3, s_10_15, -1, -1, 0}, +/* 16 */ { 5, s_10_16, -1, 5, 0}, +/* 17 */ { 4, s_10_17, -1, 8, 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 unsigned char g_valid_LI[] = { 55, 141, 2 }; + +static const symbol s_0[] = { '\'' }; +static const symbol s_1[] = { 'y' }; +static const symbol s_2[] = { 'Y' }; +static const symbol s_3[] = { 'y' }; +static const symbol s_4[] = { 'Y' }; +static const symbol s_5[] = { 's', 's' }; +static const symbol s_6[] = { 'i' }; +static const symbol s_7[] = { 'i', 'e' }; +static const symbol s_8[] = { 'e', 'e' }; +static const symbol s_9[] = { 'e' }; +static const symbol s_10[] = { 'e' }; +static const symbol s_11[] = { 'y' }; +static const symbol s_12[] = { 'Y' }; +static const symbol s_13[] = { 'i' }; +static const symbol s_14[] = { 't', 'i', 'o', 'n' }; +static const symbol s_15[] = { 'e', 'n', 'c', 'e' }; +static const symbol s_16[] = { 'a', 'n', 'c', 'e' }; +static const symbol s_17[] = { 'a', 'b', 'l', 'e' }; +static const symbol s_18[] = { 'e', 'n', 't' }; +static const symbol s_19[] = { 'i', 'z', 'e' }; +static const symbol s_20[] = { 'a', 't', 'e' }; +static const symbol s_21[] = { 'a', 'l' }; +static const symbol s_22[] = { 'f', 'u', 'l' }; +static const symbol s_23[] = { 'o', 'u', 's' }; +static const symbol s_24[] = { 'i', 'v', 'e' }; +static const symbol s_25[] = { 'b', 'l', 'e' }; +static const symbol s_26[] = { 'l' }; +static const symbol s_27[] = { 'o', 'g' }; +static const symbol s_28[] = { 'f', 'u', 'l' }; +static const symbol s_29[] = { 'l', 'e', 's', 's' }; +static const symbol s_30[] = { 't', 'i', 'o', 'n' }; +static const symbol s_31[] = { 'a', 't', 'e' }; +static const symbol s_32[] = { 'a', 'l' }; +static const symbol s_33[] = { 'i', 'c' }; +static const symbol s_34[] = { 's' }; +static const symbol s_35[] = { 't' }; +static const symbol s_36[] = { 'l' }; +static const symbol s_37[] = { 's', 'k', 'i' }; +static const symbol s_38[] = { 's', 'k', 'y' }; +static const symbol s_39[] = { 'd', 'i', 'e' }; +static const symbol s_40[] = { 'l', 'i', 'e' }; +static const symbol s_41[] = { 't', 'i', 'e' }; +static const symbol s_42[] = { 'i', 'd', 'l' }; +static const symbol s_43[] = { 'g', 'e', 'n', 't', 'l' }; +static const symbol s_44[] = { 'u', 'g', 'l', 'i' }; +static const symbol s_45[] = { 'e', 'a', 'r', 'l', 'i' }; +static const symbol s_46[] = { 'o', 'n', 'l', 'i' }; +static const symbol s_47[] = { 's', 'i', 'n', 'g', 'l' }; +static const symbol s_48[] = { 'Y' }; +static const symbol s_49[] = { 'y' }; + +static int r_prelude(struct SN_env * z) { + z->B[0] = 0; /* unset Y_found, line 26 */ + { int c1 = z->c; /* do, line 27 */ + z->bra = z->c; /* [, line 27 */ + if (!(eq_s(z, 1, s_0))) goto lab0; + z->ket = z->c; /* ], line 27 */ + { int ret = slice_del(z); /* delete, line 27 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 28 */ + z->bra = z->c; /* [, line 28 */ + if (!(eq_s(z, 1, s_1))) goto lab1; + z->ket = z->c; /* ], line 28 */ + { int ret = slice_from_s(z, 1, s_2); /* <-, line 28 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 28 */ + lab1: + z->c = c2; + } + { int c3 = z->c; /* do, line 29 */ + while(1) { /* repeat, line 29 */ + int c4 = z->c; + while(1) { /* goto, line 29 */ + int c5 = z->c; + if (in_grouping(z, g_v, 97, 121, 0)) goto lab4; + z->bra = z->c; /* [, line 29 */ + if (!(eq_s(z, 1, s_3))) goto lab4; + z->ket = z->c; /* ], line 29 */ + z->c = c5; + break; + lab4: + z->c = c5; + if (z->c >= z->l) goto lab3; + z->c++; /* goto, line 29 */ + } + { int ret = slice_from_s(z, 1, s_4); /* <-, line 29 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 29 */ + continue; + lab3: + z->c = c4; + break; + } + z->c = c3; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c1 = z->c; /* do, line 35 */ + { int c2 = z->c; /* or, line 41 */ + 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; /* among, line 36 */ + goto lab1; + lab2: + z->c = c2; + { /* gopast */ /* grouping v, line 41 */ + int ret = out_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 41 */ + int ret = in_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + } + lab1: + z->I[0] = z->c; /* setmark p1, line 42 */ + { /* gopast */ /* grouping v, line 43 */ + int ret = out_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 43 */ + int ret = in_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 43 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_shortv(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 51 */ + 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; + if (out_grouping_b(z, g_v, 97, 121, 0)) goto lab1; + goto lab0; + 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; /* atlimit, line 52 */ + } +lab0: + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_Step_1a(struct SN_env * z) { + int among_var; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 59 */ + z->ket = z->c; /* [, line 60 */ + if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - m_keep; goto lab0; } + among_var = find_among_b(z, a_1, 3); /* substring, line 60 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 60 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + { int ret = slice_del(z); /* delete, line 62 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + z->ket = z->c; /* [, line 65 */ + 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); /* substring, line 65 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 65 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_5); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 68 */ + { int ret = z->c - 2; + if (z->lb > ret || ret > z->l) goto lab2; + z->c = ret; /* hop, line 68 */ + } + { int ret = slice_from_s(z, 1, s_6); /* <-, line 68 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m1; + { int ret = slice_from_s(z, 2, s_7); /* <-, line 68 */ + if (ret < 0) return ret; + } + } + lab1: + break; + case 3: + if (z->c <= z->lb) return 0; + z->c--; /* next, line 69 */ + { /* gopast */ /* grouping v, line 69 */ + int ret = out_grouping_b(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + { int ret = slice_del(z); /* delete, line 69 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_1b(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 75 */ + 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); /* substring, line 75 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 75 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 77 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_8); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m_test = z->l - z->c; /* test, line 80 */ + { /* gopast */ /* grouping v, line 80 */ + int ret = out_grouping_b(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 80 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 81 */ + 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); /* substring, line 81 */ + if (!(among_var)) return 0; + z->c = z->l - m_test; + } + switch(among_var) { + case 0: return 0; + case 1: + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_9); /* <+, line 83 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + case 2: + z->ket = z->c; /* [, line 86 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 86 */ + z->bra = z->c; /* ], line 86 */ + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c != z->I[0]) return 0; /* atmark, line 87 */ + { int m_test = z->l - z->c; /* test, line 87 */ + { int ret = r_shortv(z); + if (ret == 0) return 0; /* call shortv, line 87 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_10); /* <+, line 87 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + } + break; + } + return 1; +} + +static int r_Step_1c(struct SN_env * z) { + z->ket = z->c; /* [, line 94 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 94 */ + if (!(eq_s_b(z, 1, s_11))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_12))) return 0; + } +lab0: + z->bra = z->c; /* ], line 94 */ + if (out_grouping_b(z, g_v, 97, 121, 0)) return 0; + { int m2 = z->l - z->c; (void)m2; /* not, line 95 */ + if (z->c > z->lb) goto lab2; /* atlimit, line 95 */ + return 0; + lab2: + z->c = z->l - m2; + } + { int ret = slice_from_s(z, 1, s_13); /* <-, line 96 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_2(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 100 */ + 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); /* substring, line 100 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 100 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 100 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_14); /* <-, line 101 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_15); /* <-, line 102 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_16); /* <-, line 103 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 4, s_17); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_18); /* <-, line 105 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 3, s_19); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 3, s_20); /* <-, line 109 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 2, s_21); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 3, s_22); /* <-, line 112 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 3, s_23); /* <-, line 114 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 3, s_24); /* <-, line 116 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 3, s_25); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 13: + if (!(eq_s_b(z, 1, s_26))) return 0; + { int ret = slice_from_s(z, 2, s_27); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 3, s_28); /* <-, line 120 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_from_s(z, 4, s_29); /* <-, line 121 */ + 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); /* delete, line 122 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_3(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 127 */ + 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); /* substring, line 127 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 127 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 127 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_30); /* <-, line 128 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_31); /* <-, line 129 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_32); /* <-, line 130 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 2, s_33); /* <-, line 132 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 136 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 136 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_4(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 141 */ + 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); /* substring, line 141 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 141 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 141 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 144 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 145 */ + if (!(eq_s_b(z, 1, s_34))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_35))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_5(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 150 */ + 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); /* substring, line 150 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 150 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 151 */ + { int ret = r_R2(z); + if (ret == 0) goto lab1; /* call R2, line 151 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 151 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* not, line 151 */ + { int ret = r_shortv(z); + if (ret == 0) goto lab2; /* call shortv, line 151 */ + if (ret < 0) return ret; + } + return 0; + lab2: + z->c = z->l - m2; + } + } + lab0: + { int ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 152 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_36))) return 0; + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_exception2(struct SN_env * z) { + z->ket = z->c; /* [, line 158 */ + 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; /* substring, line 158 */ + z->bra = z->c; /* ], line 158 */ + if (z->c > z->lb) return 0; /* atlimit, line 158 */ + return 1; +} + +static int r_exception1(struct SN_env * z) { + int among_var; + z->bra = z->c; /* [, line 170 */ + 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); /* substring, line 170 */ + if (!(among_var)) return 0; + z->ket = z->c; /* ], line 170 */ + if (z->c < z->l) return 0; /* atlimit, line 170 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 3, s_37); /* <-, line 174 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_38); /* <-, line 175 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_39); /* <-, line 176 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 3, s_40); /* <-, line 177 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_41); /* <-, line 178 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 3, s_42); /* <-, line 182 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 5, s_43); /* <-, line 183 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 4, s_44); /* <-, line 184 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 5, s_45); /* <-, line 185 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 4, s_46); /* <-, line 186 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 5, s_47); /* <-, line 187 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + if (!(z->B[0])) return 0; /* Boolean test Y_found, line 203 */ + while(1) { /* repeat, line 203 */ + int c1 = z->c; + while(1) { /* goto, line 203 */ + int c2 = z->c; + z->bra = z->c; /* [, line 203 */ + if (!(eq_s(z, 1, s_48))) goto lab1; + z->ket = z->c; /* ], line 203 */ + z->c = c2; + break; + lab1: + z->c = c2; + if (z->c >= z->l) goto lab0; + z->c++; /* goto, line 203 */ + } + { int ret = slice_from_s(z, 1, s_49); /* <-, line 203 */ + if (ret < 0) return ret; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +extern int english_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* or, line 207 */ + { int ret = r_exception1(z); + if (ret == 0) goto lab1; /* call exception1, line 207 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = c1; + { int c2 = z->c; /* not, line 208 */ + { int ret = z->c + 3; + if (0 > ret || ret > z->l) goto lab3; + z->c = ret; /* hop, line 208 */ + } + goto lab2; + lab3: + z->c = c2; + } + goto lab0; + lab2: + z->c = c1; + { int c3 = z->c; /* do, line 209 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab4; /* call prelude, line 209 */ + if (ret < 0) return ret; + } + lab4: + z->c = c3; + } + { int c4 = z->c; /* do, line 210 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab5; /* call mark_regions, line 210 */ + if (ret < 0) return ret; + } + lab5: + z->c = c4; + } + z->lb = z->c; z->c = z->l; /* backwards, line 211 */ + + { int m5 = z->l - z->c; (void)m5; /* do, line 213 */ + { int ret = r_Step_1a(z); + if (ret == 0) goto lab6; /* call Step_1a, line 213 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 215 */ + { int ret = r_exception2(z); + if (ret == 0) goto lab8; /* call exception2, line 215 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m6; + { int m7 = z->l - z->c; (void)m7; /* do, line 217 */ + { int ret = r_Step_1b(z); + if (ret == 0) goto lab9; /* call Step_1b, line 217 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 218 */ + { int ret = r_Step_1c(z); + if (ret == 0) goto lab10; /* call Step_1c, line 218 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 220 */ + { int ret = r_Step_2(z); + if (ret == 0) goto lab11; /* call Step_2, line 220 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 221 */ + { int ret = r_Step_3(z); + if (ret == 0) goto lab12; /* call Step_3, line 221 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m10; + } + { int m11 = z->l - z->c; (void)m11; /* do, line 222 */ + { int ret = r_Step_4(z); + if (ret == 0) goto lab13; /* call Step_4, line 222 */ + if (ret < 0) return ret; + } + lab13: + z->c = z->l - m11; + } + { int m12 = z->l - z->c; (void)m12; /* do, line 224 */ + { int ret = r_Step_5(z); + if (ret == 0) goto lab14; /* call Step_5, line 224 */ + if (ret < 0) return ret; + } + lab14: + z->c = z->l - m12; + } + } + lab7: + z->c = z->lb; + { int c13 = z->c; /* do, line 227 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab15; /* call postlude, line 227 */ + if (ret < 0) return ret; + } + lab15: + z->c = c13; + } + } +lab0: + return 1; +} + +extern struct SN_env * english_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void english_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_english.h b/src_c/stem_ISO_8859_1_english.h new file mode 100644 index 0000000..e685dcf --- /dev/null +++ b/src_c/stem_ISO_8859_1_english.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int english_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_finnish.c b/src_c/stem_ISO_8859_1_finnish.c new file mode 100644 index 0000000..cc6feb0 --- /dev/null +++ b/src_c/stem_ISO_8859_1_finnish.c @@ -0,0 +1,762 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_i_plural(struct SN_env * z); +static int r_case_ending(struct SN_env * z); +static int r_VI(struct SN_env * z); +static int r_LONG(struct SN_env * z); +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); + + +#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' }; +static const symbol s_0_3[3] = { 'h', 'a', 'n' }; +static const symbol s_0_4[3] = { 'k', 'i', 'n' }; +static const symbol s_0_5[3] = { 'h', 0xE4, 'n' }; +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] = +{ +/* 0 */ { 2, s_0_0, -1, 1, 0}, +/* 1 */ { 3, s_0_1, -1, 2, 0}, +/* 2 */ { 4, s_0_2, -1, 1, 0}, +/* 3 */ { 3, s_0_3, -1, 1, 0}, +/* 4 */ { 3, s_0_4, -1, 1, 0}, +/* 5 */ { 3, s_0_5, -1, 1, 0}, +/* 6 */ { 4, s_0_6, -1, 1, 0}, +/* 7 */ { 2, s_0_7, -1, 1, 0}, +/* 8 */ { 2, s_0_8, -1, 1, 0}, +/* 9 */ { 2, s_0_9, -1, 1, 0} +}; + +static const symbol s_1_0[3] = { 'l', 'l', 'a' }; +static const symbol s_1_1[2] = { 'n', 'a' }; +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] = +{ +/* 0 */ { 3, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 3, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 3, s_1_4, 3, -1, 0}, +/* 5 */ { 3, s_1_5, 3, -1, 0} +}; + +static const symbol s_2_0[3] = { 'l', 'l', 0xE4 }; +static const symbol s_2_1[2] = { 'n', 0xE4 }; +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] = +{ +/* 0 */ { 3, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 3, s_2_2, -1, -1, 0}, +/* 3 */ { 2, s_2_3, -1, -1, 0}, +/* 4 */ { 3, s_2_4, 3, -1, 0}, +/* 5 */ { 3, s_2_5, 3, -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] = +{ +/* 0 */ { 3, s_3_0, -1, -1, 0}, +/* 1 */ { 3, s_3_1, -1, -1, 0} +}; + +static const symbol s_4_0[3] = { 'n', 's', 'a' }; +static const symbol s_4_1[3] = { 'm', 'm', 'e' }; +static const symbol s_4_2[3] = { 'n', 'n', 'e' }; +static const symbol s_4_3[2] = { 'n', 'i' }; +static const symbol s_4_4[2] = { 's', 'i' }; +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] = +{ +/* 0 */ { 3, s_4_0, -1, 3, 0}, +/* 1 */ { 3, s_4_1, -1, 3, 0}, +/* 2 */ { 3, s_4_2, -1, 3, 0}, +/* 3 */ { 2, s_4_3, -1, 2, 0}, +/* 4 */ { 2, s_4_4, -1, 1, 0}, +/* 5 */ { 2, s_4_5, -1, 4, 0}, +/* 6 */ { 2, s_4_6, -1, 6, 0}, +/* 7 */ { 2, s_4_7, -1, 5, 0}, +/* 8 */ { 3, s_4_8, -1, 3, 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] = { 'i', 'i' }; +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] = +{ +/* 0 */ { 2, s_5_0, -1, -1, 0}, +/* 1 */ { 2, s_5_1, -1, -1, 0}, +/* 2 */ { 2, s_5_2, -1, -1, 0}, +/* 3 */ { 2, s_5_3, -1, -1, 0}, +/* 4 */ { 2, s_5_4, -1, -1, 0}, +/* 5 */ { 2, s_5_5, -1, -1, 0}, +/* 6 */ { 2, s_5_6, -1, -1, 0} +}; + +static const symbol s_6_0[1] = { 'a' }; +static const symbol s_6_1[3] = { 'l', 'l', 'a' }; +static const symbol s_6_2[2] = { 'n', 'a' }; +static const symbol s_6_3[3] = { 's', 's', 'a' }; +static const symbol s_6_4[2] = { 't', 'a' }; +static const symbol s_6_5[3] = { 'l', 't', 'a' }; +static const symbol s_6_6[3] = { 's', 't', 'a' }; +static const symbol s_6_7[3] = { 't', 't', 'a' }; +static const symbol s_6_8[3] = { 'l', 'l', 'e' }; +static const symbol s_6_9[3] = { 'i', 'n', 'e' }; +static const symbol s_6_10[3] = { 'k', 's', 'i' }; +static const symbol s_6_11[1] = { 'n' }; +static const symbol s_6_12[3] = { 'h', 'a', 'n' }; +static const symbol s_6_13[3] = { 'd', 'e', 'n' }; +static const symbol s_6_14[4] = { 's', 'e', 'e', 'n' }; +static const symbol s_6_15[3] = { 'h', 'e', 'n' }; +static const symbol s_6_16[4] = { 't', 't', 'e', 'n' }; +static const symbol s_6_17[3] = { 'h', 'i', 'n' }; +static const symbol s_6_18[4] = { 's', 'i', 'i', 'n' }; +static const symbol s_6_19[3] = { 'h', 'o', 'n' }; +static const symbol s_6_20[3] = { 'h', 0xE4, 'n' }; +static const symbol s_6_21[3] = { 'h', 0xF6, 'n' }; +static const symbol s_6_22[1] = { 0xE4 }; +static const symbol s_6_23[3] = { 'l', 'l', 0xE4 }; +static const symbol s_6_24[2] = { 'n', 0xE4 }; +static const symbol s_6_25[3] = { 's', 's', 0xE4 }; +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] = +{ +/* 0 */ { 1, s_6_0, -1, 8, 0}, +/* 1 */ { 3, s_6_1, 0, -1, 0}, +/* 2 */ { 2, s_6_2, 0, -1, 0}, +/* 3 */ { 3, s_6_3, 0, -1, 0}, +/* 4 */ { 2, s_6_4, 0, -1, 0}, +/* 5 */ { 3, s_6_5, 4, -1, 0}, +/* 6 */ { 3, s_6_6, 4, -1, 0}, +/* 7 */ { 3, s_6_7, 4, 9, 0}, +/* 8 */ { 3, s_6_8, -1, -1, 0}, +/* 9 */ { 3, s_6_9, -1, -1, 0}, +/* 10 */ { 3, s_6_10, -1, -1, 0}, +/* 11 */ { 1, s_6_11, -1, 7, 0}, +/* 12 */ { 3, s_6_12, 11, 1, 0}, +/* 13 */ { 3, s_6_13, 11, -1, r_VI}, +/* 14 */ { 4, s_6_14, 11, -1, r_LONG}, +/* 15 */ { 3, s_6_15, 11, 2, 0}, +/* 16 */ { 4, s_6_16, 11, -1, r_VI}, +/* 17 */ { 3, s_6_17, 11, 3, 0}, +/* 18 */ { 4, s_6_18, 11, -1, r_VI}, +/* 19 */ { 3, s_6_19, 11, 4, 0}, +/* 20 */ { 3, s_6_20, 11, 5, 0}, +/* 21 */ { 3, s_6_21, 11, 6, 0}, +/* 22 */ { 1, s_6_22, -1, 8, 0}, +/* 23 */ { 3, s_6_23, 22, -1, 0}, +/* 24 */ { 2, s_6_24, 22, -1, 0}, +/* 25 */ { 3, s_6_25, 22, -1, 0}, +/* 26 */ { 2, s_6_26, 22, -1, 0}, +/* 27 */ { 3, s_6_27, 26, -1, 0}, +/* 28 */ { 3, s_6_28, 26, -1, 0}, +/* 29 */ { 3, s_6_29, 26, 9, 0} +}; + +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' }; +static const symbol s_7_3[3] = { 'm', 'p', 'a' }; +static const symbol s_7_4[4] = { 'i', 'm', 'p', 'a' }; +static const symbol s_7_5[3] = { 'm', 'm', 'i' }; +static const symbol s_7_6[4] = { 'i', 'm', 'm', 'i' }; +static const symbol s_7_7[3] = { 'm', 'p', 'i' }; +static const symbol s_7_8[4] = { 'i', 'm', 'p', 'i' }; +static const symbol s_7_9[3] = { 'e', 'j', 0xE4 }; +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] = +{ +/* 0 */ { 3, s_7_0, -1, -1, 0}, +/* 1 */ { 3, s_7_1, -1, 1, 0}, +/* 2 */ { 4, s_7_2, 1, -1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 4, s_7_4, 3, -1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 4, s_7_6, 5, -1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 4, s_7_8, 7, -1, 0}, +/* 9 */ { 3, s_7_9, -1, -1, 0}, +/* 10 */ { 3, s_7_10, -1, 1, 0}, +/* 11 */ { 4, s_7_11, 10, -1, 0}, +/* 12 */ { 3, s_7_12, -1, 1, 0}, +/* 13 */ { 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] = +{ +/* 0 */ { 1, s_8_0, -1, -1, 0}, +/* 1 */ { 1, s_8_1, -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] = +{ +/* 0 */ { 3, s_9_0, -1, 1, 0}, +/* 1 */ { 4, s_9_1, 0, -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 }; + +static const unsigned char g_V1[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; + +static const unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; + +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' }; +static const symbol s_1[] = { 'k', 's', 'e' }; +static const symbol s_2[] = { 'k', 's', 'i' }; +static const symbol s_3[] = { 'i' }; +static const symbol s_4[] = { 'a' }; +static const symbol s_5[] = { 'e' }; +static const symbol s_6[] = { 'i' }; +static const symbol s_7[] = { 'o' }; +static const symbol s_8[] = { 0xE4 }; +static const symbol s_9[] = { 0xF6 }; +static const symbol s_10[] = { 'i', 'e' }; +static const symbol s_11[] = { 'e' }; +static const symbol s_12[] = { 'p', 'o' }; +static const symbol s_13[] = { 't' }; +static const symbol s_14[] = { 'p', 'o' }; +static const symbol s_15[] = { 'j' }; +static const symbol s_16[] = { 'o' }; +static const symbol s_17[] = { 'u' }; +static const symbol s_18[] = { 'o' }; +static const symbol s_19[] = { 'j' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 46 */ + { /* gopast */ /* non V1, line 46 */ + int ret = in_grouping(z, g_V1, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 46 */ + if (out_grouping(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 47 */ + { /* gopast */ /* non V1, line 47 */ + int ret = in_grouping(z, g_V1, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 47 */ + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_particle_etc(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 55 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 55 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 55 */ + among_var = find_among_b(z, a_0, 10); /* substring, line 55 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 55 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (in_grouping_b(z, g_particle_end, 97, 246, 0)) return 0; + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 64 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 66 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_possessive(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 69 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 69 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 69 */ + among_var = find_among_b(z, a_4, 9); /* substring, line 69 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 69 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m2 = z->l - z->c; (void)m2; /* not, line 72 */ + if (!(eq_s_b(z, 1, s_0))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + { int ret = slice_del(z); /* delete, line 72 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 74 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 74 */ + if (!(eq_s_b(z, 3, s_1))) return 0; + z->bra = z->c; /* ], line 74 */ + { int ret = slice_from_s(z, 3, s_2); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 78 */ + 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; /* among, line 81 */ + { int ret = slice_del(z); /* delete, line 81 */ + 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; /* among, line 83 */ + { int ret = slice_del(z); /* delete, line 84 */ + 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; /* among, line 86 */ + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_LONG(struct SN_env * z) { + if (!(find_among_b(z, a_5, 7))) return 0; /* among, line 91 */ + return 1; +} + +static int r_VI(struct SN_env * z) { + if (!(eq_s_b(z, 1, s_3))) return 0; + if (in_grouping_b(z, g_V2, 97, 246, 0)) return 0; + return 1; +} + +static int r_case_ending(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 96 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 96 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 96 */ + among_var = find_among_b(z, a_6, 30); /* substring, line 96 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 96 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (!(eq_s_b(z, 1, s_4))) return 0; + break; + case 2: + if (!(eq_s_b(z, 1, s_5))) return 0; + break; + case 3: + if (!(eq_s_b(z, 1, s_6))) return 0; + break; + case 4: + if (!(eq_s_b(z, 1, s_7))) return 0; + break; + case 5: + if (!(eq_s_b(z, 1, s_8))) return 0; + break; + case 6: + if (!(eq_s_b(z, 1, s_9))) return 0; + break; + case 7: + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */ + { int m2 = z->l - z->c; (void)m2; /* and, line 113 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 112 */ + { int ret = r_LONG(z); + if (ret == 0) goto lab2; /* call LONG, line 111 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m3; + if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m_keep; goto lab0; } + } + lab1: + z->c = z->l - m2; + if (z->c <= z->lb) { z->c = z->l - m_keep; goto lab0; } + z->c--; /* next, line 113 */ + } + z->bra = z->c; /* ], line 113 */ + lab0: + ; + } + break; + case 8: + if (in_grouping_b(z, g_V1, 97, 246, 0)) return 0; + if (out_grouping_b(z, g_V1, 97, 246, 0)) return 0; + break; + case 9: + if (!(eq_s_b(z, 1, s_11))) return 0; + break; + } + { int ret = slice_del(z); /* delete, line 138 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set ending_removed, line 139 */ + return 1; +} + +static int r_other_endings(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 142 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[1]) return 0; + z->c = z->I[1]; /* tomark, line 142 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 142 */ + among_var = find_among_b(z, a_7, 14); /* substring, line 142 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 142 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m2 = z->l - z->c; (void)m2; /* not, line 146 */ + if (!(eq_s_b(z, 2, s_12))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + break; + } + { int ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_i_plural(struct SN_env * z) { + { int mlimit; /* setlimit, line 154 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 154 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 154 */ + if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_8, 2))) { z->lb = mlimit; return 0; } /* substring, line 154 */ + z->bra = z->c; /* ], line 154 */ + z->lb = mlimit; + } + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_t_plural(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 161 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 161 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 162 */ + if (!(eq_s_b(z, 1, s_13))) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 162 */ + { int m_test = z->l - z->c; /* test, line 162 */ + if (in_grouping_b(z, g_V1, 97, 246, 0)) { z->lb = mlimit; return 0; } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + z->lb = mlimit; + } + { int mlimit; /* setlimit, line 165 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[1]) return 0; + z->c = z->I[1]; /* tomark, line 165 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + z->ket = z->c; /* [, line 165 */ + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_9, 2); /* substring, line 165 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 165 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m3 = z->l - z->c; (void)m3; /* not, line 167 */ + if (!(eq_s_b(z, 2, s_14))) goto lab0; + return 0; + lab0: + z->c = z->l - m3; + } + break; + } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_tidy(struct SN_env * z) { + { int mlimit; /* setlimit, line 173 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 173 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* do, line 174 */ + { int m3 = z->l - z->c; (void)m3; /* and, line 174 */ + { int ret = r_LONG(z); + if (ret == 0) goto lab0; /* call LONG, line 174 */ + if (ret < 0) return ret; + } + z->c = z->l - m3; + z->ket = z->c; /* [, line 174 */ + if (z->c <= z->lb) goto lab0; + z->c--; /* next, line 174 */ + z->bra = z->c; /* ], line 174 */ + { int ret = slice_del(z); /* delete, line 174 */ + if (ret < 0) return ret; + } + } + lab0: + z->c = z->l - m2; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 175 */ + z->ket = z->c; /* [, line 175 */ + if (in_grouping_b(z, g_AEI, 97, 228, 0)) goto lab1; + z->bra = z->c; /* ], line 175 */ + if (out_grouping_b(z, g_V1, 97, 246, 0)) goto lab1; + { int ret = slice_del(z); /* delete, line 175 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 176 */ + z->ket = z->c; /* [, line 176 */ + if (!(eq_s_b(z, 1, s_15))) goto lab2; + z->bra = z->c; /* ], line 176 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 176 */ + if (!(eq_s_b(z, 1, s_16))) goto lab4; + goto lab3; + lab4: + z->c = z->l - m6; + if (!(eq_s_b(z, 1, s_17))) goto lab2; + } + lab3: + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m5; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 177 */ + z->ket = z->c; /* [, line 177 */ + if (!(eq_s_b(z, 1, s_18))) goto lab5; + z->bra = z->c; /* ], line 177 */ + if (!(eq_s_b(z, 1, s_19))) goto lab5; + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m7; + } + z->lb = mlimit; + } + if (in_grouping_b(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* non V1, line 179 */ + z->ket = z->c; /* [, line 179 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 179 */ + z->bra = z->c; /* ], line 179 */ + z->S[0] = slice_to(z, z->S[0]); /* -> x, line 179 */ + if (z->S[0] == 0) return -1; /* -> x, line 179 */ + if (!(eq_v_b(z, z->S[0]))) return 0; /* name x, line 179 */ + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int finnish_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 185 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 185 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->B[0] = 0; /* unset ending_removed, line 186 */ + z->lb = z->c; z->c = z->l; /* backwards, line 187 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 188 */ + { int ret = r_particle_etc(z); + if (ret == 0) goto lab1; /* call particle_etc, line 188 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 189 */ + { int ret = r_possessive(z); + if (ret == 0) goto lab2; /* call possessive, line 189 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 190 */ + { int ret = r_case_ending(z); + if (ret == 0) goto lab3; /* call case_ending, line 190 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 191 */ + { int ret = r_other_endings(z); + if (ret == 0) goto lab4; /* call other_endings, line 191 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 192 */ + if (!(z->B[0])) goto lab6; /* Boolean test ending_removed, line 192 */ + { int m7 = z->l - z->c; (void)m7; /* do, line 192 */ + { int ret = r_i_plural(z); + if (ret == 0) goto lab7; /* call i_plural, line 192 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int m8 = z->l - z->c; (void)m8; /* do, line 192 */ + { int ret = r_t_plural(z); + if (ret == 0) goto lab8; /* call t_plural, line 192 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m8; + } + } +lab5: + { int m9 = z->l - z->c; (void)m9; /* do, line 193 */ + { int ret = r_tidy(z); + if (ret == 0) goto lab9; /* call tidy, line 193 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m9; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * finnish_ISO_8859_1_create_env(void) { return SN_create_env(1, 2, 1); } + +extern void finnish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 1); } + diff --git a/src_c/stem_ISO_8859_1_finnish.h b/src_c/stem_ISO_8859_1_finnish.h new file mode 100644 index 0000000..c67b67b --- /dev/null +++ b/src_c/stem_ISO_8859_1_finnish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int finnish_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_french.c b/src_c/stem_ISO_8859_1_french.c new file mode 100644 index 0000000..7907400 --- /dev/null +++ b/src_c/stem_ISO_8859_1_french.c @@ -0,0 +1,1246 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_verb_suffix(struct SN_env * z); +static int r_i_verb_suffix(struct SN_env * z); +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_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 * french_ISO_8859_1_create_env(void); +extern void french_ISO_8859_1_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 3, s_0_0, -1, -1, 0}, +/* 1 */ { 3, s_0_1, -1, -1, 0}, +/* 2 */ { 3, s_0_2, -1, -1, 0} +}; + +static const symbol s_1_1[1] = { 'I' }; +static const symbol s_1_2[1] = { 'U' }; +static const symbol s_1_3[1] = { 'Y' }; + +static const struct among a_1[4] = +{ +/* 0 */ { 0, 0, -1, 4, 0}, +/* 1 */ { 1, s_1_1, 0, 1, 0}, +/* 2 */ { 1, s_1_2, 0, 2, 0}, +/* 3 */ { 1, s_1_3, 0, 3, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'q', 'U' }; +static const symbol s_2_1[3] = { 'a', 'b', 'l' }; +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] = +{ +/* 0 */ { 3, s_2_0, -1, 3, 0}, +/* 1 */ { 3, s_2_1, -1, 3, 0}, +/* 2 */ { 3, s_2_2, -1, 4, 0}, +/* 3 */ { 3, s_2_3, -1, 4, 0}, +/* 4 */ { 3, s_2_4, -1, 2, 0}, +/* 5 */ { 2, s_2_5, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, 2, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 2, s_3_2, -1, 3, 0} +}; + +static const symbol s_4_0[4] = { 'i', 'q', 'U', 'e' }; +static const symbol s_4_1[6] = { 'a', 't', 'r', 'i', 'c', 'e' }; +static const symbol s_4_2[4] = { 'a', 'n', 'c', 'e' }; +static const symbol s_4_3[4] = { 'e', 'n', 'c', 'e' }; +static const symbol s_4_4[5] = { 'l', 'o', 'g', 'i', 'e' }; +static const symbol s_4_5[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_4_6[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_4_7[4] = { 'e', 'u', 's', 'e' }; +static const symbol s_4_8[4] = { 'i', 's', 't', 'e' }; +static const symbol s_4_9[3] = { 'i', 'v', 'e' }; +static const symbol s_4_10[2] = { 'i', 'f' }; +static const symbol s_4_11[5] = { 'u', 's', 'i', 'o', 'n' }; +static const symbol s_4_12[5] = { 'a', 't', 'i', 'o', 'n' }; +static const symbol s_4_13[5] = { 'u', 't', 'i', 'o', 'n' }; +static const symbol s_4_14[5] = { 'a', 't', 'e', 'u', 'r' }; +static const symbol s_4_15[5] = { 'i', 'q', 'U', 'e', 's' }; +static const symbol s_4_16[7] = { 'a', 't', 'r', 'i', 'c', 'e', 's' }; +static const symbol s_4_17[5] = { 'a', 'n', 'c', 'e', 's' }; +static const symbol s_4_18[5] = { 'e', 'n', 'c', 'e', 's' }; +static const symbol s_4_19[6] = { 'l', 'o', 'g', 'i', 'e', 's' }; +static const symbol s_4_20[5] = { 'a', 'b', 'l', 'e', 's' }; +static const symbol s_4_21[5] = { 'i', 's', 'm', 'e', 's' }; +static const symbol s_4_22[5] = { 'e', 'u', 's', 'e', 's' }; +static const symbol s_4_23[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_4_24[4] = { 'i', 'v', 'e', 's' }; +static const symbol s_4_25[3] = { 'i', 'f', 's' }; +static const symbol s_4_26[6] = { 'u', 's', 'i', 'o', 'n', 's' }; +static const symbol s_4_27[6] = { 'a', 't', 'i', 'o', 'n', 's' }; +static const symbol s_4_28[6] = { 'u', 't', 'i', 'o', 'n', 's' }; +static const symbol s_4_29[6] = { 'a', 't', 'e', 'u', 'r', 's' }; +static const symbol s_4_30[5] = { 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_31[6] = { 'e', 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_32[9] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_33[4] = { 'i', 't', 0xE9, 's' }; +static const symbol s_4_34[4] = { 'm', 'e', 'n', 't' }; +static const symbol s_4_35[5] = { 'e', 'm', 'e', 'n', 't' }; +static const symbol s_4_36[8] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't' }; +static const symbol s_4_37[6] = { 'a', 'm', 'm', 'e', 'n', 't' }; +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] = +{ +/* 0 */ { 4, s_4_0, -1, 1, 0}, +/* 1 */ { 6, s_4_1, -1, 2, 0}, +/* 2 */ { 4, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 5, 0}, +/* 4 */ { 5, s_4_4, -1, 3, 0}, +/* 5 */ { 4, s_4_5, -1, 1, 0}, +/* 6 */ { 4, s_4_6, -1, 1, 0}, +/* 7 */ { 4, s_4_7, -1, 11, 0}, +/* 8 */ { 4, s_4_8, -1, 1, 0}, +/* 9 */ { 3, s_4_9, -1, 8, 0}, +/* 10 */ { 2, s_4_10, -1, 8, 0}, +/* 11 */ { 5, s_4_11, -1, 4, 0}, +/* 12 */ { 5, s_4_12, -1, 2, 0}, +/* 13 */ { 5, s_4_13, -1, 4, 0}, +/* 14 */ { 5, s_4_14, -1, 2, 0}, +/* 15 */ { 5, s_4_15, -1, 1, 0}, +/* 16 */ { 7, s_4_16, -1, 2, 0}, +/* 17 */ { 5, s_4_17, -1, 1, 0}, +/* 18 */ { 5, s_4_18, -1, 5, 0}, +/* 19 */ { 6, s_4_19, -1, 3, 0}, +/* 20 */ { 5, s_4_20, -1, 1, 0}, +/* 21 */ { 5, s_4_21, -1, 1, 0}, +/* 22 */ { 5, s_4_22, -1, 11, 0}, +/* 23 */ { 5, s_4_23, -1, 1, 0}, +/* 24 */ { 4, s_4_24, -1, 8, 0}, +/* 25 */ { 3, s_4_25, -1, 8, 0}, +/* 26 */ { 6, s_4_26, -1, 4, 0}, +/* 27 */ { 6, s_4_27, -1, 2, 0}, +/* 28 */ { 6, s_4_28, -1, 4, 0}, +/* 29 */ { 6, s_4_29, -1, 2, 0}, +/* 30 */ { 5, s_4_30, -1, 15, 0}, +/* 31 */ { 6, s_4_31, 30, 6, 0}, +/* 32 */ { 9, s_4_32, 31, 12, 0}, +/* 33 */ { 4, s_4_33, -1, 7, 0}, +/* 34 */ { 4, s_4_34, -1, 15, 0}, +/* 35 */ { 5, s_4_35, 34, 6, 0}, +/* 36 */ { 8, s_4_36, 35, 12, 0}, +/* 37 */ { 6, s_4_37, 34, 13, 0}, +/* 38 */ { 6, s_4_38, 34, 14, 0}, +/* 39 */ { 3, s_4_39, -1, 10, 0}, +/* 40 */ { 4, s_4_40, 39, 9, 0}, +/* 41 */ { 3, s_4_41, -1, 1, 0}, +/* 42 */ { 3, s_4_42, -1, 7, 0} +}; + +static const symbol s_5_0[3] = { 'i', 'r', 'a' }; +static const symbol s_5_1[2] = { 'i', 'e' }; +static const symbol s_5_2[4] = { 'i', 's', 's', 'e' }; +static const symbol s_5_3[7] = { 'i', 's', 's', 'a', 'n', 't', 'e' }; +static const symbol s_5_4[1] = { 'i' }; +static const symbol s_5_5[4] = { 'i', 'r', 'a', 'i' }; +static const symbol s_5_6[2] = { 'i', 'r' }; +static const symbol s_5_7[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_5_8[3] = { 'i', 'e', 's' }; +static const symbol s_5_9[4] = { 0xEE, 'm', 'e', 's' }; +static const symbol s_5_10[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_5_11[8] = { 'i', 's', 's', 'a', 'n', 't', 'e', 's' }; +static const symbol s_5_12[4] = { 0xEE, 't', 'e', 's' }; +static const symbol s_5_13[2] = { 'i', 's' }; +static const symbol s_5_14[5] = { 'i', 'r', 'a', 'i', 's' }; +static const symbol s_5_15[6] = { 'i', 's', 's', 'a', 'i', 's' }; +static const symbol s_5_16[6] = { 'i', 'r', 'i', 'o', 'n', 's' }; +static const symbol s_5_17[7] = { 'i', 's', 's', 'i', 'o', 'n', 's' }; +static const symbol s_5_18[5] = { 'i', 'r', 'o', 'n', 's' }; +static const symbol s_5_19[6] = { 'i', 's', 's', 'o', 'n', 's' }; +static const symbol s_5_20[7] = { 'i', 's', 's', 'a', 'n', 't', 's' }; +static const symbol s_5_21[2] = { 'i', 't' }; +static const symbol s_5_22[5] = { 'i', 'r', 'a', 'i', 't' }; +static const symbol s_5_23[6] = { 'i', 's', 's', 'a', 'i', 't' }; +static const symbol s_5_24[6] = { 'i', 's', 's', 'a', 'n', 't' }; +static const symbol s_5_25[7] = { 'i', 'r', 'a', 'I', 'e', 'n', 't' }; +static const symbol s_5_26[8] = { 'i', 's', 's', 'a', 'I', 'e', 'n', 't' }; +static const symbol s_5_27[5] = { 'i', 'r', 'e', 'n', 't' }; +static const symbol s_5_28[6] = { 'i', 's', 's', 'e', 'n', 't' }; +static const symbol s_5_29[5] = { 'i', 'r', 'o', 'n', 't' }; +static const symbol s_5_30[2] = { 0xEE, 't' }; +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] = +{ +/* 0 */ { 3, s_5_0, -1, 1, 0}, +/* 1 */ { 2, s_5_1, -1, 1, 0}, +/* 2 */ { 4, s_5_2, -1, 1, 0}, +/* 3 */ { 7, s_5_3, -1, 1, 0}, +/* 4 */ { 1, s_5_4, -1, 1, 0}, +/* 5 */ { 4, s_5_5, 4, 1, 0}, +/* 6 */ { 2, s_5_6, -1, 1, 0}, +/* 7 */ { 4, s_5_7, -1, 1, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 4, s_5_9, -1, 1, 0}, +/* 10 */ { 5, s_5_10, -1, 1, 0}, +/* 11 */ { 8, s_5_11, -1, 1, 0}, +/* 12 */ { 4, s_5_12, -1, 1, 0}, +/* 13 */ { 2, s_5_13, -1, 1, 0}, +/* 14 */ { 5, s_5_14, 13, 1, 0}, +/* 15 */ { 6, s_5_15, 13, 1, 0}, +/* 16 */ { 6, s_5_16, -1, 1, 0}, +/* 17 */ { 7, s_5_17, -1, 1, 0}, +/* 18 */ { 5, s_5_18, -1, 1, 0}, +/* 19 */ { 6, s_5_19, -1, 1, 0}, +/* 20 */ { 7, s_5_20, -1, 1, 0}, +/* 21 */ { 2, s_5_21, -1, 1, 0}, +/* 22 */ { 5, s_5_22, 21, 1, 0}, +/* 23 */ { 6, s_5_23, 21, 1, 0}, +/* 24 */ { 6, s_5_24, -1, 1, 0}, +/* 25 */ { 7, s_5_25, -1, 1, 0}, +/* 26 */ { 8, s_5_26, -1, 1, 0}, +/* 27 */ { 5, s_5_27, -1, 1, 0}, +/* 28 */ { 6, s_5_28, -1, 1, 0}, +/* 29 */ { 5, s_5_29, -1, 1, 0}, +/* 30 */ { 2, s_5_30, -1, 1, 0}, +/* 31 */ { 5, s_5_31, -1, 1, 0}, +/* 32 */ { 6, s_5_32, -1, 1, 0}, +/* 33 */ { 4, s_5_33, -1, 1, 0}, +/* 34 */ { 5, s_5_34, -1, 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] = +{ +/* 0 */ { 1, s_6_0, -1, 3, 0}, +/* 1 */ { 3, s_6_1, 0, 2, 0}, +/* 2 */ { 4, s_6_2, -1, 3, 0}, +/* 3 */ { 4, s_6_3, -1, 3, 0}, +/* 4 */ { 2, s_6_4, -1, 2, 0}, +/* 5 */ { 2, s_6_5, -1, 3, 0}, +/* 6 */ { 4, s_6_6, 5, 2, 0}, +/* 7 */ { 2, s_6_7, -1, 2, 0}, +/* 8 */ { 2, s_6_8, -1, 3, 0}, +/* 9 */ { 4, s_6_9, 8, 2, 0}, +/* 10 */ { 4, s_6_10, -1, 3, 0}, +/* 11 */ { 5, s_6_11, -1, 3, 0}, +/* 12 */ { 5, s_6_12, -1, 3, 0}, +/* 13 */ { 4, s_6_13, -1, 3, 0}, +/* 14 */ { 3, s_6_14, -1, 2, 0}, +/* 15 */ { 3, s_6_15, -1, 3, 0}, +/* 16 */ { 5, s_6_16, 15, 2, 0}, +/* 17 */ { 4, s_6_17, -1, 1, 0}, +/* 18 */ { 6, s_6_18, 17, 2, 0}, +/* 19 */ { 7, s_6_19, 17, 3, 0}, +/* 20 */ { 5, s_6_20, -1, 2, 0}, +/* 21 */ { 4, s_6_21, -1, 3, 0}, +/* 22 */ { 2, s_6_22, -1, 2, 0}, +/* 23 */ { 3, s_6_23, -1, 3, 0}, +/* 24 */ { 5, s_6_24, 23, 2, 0}, +/* 25 */ { 3, s_6_25, -1, 3, 0}, +/* 26 */ { 5, s_6_26, -1, 3, 0}, +/* 27 */ { 7, s_6_27, 26, 2, 0}, +/* 28 */ { 5, s_6_28, -1, 2, 0}, +/* 29 */ { 6, s_6_29, -1, 3, 0}, +/* 30 */ { 5, s_6_30, -1, 2, 0}, +/* 31 */ { 2, s_6_31, -1, 3, 0}, +/* 32 */ { 2, s_6_32, -1, 2, 0}, +/* 33 */ { 3, s_6_33, 32, 2, 0}, +/* 34 */ { 5, s_6_34, 33, 2, 0}, +/* 35 */ { 6, s_6_35, 33, 3, 0}, +/* 36 */ { 4, s_6_36, 32, 2, 0}, +/* 37 */ { 1, s_6_37, -1, 2, 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 symbol s_7_6[1] = { 0xEB }; + +static const struct among a_7[7] = +{ +/* 0 */ { 1, s_7_0, -1, 3, 0}, +/* 1 */ { 4, s_7_1, 0, 2, 0}, +/* 2 */ { 4, s_7_2, 0, 2, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 3, s_7_4, -1, 2, 0}, +/* 5 */ { 3, s_7_5, -1, 2, 0}, +/* 6 */ { 1, s_7_6, -1, 4, 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 struct among a_8[5] = +{ +/* 0 */ { 3, s_8_0, -1, -1, 0}, +/* 1 */ { 4, s_8_1, -1, -1, 0}, +/* 2 */ { 3, s_8_2, -1, -1, 0}, +/* 3 */ { 3, s_8_3, -1, -1, 0}, +/* 4 */ { 3, s_8_4, -1, -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_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[] = { 'u' }; +static const symbol s_1[] = { 'U' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'I' }; +static const symbol s_4[] = { 'y' }; +static const symbol s_5[] = { 'Y' }; +static const symbol s_6[] = { 'y' }; +static const symbol s_7[] = { 'Y' }; +static const symbol s_8[] = { 'q' }; +static const symbol s_9[] = { 'u' }; +static const symbol s_10[] = { 'U' }; +static const symbol s_11[] = { 'i' }; +static const symbol s_12[] = { 'u' }; +static const symbol s_13[] = { 'y' }; +static const symbol s_14[] = { 'i', 'c' }; +static const symbol s_15[] = { 'i', 'q', 'U' }; +static const symbol s_16[] = { 'l', 'o', 'g' }; +static const symbol s_17[] = { 'u' }; +static const symbol s_18[] = { 'e', 'n', 't' }; +static const symbol s_19[] = { 'a', 't' }; +static const symbol s_20[] = { 'e', 'u', 'x' }; +static const symbol s_21[] = { 'i' }; +static const symbol s_22[] = { 'a', 'b', 'l' }; +static const symbol s_23[] = { 'i', 'q', 'U' }; +static const symbol s_24[] = { 'a', 't' }; +static const symbol s_25[] = { 'i', 'c' }; +static const symbol s_26[] = { 'i', 'q', 'U' }; +static const symbol s_27[] = { 'e', 'a', 'u' }; +static const symbol s_28[] = { 'a', 'l' }; +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[] = { 'e' }; +static const symbol s_33[] = { 's' }; +static const symbol s_34[] = { 's' }; +static const symbol s_35[] = { 't' }; +static const symbol s_36[] = { 'i' }; +static const symbol s_37[] = { 'g', 'u' }; +static const symbol s_38[] = { 0xE9 }; +static const symbol s_39[] = { 0xE8 }; +static const symbol s_40[] = { 'e' }; +static const symbol s_41[] = { 'Y' }; +static const symbol s_42[] = { 'i' }; +static const symbol s_43[] = { 0xE7 }; +static const symbol s_44[] = { 'c' }; + +static int r_prelude(struct SN_env * z) { + while(1) { /* repeat, line 38 */ + int c1 = z->c; + while(1) { /* goto, line 38 */ + int c2 = z->c; + { int c3 = z->c; /* or, line 44 */ + if (in_grouping(z, g_v, 97, 251, 0)) goto lab3; + z->bra = z->c; /* [, line 40 */ + { int c4 = z->c; /* or, line 40 */ + if (!(eq_s(z, 1, s_0))) goto lab5; + z->ket = z->c; /* ], line 40 */ + if (in_grouping(z, g_v, 97, 251, 0)) goto lab5; + { int ret = slice_from_s(z, 1, s_1); /* <-, line 40 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = c4; + if (!(eq_s(z, 1, s_2))) goto lab6; + z->ket = z->c; /* ], line 41 */ + if (in_grouping(z, g_v, 97, 251, 0)) goto lab6; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 41 */ + if (ret < 0) return ret; + } + goto lab4; + lab6: + z->c = c4; + if (!(eq_s(z, 1, s_4))) goto lab3; + z->ket = z->c; /* ], line 42 */ + { int ret = slice_from_s(z, 1, s_5); /* <-, line 42 */ + if (ret < 0) return ret; + } + } + lab4: + goto lab2; + lab3: + z->c = c3; + z->bra = z->c; /* [, line 45 */ + if (!(eq_s(z, 1, s_6))) goto lab7; + z->ket = z->c; /* ], line 45 */ + if (in_grouping(z, g_v, 97, 251, 0)) goto lab7; + { int ret = slice_from_s(z, 1, s_7); /* <-, line 45 */ + if (ret < 0) return ret; + } + goto lab2; + lab7: + z->c = c3; + if (!(eq_s(z, 1, s_8))) goto lab1; + z->bra = z->c; /* [, line 47 */ + if (!(eq_s(z, 1, s_9))) goto lab1; + z->ket = z->c; /* ], line 47 */ + { int ret = slice_from_s(z, 1, s_10); /* <-, line 47 */ + if (ret < 0) return ret; + } + } + lab2: + z->c = c2; + break; + lab1: + z->c = c2; + if (z->c >= z->l) goto lab0; + z->c++; /* goto, line 38 */ + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 56 */ + { int c2 = z->c; /* or, line 58 */ + 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; + z->c++; /* next, line 57 */ + goto lab1; + 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; /* among, line 59 */ + goto lab1; + lab3: + z->c = c2; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 66 */ + { /* gopast */ /* grouping v, line 66 */ + int ret = out_grouping(z, g_v, 97, 251, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + } + lab1: + z->I[0] = z->c; /* setmark pV, line 67 */ + lab0: + z->c = c1; + } + { int c3 = z->c; /* do, line 69 */ + { /* gopast */ /* grouping v, line 70 */ + int ret = out_grouping(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 70 */ + int ret = in_grouping(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 70 */ + { /* gopast */ /* grouping v, line 71 */ + int ret = out_grouping(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 71 */ + int ret = in_grouping(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 71 */ + lab4: + z->c = c3; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 75 */ + int c1 = z->c; + z->bra = z->c; /* [, line 77 */ + if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652096 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 4; else + among_var = find_among(z, a_1, 4); /* substring, line 77 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 77 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 80 */ + if (ret < 0) return ret; + } + break; + case 4: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 81 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 92 */ + among_var = find_among_b(z, a_4, 43); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 96 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 99 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 100 */ + z->ket = z->c; /* [, line 100 */ + if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 100 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 100 */ + { int ret = r_R2(z); + if (ret == 0) goto lab2; /* call R2, line 100 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 100 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m1; + { int ret = slice_from_s(z, 3, s_15); /* <-, line 100 */ + if (ret < 0) return ret; + } + } + lab1: + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 104 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_16); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 107 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_17); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_18); /* <-, line 110 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 114 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 114 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 115 */ + z->ket = z->c; /* [, line 116 */ + among_var = find_among_b(z, a_2, 6); /* substring, line 116 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 116 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab3; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 117 */ + if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 117 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m2 = z->l - z->c; (void)m2; /* or, line 118 */ + { int ret = r_R2(z); + if (ret == 0) goto lab5; /* call R2, line 118 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 118 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = z->l - m2; + { int ret = r_R1(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R1, line 118 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_20); /* <-, line 118 */ + if (ret < 0) return ret; + } + } + lab4: + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 120 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 120 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call RV, line 122 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_21); /* <-, line 122 */ + if (ret < 0) return ret; + } + break; + } + lab3: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 129 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 130 */ + z->ket = z->c; /* [, line 131 */ + 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 - m_keep; goto lab6; } + among_var = find_among_b(z, a_3, 3); /* substring, line 131 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab6; } + z->bra = z->c; /* ], line 131 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab6; } + case 1: + { int m3 = z->l - z->c; (void)m3; /* or, line 132 */ + { int ret = r_R2(z); + if (ret == 0) goto lab8; /* call R2, line 132 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 132 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m3; + { int ret = slice_from_s(z, 3, s_22); /* <-, line 132 */ + if (ret < 0) return ret; + } + } + lab7: + break; + case 2: + { int m4 = z->l - z->c; (void)m4; /* or, line 133 */ + { int ret = r_R2(z); + if (ret == 0) goto lab10; /* call R2, line 133 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 133 */ + if (ret < 0) return ret; + } + goto lab9; + lab10: + z->c = z->l - m4; + { int ret = slice_from_s(z, 3, s_23); /* <-, line 133 */ + if (ret < 0) return ret; + } + } + lab9: + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + } + lab6: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 141 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 141 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 142 */ + z->ket = z->c; /* [, line 142 */ + if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - m_keep; goto lab11; } + z->bra = z->c; /* ], line 142 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab11; } /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 142 */ + if (!(eq_s_b(z, 2, s_25))) { z->c = z->l - m_keep; goto lab11; } + z->bra = z->c; /* ], line 142 */ + { int m5 = z->l - z->c; (void)m5; /* or, line 142 */ + { int ret = r_R2(z); + if (ret == 0) goto lab13; /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + goto lab12; + lab13: + z->c = z->l - m5; + { int ret = slice_from_s(z, 3, s_26); /* <-, line 142 */ + if (ret < 0) return ret; + } + } + lab12: + lab11: + ; + } + break; + case 9: + { int ret = slice_from_s(z, 3, s_27); /* <-, line 144 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 145 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_28); /* <-, line 145 */ + if (ret < 0) return ret; + } + break; + case 11: + { int m6 = z->l - z->c; (void)m6; /* or, line 147 */ + { int ret = r_R2(z); + if (ret == 0) goto lab15; /* call R2, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + goto lab14; + lab15: + z->c = z->l - m6; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_29); /* <-, line 147 */ + if (ret < 0) return ret; + } + } + lab14: + break; + case 12: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 150 */ + if (ret < 0) return ret; + } + if (out_grouping_b(z, g_v, 97, 251, 0)) return 0; + { int ret = slice_del(z); /* delete, line 150 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 155 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_30); /* <-, line 155 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 155 */ + break; + case 14: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 156 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_31); /* <-, line 156 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 156 */ + break; + case 15: + { int m_test = z->l - z->c; /* test, line 158 */ + if (in_grouping_b(z, g_v, 97, 251, 0)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 158 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 158 */ + break; + } + return 1; +} + +static int r_i_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 163 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 163 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 164 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_5, 35); /* substring, line 164 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 164 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit; return 0; } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 174 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 174 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 175 */ + among_var = find_among_b(z, a_6, 38); /* substring, line 175 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 175 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->lb = mlimit; return 0; } /* call R2, line 177 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 185 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 190 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 191 */ + z->ket = z->c; /* [, line 191 */ + if (!(eq_s_b(z, 1, s_32))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 191 */ + { int ret = slice_del(z); /* delete, line 191 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 199 */ + z->ket = z->c; /* [, line 199 */ + if (!(eq_s_b(z, 1, s_33))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 199 */ + { int m_test = z->l - z->c; /* test, line 199 */ + if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 199 */ + if (ret < 0) return ret; + } + lab0: + ; + } + { int mlimit; /* setlimit, line 200 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 200 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 201 */ + among_var = find_among_b(z, a_7, 7); /* substring, line 201 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 201 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->lb = mlimit; return 0; } /* call R2, line 202 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* or, line 202 */ + if (!(eq_s_b(z, 1, s_34))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_35))) { z->lb = mlimit; return 0; } + } + lab1: + { int ret = slice_del(z); /* delete, line 202 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_36); /* <-, line 204 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 205 */ + if (ret < 0) return ret; + } + break; + case 4: + if (!(eq_s_b(z, 2, s_37))) { z->lb = mlimit; return 0; } + { int ret = slice_del(z); /* delete, line 206 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_un_double(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 212 */ + 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; /* among, line 212 */ + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 212 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 212 */ + z->bra = z->c; /* ], line 212 */ + { int ret = slice_del(z); /* delete, line 212 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_un_accent(struct SN_env * z) { + { int i = 1; + while(1) { /* atleast, line 216 */ + if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0; + i--; + continue; + lab0: + break; + } + if (i > 0) return 0; + } + z->ket = z->c; /* [, line 217 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 217 */ + if (!(eq_s_b(z, 1, s_38))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_39))) return 0; + } +lab1: + z->bra = z->c; /* ], line 217 */ + { int ret = slice_from_s(z, 1, s_40); /* <-, line 217 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int french_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 223 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 223 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 224 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 224 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 225 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 227 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 237 */ + { int m5 = z->l - z->c; (void)m5; /* and, line 233 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 229 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab6; /* call standard_suffix, line 229 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_i_verb_suffix(z); + if (ret == 0) goto lab7; /* call i_verb_suffix, line 230 */ + if (ret < 0) return ret; + } + goto lab5; + lab7: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 231 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = z->l - m5; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 234 */ + z->ket = z->c; /* [, line 234 */ + { int m7 = z->l - z->c; (void)m7; /* or, line 234 */ + if (!(eq_s_b(z, 1, s_41))) goto lab10; + z->bra = z->c; /* ], line 234 */ + { int ret = slice_from_s(z, 1, s_42); /* <-, line 234 */ + if (ret < 0) return ret; + } + goto lab9; + lab10: + z->c = z->l - m7; + if (!(eq_s_b(z, 1, s_43))) { z->c = z->l - m_keep; goto lab8; } + z->bra = z->c; /* ], line 235 */ + { int ret = slice_from_s(z, 1, s_44); /* <-, line 235 */ + if (ret < 0) return ret; + } + } + lab9: + lab8: + ; + } + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab2; /* call residual_suffix, line 238 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 243 */ + { int ret = r_un_double(z); + if (ret == 0) goto lab11; /* call un_double, line 243 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 244 */ + { int ret = r_un_accent(z); + if (ret == 0) goto lab12; /* call un_accent, line 244 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m9; + } + z->c = z->lb; + { int c10 = z->c; /* do, line 246 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab13; /* call postlude, line 246 */ + if (ret < 0) return ret; + } + lab13: + z->c = c10; + } + return 1; +} + +extern struct SN_env * french_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void french_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_french.h b/src_c/stem_ISO_8859_1_french.h new file mode 100644 index 0000000..21244d6 --- /dev/null +++ b/src_c/stem_ISO_8859_1_french.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int french_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_german.c b/src_c/stem_ISO_8859_1_german.c new file mode 100644 index 0000000..92b5cc2 --- /dev/null +++ b/src_c/stem_ISO_8859_1_german.c @@ -0,0 +1,521 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[1] = { 'U' }; +static const symbol s_0_2[1] = { 'Y' }; +static const symbol s_0_3[1] = { 0xE4 }; +static const symbol s_0_4[1] = { 0xF6 }; +static const symbol s_0_5[1] = { 0xFC }; + +static const struct among a_0[6] = +{ +/* 0 */ { 0, 0, -1, 6, 0}, +/* 1 */ { 1, s_0_1, 0, 2, 0}, +/* 2 */ { 1, s_0_2, 0, 1, 0}, +/* 3 */ { 1, s_0_3, 0, 3, 0}, +/* 4 */ { 1, s_0_4, 0, 4, 0}, +/* 5 */ { 1, s_0_5, 0, 5, 0} +}; + +static const symbol s_1_0[1] = { 'e' }; +static const symbol s_1_1[2] = { 'e', 'm' }; +static const symbol s_1_2[2] = { 'e', 'n' }; +static const symbol s_1_3[3] = { 'e', 'r', 'n' }; +static const symbol s_1_4[2] = { 'e', 'r' }; +static const symbol s_1_5[1] = { 's' }; +static const symbol s_1_6[2] = { 'e', 's' }; + +static const struct among a_1[7] = +{ +/* 0 */ { 1, s_1_0, -1, 2, 0}, +/* 1 */ { 2, s_1_1, -1, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 2, 0}, +/* 3 */ { 3, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 1, s_1_5, -1, 3, 0}, +/* 6 */ { 2, s_1_6, 5, 2, 0} +}; + +static const symbol s_2_0[2] = { 'e', 'n' }; +static const symbol s_2_1[2] = { 'e', 'r' }; +static const symbol s_2_2[2] = { 's', 't' }; +static const symbol s_2_3[3] = { 'e', 's', 't' }; + +static const struct among a_2[4] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 2, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 2, 0}, +/* 3 */ { 3, s_2_3, 2, 1, 0} +}; + +static const symbol s_3_0[2] = { 'i', 'g' }; +static const symbol s_3_1[4] = { 'l', 'i', 'c', 'h' }; + +static const struct among a_3[2] = +{ +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 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] = { 'u', 'n', 'g' }; +static const symbol s_4_3[4] = { 'l', 'i', 'c', 'h' }; +static const symbol s_4_4[4] = { 'i', 's', 'c', 'h' }; +static const symbol s_4_5[2] = { 'i', 'k' }; +static const symbol s_4_6[4] = { 'h', 'e', 'i', 't' }; +static const symbol s_4_7[4] = { 'k', 'e', 'i', 't' }; + +static const struct among a_4[8] = +{ +/* 0 */ { 3, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 2, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 3, 0}, +/* 4 */ { 4, s_4_4, -1, 2, 0}, +/* 5 */ { 2, s_4_5, -1, 2, 0}, +/* 6 */ { 4, s_4_6, -1, 3, 0}, +/* 7 */ { 4, s_4_7, -1, 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_s_ending[] = { 117, 30, 5 }; + +static const unsigned char g_st_ending[] = { 117, 30, 4 }; + +static const symbol s_0[] = { 0xDF }; +static const symbol s_1[] = { 's', 's' }; +static const symbol s_2[] = { 'u' }; +static const symbol s_3[] = { 'U' }; +static const symbol s_4[] = { 'y' }; +static const symbol s_5[] = { 'Y' }; +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[] = { 'u' }; +static const symbol s_11[] = { 's' }; +static const symbol s_12[] = { 'n', 'i', 's' }; +static const symbol s_13[] = { 'i', 'g' }; +static const symbol s_14[] = { 'e' }; +static const symbol s_15[] = { 'e' }; +static const symbol s_16[] = { 'e', 'r' }; +static const symbol s_17[] = { 'e', 'n' }; + +static int r_prelude(struct SN_env * z) { + { int c_test = z->c; /* test, line 35 */ + while(1) { /* repeat, line 35 */ + int c1 = z->c; + { int c2 = z->c; /* or, line 38 */ + z->bra = z->c; /* [, line 37 */ + if (!(eq_s(z, 1, s_0))) goto lab2; + z->ket = z->c; /* ], line 37 */ + { int ret = slice_from_s(z, 2, s_1); /* <-, line 37 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = c2; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 38 */ + } + lab1: + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + while(1) { /* repeat, line 41 */ + int c3 = z->c; + while(1) { /* goto, line 41 */ + int c4 = z->c; + if (in_grouping(z, g_v, 97, 252, 0)) goto lab4; + z->bra = z->c; /* [, line 42 */ + { int c5 = z->c; /* or, line 42 */ + if (!(eq_s(z, 1, s_2))) goto lab6; + z->ket = z->c; /* ], line 42 */ + if (in_grouping(z, g_v, 97, 252, 0)) goto lab6; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 42 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = c5; + if (!(eq_s(z, 1, s_4))) goto lab4; + z->ket = z->c; /* ], line 43 */ + if (in_grouping(z, g_v, 97, 252, 0)) goto lab4; + { int ret = slice_from_s(z, 1, s_5); /* <-, line 43 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = c4; + break; + lab4: + z->c = c4; + if (z->c >= z->l) goto lab3; + z->c++; /* goto, line 41 */ + } + continue; + lab3: + z->c = c3; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c_test = z->c; /* test, line 52 */ + { int ret = z->c + 3; + if (0 > ret || ret > z->l) return 0; + z->c = ret; /* hop, line 52 */ + } + z->I[2] = z->c; /* setmark x, line 52 */ + z->c = c_test; + } + { /* gopast */ /* grouping v, line 54 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 54 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 54 */ + /* try, line 55 */ + if (!(z->I[0] < z->I[2])) goto lab0; + z->I[0] = z->I[2]; +lab0: + { /* gopast */ /* grouping v, line 56 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 56 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 56 */ + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 60 */ + int c1 = z->c; + z->bra = z->c; /* [, line 62 */ + among_var = find_among(z, a_0, 6); /* substring, line 62 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 62 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_9); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 67 */ + if (ret < 0) return ret; + } + break; + case 6: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 68 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 79 */ + z->ket = z->c; /* [, line 80 */ + 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_1, 7); /* substring, line 80 */ + if (!(among_var)) goto lab0; + z->bra = z->c; /* ], line 80 */ + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 80 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_del(z); /* delete, line 82 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 85 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 86 */ + z->ket = z->c; /* [, line 86 */ + if (!(eq_s_b(z, 1, s_11))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 86 */ + if (!(eq_s_b(z, 3, s_12))) { z->c = z->l - m_keep; goto lab1; } + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + lab1: + ; + } + break; + case 3: + if (in_grouping_b(z, g_s_ending, 98, 116, 0)) goto lab0; + { int ret = slice_del(z); /* delete, line 89 */ + if (ret < 0) return ret; + } + break; + } + lab0: + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 93 */ + z->ket = z->c; /* [, line 94 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2; + among_var = find_among_b(z, a_2, 4); /* substring, line 94 */ + if (!(among_var)) goto lab2; + z->bra = z->c; /* ], line 94 */ + { int ret = r_R1(z); + if (ret == 0) goto lab2; /* call R1, line 94 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab2; + case 1: + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + case 2: + if (in_grouping_b(z, g_st_ending, 98, 116, 0)) goto lab2; + { int ret = z->c - 3; + if (z->lb > ret || ret > z->l) goto lab2; + z->c = ret; /* hop, line 99 */ + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + } + lab2: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 103 */ + z->ket = z->c; /* [, line 104 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3; + among_var = find_among_b(z, a_4, 8); /* substring, line 104 */ + if (!(among_var)) goto lab3; + z->bra = z->c; /* ], line 104 */ + { int ret = r_R2(z); + if (ret == 0) goto lab3; /* call R2, line 104 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab3; + case 1: + { int ret = slice_del(z); /* delete, line 106 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 107 */ + z->ket = z->c; /* [, line 107 */ + if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m_keep; goto lab4; } + z->bra = z->c; /* ], line 107 */ + { int m4 = z->l - z->c; (void)m4; /* not, line 107 */ + if (!(eq_s_b(z, 1, s_14))) goto lab5; + { z->c = z->l - m_keep; goto lab4; } + lab5: + z->c = z->l - m4; + } + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call R2, line 107 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 107 */ + if (ret < 0) return ret; + } + lab4: + ; + } + break; + case 2: + { int m5 = z->l - z->c; (void)m5; /* not, line 110 */ + if (!(eq_s_b(z, 1, s_15))) goto lab6; + goto lab3; + lab6: + z->c = z->l - m5; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 114 */ + z->ket = z->c; /* [, line 115 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 115 */ + if (!(eq_s_b(z, 2, s_16))) goto lab9; + goto lab8; + lab9: + z->c = z->l - m6; + if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m_keep; goto lab7; } + } + lab8: + z->bra = z->c; /* ], line 115 */ + { int ret = r_R1(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab7; } /* call R1, line 115 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 115 */ + if (ret < 0) return ret; + } + lab7: + ; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 119 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 120 */ + z->ket = z->c; /* [, line 121 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m_keep; goto lab10; } + among_var = find_among_b(z, a_3, 2); /* substring, line 121 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab10; } + z->bra = z->c; /* ], line 121 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call R2, line 121 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab10; } + case 1: + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + break; + } + lab10: + ; + } + break; + } + lab3: + z->c = z->l - m3; + } + return 1; +} + +extern int german_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 134 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 134 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 135 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 135 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 136 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 137 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab2; /* call standard_suffix, line 137 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + z->c = z->lb; + { int c4 = z->c; /* do, line 138 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab3; /* call postlude, line 138 */ + if (ret < 0) return ret; + } + lab3: + z->c = c4; + } + return 1; +} + +extern struct SN_env * german_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void german_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_german.h b/src_c/stem_ISO_8859_1_german.h new file mode 100644 index 0000000..8525389 --- /dev/null +++ b/src_c/stem_ISO_8859_1_german.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int german_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_hungarian.c b/src_c/stem_ISO_8859_1_hungarian.c new file mode 100644 index 0000000..beb31db --- /dev/null +++ b/src_c/stem_ISO_8859_1_hungarian.c @@ -0,0 +1,1230 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int hungarian_ISO_8859_1_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); +static int r_instrum(struct SN_env * z); +static int r_plur_owner(struct SN_env * z); +static int r_sing_owner(struct SN_env * z); +static int r_owned(struct SN_env * z); +static int r_plural(struct SN_env * z); +static int r_case_other(struct SN_env * z); +static int r_case_special(struct SN_env * z); +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_1_create_env(void); +extern void hungarian_ISO_8859_1_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 2, s_0_0, -1, -1, 0}, +/* 1 */ { 3, s_0_1, -1, -1, 0}, +/* 2 */ { 2, s_0_2, -1, -1, 0}, +/* 3 */ { 2, s_0_3, -1, -1, 0}, +/* 4 */ { 2, s_0_4, -1, -1, 0}, +/* 5 */ { 2, s_0_5, -1, -1, 0}, +/* 6 */ { 2, s_0_6, -1, -1, 0}, +/* 7 */ { 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] = +{ +/* 0 */ { 1, s_1_0, -1, 1, 0}, +/* 1 */ { 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -1, 0}, +/* 3 */ { 2, s_2_3, -1, -1, 0}, +/* 4 */ { 2, s_2_4, -1, -1, 0}, +/* 5 */ { 2, s_2_5, -1, -1, 0}, +/* 6 */ { 2, s_2_6, -1, -1, 0}, +/* 7 */ { 2, s_2_7, -1, -1, 0}, +/* 8 */ { 2, s_2_8, -1, -1, 0}, +/* 9 */ { 2, s_2_9, -1, -1, 0}, +/* 10 */ { 2, s_2_10, -1, -1, 0}, +/* 11 */ { 2, s_2_11, -1, -1, 0}, +/* 12 */ { 3, s_2_12, -1, -1, 0}, +/* 13 */ { 2, s_2_13, -1, -1, 0}, +/* 14 */ { 3, s_2_14, -1, -1, 0}, +/* 15 */ { 2, s_2_15, -1, -1, 0}, +/* 16 */ { 2, s_2_16, -1, -1, 0}, +/* 17 */ { 3, s_2_17, -1, -1, 0}, +/* 18 */ { 3, s_2_18, -1, -1, 0}, +/* 19 */ { 3, s_2_19, -1, -1, 0}, +/* 20 */ { 3, s_2_20, -1, -1, 0}, +/* 21 */ { 3, s_2_21, -1, -1, 0}, +/* 22 */ { 2, s_2_22, -1, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 2, s_3_1, -1, 2, 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] = +{ +/* 0 */ { 2, s_4_0, -1, -1, 0}, +/* 1 */ { 2, s_4_1, -1, -1, 0}, +/* 2 */ { 2, s_4_2, -1, -1, 0}, +/* 3 */ { 2, s_4_3, -1, -1, 0}, +/* 4 */ { 2, s_4_4, -1, -1, 0}, +/* 5 */ { 3, s_4_5, -1, -1, 0}, +/* 6 */ { 3, s_4_6, -1, -1, 0}, +/* 7 */ { 3, s_4_7, -1, -1, 0}, +/* 8 */ { 3, s_4_8, -1, -1, 0}, +/* 9 */ { 2, s_4_9, -1, -1, 0}, +/* 10 */ { 3, s_4_10, -1, -1, 0}, +/* 11 */ { 3, s_4_11, -1, -1, 0}, +/* 12 */ { 3, s_4_12, -1, -1, 0}, +/* 13 */ { 3, s_4_13, -1, -1, 0}, +/* 14 */ { 3, s_4_14, -1, -1, 0}, +/* 15 */ { 3, s_4_15, -1, -1, 0}, +/* 16 */ { 3, s_4_16, -1, -1, 0}, +/* 17 */ { 3, s_4_17, -1, -1, 0}, +/* 18 */ { 2, s_4_18, -1, -1, 0}, +/* 19 */ { 1, s_4_19, -1, -1, 0}, +/* 20 */ { 2, s_4_20, 19, -1, 0}, +/* 21 */ { 3, s_4_21, 20, -1, 0}, +/* 22 */ { 2, s_4_22, 19, -1, 0}, +/* 23 */ { 3, s_4_23, 22, -1, 0}, +/* 24 */ { 6, s_4_24, 22, -1, 0}, +/* 25 */ { 2, s_4_25, 19, -1, 0}, +/* 26 */ { 2, s_4_26, 19, -1, 0}, +/* 27 */ { 4, s_4_27, -1, -1, 0}, +/* 28 */ { 3, s_4_28, -1, -1, 0}, +/* 29 */ { 1, s_4_29, -1, -1, 0}, +/* 30 */ { 2, s_4_30, 29, -1, 0}, +/* 31 */ { 2, s_4_31, 29, -1, 0}, +/* 32 */ { 4, s_4_32, 29, -1, 0}, +/* 33 */ { 6, s_4_33, 32, -1, 0}, +/* 34 */ { 6, s_4_34, 32, -1, 0}, +/* 35 */ { 6, s_4_35, 32, -1, 0}, +/* 36 */ { 2, s_4_36, 29, -1, 0}, +/* 37 */ { 3, s_4_37, 29, -1, 0}, +/* 38 */ { 2, s_4_38, 29, -1, 0}, +/* 39 */ { 3, s_4_39, -1, -1, 0}, +/* 40 */ { 3, s_4_40, -1, -1, 0}, +/* 41 */ { 3, s_4_41, -1, -1, 0}, +/* 42 */ { 2, s_4_42, -1, -1, 0}, +/* 43 */ { 2, s_4_43, -1, -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] = +{ +/* 0 */ { 2, s_5_0, -1, 2, 0}, +/* 1 */ { 2, s_5_1, -1, 1, 0}, +/* 2 */ { 6, s_5_2, -1, 3, 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] = +{ +/* 0 */ { 4, s_6_0, -1, 2, 0}, +/* 1 */ { 5, s_6_1, 0, 1, 0}, +/* 2 */ { 5, s_6_2, 0, 3, 0}, +/* 3 */ { 4, s_6_3, -1, 2, 0}, +/* 4 */ { 5, s_6_4, 3, 1, 0}, +/* 5 */ { 5, s_6_5, 3, 4, 0} +}; + +static const symbol s_7_0[1] = { 0xE1 }; +static const symbol s_7_1[1] = { 0xE9 }; + +static const struct among a_7[2] = +{ +/* 0 */ { 1, s_7_0, -1, 1, 0}, +/* 1 */ { 1, s_7_1, -1, 2, 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] = +{ +/* 0 */ { 1, s_8_0, -1, 7, 0}, +/* 1 */ { 2, s_8_1, 0, 4, 0}, +/* 2 */ { 2, s_8_2, 0, 6, 0}, +/* 3 */ { 2, s_8_3, 0, 5, 0}, +/* 4 */ { 2, s_8_4, 0, 1, 0}, +/* 5 */ { 2, s_8_5, 0, 2, 0}, +/* 6 */ { 2, s_8_6, 0, 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] = +{ +/* 0 */ { 2, s_9_0, -1, 7, 0}, +/* 1 */ { 3, s_9_1, 0, 6, 0}, +/* 2 */ { 3, s_9_2, 0, 5, 0}, +/* 3 */ { 1, s_9_3, -1, 9, 0}, +/* 4 */ { 2, s_9_4, 3, 4, 0}, +/* 5 */ { 3, s_9_5, 4, 1, 0}, +/* 6 */ { 3, s_9_6, 4, 1, 0}, +/* 7 */ { 3, s_9_7, 4, 1, 0}, +/* 8 */ { 3, s_9_8, 4, 3, 0}, +/* 9 */ { 3, s_9_9, 4, 2, 0}, +/* 10 */ { 3, s_9_10, 4, 1, 0}, +/* 11 */ { 2, s_9_11, 3, 8, 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] = +{ +/* 0 */ { 1, s_10_0, -1, 18, 0}, +/* 1 */ { 2, s_10_1, 0, 17, 0}, +/* 2 */ { 1, s_10_2, -1, 16, 0}, +/* 3 */ { 2, s_10_3, 2, 13, 0}, +/* 4 */ { 2, s_10_4, 2, 13, 0}, +/* 5 */ { 2, s_10_5, 2, 13, 0}, +/* 6 */ { 2, s_10_6, 2, 14, 0}, +/* 7 */ { 2, s_10_7, 2, 15, 0}, +/* 8 */ { 2, s_10_8, 2, 13, 0}, +/* 9 */ { 1, s_10_9, -1, 18, 0}, +/* 10 */ { 2, s_10_10, 9, 17, 0}, +/* 11 */ { 2, s_10_11, -1, 4, 0}, +/* 12 */ { 3, s_10_12, 11, 1, 0}, +/* 13 */ { 3, s_10_13, 11, 2, 0}, +/* 14 */ { 3, s_10_14, 11, 3, 0}, +/* 15 */ { 3, s_10_15, 11, 1, 0}, +/* 16 */ { 2, s_10_16, -1, 8, 0}, +/* 17 */ { 3, s_10_17, 16, 7, 0}, +/* 18 */ { 4, s_10_18, 17, 5, 0}, +/* 19 */ { 2, s_10_19, -1, 8, 0}, +/* 20 */ { 3, s_10_20, 19, 7, 0}, +/* 21 */ { 4, s_10_21, 20, 6, 0}, +/* 22 */ { 1, s_10_22, -1, 12, 0}, +/* 23 */ { 2, s_10_23, 22, 9, 0}, +/* 24 */ { 2, s_10_24, 22, 9, 0}, +/* 25 */ { 2, s_10_25, 22, 9, 0}, +/* 26 */ { 2, s_10_26, 22, 10, 0}, +/* 27 */ { 2, s_10_27, 22, 11, 0}, +/* 28 */ { 1, s_10_28, -1, 18, 0}, +/* 29 */ { 1, s_10_29, -1, 19, 0}, +/* 30 */ { 1, s_10_30, -1, 20, 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] = +{ +/* 0 */ { 2, s_11_0, -1, 10, 0}, +/* 1 */ { 3, s_11_1, 0, 9, 0}, +/* 2 */ { 4, s_11_2, 1, 6, 0}, +/* 3 */ { 3, s_11_3, 0, 9, 0}, +/* 4 */ { 4, s_11_4, 3, 6, 0}, +/* 5 */ { 3, s_11_5, 0, 7, 0}, +/* 6 */ { 3, s_11_6, 0, 8, 0}, +/* 7 */ { 1, s_11_7, -1, 15, 0}, +/* 8 */ { 2, s_11_8, 7, 14, 0}, +/* 9 */ { 3, s_11_9, 8, 11, 0}, +/* 10 */ { 2, s_11_10, 7, 14, 0}, +/* 11 */ { 3, s_11_11, 10, 11, 0}, +/* 12 */ { 2, s_11_12, 7, 12, 0}, +/* 13 */ { 2, s_11_13, 7, 13, 0}, +/* 14 */ { 4, s_11_14, -1, 24, 0}, +/* 15 */ { 5, s_11_15, 14, 21, 0}, +/* 16 */ { 6, s_11_16, 15, 20, 0}, +/* 17 */ { 5, s_11_17, 14, 23, 0}, +/* 18 */ { 2, s_11_18, -1, 29, 0}, +/* 19 */ { 3, s_11_19, 18, 26, 0}, +/* 20 */ { 4, s_11_20, 19, 25, 0}, +/* 21 */ { 3, s_11_21, 18, 26, 0}, +/* 22 */ { 4, s_11_22, 21, 25, 0}, +/* 23 */ { 3, s_11_23, 18, 27, 0}, +/* 24 */ { 3, s_11_24, 18, 28, 0}, +/* 25 */ { 3, s_11_25, -1, 20, 0}, +/* 26 */ { 4, s_11_26, 25, 17, 0}, +/* 27 */ { 5, s_11_27, 26, 16, 0}, +/* 28 */ { 4, s_11_28, 25, 17, 0}, +/* 29 */ { 5, s_11_29, 28, 16, 0}, +/* 30 */ { 4, s_11_30, 25, 18, 0}, +/* 31 */ { 4, s_11_31, 25, 19, 0}, +/* 32 */ { 5, s_11_32, -1, 21, 0}, +/* 33 */ { 6, s_11_33, 32, 20, 0}, +/* 34 */ { 5, s_11_34, -1, 22, 0}, +/* 35 */ { 2, s_11_35, -1, 5, 0}, +/* 36 */ { 3, s_11_36, 35, 4, 0}, +/* 37 */ { 4, s_11_37, 36, 1, 0}, +/* 38 */ { 3, s_11_38, 35, 4, 0}, +/* 39 */ { 4, s_11_39, 38, 1, 0}, +/* 40 */ { 3, s_11_40, 35, 2, 0}, +/* 41 */ { 3, s_11_41, 35, 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[] = { 'a' }; +static const symbol s_6[] = { 'e' }; +static const symbol s_7[] = { 'a' }; +static const symbol s_8[] = { 'e' }; +static const symbol s_9[] = { 'e' }; +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 const symbol s_14[] = { 'a' }; +static const symbol s_15[] = { 'e' }; +static const symbol s_16[] = { 'a' }; +static const symbol s_17[] = { 'e' }; +static const symbol s_18[] = { 'a' }; +static const symbol s_19[] = { 'e' }; +static const symbol s_20[] = { 'a' }; +static const symbol s_21[] = { 'e' }; +static const symbol s_22[] = { 'a' }; +static const symbol s_23[] = { 'e' }; +static const symbol s_24[] = { 'a' }; +static const symbol s_25[] = { 'e' }; +static const symbol s_26[] = { 'a' }; +static const symbol s_27[] = { 'e' }; +static const symbol s_28[] = { 'a' }; +static const symbol s_29[] = { 'e' }; +static const symbol s_30[] = { 'a' }; +static const symbol s_31[] = { 'e' }; +static const symbol s_32[] = { 'a' }; +static const symbol s_33[] = { 'e' }; +static const symbol s_34[] = { 'a' }; +static const symbol s_35[] = { 'e' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c1 = z->c; /* or, line 51 */ + if (in_grouping(z, g_v, 97, 252, 0)) goto lab1; + if (in_grouping(z, g_v, 97, 252, 1) < 0) goto lab1; /* goto */ /* non v, line 48 */ + { int c2 = z->c; /* or, line 49 */ + 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; /* among, line 49 */ + goto lab2; + lab3: + z->c = c2; + if (z->c >= z->l) goto lab1; + z->c++; /* next, line 49 */ + } + lab2: + z->I[0] = z->c; /* setmark p1, line 50 */ + goto lab0; + lab1: + z->c = c1; + if (out_grouping(z, g_v, 97, 252, 0)) return 0; + { /* gopast */ /* grouping v, line 53 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 53 */ + } +lab0: + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_v_ending(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 61 */ + 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); /* substring, line 61 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 61 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 61 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 62 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_double(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 68 */ + 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; /* among, line 68 */ + z->c = z->l - m_test; + } + return 1; +} + +static int r_undouble(struct SN_env * z) { + if (z->c <= z->lb) return 0; + z->c--; /* next, line 73 */ + z->ket = z->c; /* [, line 73 */ + { int ret = z->c - 1; + if (z->lb > ret || ret > z->l) return 0; + z->c = ret; /* hop, line 73 */ + } + z->bra = z->c; /* ], line 73 */ + { int ret = slice_del(z); /* delete, line 73 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_instrum(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 77 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0; + among_var = find_among_b(z, a_3, 2); /* substring, line 77 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 77 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 77 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 79 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 82 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_case(struct SN_env * z) { + z->ket = z->c; /* [, line 87 */ + if (!(find_among_b(z, a_4, 44))) return 0; /* substring, line 87 */ + z->bra = z->c; /* ], line 87 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 87 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 111 */ + if (ret < 0) return ret; + } + { int ret = r_v_ending(z); + if (ret == 0) return 0; /* call v_ending, line 112 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_case_special(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 116 */ + 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); /* substring, line 116 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 116 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 116 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_case_other(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 124 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0; + among_var = find_among_b(z, a_6, 6); /* substring, line 124 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 124 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 124 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 126 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 127 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 128 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_factive(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 133 */ + 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_7, 2); /* substring, line 133 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 133 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 133 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 134 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 135 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 137 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 138 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_plural(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 142 */ + if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0; + among_var = find_among_b(z, a_8, 7); /* substring, line 142 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 142 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 142 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 143 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 144 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 146 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 148 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 149 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_owned(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 154 */ + 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); /* substring, line 154 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 154 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 154 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 155 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_9); /* <-, line 156 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 157 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 159 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 160 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 161 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 162 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_sing_owner(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 168 */ + among_var = find_among_b(z, a_10, 31); /* substring, line 168 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 168 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 168 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 169 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_14); /* <-, line 170 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_15); /* <-, line 171 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 172 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_16); /* <-, line 173 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_17); /* <-, line 174 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 175 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 1, s_18); /* <-, line 178 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 1, s_19); /* <-, line 179 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_del(z); /* delete, line 180 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_del(z); /* delete, line 181 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 1, s_20); /* <-, line 182 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_from_s(z, 1, s_21); /* <-, line 183 */ + if (ret < 0) return ret; + } + break; + case 16: + { int ret = slice_del(z); /* delete, line 184 */ + if (ret < 0) return ret; + } + break; + case 17: + { int ret = slice_del(z); /* delete, line 185 */ + if (ret < 0) return ret; + } + break; + case 18: + { int ret = slice_del(z); /* delete, line 186 */ + if (ret < 0) return ret; + } + break; + case 19: + { int ret = slice_from_s(z, 1, s_22); /* <-, line 187 */ + if (ret < 0) return ret; + } + break; + case 20: + { int ret = slice_from_s(z, 1, s_23); /* <-, line 188 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_plur_owner(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 193 */ + 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); /* substring, line 193 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 193 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 193 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_24); /* <-, line 195 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_25); /* <-, line 196 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 197 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 198 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 199 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 1, s_26); /* <-, line 200 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 1, s_27); /* <-, line 201 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 202 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_del(z); /* delete, line 203 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_del(z); /* delete, line 204 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 1, s_28); /* <-, line 205 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_from_s(z, 1, s_29); /* <-, line 206 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_del(z); /* delete, line 207 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_del(z); /* delete, line 208 */ + if (ret < 0) return ret; + } + break; + case 16: + { int ret = slice_del(z); /* delete, line 209 */ + if (ret < 0) return ret; + } + break; + case 17: + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + break; + case 18: + { int ret = slice_from_s(z, 1, s_30); /* <-, line 211 */ + if (ret < 0) return ret; + } + break; + case 19: + { int ret = slice_from_s(z, 1, s_31); /* <-, line 212 */ + if (ret < 0) return ret; + } + break; + case 20: + { int ret = slice_del(z); /* delete, line 214 */ + if (ret < 0) return ret; + } + break; + case 21: + { int ret = slice_del(z); /* delete, line 215 */ + if (ret < 0) return ret; + } + break; + case 22: + { int ret = slice_from_s(z, 1, s_32); /* <-, line 216 */ + if (ret < 0) return ret; + } + break; + case 23: + { int ret = slice_from_s(z, 1, s_33); /* <-, line 217 */ + if (ret < 0) return ret; + } + break; + case 24: + { int ret = slice_del(z); /* delete, line 218 */ + if (ret < 0) return ret; + } + break; + case 25: + { int ret = slice_del(z); /* delete, line 219 */ + if (ret < 0) return ret; + } + break; + case 26: + { int ret = slice_del(z); /* delete, line 220 */ + if (ret < 0) return ret; + } + break; + case 27: + { int ret = slice_from_s(z, 1, s_34); /* <-, line 221 */ + if (ret < 0) return ret; + } + break; + case 28: + { int ret = slice_from_s(z, 1, s_35); /* <-, line 222 */ + if (ret < 0) return ret; + } + break; + case 29: + { int ret = slice_del(z); /* delete, line 223 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int hungarian_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 229 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 229 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 230 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 231 */ + { int ret = r_instrum(z); + if (ret == 0) goto lab1; /* call instrum, line 231 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 232 */ + { int ret = r_case(z); + if (ret == 0) goto lab2; /* call case, line 232 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 233 */ + { int ret = r_case_special(z); + if (ret == 0) goto lab3; /* call case_special, line 233 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 234 */ + { int ret = r_case_other(z); + if (ret == 0) goto lab4; /* call case_other, line 234 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 235 */ + { int ret = r_factive(z); + if (ret == 0) goto lab5; /* call factive, line 235 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 236 */ + { int ret = r_owned(z); + if (ret == 0) goto lab6; /* call owned, line 236 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 237 */ + { int ret = r_sing_owner(z); + if (ret == 0) goto lab7; /* call sing_owner, line 237 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 238 */ + { int ret = r_plur_owner(z); + if (ret == 0) goto lab8; /* call plur_owner, line 238 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 239 */ + { int ret = r_plural(z); + if (ret == 0) goto lab9; /* call plural, line 239 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m10; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * hungarian_ISO_8859_1_create_env(void) { return SN_create_env(0, 1, 0); } + +extern void hungarian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_hungarian.h b/src_c/stem_ISO_8859_1_hungarian.h new file mode 100644 index 0000000..c3177e5 --- /dev/null +++ b/src_c/stem_ISO_8859_1_hungarian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * hungarian_ISO_8859_1_create_env(void); +extern void hungarian_ISO_8859_1_close_env(struct SN_env * z); + +extern int hungarian_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_italian.c b/src_c/stem_ISO_8859_1_italian.c new file mode 100644 index 0000000..3151ef5 --- /dev/null +++ b/src_c/stem_ISO_8859_1_italian.c @@ -0,0 +1,1065 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +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); +static int r_prelude(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); + + +#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, 0, -1, 7, 0}, +/* 1 */ { 2, s_0_1, 0, 6, 0}, +/* 2 */ { 1, s_0_2, 0, 1, 0}, +/* 3 */ { 1, s_0_3, 0, 2, 0}, +/* 4 */ { 1, s_0_4, 0, 3, 0}, +/* 5 */ { 1, s_0_5, 0, 4, 0}, +/* 6 */ { 1, s_0_6, 0, 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, 0, -1, 3, 0}, +/* 1 */ { 1, s_1_1, 0, 1, 0}, +/* 2 */ { 1, s_1_2, 0, 2, 0} +}; + +static const symbol s_2_0[2] = { 'l', 'a' }; +static const symbol s_2_1[4] = { 'c', 'e', 'l', 'a' }; +static const symbol s_2_2[6] = { 'g', 'l', 'i', 'e', 'l', 'a' }; +static const symbol s_2_3[4] = { 'm', 'e', 'l', 'a' }; +static const symbol s_2_4[4] = { 't', 'e', 'l', 'a' }; +static const symbol s_2_5[4] = { 'v', 'e', 'l', 'a' }; +static const symbol s_2_6[2] = { 'l', 'e' }; +static const symbol s_2_7[4] = { 'c', 'e', 'l', 'e' }; +static const symbol s_2_8[6] = { 'g', 'l', 'i', 'e', 'l', 'e' }; +static const symbol s_2_9[4] = { 'm', 'e', 'l', 'e' }; +static const symbol s_2_10[4] = { 't', 'e', 'l', 'e' }; +static const symbol s_2_11[4] = { 'v', 'e', 'l', 'e' }; +static const symbol s_2_12[2] = { 'n', 'e' }; +static const symbol s_2_13[4] = { 'c', 'e', 'n', 'e' }; +static const symbol s_2_14[6] = { 'g', 'l', 'i', 'e', 'n', 'e' }; +static const symbol s_2_15[4] = { 'm', 'e', 'n', 'e' }; +static const symbol s_2_16[4] = { 's', 'e', 'n', 'e' }; +static const symbol s_2_17[4] = { 't', 'e', 'n', 'e' }; +static const symbol s_2_18[4] = { 'v', 'e', 'n', 'e' }; +static const symbol s_2_19[2] = { 'c', 'i' }; +static const symbol s_2_20[2] = { 'l', 'i' }; +static const symbol s_2_21[4] = { 'c', 'e', 'l', 'i' }; +static const symbol s_2_22[6] = { 'g', 'l', 'i', 'e', 'l', 'i' }; +static const symbol s_2_23[4] = { 'm', 'e', 'l', 'i' }; +static const symbol s_2_24[4] = { 't', 'e', 'l', 'i' }; +static const symbol s_2_25[4] = { 'v', 'e', 'l', 'i' }; +static const symbol s_2_26[3] = { 'g', 'l', 'i' }; +static const symbol s_2_27[2] = { 'm', 'i' }; +static const symbol s_2_28[2] = { 's', 'i' }; +static const symbol s_2_29[2] = { 't', 'i' }; +static const symbol s_2_30[2] = { 'v', 'i' }; +static const symbol s_2_31[2] = { 'l', 'o' }; +static const symbol s_2_32[4] = { 'c', 'e', 'l', 'o' }; +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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 4, s_2_1, 0, -1, 0}, +/* 2 */ { 6, s_2_2, 0, -1, 0}, +/* 3 */ { 4, s_2_3, 0, -1, 0}, +/* 4 */ { 4, s_2_4, 0, -1, 0}, +/* 5 */ { 4, s_2_5, 0, -1, 0}, +/* 6 */ { 2, s_2_6, -1, -1, 0}, +/* 7 */ { 4, s_2_7, 6, -1, 0}, +/* 8 */ { 6, s_2_8, 6, -1, 0}, +/* 9 */ { 4, s_2_9, 6, -1, 0}, +/* 10 */ { 4, s_2_10, 6, -1, 0}, +/* 11 */ { 4, s_2_11, 6, -1, 0}, +/* 12 */ { 2, s_2_12, -1, -1, 0}, +/* 13 */ { 4, s_2_13, 12, -1, 0}, +/* 14 */ { 6, s_2_14, 12, -1, 0}, +/* 15 */ { 4, s_2_15, 12, -1, 0}, +/* 16 */ { 4, s_2_16, 12, -1, 0}, +/* 17 */ { 4, s_2_17, 12, -1, 0}, +/* 18 */ { 4, s_2_18, 12, -1, 0}, +/* 19 */ { 2, s_2_19, -1, -1, 0}, +/* 20 */ { 2, s_2_20, -1, -1, 0}, +/* 21 */ { 4, s_2_21, 20, -1, 0}, +/* 22 */ { 6, s_2_22, 20, -1, 0}, +/* 23 */ { 4, s_2_23, 20, -1, 0}, +/* 24 */ { 4, s_2_24, 20, -1, 0}, +/* 25 */ { 4, s_2_25, 20, -1, 0}, +/* 26 */ { 3, s_2_26, 20, -1, 0}, +/* 27 */ { 2, s_2_27, -1, -1, 0}, +/* 28 */ { 2, s_2_28, -1, -1, 0}, +/* 29 */ { 2, s_2_29, -1, -1, 0}, +/* 30 */ { 2, s_2_30, -1, -1, 0}, +/* 31 */ { 2, s_2_31, -1, -1, 0}, +/* 32 */ { 4, s_2_32, 31, -1, 0}, +/* 33 */ { 6, s_2_33, 31, -1, 0}, +/* 34 */ { 4, s_2_34, 31, -1, 0}, +/* 35 */ { 4, s_2_35, 31, -1, 0}, +/* 36 */ { 4, s_2_36, 31, -1, 0} +}; + +static const symbol s_3_0[4] = { 'a', 'n', 'd', 'o' }; +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] = +{ +/* 0 */ { 4, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 2, s_3_2, -1, 2, 0}, +/* 3 */ { 2, s_3_3, -1, 2, 0}, +/* 4 */ { 2, s_3_4, -1, 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] = +{ +/* 0 */ { 2, s_4_0, -1, -1, 0}, +/* 1 */ { 4, s_4_1, -1, -1, 0}, +/* 2 */ { 2, s_4_2, -1, -1, 0}, +/* 3 */ { 2, s_4_3, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, -1, 1, 0} +}; + +static const symbol s_6_0[3] = { 'i', 'c', 'a' }; +static const symbol s_6_1[5] = { 'l', 'o', 'g', 'i', 'a' }; +static const symbol s_6_2[3] = { 'o', 's', 'a' }; +static const symbol s_6_3[4] = { 'i', 's', 't', 'a' }; +static const symbol s_6_4[3] = { 'i', 'v', 'a' }; +static const symbol s_6_5[4] = { 'a', 'n', 'z', 'a' }; +static const symbol s_6_6[4] = { 'e', 'n', 'z', 'a' }; +static const symbol s_6_7[3] = { 'i', 'c', 'e' }; +static const symbol s_6_8[6] = { 'a', 't', 'r', 'i', 'c', 'e' }; +static const symbol s_6_9[4] = { 'i', 'c', 'h', 'e' }; +static const symbol s_6_10[5] = { 'l', 'o', 'g', 'i', 'e' }; +static const symbol s_6_11[5] = { 'a', 'b', 'i', 'l', 'e' }; +static const symbol s_6_12[5] = { 'i', 'b', 'i', 'l', 'e' }; +static const symbol s_6_13[6] = { 'u', 's', 'i', 'o', 'n', 'e' }; +static const symbol s_6_14[6] = { 'a', 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_6_15[6] = { 'u', 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_6_16[5] = { 'a', 't', 'o', 'r', 'e' }; +static const symbol s_6_17[3] = { 'o', 's', 'e' }; +static const symbol s_6_18[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_6_19[5] = { 'm', 'e', 'n', 't', 'e' }; +static const symbol s_6_20[6] = { 'a', 'm', 'e', 'n', 't', 'e' }; +static const symbol s_6_21[4] = { 'i', 's', 't', 'e' }; +static const symbol s_6_22[3] = { 'i', 'v', 'e' }; +static const symbol s_6_23[4] = { 'a', 'n', 'z', 'e' }; +static const symbol s_6_24[4] = { 'e', 'n', 'z', 'e' }; +static const symbol s_6_25[3] = { 'i', 'c', 'i' }; +static const symbol s_6_26[6] = { 'a', 't', 'r', 'i', 'c', 'i' }; +static const symbol s_6_27[4] = { 'i', 'c', 'h', 'i' }; +static const symbol s_6_28[5] = { 'a', 'b', 'i', 'l', 'i' }; +static const symbol s_6_29[5] = { 'i', 'b', 'i', 'l', 'i' }; +static const symbol s_6_30[4] = { 'i', 's', 'm', 'i' }; +static const symbol s_6_31[6] = { 'u', 's', 'i', 'o', 'n', 'i' }; +static const symbol s_6_32[6] = { 'a', 'z', 'i', 'o', 'n', 'i' }; +static const symbol s_6_33[6] = { 'u', 'z', 'i', 'o', 'n', 'i' }; +static const symbol s_6_34[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_6_35[3] = { 'o', 's', 'i' }; +static const symbol s_6_36[4] = { 'a', 'n', 't', 'i' }; +static const symbol s_6_37[6] = { 'a', 'm', 'e', 'n', 't', 'i' }; +static const symbol s_6_38[6] = { 'i', 'm', 'e', 'n', 't', 'i' }; +static const symbol s_6_39[4] = { 'i', 's', 't', 'i' }; +static const symbol s_6_40[3] = { 'i', 'v', 'i' }; +static const symbol s_6_41[3] = { 'i', 'c', 'o' }; +static const symbol s_6_42[4] = { 'i', 's', 'm', 'o' }; +static const symbol s_6_43[3] = { 'o', 's', 'o' }; +static const symbol s_6_44[6] = { 'a', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_6_45[6] = { 'i', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_6_46[3] = { 'i', 'v', 'o' }; +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] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 5, s_6_1, -1, 3, 0}, +/* 2 */ { 3, s_6_2, -1, 1, 0}, +/* 3 */ { 4, s_6_3, -1, 1, 0}, +/* 4 */ { 3, s_6_4, -1, 9, 0}, +/* 5 */ { 4, s_6_5, -1, 1, 0}, +/* 6 */ { 4, s_6_6, -1, 5, 0}, +/* 7 */ { 3, s_6_7, -1, 1, 0}, +/* 8 */ { 6, s_6_8, 7, 1, 0}, +/* 9 */ { 4, s_6_9, -1, 1, 0}, +/* 10 */ { 5, s_6_10, -1, 3, 0}, +/* 11 */ { 5, s_6_11, -1, 1, 0}, +/* 12 */ { 5, s_6_12, -1, 1, 0}, +/* 13 */ { 6, s_6_13, -1, 4, 0}, +/* 14 */ { 6, s_6_14, -1, 2, 0}, +/* 15 */ { 6, s_6_15, -1, 4, 0}, +/* 16 */ { 5, s_6_16, -1, 2, 0}, +/* 17 */ { 3, s_6_17, -1, 1, 0}, +/* 18 */ { 4, s_6_18, -1, 1, 0}, +/* 19 */ { 5, s_6_19, -1, 1, 0}, +/* 20 */ { 6, s_6_20, 19, 7, 0}, +/* 21 */ { 4, s_6_21, -1, 1, 0}, +/* 22 */ { 3, s_6_22, -1, 9, 0}, +/* 23 */ { 4, s_6_23, -1, 1, 0}, +/* 24 */ { 4, s_6_24, -1, 5, 0}, +/* 25 */ { 3, s_6_25, -1, 1, 0}, +/* 26 */ { 6, s_6_26, 25, 1, 0}, +/* 27 */ { 4, s_6_27, -1, 1, 0}, +/* 28 */ { 5, s_6_28, -1, 1, 0}, +/* 29 */ { 5, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, -1, 1, 0}, +/* 31 */ { 6, s_6_31, -1, 4, 0}, +/* 32 */ { 6, s_6_32, -1, 2, 0}, +/* 33 */ { 6, s_6_33, -1, 4, 0}, +/* 34 */ { 5, s_6_34, -1, 2, 0}, +/* 35 */ { 3, s_6_35, -1, 1, 0}, +/* 36 */ { 4, s_6_36, -1, 1, 0}, +/* 37 */ { 6, s_6_37, -1, 6, 0}, +/* 38 */ { 6, s_6_38, -1, 6, 0}, +/* 39 */ { 4, s_6_39, -1, 1, 0}, +/* 40 */ { 3, s_6_40, -1, 9, 0}, +/* 41 */ { 3, s_6_41, -1, 1, 0}, +/* 42 */ { 4, s_6_42, -1, 1, 0}, +/* 43 */ { 3, s_6_43, -1, 1, 0}, +/* 44 */ { 6, s_6_44, -1, 6, 0}, +/* 45 */ { 6, s_6_45, -1, 6, 0}, +/* 46 */ { 3, s_6_46, -1, 9, 0}, +/* 47 */ { 3, s_6_47, -1, 8, 0}, +/* 48 */ { 4, s_6_48, -1, 1, 0}, +/* 49 */ { 4, s_6_49, -1, 1, 0}, +/* 50 */ { 4, s_6_50, -1, 1, 0} +}; + +static const symbol s_7_0[4] = { 'i', 's', 'c', 'a' }; +static const symbol s_7_1[4] = { 'e', 'n', 'd', 'a' }; +static const symbol s_7_2[3] = { 'a', 't', 'a' }; +static const symbol s_7_3[3] = { 'i', 't', 'a' }; +static const symbol s_7_4[3] = { 'u', 't', 'a' }; +static const symbol s_7_5[3] = { 'a', 'v', 'a' }; +static const symbol s_7_6[3] = { 'e', 'v', 'a' }; +static const symbol s_7_7[3] = { 'i', 'v', 'a' }; +static const symbol s_7_8[6] = { 'e', 'r', 'e', 'b', 'b', 'e' }; +static const symbol s_7_9[6] = { 'i', 'r', 'e', 'b', 'b', 'e' }; +static const symbol s_7_10[4] = { 'i', 's', 'c', 'e' }; +static const symbol s_7_11[4] = { 'e', 'n', 'd', 'e' }; +static const symbol s_7_12[3] = { 'a', 'r', 'e' }; +static const symbol s_7_13[3] = { 'e', 'r', 'e' }; +static const symbol s_7_14[3] = { 'i', 'r', 'e' }; +static const symbol s_7_15[4] = { 'a', 's', 's', 'e' }; +static const symbol s_7_16[3] = { 'a', 't', 'e' }; +static const symbol s_7_17[5] = { 'a', 'v', 'a', 't', 'e' }; +static const symbol s_7_18[5] = { 'e', 'v', 'a', 't', 'e' }; +static const symbol s_7_19[5] = { 'i', 'v', 'a', 't', 'e' }; +static const symbol s_7_20[3] = { 'e', 't', 'e' }; +static const symbol s_7_21[5] = { 'e', 'r', 'e', 't', 'e' }; +static const symbol s_7_22[5] = { 'i', 'r', 'e', 't', 'e' }; +static const symbol s_7_23[3] = { 'i', 't', 'e' }; +static const symbol s_7_24[6] = { 'e', 'r', 'e', 's', 't', 'e' }; +static const symbol s_7_25[6] = { 'i', 'r', 'e', 's', 't', 'e' }; +static const symbol s_7_26[3] = { 'u', 't', 'e' }; +static const symbol s_7_27[4] = { 'e', 'r', 'a', 'i' }; +static const symbol s_7_28[4] = { 'i', 'r', 'a', 'i' }; +static const symbol s_7_29[4] = { 'i', 's', 'c', 'i' }; +static const symbol s_7_30[4] = { 'e', 'n', 'd', 'i' }; +static const symbol s_7_31[4] = { 'e', 'r', 'e', 'i' }; +static const symbol s_7_32[4] = { 'i', 'r', 'e', 'i' }; +static const symbol s_7_33[4] = { 'a', 's', 's', 'i' }; +static const symbol s_7_34[3] = { 'a', 't', 'i' }; +static const symbol s_7_35[3] = { 'i', 't', 'i' }; +static const symbol s_7_36[6] = { 'e', 'r', 'e', 's', 't', 'i' }; +static const symbol s_7_37[6] = { 'i', 'r', 'e', 's', 't', 'i' }; +static const symbol s_7_38[3] = { 'u', 't', 'i' }; +static const symbol s_7_39[3] = { 'a', 'v', 'i' }; +static const symbol s_7_40[3] = { 'e', 'v', 'i' }; +static const symbol s_7_41[3] = { 'i', 'v', 'i' }; +static const symbol s_7_42[4] = { 'i', 's', 'c', 'o' }; +static const symbol s_7_43[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_7_44[4] = { 'e', 'n', 'd', 'o' }; +static const symbol s_7_45[4] = { 'Y', 'a', 'm', 'o' }; +static const symbol s_7_46[4] = { 'i', 'a', 'm', 'o' }; +static const symbol s_7_47[5] = { 'a', 'v', 'a', 'm', 'o' }; +static const symbol s_7_48[5] = { 'e', 'v', 'a', 'm', 'o' }; +static const symbol s_7_49[5] = { 'i', 'v', 'a', 'm', 'o' }; +static const symbol s_7_50[5] = { 'e', 'r', 'e', 'm', 'o' }; +static const symbol s_7_51[5] = { 'i', 'r', 'e', 'm', 'o' }; +static const symbol s_7_52[6] = { 'a', 's', 's', 'i', 'm', 'o' }; +static const symbol s_7_53[4] = { 'a', 'm', 'm', 'o' }; +static const symbol s_7_54[4] = { 'e', 'm', 'm', 'o' }; +static const symbol s_7_55[6] = { 'e', 'r', 'e', 'm', 'm', 'o' }; +static const symbol s_7_56[6] = { 'i', 'r', 'e', 'm', 'm', 'o' }; +static const symbol s_7_57[4] = { 'i', 'm', 'm', 'o' }; +static const symbol s_7_58[3] = { 'a', 'n', 'o' }; +static const symbol s_7_59[6] = { 'i', 's', 'c', 'a', 'n', 'o' }; +static const symbol s_7_60[5] = { 'a', 'v', 'a', 'n', 'o' }; +static const symbol s_7_61[5] = { 'e', 'v', 'a', 'n', 'o' }; +static const symbol s_7_62[5] = { 'i', 'v', 'a', 'n', 'o' }; +static const symbol s_7_63[6] = { 'e', 'r', 'a', 'n', 'n', 'o' }; +static const symbol s_7_64[6] = { 'i', 'r', 'a', 'n', 'n', 'o' }; +static const symbol s_7_65[3] = { 'o', 'n', 'o' }; +static const symbol s_7_66[6] = { 'i', 's', 'c', 'o', 'n', 'o' }; +static const symbol s_7_67[5] = { 'a', 'r', 'o', 'n', 'o' }; +static const symbol s_7_68[5] = { 'e', 'r', 'o', 'n', 'o' }; +static const symbol s_7_69[5] = { 'i', 'r', 'o', 'n', 'o' }; +static const symbol s_7_70[8] = { 'e', 'r', 'e', 'b', 'b', 'e', 'r', 'o' }; +static const symbol s_7_71[8] = { 'i', 'r', 'e', 'b', 'b', 'e', 'r', 'o' }; +static const symbol s_7_72[6] = { 'a', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_73[6] = { 'e', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_74[6] = { 'i', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_75[3] = { 'a', 't', 'o' }; +static const symbol s_7_76[3] = { 'i', 't', 'o' }; +static const symbol s_7_77[3] = { 'u', 't', 'o' }; +static const symbol s_7_78[3] = { 'a', 'v', 'o' }; +static const symbol s_7_79[3] = { 'e', 'v', 'o' }; +static const symbol s_7_80[3] = { 'i', 'v', 'o' }; +static const symbol s_7_81[2] = { 'a', 'r' }; +static const symbol s_7_82[2] = { 'i', 'r' }; +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] = +{ +/* 0 */ { 4, s_7_0, -1, 1, 0}, +/* 1 */ { 4, s_7_1, -1, 1, 0}, +/* 2 */ { 3, s_7_2, -1, 1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 3, s_7_4, -1, 1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 3, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 6, s_7_8, -1, 1, 0}, +/* 9 */ { 6, s_7_9, -1, 1, 0}, +/* 10 */ { 4, s_7_10, -1, 1, 0}, +/* 11 */ { 4, s_7_11, -1, 1, 0}, +/* 12 */ { 3, s_7_12, -1, 1, 0}, +/* 13 */ { 3, s_7_13, -1, 1, 0}, +/* 14 */ { 3, s_7_14, -1, 1, 0}, +/* 15 */ { 4, s_7_15, -1, 1, 0}, +/* 16 */ { 3, s_7_16, -1, 1, 0}, +/* 17 */ { 5, s_7_17, 16, 1, 0}, +/* 18 */ { 5, s_7_18, 16, 1, 0}, +/* 19 */ { 5, s_7_19, 16, 1, 0}, +/* 20 */ { 3, s_7_20, -1, 1, 0}, +/* 21 */ { 5, s_7_21, 20, 1, 0}, +/* 22 */ { 5, s_7_22, 20, 1, 0}, +/* 23 */ { 3, s_7_23, -1, 1, 0}, +/* 24 */ { 6, s_7_24, -1, 1, 0}, +/* 25 */ { 6, s_7_25, -1, 1, 0}, +/* 26 */ { 3, s_7_26, -1, 1, 0}, +/* 27 */ { 4, s_7_27, -1, 1, 0}, +/* 28 */ { 4, s_7_28, -1, 1, 0}, +/* 29 */ { 4, s_7_29, -1, 1, 0}, +/* 30 */ { 4, s_7_30, -1, 1, 0}, +/* 31 */ { 4, s_7_31, -1, 1, 0}, +/* 32 */ { 4, s_7_32, -1, 1, 0}, +/* 33 */ { 4, s_7_33, -1, 1, 0}, +/* 34 */ { 3, s_7_34, -1, 1, 0}, +/* 35 */ { 3, s_7_35, -1, 1, 0}, +/* 36 */ { 6, s_7_36, -1, 1, 0}, +/* 37 */ { 6, s_7_37, -1, 1, 0}, +/* 38 */ { 3, s_7_38, -1, 1, 0}, +/* 39 */ { 3, s_7_39, -1, 1, 0}, +/* 40 */ { 3, s_7_40, -1, 1, 0}, +/* 41 */ { 3, s_7_41, -1, 1, 0}, +/* 42 */ { 4, s_7_42, -1, 1, 0}, +/* 43 */ { 4, s_7_43, -1, 1, 0}, +/* 44 */ { 4, s_7_44, -1, 1, 0}, +/* 45 */ { 4, s_7_45, -1, 1, 0}, +/* 46 */ { 4, s_7_46, -1, 1, 0}, +/* 47 */ { 5, s_7_47, -1, 1, 0}, +/* 48 */ { 5, s_7_48, -1, 1, 0}, +/* 49 */ { 5, s_7_49, -1, 1, 0}, +/* 50 */ { 5, s_7_50, -1, 1, 0}, +/* 51 */ { 5, s_7_51, -1, 1, 0}, +/* 52 */ { 6, s_7_52, -1, 1, 0}, +/* 53 */ { 4, s_7_53, -1, 1, 0}, +/* 54 */ { 4, s_7_54, -1, 1, 0}, +/* 55 */ { 6, s_7_55, 54, 1, 0}, +/* 56 */ { 6, s_7_56, 54, 1, 0}, +/* 57 */ { 4, s_7_57, -1, 1, 0}, +/* 58 */ { 3, s_7_58, -1, 1, 0}, +/* 59 */ { 6, s_7_59, 58, 1, 0}, +/* 60 */ { 5, s_7_60, 58, 1, 0}, +/* 61 */ { 5, s_7_61, 58, 1, 0}, +/* 62 */ { 5, s_7_62, 58, 1, 0}, +/* 63 */ { 6, s_7_63, -1, 1, 0}, +/* 64 */ { 6, s_7_64, -1, 1, 0}, +/* 65 */ { 3, s_7_65, -1, 1, 0}, +/* 66 */ { 6, s_7_66, 65, 1, 0}, +/* 67 */ { 5, s_7_67, 65, 1, 0}, +/* 68 */ { 5, s_7_68, 65, 1, 0}, +/* 69 */ { 5, s_7_69, 65, 1, 0}, +/* 70 */ { 8, s_7_70, -1, 1, 0}, +/* 71 */ { 8, s_7_71, -1, 1, 0}, +/* 72 */ { 6, s_7_72, -1, 1, 0}, +/* 73 */ { 6, s_7_73, -1, 1, 0}, +/* 74 */ { 6, s_7_74, -1, 1, 0}, +/* 75 */ { 3, s_7_75, -1, 1, 0}, +/* 76 */ { 3, s_7_76, -1, 1, 0}, +/* 77 */ { 3, s_7_77, -1, 1, 0}, +/* 78 */ { 3, s_7_78, -1, 1, 0}, +/* 79 */ { 3, s_7_79, -1, 1, 0}, +/* 80 */ { 3, s_7_80, -1, 1, 0}, +/* 81 */ { 2, s_7_81, -1, 1, 0}, +/* 82 */ { 2, s_7_82, -1, 1, 0}, +/* 83 */ { 3, s_7_83, -1, 1, 0}, +/* 84 */ { 3, s_7_84, -1, 1, 0}, +/* 85 */ { 3, s_7_85, -1, 1, 0}, +/* 86 */ { 3, s_7_86, -1, 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 }; + +static const unsigned char g_AEIO[] = { 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 }; + +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[] = { 'U' }; +static const symbol s_8[] = { 'i' }; +static const symbol s_9[] = { 'I' }; +static const symbol s_10[] = { 'i' }; +static const symbol s_11[] = { 'u' }; +static const symbol s_12[] = { 'e' }; +static const symbol s_13[] = { 'i', 'c' }; +static const symbol s_14[] = { 'l', 'o', 'g' }; +static const symbol s_15[] = { 'u' }; +static const symbol s_16[] = { 'e', 'n', 't', 'e' }; +static const symbol s_17[] = { 'a', 't' }; +static const symbol s_18[] = { 'a', 't' }; +static const symbol s_19[] = { 'i', 'c' }; +static const symbol s_20[] = { 'i' }; +static const symbol s_21[] = { 'h' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + { int c_test = z->c; /* test, line 35 */ + while(1) { /* repeat, line 35 */ + int c1 = z->c; + z->bra = z->c; /* [, line 36 */ + among_var = find_among(z, a_0, 7); /* substring, line 36 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 36 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 37 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 38 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 39 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 40 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 41 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_5); /* <-, line 42 */ + if (ret < 0) return ret; + } + break; + case 7: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 43 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + while(1) { /* repeat, line 46 */ + int c2 = z->c; + while(1) { /* goto, line 46 */ + int c3 = z->c; + if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; + z->bra = z->c; /* [, line 47 */ + { int c4 = z->c; /* or, line 47 */ + if (!(eq_s(z, 1, s_6))) goto lab4; + z->ket = z->c; /* ], line 47 */ + if (in_grouping(z, g_v, 97, 249, 0)) goto lab4; + { int ret = slice_from_s(z, 1, s_7); /* <-, line 47 */ + if (ret < 0) return ret; + } + goto lab3; + lab4: + z->c = c4; + if (!(eq_s(z, 1, s_8))) goto lab2; + z->ket = z->c; /* ], line 48 */ + if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; + { int ret = slice_from_s(z, 1, s_9); /* <-, line 48 */ + if (ret < 0) return ret; + } + } + lab3: + z->c = c3; + break; + lab2: + z->c = c3; + if (z->c >= z->l) goto lab1; + z->c++; /* goto, line 46 */ + } + continue; + lab1: + z->c = c2; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 58 */ + { int c2 = z->c; /* or, line 60 */ + if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; + { int c3 = z->c; /* or, line 59 */ + if (out_grouping(z, g_v, 97, 249, 0)) goto lab4; + { /* gopast */ /* grouping v, line 59 */ + int ret = out_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping(z, g_v, 97, 249, 0)) goto lab2; + { /* gopast */ /* non v, line 59 */ + int ret = in_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping(z, g_v, 97, 249, 0)) goto lab0; + { int c4 = z->c; /* or, line 61 */ + if (out_grouping(z, g_v, 97, 249, 0)) goto lab6; + { /* gopast */ /* grouping v, line 61 */ + int ret = out_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping(z, g_v, 97, 249, 0)) goto lab0; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 61 */ + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 62 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 64 */ + { /* gopast */ /* grouping v, line 65 */ + int ret = out_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 65 */ + int ret = in_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 65 */ + { /* gopast */ /* grouping v, line 66 */ + int ret = out_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 66 */ + int ret = in_grouping(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 66 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 70 */ + int c1 = z->c; + z->bra = z->c; /* [, line 72 */ + 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); /* substring, line 72 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 72 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 73 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 75 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 87 */ + 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; /* substring, line 87 */ + z->bra = z->c; /* ], line 87 */ + 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, line 97 */ + if (!(among_var)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 97 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 98 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 99 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 104 */ + among_var = find_among_b(z, a_6, 51); /* substring, line 104 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 104 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 111 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 111 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 113 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 114 */ + z->ket = z->c; /* [, line 114 */ + if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 114 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 114 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 114 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_14); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 119 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_15); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 121 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_16); /* <-, line 121 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 123 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 125 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 126 */ + z->ket = z->c; /* [, line 127 */ + 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 - m_keep; goto lab1; } + among_var = find_among_b(z, a_4, 4); /* substring, line 127 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 127 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 127 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 127 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + z->ket = z->c; /* [, line 128 */ + if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 128 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 128 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 128 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 135 */ + z->ket = z->c; /* [, line 136 */ + 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 - m_keep; goto lab2; } + among_var = find_among_b(z, a_5, 3); /* substring, line 136 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 136 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 137 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 137 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 9: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 143 */ + z->ket = z->c; /* [, line 143 */ + if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 143 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 143 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 143 */ + if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 143 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 143 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + lab3: + ; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 148 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 148 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 149 */ + among_var = find_among_b(z, a_7, 87); /* substring, line 149 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 149 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_vowel_suffix(struct SN_env * z) { + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 171 */ + z->ket = z->c; /* [, line 172 */ + if (in_grouping_b(z, g_AEIO, 97, 242, 0)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 172 */ + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 172 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 172 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 173 */ + if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 173 */ + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 173 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 173 */ + if (ret < 0) return ret; + } + lab0: + ; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 175 */ + z->ket = z->c; /* [, line 176 */ + if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 176 */ + if (in_grouping_b(z, g_CG, 99, 103, 0)) { z->c = z->l - m_keep; goto lab1; } + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call RV, line 176 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + lab1: + ; + } + return 1; +} + +extern int italian_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 182 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 182 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 183 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 183 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 184 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 185 */ + { int ret = r_attached_pronoun(z); + if (ret == 0) goto lab2; /* call attached_pronoun, line 185 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 186 */ + { int m5 = z->l - z->c; (void)m5; /* or, line 186 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab5; /* call standard_suffix, line 186 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = z->l - m5; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab3; /* call verb_suffix, line 186 */ + if (ret < 0) return ret; + } + } + lab4: + lab3: + z->c = z->l - m4; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 187 */ + { int ret = r_vowel_suffix(z); + if (ret == 0) goto lab6; /* call vowel_suffix, line 187 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m6; + } + z->c = z->lb; + { int c7 = z->c; /* do, line 189 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab7; /* call postlude, line 189 */ + if (ret < 0) return ret; + } + lab7: + z->c = c7; + } + return 1; +} + +extern struct SN_env * italian_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void italian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_italian.h b/src_c/stem_ISO_8859_1_italian.h new file mode 100644 index 0000000..dccbfd5 --- /dev/null +++ b/src_c/stem_ISO_8859_1_italian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int italian_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_norwegian.c b/src_c/stem_ISO_8859_1_norwegian.c new file mode 100644 index 0000000..61f15fa --- /dev/null +++ b/src_c/stem_ISO_8859_1_norwegian.c @@ -0,0 +1,297 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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 struct among a_0[29] = +{ +/* 0 */ { 1, s_0_0, -1, 1, 0}, +/* 1 */ { 1, s_0_1, -1, 1, 0}, +/* 2 */ { 3, s_0_2, 1, 1, 0}, +/* 3 */ { 4, s_0_3, 1, 1, 0}, +/* 4 */ { 4, s_0_4, 1, 1, 0}, +/* 5 */ { 3, s_0_5, 1, 1, 0}, +/* 6 */ { 3, s_0_6, 1, 1, 0}, +/* 7 */ { 6, s_0_7, 6, 1, 0}, +/* 8 */ { 4, s_0_8, 1, 3, 0}, +/* 9 */ { 2, s_0_9, -1, 1, 0}, +/* 10 */ { 5, s_0_10, 9, 1, 0}, +/* 11 */ { 2, s_0_11, -1, 1, 0}, +/* 12 */ { 2, s_0_12, -1, 1, 0}, +/* 13 */ { 5, s_0_13, 12, 1, 0}, +/* 14 */ { 1, s_0_14, -1, 2, 0}, +/* 15 */ { 2, s_0_15, 14, 1, 0}, +/* 16 */ { 2, s_0_16, 14, 1, 0}, +/* 17 */ { 4, s_0_17, 16, 1, 0}, +/* 18 */ { 5, s_0_18, 16, 1, 0}, +/* 19 */ { 4, s_0_19, 16, 1, 0}, +/* 20 */ { 7, s_0_20, 19, 1, 0}, +/* 21 */ { 3, s_0_21, 14, 1, 0}, +/* 22 */ { 6, s_0_22, 21, 1, 0}, +/* 23 */ { 3, s_0_23, 14, 1, 0}, +/* 24 */ { 3, s_0_24, 14, 1, 0}, +/* 25 */ { 2, s_0_25, -1, 1, 0}, +/* 26 */ { 3, s_0_26, 25, 1, 0}, +/* 27 */ { 3, s_0_27, -1, 3, 0}, +/* 28 */ { 3, s_0_28, -1, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -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] = +{ +/* 0 */ { 3, s_2_0, -1, 1, 0}, +/* 1 */ { 4, s_2_1, 0, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, 2, 1, 0}, +/* 4 */ { 3, s_2_4, 2, 1, 0}, +/* 5 */ { 4, s_2_5, 4, 1, 0}, +/* 6 */ { 3, s_2_6, -1, 1, 0}, +/* 7 */ { 3, s_2_7, -1, 1, 0}, +/* 8 */ { 4, s_2_8, 7, 1, 0}, +/* 9 */ { 4, s_2_9, 7, 1, 0}, +/* 10 */ { 7, s_2_10, 9, 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 unsigned char g_s_ending[] = { 119, 125, 149, 1 }; + +static const symbol s_0[] = { 'k' }; +static const symbol s_1[] = { 'e', 'r' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c_test = z->c; /* test, line 30 */ + { int ret = z->c + 3; + if (0 > ret || ret > z->l) return 0; + z->c = ret; /* hop, line 30 */ + } + z->I[1] = z->c; /* setmark x, line 30 */ + z->c = c_test; + } + if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 31 */ + { /* gopast */ /* non v, line 31 */ + int ret = in_grouping(z, g_v, 97, 248, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 31 */ + /* try, line 32 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 38 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 38 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 38 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 29); /* substring, line 38 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 38 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 44 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m2 = z->l - z->c; (void)m2; /* or, line 46 */ + if (in_grouping_b(z, g_s_ending, 98, 122, 0)) goto lab1; + goto lab0; + lab1: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_0))) return 0; + if (out_grouping_b(z, g_v, 97, 248, 0)) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 46 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_1); /* <-, line 48 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 53 */ + { int mlimit; /* setlimit, line 54 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 54 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 54 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit; return 0; } /* substring, line 54 */ + z->bra = z->c; /* ], line 54 */ + z->lb = mlimit; + } + z->c = z->l - m_test; + } + if (z->c <= z->lb) return 0; + z->c--; /* next, line 59 */ + z->bra = z->c; /* ], line 59 */ + { int ret = slice_del(z); /* delete, line 59 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 63 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 63 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 63 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 11); /* substring, line 63 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 63 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 67 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int norwegian_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 74 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 74 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 75 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 76 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 76 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 77 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 77 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 78 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 78 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * norwegian_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void norwegian_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_norwegian.h b/src_c/stem_ISO_8859_1_norwegian.h new file mode 100644 index 0000000..e09e34e --- /dev/null +++ b/src_c/stem_ISO_8859_1_norwegian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int norwegian_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_porter.c b/src_c/stem_ISO_8859_1_porter.c new file mode 100644 index 0000000..ce7df61 --- /dev/null +++ b/src_c/stem_ISO_8859_1_porter.c @@ -0,0 +1,749 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_Step_3(struct SN_env * z); +static int r_Step_2(struct SN_env * z); +static int r_Step_1c(struct SN_env * z); +static int r_Step_1b(struct SN_env * z); +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); + + +#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] = +{ +/* 0 */ { 1, s_0_0, -1, 3, 0}, +/* 1 */ { 3, s_0_1, 0, 2, 0}, +/* 2 */ { 4, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, -1, 0} +}; + +static const symbol s_1_1[2] = { 'b', 'b' }; +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] = { 'b', 'l' }; +static const symbol s_1_6[2] = { 'm', 'm' }; +static const symbol s_1_7[2] = { 'n', 'n' }; +static const symbol s_1_8[2] = { 'p', 'p' }; +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, 0, -1, 3, 0}, +/* 1 */ { 2, s_1_1, 0, 2, 0}, +/* 2 */ { 2, s_1_2, 0, 2, 0}, +/* 3 */ { 2, s_1_3, 0, 2, 0}, +/* 4 */ { 2, s_1_4, 0, 2, 0}, +/* 5 */ { 2, s_1_5, 0, 1, 0}, +/* 6 */ { 2, s_1_6, 0, 2, 0}, +/* 7 */ { 2, s_1_7, 0, 2, 0}, +/* 8 */ { 2, s_1_8, 0, 2, 0}, +/* 9 */ { 2, s_1_9, 0, 2, 0}, +/* 10 */ { 2, s_1_10, 0, 1, 0}, +/* 11 */ { 2, s_1_11, 0, 2, 0}, +/* 12 */ { 2, s_1_12, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, 2, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 3, s_2_2, -1, 2, 0} +}; + +static const symbol s_3_0[4] = { 'a', 'n', 'c', 'i' }; +static const symbol s_3_1[4] = { 'e', 'n', 'c', 'i' }; +static const symbol s_3_2[4] = { 'a', 'b', 'l', 'i' }; +static const symbol s_3_3[3] = { 'e', 'l', 'i' }; +static const symbol s_3_4[4] = { 'a', 'l', 'l', 'i' }; +static const symbol s_3_5[5] = { 'o', 'u', 's', 'l', 'i' }; +static const symbol s_3_6[5] = { 'e', 'n', 't', 'l', 'i' }; +static const symbol s_3_7[5] = { 'a', 'l', 'i', 't', 'i' }; +static const symbol s_3_8[6] = { 'b', 'i', 'l', 'i', 't', 'i' }; +static const symbol s_3_9[5] = { 'i', 'v', 'i', 't', 'i' }; +static const symbol s_3_10[6] = { 't', 'i', 'o', 'n', 'a', 'l' }; +static const symbol s_3_11[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' }; +static const symbol s_3_12[5] = { 'a', 'l', 'i', 's', 'm' }; +static const symbol s_3_13[5] = { 'a', 't', 'i', 'o', 'n' }; +static const symbol s_3_14[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' }; +static const symbol s_3_15[4] = { 'i', 'z', 'e', 'r' }; +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] = +{ +/* 0 */ { 4, s_3_0, -1, 3, 0}, +/* 1 */ { 4, s_3_1, -1, 2, 0}, +/* 2 */ { 4, s_3_2, -1, 4, 0}, +/* 3 */ { 3, s_3_3, -1, 6, 0}, +/* 4 */ { 4, s_3_4, -1, 9, 0}, +/* 5 */ { 5, s_3_5, -1, 12, 0}, +/* 6 */ { 5, s_3_6, -1, 5, 0}, +/* 7 */ { 5, s_3_7, -1, 10, 0}, +/* 8 */ { 6, s_3_8, -1, 14, 0}, +/* 9 */ { 5, s_3_9, -1, 13, 0}, +/* 10 */ { 6, s_3_10, -1, 1, 0}, +/* 11 */ { 7, s_3_11, 10, 8, 0}, +/* 12 */ { 5, s_3_12, -1, 10, 0}, +/* 13 */ { 5, s_3_13, -1, 8, 0}, +/* 14 */ { 7, s_3_14, 13, 7, 0}, +/* 15 */ { 4, s_3_15, -1, 7, 0}, +/* 16 */ { 4, s_3_16, -1, 8, 0}, +/* 17 */ { 7, s_3_17, -1, 13, 0}, +/* 18 */ { 7, s_3_18, -1, 11, 0}, +/* 19 */ { 7, s_3_19, -1, 12, 0} +}; + +static const symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' }; +static const symbol s_4_1[5] = { 'a', 't', 'i', 'v', 'e' }; +static const symbol s_4_2[5] = { 'a', 'l', 'i', 'z', 'e' }; +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] = +{ +/* 0 */ { 5, s_4_0, -1, 2, 0}, +/* 1 */ { 5, s_4_1, -1, 3, 0}, +/* 2 */ { 5, s_4_2, -1, 1, 0}, +/* 3 */ { 5, s_4_3, -1, 2, 0}, +/* 4 */ { 4, s_4_4, -1, 2, 0}, +/* 5 */ { 3, s_4_5, -1, 3, 0}, +/* 6 */ { 4, s_4_6, -1, 3, 0} +}; + +static const symbol s_5_0[2] = { 'i', 'c' }; +static const symbol s_5_1[4] = { 'a', 'n', 'c', 'e' }; +static const symbol s_5_2[4] = { 'e', 'n', 'c', 'e' }; +static const symbol s_5_3[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_5_4[4] = { 'i', 'b', 'l', 'e' }; +static const symbol s_5_5[3] = { 'a', 't', 'e' }; +static const symbol s_5_6[3] = { 'i', 'v', 'e' }; +static const symbol s_5_7[3] = { 'i', 'z', 'e' }; +static const symbol s_5_8[3] = { 'i', 't', 'i' }; +static const symbol s_5_9[2] = { 'a', 'l' }; +static const symbol s_5_10[3] = { 'i', 's', 'm' }; +static const symbol s_5_11[3] = { 'i', 'o', 'n' }; +static const symbol s_5_12[2] = { 'e', 'r' }; +static const symbol s_5_13[3] = { 'o', 'u', 's' }; +static const symbol s_5_14[3] = { 'a', 'n', 't' }; +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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 4, s_5_2, -1, 1, 0}, +/* 3 */ { 4, s_5_3, -1, 1, 0}, +/* 4 */ { 4, s_5_4, -1, 1, 0}, +/* 5 */ { 3, s_5_5, -1, 1, 0}, +/* 6 */ { 3, s_5_6, -1, 1, 0}, +/* 7 */ { 3, s_5_7, -1, 1, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 2, s_5_9, -1, 1, 0}, +/* 10 */ { 3, s_5_10, -1, 1, 0}, +/* 11 */ { 3, s_5_11, -1, 2, 0}, +/* 12 */ { 2, s_5_12, -1, 1, 0}, +/* 13 */ { 3, s_5_13, -1, 1, 0}, +/* 14 */ { 3, s_5_14, -1, 1, 0}, +/* 15 */ { 3, s_5_15, -1, 1, 0}, +/* 16 */ { 4, s_5_16, 15, 1, 0}, +/* 17 */ { 5, s_5_17, 16, 1, 0}, +/* 18 */ { 2, s_5_18, -1, 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[] = { 'y' }; +static const symbol s_6[] = { 'Y' }; +static const symbol s_7[] = { 'i' }; +static const symbol s_8[] = { 't', 'i', 'o', 'n' }; +static const symbol s_9[] = { 'e', 'n', 'c', 'e' }; +static const symbol s_10[] = { 'a', 'n', 'c', 'e' }; +static const symbol s_11[] = { 'a', 'b', 'l', 'e' }; +static const symbol s_12[] = { 'e', 'n', 't' }; +static const symbol s_13[] = { 'e' }; +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[] = { 'a', 'l' }; +static const symbol s_18[] = { 'f', 'u', 'l' }; +static const symbol s_19[] = { 'o', 'u', 's' }; +static const symbol s_20[] = { 'i', 'v', 'e' }; +static const symbol s_21[] = { 'b', 'l', 'e' }; +static const symbol s_22[] = { 'a', 'l' }; +static const symbol s_23[] = { 'i', 'c' }; +static const symbol s_24[] = { 's' }; +static const symbol s_25[] = { 't' }; +static const symbol s_26[] = { 'e' }; +static const symbol s_27[] = { 'l' }; +static const symbol s_28[] = { 'l' }; +static const symbol s_29[] = { 'y' }; +static const symbol s_30[] = { 'Y' }; +static const symbol s_31[] = { 'y' }; +static const symbol s_32[] = { 'Y' }; +static const symbol s_33[] = { 'Y' }; +static const symbol s_34[] = { '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; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_Step_1a(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 25 */ + if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0; + among_var = find_among_b(z, a_0, 4); /* substring, line 25 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 25 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_0); /* <-, line 26 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 27 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 29 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_1b(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 34 */ + 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); /* substring, line 34 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 34 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 35 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_2); /* <-, line 35 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m_test = z->l - z->c; /* test, line 38 */ + { /* gopast */ /* grouping v, line 38 */ + int ret = out_grouping_b(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 38 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 39 */ + 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); /* substring, line 39 */ + if (!(among_var)) return 0; + z->c = z->l - m_test; + } + switch(among_var) { + case 0: return 0; + case 1: + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_3); /* <+, line 41 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + case 2: + z->ket = z->c; /* [, line 44 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 44 */ + z->bra = z->c; /* ], line 44 */ + { int ret = slice_del(z); /* delete, line 44 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c != z->I[0]) return 0; /* atmark, line 45 */ + { int m_test = z->l - z->c; /* test, line 45 */ + { int ret = r_shortv(z); + if (ret == 0) return 0; /* call shortv, line 45 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_4); /* <+, line 45 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + } + break; + } + return 1; +} + +static int r_Step_1c(struct SN_env * z) { + z->ket = z->c; /* [, line 52 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 52 */ + if (!(eq_s_b(z, 1, s_5))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_6))) return 0; + } +lab0: + z->bra = z->c; /* ], line 52 */ + { /* gopast */ /* grouping v, line 53 */ + 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_7); /* <-, line 54 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_2(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 58 */ + 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); /* substring, line 58 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 58 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 58 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_8); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_9); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_10); /* <-, line 61 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 4, s_11); /* <-, line 62 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_12); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 3, s_14); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 3, s_15); /* <-, line 68 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 2, s_16); /* <-, line 69 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 2, s_17); /* <-, line 71 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 3, s_18); /* <-, line 72 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 3, s_19); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_from_s(z, 3, s_20); /* <-, line 76 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 3, s_21); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_3(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 82 */ + 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); /* substring, line 82 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 82 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 82 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_22); /* <-, line 83 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_23); /* <-, line 85 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 87 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_4(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 92 */ + 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); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 92 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 95 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 96 */ + if (!(eq_s_b(z, 1, s_24))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_25))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_5a(struct SN_env * z) { + z->ket = z->c; /* [, line 101 */ + if (!(eq_s_b(z, 1, s_26))) return 0; + z->bra = z->c; /* ], line 101 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 102 */ + { int ret = r_R2(z); + if (ret == 0) goto lab1; /* call R2, line 102 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 102 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* not, line 102 */ + { int ret = r_shortv(z); + if (ret == 0) goto lab2; /* call shortv, line 102 */ + if (ret < 0) return ret; + } + return 0; + lab2: + z->c = z->l - m2; + } + } +lab0: + { int ret = slice_del(z); /* delete, line 103 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_5b(struct SN_env * z) { + z->ket = z->c; /* [, line 107 */ + if (!(eq_s_b(z, 1, s_27))) return 0; + z->bra = z->c; /* ], line 107 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 108 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_28))) return 0; + { int ret = slice_del(z); /* delete, line 109 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int porter_ISO_8859_1_stem(struct SN_env * z) { + z->B[0] = 0; /* unset Y_found, line 115 */ + { int c1 = z->c; /* do, line 116 */ + z->bra = z->c; /* [, line 116 */ + if (!(eq_s(z, 1, s_29))) goto lab0; + z->ket = z->c; /* ], line 116 */ + { int ret = slice_from_s(z, 1, s_30); /* <-, line 116 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 116 */ + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 117 */ + while(1) { /* repeat, line 117 */ + int c3 = z->c; + while(1) { /* goto, line 117 */ + int c4 = z->c; + if (in_grouping(z, g_v, 97, 121, 0)) goto lab3; + z->bra = z->c; /* [, line 117 */ + if (!(eq_s(z, 1, s_31))) goto lab3; + z->ket = z->c; /* ], line 117 */ + z->c = c4; + break; + lab3: + z->c = c4; + if (z->c >= z->l) goto lab2; + z->c++; /* goto, line 117 */ + } + { int ret = slice_from_s(z, 1, s_32); /* <-, line 117 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 117 */ + continue; + lab2: + z->c = c3; + break; + } + z->c = c2; + } + z->I[0] = z->l; + z->I[1] = z->l; + { int c5 = z->c; /* do, line 121 */ + { /* gopast */ /* grouping v, line 122 */ + int ret = out_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 122 */ + int ret = in_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 122 */ + { /* gopast */ /* grouping v, line 123 */ + int ret = out_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 123 */ + int ret = in_grouping(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 123 */ + lab4: + z->c = c5; + } + z->lb = z->c; z->c = z->l; /* backwards, line 126 */ + + { int m6 = z->l - z->c; (void)m6; /* do, line 127 */ + { int ret = r_Step_1a(z); + if (ret == 0) goto lab5; /* call Step_1a, line 127 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 128 */ + { int ret = r_Step_1b(z); + if (ret == 0) goto lab6; /* call Step_1b, line 128 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 129 */ + { int ret = r_Step_1c(z); + if (ret == 0) goto lab7; /* call Step_1c, line 129 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 130 */ + { int ret = r_Step_2(z); + if (ret == 0) goto lab8; /* call Step_2, line 130 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 131 */ + { int ret = r_Step_3(z); + if (ret == 0) goto lab9; /* call Step_3, line 131 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m10; + } + { int m11 = z->l - z->c; (void)m11; /* do, line 132 */ + { int ret = r_Step_4(z); + if (ret == 0) goto lab10; /* call Step_4, line 132 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m11; + } + { int m12 = z->l - z->c; (void)m12; /* do, line 133 */ + { int ret = r_Step_5a(z); + if (ret == 0) goto lab11; /* call Step_5a, line 133 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m12; + } + { int m13 = z->l - z->c; (void)m13; /* do, line 134 */ + { int ret = r_Step_5b(z); + if (ret == 0) goto lab12; /* call Step_5b, line 134 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m13; + } + z->c = z->lb; + { int c14 = z->c; /* do, line 137 */ + if (!(z->B[0])) goto lab13; /* Boolean test Y_found, line 137 */ + while(1) { /* repeat, line 137 */ + int c15 = z->c; + while(1) { /* goto, line 137 */ + int c16 = z->c; + z->bra = z->c; /* [, line 137 */ + if (!(eq_s(z, 1, s_33))) goto lab15; + z->ket = z->c; /* ], line 137 */ + z->c = c16; + break; + lab15: + z->c = c16; + if (z->c >= z->l) goto lab14; + z->c++; /* goto, line 137 */ + } + { int ret = slice_from_s(z, 1, s_34); /* <-, line 137 */ + if (ret < 0) return ret; + } + continue; + lab14: + z->c = c15; + break; + } + lab13: + z->c = c14; + } + return 1; +} + +extern struct SN_env * porter_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void porter_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_porter.h b/src_c/stem_ISO_8859_1_porter.h new file mode 100644 index 0000000..5c8fd01 --- /dev/null +++ b/src_c/stem_ISO_8859_1_porter.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int porter_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_portuguese.c b/src_c/stem_ISO_8859_1_portuguese.c new file mode 100644 index 0000000..1ae77a8 --- /dev/null +++ b/src_c/stem_ISO_8859_1_portuguese.c @@ -0,0 +1,1017 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +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_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); + + +#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, 0, -1, 3, 0}, +/* 1 */ { 1, s_0_1, 0, 1, 0}, +/* 2 */ { 1, s_0_2, 0, 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, 0, -1, 3, 0}, +/* 1 */ { 2, s_1_1, 0, 1, 0}, +/* 2 */ { 2, s_1_2, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -1, 0}, +/* 3 */ { 2, s_2_3, -1, 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] = +{ +/* 0 */ { 4, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 4, s_3_2, -1, 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] = +{ +/* 0 */ { 2, s_4_0, -1, 1, 0}, +/* 1 */ { 4, s_4_1, -1, 1, 0}, +/* 2 */ { 2, s_4_2, -1, 1, 0} +}; + +static const symbol s_5_0[3] = { 'i', 'c', 'a' }; +static const symbol s_5_1[5] = { 0xE2, 'n', 'c', 'i', 'a' }; +static const symbol s_5_2[5] = { 0xEA, 'n', 'c', 'i', 'a' }; +static const symbol s_5_3[3] = { 'i', 'r', 'a' }; +static const symbol s_5_4[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_5_5[3] = { 'o', 's', 'a' }; +static const symbol s_5_6[4] = { 'i', 's', 't', 'a' }; +static const symbol s_5_7[3] = { 'i', 'v', 'a' }; +static const symbol s_5_8[3] = { 'e', 'z', 'a' }; +static const symbol s_5_9[5] = { 'l', 'o', 'g', 0xED, 'a' }; +static const symbol s_5_10[5] = { 'i', 'd', 'a', 'd', 'e' }; +static const symbol s_5_11[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_5_12[5] = { 'm', 'e', 'n', 't', 'e' }; +static const symbol s_5_13[6] = { 'a', 'm', 'e', 'n', 't', 'e' }; +static const symbol s_5_14[4] = { 0xE1, 'v', 'e', 'l' }; +static const symbol s_5_15[4] = { 0xED, 'v', 'e', 'l' }; +static const symbol s_5_16[5] = { 'u', 'c', 'i', 0xF3, 'n' }; +static const symbol s_5_17[3] = { 'i', 'c', 'o' }; +static const symbol s_5_18[4] = { 'i', 's', 'm', 'o' }; +static const symbol s_5_19[3] = { 'o', 's', 'o' }; +static const symbol s_5_20[6] = { 'a', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_5_21[6] = { 'i', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_5_22[3] = { 'i', 'v', 'o' }; +static const symbol s_5_23[5] = { 'a', 0xE7, 'a', '~', 'o' }; +static const symbol s_5_24[4] = { 'a', 'd', 'o', 'r' }; +static const symbol s_5_25[4] = { 'i', 'c', 'a', 's' }; +static const symbol s_5_26[6] = { 0xEA, 'n', 'c', 'i', 'a', 's' }; +static const symbol s_5_27[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_5_28[6] = { 'a', 'd', 'o', 'r', 'a', 's' }; +static const symbol s_5_29[4] = { 'o', 's', 'a', 's' }; +static const symbol s_5_30[5] = { 'i', 's', 't', 'a', 's' }; +static const symbol s_5_31[4] = { 'i', 'v', 'a', 's' }; +static const symbol s_5_32[4] = { 'e', 'z', 'a', 's' }; +static const symbol s_5_33[6] = { 'l', 'o', 'g', 0xED, 'a', 's' }; +static const symbol s_5_34[6] = { 'i', 'd', 'a', 'd', 'e', 's' }; +static const symbol s_5_35[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' }; +static const symbol s_5_36[6] = { 'a', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_5_37[5] = { 'a', 'n', 't', 'e', 's' }; +static const symbol s_5_38[6] = { 'a', 0xE7, 'o', '~', 'e', 's' }; +static const symbol s_5_39[4] = { 'i', 'c', 'o', 's' }; +static const symbol s_5_40[5] = { 'i', 's', 'm', 'o', 's' }; +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] = +{ +/* 0 */ { 3, s_5_0, -1, 1, 0}, +/* 1 */ { 5, s_5_1, -1, 1, 0}, +/* 2 */ { 5, s_5_2, -1, 4, 0}, +/* 3 */ { 3, s_5_3, -1, 9, 0}, +/* 4 */ { 5, s_5_4, -1, 1, 0}, +/* 5 */ { 3, s_5_5, -1, 1, 0}, +/* 6 */ { 4, s_5_6, -1, 1, 0}, +/* 7 */ { 3, s_5_7, -1, 8, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 5, s_5_9, -1, 2, 0}, +/* 10 */ { 5, s_5_10, -1, 7, 0}, +/* 11 */ { 4, s_5_11, -1, 1, 0}, +/* 12 */ { 5, s_5_12, -1, 6, 0}, +/* 13 */ { 6, s_5_13, 12, 5, 0}, +/* 14 */ { 4, s_5_14, -1, 1, 0}, +/* 15 */ { 4, s_5_15, -1, 1, 0}, +/* 16 */ { 5, s_5_16, -1, 3, 0}, +/* 17 */ { 3, s_5_17, -1, 1, 0}, +/* 18 */ { 4, s_5_18, -1, 1, 0}, +/* 19 */ { 3, s_5_19, -1, 1, 0}, +/* 20 */ { 6, s_5_20, -1, 1, 0}, +/* 21 */ { 6, s_5_21, -1, 1, 0}, +/* 22 */ { 3, s_5_22, -1, 8, 0}, +/* 23 */ { 5, s_5_23, -1, 1, 0}, +/* 24 */ { 4, s_5_24, -1, 1, 0}, +/* 25 */ { 4, s_5_25, -1, 1, 0}, +/* 26 */ { 6, s_5_26, -1, 4, 0}, +/* 27 */ { 4, s_5_27, -1, 9, 0}, +/* 28 */ { 6, s_5_28, -1, 1, 0}, +/* 29 */ { 4, s_5_29, -1, 1, 0}, +/* 30 */ { 5, s_5_30, -1, 1, 0}, +/* 31 */ { 4, s_5_31, -1, 8, 0}, +/* 32 */ { 4, s_5_32, -1, 1, 0}, +/* 33 */ { 6, s_5_33, -1, 2, 0}, +/* 34 */ { 6, s_5_34, -1, 7, 0}, +/* 35 */ { 7, s_5_35, -1, 3, 0}, +/* 36 */ { 6, s_5_36, -1, 1, 0}, +/* 37 */ { 5, s_5_37, -1, 1, 0}, +/* 38 */ { 6, s_5_38, -1, 1, 0}, +/* 39 */ { 4, s_5_39, -1, 1, 0}, +/* 40 */ { 5, s_5_40, -1, 1, 0}, +/* 41 */ { 4, s_5_41, -1, 1, 0}, +/* 42 */ { 7, s_5_42, -1, 1, 0}, +/* 43 */ { 7, s_5_43, -1, 1, 0}, +/* 44 */ { 4, s_5_44, -1, 8, 0} +}; + +static const symbol s_6_0[3] = { 'a', 'd', 'a' }; +static const symbol s_6_1[3] = { 'i', 'd', 'a' }; +static const symbol s_6_2[2] = { 'i', 'a' }; +static const symbol s_6_3[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_6_4[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_6_5[4] = { 'i', 'r', 'i', 'a' }; +static const symbol s_6_6[3] = { 'a', 'r', 'a' }; +static const symbol s_6_7[3] = { 'e', 'r', 'a' }; +static const symbol s_6_8[3] = { 'i', 'r', 'a' }; +static const symbol s_6_9[3] = { 'a', 'v', 'a' }; +static const symbol s_6_10[4] = { 'a', 's', 's', 'e' }; +static const symbol s_6_11[4] = { 'e', 's', 's', 'e' }; +static const symbol s_6_12[4] = { 'i', 's', 's', 'e' }; +static const symbol s_6_13[4] = { 'a', 's', 't', 'e' }; +static const symbol s_6_14[4] = { 'e', 's', 't', 'e' }; +static const symbol s_6_15[4] = { 'i', 's', 't', 'e' }; +static const symbol s_6_16[2] = { 'e', 'i' }; +static const symbol s_6_17[4] = { 'a', 'r', 'e', 'i' }; +static const symbol s_6_18[4] = { 'e', 'r', 'e', 'i' }; +static const symbol s_6_19[4] = { 'i', 'r', 'e', 'i' }; +static const symbol s_6_20[2] = { 'a', 'm' }; +static const symbol s_6_21[3] = { 'i', 'a', 'm' }; +static const symbol s_6_22[5] = { 'a', 'r', 'i', 'a', 'm' }; +static const symbol s_6_23[5] = { 'e', 'r', 'i', 'a', 'm' }; +static const symbol s_6_24[5] = { 'i', 'r', 'i', 'a', 'm' }; +static const symbol s_6_25[4] = { 'a', 'r', 'a', 'm' }; +static const symbol s_6_26[4] = { 'e', 'r', 'a', 'm' }; +static const symbol s_6_27[4] = { 'i', 'r', 'a', 'm' }; +static const symbol s_6_28[4] = { 'a', 'v', 'a', 'm' }; +static const symbol s_6_29[2] = { 'e', 'm' }; +static const symbol s_6_30[4] = { 'a', 'r', 'e', 'm' }; +static const symbol s_6_31[4] = { 'e', 'r', 'e', 'm' }; +static const symbol s_6_32[4] = { 'i', 'r', 'e', 'm' }; +static const symbol s_6_33[5] = { 'a', 's', 's', 'e', 'm' }; +static const symbol s_6_34[5] = { 'e', 's', 's', 'e', 'm' }; +static const symbol s_6_35[5] = { 'i', 's', 's', 'e', 'm' }; +static const symbol s_6_36[3] = { 'a', 'd', 'o' }; +static const symbol s_6_37[3] = { 'i', 'd', 'o' }; +static const symbol s_6_38[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_6_39[4] = { 'e', 'n', 'd', 'o' }; +static const symbol s_6_40[4] = { 'i', 'n', 'd', 'o' }; +static const symbol s_6_41[5] = { 'a', 'r', 'a', '~', 'o' }; +static const symbol s_6_42[5] = { 'e', 'r', 'a', '~', 'o' }; +static const symbol s_6_43[5] = { 'i', 'r', 'a', '~', 'o' }; +static const symbol s_6_44[2] = { 'a', 'r' }; +static const symbol s_6_45[2] = { 'e', 'r' }; +static const symbol s_6_46[2] = { 'i', 'r' }; +static const symbol s_6_47[2] = { 'a', 's' }; +static const symbol s_6_48[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_6_49[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_6_50[3] = { 'i', 'a', 's' }; +static const symbol s_6_51[5] = { 'a', 'r', 'i', 'a', 's' }; +static const symbol s_6_52[5] = { 'e', 'r', 'i', 'a', 's' }; +static const symbol s_6_53[5] = { 'i', 'r', 'i', 'a', 's' }; +static const symbol s_6_54[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_6_55[4] = { 'e', 'r', 'a', 's' }; +static const symbol s_6_56[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_6_57[4] = { 'a', 'v', 'a', 's' }; +static const symbol s_6_58[2] = { 'e', 's' }; +static const symbol s_6_59[5] = { 'a', 'r', 'd', 'e', 's' }; +static const symbol s_6_60[5] = { 'e', 'r', 'd', 'e', 's' }; +static const symbol s_6_61[5] = { 'i', 'r', 'd', 'e', 's' }; +static const symbol s_6_62[4] = { 'a', 'r', 'e', 's' }; +static const symbol s_6_63[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_6_64[4] = { 'i', 'r', 'e', 's' }; +static const symbol s_6_65[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_6_66[5] = { 'e', 's', 's', 'e', 's' }; +static const symbol s_6_67[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_6_68[5] = { 'a', 's', 't', 'e', 's' }; +static const symbol s_6_69[5] = { 'e', 's', 't', 'e', 's' }; +static const symbol s_6_70[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_6_71[2] = { 'i', 's' }; +static const symbol s_6_72[3] = { 'a', 'i', 's' }; +static const symbol s_6_73[3] = { 'e', 'i', 's' }; +static const symbol s_6_74[5] = { 'a', 'r', 'e', 'i', 's' }; +static const symbol s_6_75[5] = { 'e', 'r', 'e', 'i', 's' }; +static const symbol s_6_76[5] = { 'i', 'r', 'e', 'i', 's' }; +static const symbol s_6_77[5] = { 0xE1, 'r', 'e', 'i', 's' }; +static const symbol s_6_78[5] = { 0xE9, 'r', 'e', 'i', 's' }; +static const symbol s_6_79[5] = { 0xED, 'r', 'e', 'i', 's' }; +static const symbol s_6_80[6] = { 0xE1, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_81[6] = { 0xE9, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_82[6] = { 0xED, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_83[5] = { 0xE1, 'v', 'e', 'i', 's' }; +static const symbol s_6_84[4] = { 0xED, 'e', 'i', 's' }; +static const symbol s_6_85[6] = { 'a', 'r', 0xED, 'e', 'i', 's' }; +static const symbol s_6_86[6] = { 'e', 'r', 0xED, 'e', 'i', 's' }; +static const symbol s_6_87[6] = { 'i', 'r', 0xED, 'e', 'i', 's' }; +static const symbol s_6_88[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_6_89[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_6_90[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_6_91[6] = { 0xE1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_92[6] = { 0xE9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_93[6] = { 0xED, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_94[6] = { 0xE1, 'v', 'a', 'm', 'o', 's' }; +static const symbol s_6_95[5] = { 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_6_96[7] = { 'a', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_6_97[7] = { 'e', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_6_98[7] = { 'i', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_6_99[4] = { 'e', 'm', 'o', 's' }; +static const symbol s_6_100[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_101[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_102[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_103[7] = { 0xE1, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_104[7] = { 0xEA, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_105[7] = { 0xED, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_106[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_6_107[5] = { 'a', 'r', 'm', 'o', 's' }; +static const symbol s_6_108[5] = { 'e', 'r', 'm', 'o', 's' }; +static const symbol s_6_109[5] = { 'i', 'r', 'm', 'o', 's' }; +static const symbol s_6_110[4] = { 0xE1, 'm', 'o', 's' }; +static const symbol s_6_111[4] = { 'a', 'r', 0xE1, 's' }; +static const symbol s_6_112[4] = { 'e', 'r', 0xE1, 's' }; +static const symbol s_6_113[4] = { 'i', 'r', 0xE1, 's' }; +static const symbol s_6_114[2] = { 'e', 'u' }; +static const symbol s_6_115[2] = { 'i', 'u' }; +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] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 3, s_6_1, -1, 1, 0}, +/* 2 */ { 2, s_6_2, -1, 1, 0}, +/* 3 */ { 4, s_6_3, 2, 1, 0}, +/* 4 */ { 4, s_6_4, 2, 1, 0}, +/* 5 */ { 4, s_6_5, 2, 1, 0}, +/* 6 */ { 3, s_6_6, -1, 1, 0}, +/* 7 */ { 3, s_6_7, -1, 1, 0}, +/* 8 */ { 3, s_6_8, -1, 1, 0}, +/* 9 */ { 3, s_6_9, -1, 1, 0}, +/* 10 */ { 4, s_6_10, -1, 1, 0}, +/* 11 */ { 4, s_6_11, -1, 1, 0}, +/* 12 */ { 4, s_6_12, -1, 1, 0}, +/* 13 */ { 4, s_6_13, -1, 1, 0}, +/* 14 */ { 4, s_6_14, -1, 1, 0}, +/* 15 */ { 4, s_6_15, -1, 1, 0}, +/* 16 */ { 2, s_6_16, -1, 1, 0}, +/* 17 */ { 4, s_6_17, 16, 1, 0}, +/* 18 */ { 4, s_6_18, 16, 1, 0}, +/* 19 */ { 4, s_6_19, 16, 1, 0}, +/* 20 */ { 2, s_6_20, -1, 1, 0}, +/* 21 */ { 3, s_6_21, 20, 1, 0}, +/* 22 */ { 5, s_6_22, 21, 1, 0}, +/* 23 */ { 5, s_6_23, 21, 1, 0}, +/* 24 */ { 5, s_6_24, 21, 1, 0}, +/* 25 */ { 4, s_6_25, 20, 1, 0}, +/* 26 */ { 4, s_6_26, 20, 1, 0}, +/* 27 */ { 4, s_6_27, 20, 1, 0}, +/* 28 */ { 4, s_6_28, 20, 1, 0}, +/* 29 */ { 2, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, 29, 1, 0}, +/* 31 */ { 4, s_6_31, 29, 1, 0}, +/* 32 */ { 4, s_6_32, 29, 1, 0}, +/* 33 */ { 5, s_6_33, 29, 1, 0}, +/* 34 */ { 5, s_6_34, 29, 1, 0}, +/* 35 */ { 5, s_6_35, 29, 1, 0}, +/* 36 */ { 3, s_6_36, -1, 1, 0}, +/* 37 */ { 3, s_6_37, -1, 1, 0}, +/* 38 */ { 4, s_6_38, -1, 1, 0}, +/* 39 */ { 4, s_6_39, -1, 1, 0}, +/* 40 */ { 4, s_6_40, -1, 1, 0}, +/* 41 */ { 5, s_6_41, -1, 1, 0}, +/* 42 */ { 5, s_6_42, -1, 1, 0}, +/* 43 */ { 5, s_6_43, -1, 1, 0}, +/* 44 */ { 2, s_6_44, -1, 1, 0}, +/* 45 */ { 2, s_6_45, -1, 1, 0}, +/* 46 */ { 2, s_6_46, -1, 1, 0}, +/* 47 */ { 2, s_6_47, -1, 1, 0}, +/* 48 */ { 4, s_6_48, 47, 1, 0}, +/* 49 */ { 4, s_6_49, 47, 1, 0}, +/* 50 */ { 3, s_6_50, 47, 1, 0}, +/* 51 */ { 5, s_6_51, 50, 1, 0}, +/* 52 */ { 5, s_6_52, 50, 1, 0}, +/* 53 */ { 5, s_6_53, 50, 1, 0}, +/* 54 */ { 4, s_6_54, 47, 1, 0}, +/* 55 */ { 4, s_6_55, 47, 1, 0}, +/* 56 */ { 4, s_6_56, 47, 1, 0}, +/* 57 */ { 4, s_6_57, 47, 1, 0}, +/* 58 */ { 2, s_6_58, -1, 1, 0}, +/* 59 */ { 5, s_6_59, 58, 1, 0}, +/* 60 */ { 5, s_6_60, 58, 1, 0}, +/* 61 */ { 5, s_6_61, 58, 1, 0}, +/* 62 */ { 4, s_6_62, 58, 1, 0}, +/* 63 */ { 4, s_6_63, 58, 1, 0}, +/* 64 */ { 4, s_6_64, 58, 1, 0}, +/* 65 */ { 5, s_6_65, 58, 1, 0}, +/* 66 */ { 5, s_6_66, 58, 1, 0}, +/* 67 */ { 5, s_6_67, 58, 1, 0}, +/* 68 */ { 5, s_6_68, 58, 1, 0}, +/* 69 */ { 5, s_6_69, 58, 1, 0}, +/* 70 */ { 5, s_6_70, 58, 1, 0}, +/* 71 */ { 2, s_6_71, -1, 1, 0}, +/* 72 */ { 3, s_6_72, 71, 1, 0}, +/* 73 */ { 3, s_6_73, 71, 1, 0}, +/* 74 */ { 5, s_6_74, 73, 1, 0}, +/* 75 */ { 5, s_6_75, 73, 1, 0}, +/* 76 */ { 5, s_6_76, 73, 1, 0}, +/* 77 */ { 5, s_6_77, 73, 1, 0}, +/* 78 */ { 5, s_6_78, 73, 1, 0}, +/* 79 */ { 5, s_6_79, 73, 1, 0}, +/* 80 */ { 6, s_6_80, 73, 1, 0}, +/* 81 */ { 6, s_6_81, 73, 1, 0}, +/* 82 */ { 6, s_6_82, 73, 1, 0}, +/* 83 */ { 5, s_6_83, 73, 1, 0}, +/* 84 */ { 4, s_6_84, 73, 1, 0}, +/* 85 */ { 6, s_6_85, 84, 1, 0}, +/* 86 */ { 6, s_6_86, 84, 1, 0}, +/* 87 */ { 6, s_6_87, 84, 1, 0}, +/* 88 */ { 4, s_6_88, -1, 1, 0}, +/* 89 */ { 4, s_6_89, -1, 1, 0}, +/* 90 */ { 4, s_6_90, -1, 1, 0}, +/* 91 */ { 6, s_6_91, 90, 1, 0}, +/* 92 */ { 6, s_6_92, 90, 1, 0}, +/* 93 */ { 6, s_6_93, 90, 1, 0}, +/* 94 */ { 6, s_6_94, 90, 1, 0}, +/* 95 */ { 5, s_6_95, 90, 1, 0}, +/* 96 */ { 7, s_6_96, 95, 1, 0}, +/* 97 */ { 7, s_6_97, 95, 1, 0}, +/* 98 */ { 7, s_6_98, 95, 1, 0}, +/* 99 */ { 4, s_6_99, -1, 1, 0}, +/*100 */ { 6, s_6_100, 99, 1, 0}, +/*101 */ { 6, s_6_101, 99, 1, 0}, +/*102 */ { 6, s_6_102, 99, 1, 0}, +/*103 */ { 7, s_6_103, 99, 1, 0}, +/*104 */ { 7, s_6_104, 99, 1, 0}, +/*105 */ { 7, s_6_105, 99, 1, 0}, +/*106 */ { 4, s_6_106, -1, 1, 0}, +/*107 */ { 5, s_6_107, -1, 1, 0}, +/*108 */ { 5, s_6_108, -1, 1, 0}, +/*109 */ { 5, s_6_109, -1, 1, 0}, +/*110 */ { 4, s_6_110, -1, 1, 0}, +/*111 */ { 4, s_6_111, -1, 1, 0}, +/*112 */ { 4, s_6_112, -1, 1, 0}, +/*113 */ { 4, s_6_113, -1, 1, 0}, +/*114 */ { 2, s_6_114, -1, 1, 0}, +/*115 */ { 2, s_6_115, -1, 1, 0}, +/*116 */ { 2, s_6_116, -1, 1, 0}, +/*117 */ { 3, s_6_117, -1, 1, 0}, +/*118 */ { 3, s_6_118, -1, 1, 0}, +/*119 */ { 3, s_6_119, -1, 1, 0} +}; + +static const symbol s_7_0[1] = { 'a' }; +static const symbol s_7_1[1] = { 'i' }; +static const symbol s_7_2[1] = { 'o' }; +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] = +{ +/* 0 */ { 1, s_7_0, -1, 1, 0}, +/* 1 */ { 1, s_7_1, -1, 1, 0}, +/* 2 */ { 1, s_7_2, -1, 1, 0}, +/* 3 */ { 2, s_7_3, -1, 1, 0}, +/* 4 */ { 1, s_7_4, -1, 1, 0}, +/* 5 */ { 1, s_7_5, -1, 1, 0}, +/* 6 */ { 1, s_7_6, -1, 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] = +{ +/* 0 */ { 1, s_8_0, -1, 1, 0}, +/* 1 */ { 1, s_8_1, -1, 2, 0}, +/* 2 */ { 1, s_8_2, -1, 1, 0}, +/* 3 */ { 1, s_8_3, -1, 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[] = { 'e' }; +static const symbol s_10[] = { 'i', 'r' }; +static const symbol s_11[] = { 'u' }; +static const symbol s_12[] = { 'g' }; +static const symbol s_13[] = { 'i' }; +static const symbol s_14[] = { 'c' }; +static const symbol s_15[] = { 'c' }; +static const symbol s_16[] = { 'i' }; +static const symbol s_17[] = { 'c' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 36 */ + int c1 = z->c; + z->bra = z->c; /* [, line 37 */ + 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); /* substring, line 37 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 37 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 2, s_0); /* <-, line 38 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_1); /* <-, line 39 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 40 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 50 */ + { int c2 = z->c; /* or, line 52 */ + if (in_grouping(z, g_v, 97, 250, 0)) goto lab2; + { int c3 = z->c; /* or, line 51 */ + if (out_grouping(z, g_v, 97, 250, 0)) goto lab4; + { /* gopast */ /* grouping v, line 51 */ + int ret = out_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping(z, g_v, 97, 250, 0)) goto lab2; + { /* gopast */ /* non v, line 51 */ + int ret = in_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping(z, g_v, 97, 250, 0)) goto lab0; + { int c4 = z->c; /* or, line 53 */ + if (out_grouping(z, g_v, 97, 250, 0)) goto lab6; + { /* gopast */ /* grouping v, line 53 */ + int ret = out_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping(z, g_v, 97, 250, 0)) goto lab0; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 53 */ + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 54 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 56 */ + { /* gopast */ /* grouping v, line 57 */ + int ret = out_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 57 */ + int ret = in_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 57 */ + { /* gopast */ /* grouping v, line 58 */ + int ret = out_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 58 */ + int ret = in_grouping(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 58 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 62 */ + int c1 = z->c; + z->bra = z->c; /* [, line 63 */ + if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else + among_var = find_among(z, a_1, 3); /* substring, line 63 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 63 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 66 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 77 */ + if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((839714 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_5, 45); /* substring, line 77 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 77 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 93 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 93 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 98 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_4); /* <-, line 98 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 102 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_5); /* <-, line 102 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 106 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_6); /* <-, line 106 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */ + z->ket = z->c; /* [, line 112 */ + 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 - m_keep; goto lab0; } + among_var = find_among_b(z, a_2, 4); /* substring, line 112 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 112 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 112 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 112 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + z->ket = z->c; /* [, line 113 */ + if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 113 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 113 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + break; + case 6: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 122 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 123 */ + z->ket = z->c; /* [, line 124 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m_keep; goto lab1; } + among_var = find_among_b(z, a_3, 3); /* substring, line 124 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 124 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 127 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 127 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 135 */ + z->ket = z->c; /* [, line 136 */ + 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 - m_keep; goto lab2; } + among_var = find_among_b(z, a_4, 3); /* substring, line 136 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 136 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 139 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 139 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 146 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 146 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 147 */ + z->ket = z->c; /* [, line 148 */ + if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 148 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 148 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 148 */ + if (ret < 0) return ret; + } + lab3: + ; + } + break; + case 9: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 153 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_9))) return 0; + { int ret = slice_from_s(z, 2, s_10); /* <-, line 154 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 159 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 159 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 160 */ + among_var = find_among_b(z, a_6, 120); /* substring, line 160 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 160 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 184 */ + among_var = find_among_b(z, a_7, 7); /* substring, line 184 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 184 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 187 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 187 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_form(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 192 */ + among_var = find_among_b(z, a_8, 4); /* substring, line 192 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 192 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 194 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 194 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 194 */ + if (!(eq_s_b(z, 1, s_11))) goto lab1; + z->bra = z->c; /* ], line 194 */ + { int m_test = z->l - z->c; /* test, line 194 */ + if (!(eq_s_b(z, 1, s_12))) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_13))) return 0; + z->bra = z->c; /* ], line 195 */ + { int m_test = z->l - z->c; /* test, line 195 */ + if (!(eq_s_b(z, 1, s_14))) return 0; + z->c = z->l - m_test; + } + } + lab0: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 195 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 195 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_15); /* <-, line 196 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int portuguese_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 202 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 202 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 203 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 203 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 204 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 205 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 209 */ + { int m5 = z->l - z->c; (void)m5; /* and, line 207 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 206 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab6; /* call standard_suffix, line 206 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 206 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = z->l - m5; + { int m7 = z->l - z->c; (void)m7; /* do, line 207 */ + z->ket = z->c; /* [, line 207 */ + if (!(eq_s_b(z, 1, s_16))) goto lab7; + z->bra = z->c; /* ], line 207 */ + { int m_test = z->l - z->c; /* test, line 207 */ + if (!(eq_s_b(z, 1, s_17))) goto lab7; + z->c = z->l - m_test; + } + { int ret = r_RV(z); + if (ret == 0) goto lab7; /* call RV, line 207 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 207 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab2; /* call residual_suffix, line 209 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 211 */ + { int ret = r_residual_form(z); + if (ret == 0) goto lab8; /* call residual_form, line 211 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m8; + } + z->c = z->lb; + { int c9 = z->c; /* do, line 213 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab9; /* call postlude, line 213 */ + if (ret < 0) return ret; + } + lab9: + z->c = c9; + } + return 1; +} + +extern struct SN_env * portuguese_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void portuguese_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_portuguese.h b/src_c/stem_ISO_8859_1_portuguese.h new file mode 100644 index 0000000..0279bc9 --- /dev/null +++ b/src_c/stem_ISO_8859_1_portuguese.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int portuguese_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_spanish.c b/src_c/stem_ISO_8859_1_spanish.c new file mode 100644 index 0000000..8aa7673 --- /dev/null +++ b/src_c/stem_ISO_8859_1_spanish.c @@ -0,0 +1,1093 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_standard_suffix(struct SN_env * z); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +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); + + +#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, 0, -1, 6, 0}, +/* 1 */ { 1, s_0_1, 0, 1, 0}, +/* 2 */ { 1, s_0_2, 0, 2, 0}, +/* 3 */ { 1, s_0_3, 0, 3, 0}, +/* 4 */ { 1, s_0_4, 0, 4, 0}, +/* 5 */ { 1, s_0_5, 0, 5, 0} +}; + +static const symbol s_1_0[2] = { 'l', 'a' }; +static const symbol s_1_1[4] = { 's', 'e', 'l', 'a' }; +static const symbol s_1_2[2] = { 'l', 'e' }; +static const symbol s_1_3[2] = { 'm', 'e' }; +static const symbol s_1_4[2] = { 's', 'e' }; +static const symbol s_1_5[2] = { 'l', 'o' }; +static const symbol s_1_6[4] = { 's', 'e', 'l', 'o' }; +static const symbol s_1_7[3] = { 'l', 'a', 's' }; +static const symbol s_1_8[5] = { 's', 'e', 'l', 'a', 's' }; +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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 4, s_1_1, 0, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 2, s_1_4, -1, -1, 0}, +/* 5 */ { 2, s_1_5, -1, -1, 0}, +/* 6 */ { 4, s_1_6, 5, -1, 0}, +/* 7 */ { 3, s_1_7, -1, -1, 0}, +/* 8 */ { 5, s_1_8, 7, -1, 0}, +/* 9 */ { 3, s_1_9, -1, -1, 0}, +/* 10 */ { 3, s_1_10, -1, -1, 0}, +/* 11 */ { 5, s_1_11, 10, -1, 0}, +/* 12 */ { 3, s_1_12, -1, -1, 0} +}; + +static const symbol s_2_0[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_2_1[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_2_2[5] = { 'y', 'e', 'n', 'd', 'o' }; +static const symbol s_2_3[4] = { 0xE1, 'n', 'd', 'o' }; +static const symbol s_2_4[5] = { 'i', 0xE9, 'n', 'd', 'o' }; +static const symbol s_2_5[2] = { 'a', 'r' }; +static const symbol s_2_6[2] = { 'e', 'r' }; +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] = +{ +/* 0 */ { 4, s_2_0, -1, 6, 0}, +/* 1 */ { 5, s_2_1, -1, 6, 0}, +/* 2 */ { 5, s_2_2, -1, 7, 0}, +/* 3 */ { 4, s_2_3, -1, 2, 0}, +/* 4 */ { 5, s_2_4, -1, 1, 0}, +/* 5 */ { 2, s_2_5, -1, 6, 0}, +/* 6 */ { 2, s_2_6, -1, 6, 0}, +/* 7 */ { 2, s_2_7, -1, 6, 0}, +/* 8 */ { 2, s_2_8, -1, 3, 0}, +/* 9 */ { 2, s_2_9, -1, 4, 0}, +/* 10 */ { 2, s_2_10, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, -1, 0}, +/* 1 */ { 2, s_3_1, -1, -1, 0}, +/* 2 */ { 2, s_3_2, -1, -1, 0}, +/* 3 */ { 2, s_3_3, -1, 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] = +{ +/* 0 */ { 4, s_4_0, -1, 1, 0}, +/* 1 */ { 4, s_4_1, -1, 1, 0}, +/* 2 */ { 4, s_4_2, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, -1, 1, 0} +}; + +static const symbol s_6_0[3] = { 'i', 'c', 'a' }; +static const symbol s_6_1[5] = { 'a', 'n', 'c', 'i', 'a' }; +static const symbol s_6_2[5] = { 'e', 'n', 'c', 'i', 'a' }; +static const symbol s_6_3[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_6_4[3] = { 'o', 's', 'a' }; +static const symbol s_6_5[4] = { 'i', 's', 't', 'a' }; +static const symbol s_6_6[3] = { 'i', 'v', 'a' }; +static const symbol s_6_7[4] = { 'a', 'n', 'z', 'a' }; +static const symbol s_6_8[5] = { 'l', 'o', 'g', 0xED, 'a' }; +static const symbol s_6_9[4] = { 'i', 'd', 'a', 'd' }; +static const symbol s_6_10[4] = { 'a', 'b', 'l', 'e' }; +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] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 5, s_6_1, -1, 2, 0}, +/* 2 */ { 5, s_6_2, -1, 5, 0}, +/* 3 */ { 5, s_6_3, -1, 2, 0}, +/* 4 */ { 3, s_6_4, -1, 1, 0}, +/* 5 */ { 4, s_6_5, -1, 1, 0}, +/* 6 */ { 3, s_6_6, -1, 9, 0}, +/* 7 */ { 4, s_6_7, -1, 1, 0}, +/* 8 */ { 5, s_6_8, -1, 3, 0}, +/* 9 */ { 4, s_6_9, -1, 8, 0}, +/* 10 */ { 4, s_6_10, -1, 1, 0}, +/* 11 */ { 4, s_6_11, -1, 1, 0}, +/* 12 */ { 4, s_6_12, -1, 2, 0}, +/* 13 */ { 5, s_6_13, -1, 7, 0}, +/* 14 */ { 6, s_6_14, 13, 6, 0}, +/* 15 */ { 5, s_6_15, -1, 2, 0}, +/* 16 */ { 5, s_6_16, -1, 4, 0}, +/* 17 */ { 3, s_6_17, -1, 1, 0}, +/* 18 */ { 4, s_6_18, -1, 1, 0}, +/* 19 */ { 3, s_6_19, -1, 1, 0}, +/* 20 */ { 7, s_6_20, -1, 1, 0}, +/* 21 */ { 7, s_6_21, -1, 1, 0}, +/* 22 */ { 3, s_6_22, -1, 9, 0}, +/* 23 */ { 4, s_6_23, -1, 2, 0}, +/* 24 */ { 4, s_6_24, -1, 1, 0}, +/* 25 */ { 6, s_6_25, -1, 2, 0}, +/* 26 */ { 6, s_6_26, -1, 5, 0}, +/* 27 */ { 6, s_6_27, -1, 2, 0}, +/* 28 */ { 4, s_6_28, -1, 1, 0}, +/* 29 */ { 5, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, -1, 9, 0}, +/* 31 */ { 5, s_6_31, -1, 1, 0}, +/* 32 */ { 6, s_6_32, -1, 3, 0}, +/* 33 */ { 6, s_6_33, -1, 8, 0}, +/* 34 */ { 5, s_6_34, -1, 1, 0}, +/* 35 */ { 5, s_6_35, -1, 1, 0}, +/* 36 */ { 7, s_6_36, -1, 2, 0}, +/* 37 */ { 7, s_6_37, -1, 4, 0}, +/* 38 */ { 6, s_6_38, -1, 2, 0}, +/* 39 */ { 5, s_6_39, -1, 2, 0}, +/* 40 */ { 4, s_6_40, -1, 1, 0}, +/* 41 */ { 5, s_6_41, -1, 1, 0}, +/* 42 */ { 4, s_6_42, -1, 1, 0}, +/* 43 */ { 8, s_6_43, -1, 1, 0}, +/* 44 */ { 8, s_6_44, -1, 1, 0}, +/* 45 */ { 4, s_6_45, -1, 9, 0} +}; + +static const symbol s_7_0[2] = { 'y', 'a' }; +static const symbol s_7_1[2] = { 'y', 'e' }; +static const symbol s_7_2[3] = { 'y', 'a', 'n' }; +static const symbol s_7_3[3] = { 'y', 'e', 'n' }; +static const symbol s_7_4[5] = { 'y', 'e', 'r', 'o', 'n' }; +static const symbol s_7_5[5] = { 'y', 'e', 'n', 'd', 'o' }; +static const symbol s_7_6[2] = { 'y', 'o' }; +static const symbol s_7_7[3] = { 'y', 'a', 's' }; +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] = +{ +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 2, s_7_1, -1, 1, 0}, +/* 2 */ { 3, s_7_2, -1, 1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 5, s_7_4, -1, 1, 0}, +/* 5 */ { 5, s_7_5, -1, 1, 0}, +/* 6 */ { 2, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 3, s_7_8, -1, 1, 0}, +/* 9 */ { 4, s_7_9, -1, 1, 0}, +/* 10 */ { 5, s_7_10, -1, 1, 0}, +/* 11 */ { 2, s_7_11, -1, 1, 0} +}; + +static const symbol s_8_0[3] = { 'a', 'b', 'a' }; +static const symbol s_8_1[3] = { 'a', 'd', 'a' }; +static const symbol s_8_2[3] = { 'i', 'd', 'a' }; +static const symbol s_8_3[3] = { 'a', 'r', 'a' }; +static const symbol s_8_4[4] = { 'i', 'e', 'r', 'a' }; +static const symbol s_8_5[2] = { 0xED, 'a' }; +static const symbol s_8_6[4] = { 'a', 'r', 0xED, 'a' }; +static const symbol s_8_7[4] = { 'e', 'r', 0xED, 'a' }; +static const symbol s_8_8[4] = { 'i', 'r', 0xED, 'a' }; +static const symbol s_8_9[2] = { 'a', 'd' }; +static const symbol s_8_10[2] = { 'e', 'd' }; +static const symbol s_8_11[2] = { 'i', 'd' }; +static const symbol s_8_12[3] = { 'a', 's', 'e' }; +static const symbol s_8_13[4] = { 'i', 'e', 's', 'e' }; +static const symbol s_8_14[4] = { 'a', 's', 't', 'e' }; +static const symbol s_8_15[4] = { 'i', 's', 't', 'e' }; +static const symbol s_8_16[2] = { 'a', 'n' }; +static const symbol s_8_17[4] = { 'a', 'b', 'a', 'n' }; +static const symbol s_8_18[4] = { 'a', 'r', 'a', 'n' }; +static const symbol s_8_19[5] = { 'i', 'e', 'r', 'a', 'n' }; +static const symbol s_8_20[3] = { 0xED, 'a', 'n' }; +static const symbol s_8_21[5] = { 'a', 'r', 0xED, 'a', 'n' }; +static const symbol s_8_22[5] = { 'e', 'r', 0xED, 'a', 'n' }; +static const symbol s_8_23[5] = { 'i', 'r', 0xED, 'a', 'n' }; +static const symbol s_8_24[2] = { 'e', 'n' }; +static const symbol s_8_25[4] = { 'a', 's', 'e', 'n' }; +static const symbol s_8_26[5] = { 'i', 'e', 's', 'e', 'n' }; +static const symbol s_8_27[4] = { 'a', 'r', 'o', 'n' }; +static const symbol s_8_28[5] = { 'i', 'e', 'r', 'o', 'n' }; +static const symbol s_8_29[4] = { 'a', 'r', 0xE1, 'n' }; +static const symbol s_8_30[4] = { 'e', 'r', 0xE1, 'n' }; +static const symbol s_8_31[4] = { 'i', 'r', 0xE1, 'n' }; +static const symbol s_8_32[3] = { 'a', 'd', 'o' }; +static const symbol s_8_33[3] = { 'i', 'd', 'o' }; +static const symbol s_8_34[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_8_35[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_8_36[2] = { 'a', 'r' }; +static const symbol s_8_37[2] = { 'e', 'r' }; +static const symbol s_8_38[2] = { 'i', 'r' }; +static const symbol s_8_39[2] = { 'a', 's' }; +static const symbol s_8_40[4] = { 'a', 'b', 'a', 's' }; +static const symbol s_8_41[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_8_42[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_8_43[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_8_44[5] = { 'i', 'e', 'r', 'a', 's' }; +static const symbol s_8_45[3] = { 0xED, 'a', 's' }; +static const symbol s_8_46[5] = { 'a', 'r', 0xED, 'a', 's' }; +static const symbol s_8_47[5] = { 'e', 'r', 0xED, 'a', 's' }; +static const symbol s_8_48[5] = { 'i', 'r', 0xED, 'a', 's' }; +static const symbol s_8_49[2] = { 'e', 's' }; +static const symbol s_8_50[4] = { 'a', 's', 'e', 's' }; +static const symbol s_8_51[5] = { 'i', 'e', 's', 'e', 's' }; +static const symbol s_8_52[5] = { 'a', 'b', 'a', 'i', 's' }; +static const symbol s_8_53[5] = { 'a', 'r', 'a', 'i', 's' }; +static const symbol s_8_54[6] = { 'i', 'e', 'r', 'a', 'i', 's' }; +static const symbol s_8_55[4] = { 0xED, 'a', 'i', 's' }; +static const symbol s_8_56[6] = { 'a', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_8_57[6] = { 'e', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_8_58[6] = { 'i', 'r', 0xED, 'a', 'i', 's' }; +static const symbol s_8_59[5] = { 'a', 's', 'e', 'i', 's' }; +static const symbol s_8_60[6] = { 'i', 'e', 's', 'e', 'i', 's' }; +static const symbol s_8_61[6] = { 'a', 's', 't', 'e', 'i', 's' }; +static const symbol s_8_62[6] = { 'i', 's', 't', 'e', 'i', 's' }; +static const symbol s_8_63[3] = { 0xE1, 'i', 's' }; +static const symbol s_8_64[3] = { 0xE9, 'i', 's' }; +static const symbol s_8_65[5] = { 'a', 'r', 0xE9, 'i', 's' }; +static const symbol s_8_66[5] = { 'e', 'r', 0xE9, 'i', 's' }; +static const symbol s_8_67[5] = { 'i', 'r', 0xE9, 'i', 's' }; +static const symbol s_8_68[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_8_69[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_8_70[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_8_71[6] = { 0xE1, 'b', 'a', 'm', 'o', 's' }; +static const symbol s_8_72[6] = { 0xE1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_8_73[7] = { 'i', 0xE9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_8_74[5] = { 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_8_75[7] = { 'a', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_8_76[7] = { 'e', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_8_77[7] = { 'i', 'r', 0xED, 'a', 'm', 'o', 's' }; +static const symbol s_8_78[4] = { 'e', 'm', 'o', 's' }; +static const symbol s_8_79[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_80[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_81[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_82[6] = { 0xE1, 's', 'e', 'm', 'o', 's' }; +static const symbol s_8_83[7] = { 'i', 0xE9, 's', 'e', 'm', 'o', 's' }; +static const symbol s_8_84[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_8_85[4] = { 'a', 'r', 0xE1, 's' }; +static const symbol s_8_86[4] = { 'e', 'r', 0xE1, 's' }; +static const symbol s_8_87[4] = { 'i', 'r', 0xE1, 's' }; +static const symbol s_8_88[2] = { 0xED, 's' }; +static const symbol s_8_89[3] = { 'a', 'r', 0xE1 }; +static const symbol s_8_90[3] = { 'e', 'r', 0xE1 }; +static const symbol s_8_91[3] = { 'i', 'r', 0xE1 }; +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] = +{ +/* 0 */ { 3, s_8_0, -1, 2, 0}, +/* 1 */ { 3, s_8_1, -1, 2, 0}, +/* 2 */ { 3, s_8_2, -1, 2, 0}, +/* 3 */ { 3, s_8_3, -1, 2, 0}, +/* 4 */ { 4, s_8_4, -1, 2, 0}, +/* 5 */ { 2, s_8_5, -1, 2, 0}, +/* 6 */ { 4, s_8_6, 5, 2, 0}, +/* 7 */ { 4, s_8_7, 5, 2, 0}, +/* 8 */ { 4, s_8_8, 5, 2, 0}, +/* 9 */ { 2, s_8_9, -1, 2, 0}, +/* 10 */ { 2, s_8_10, -1, 2, 0}, +/* 11 */ { 2, s_8_11, -1, 2, 0}, +/* 12 */ { 3, s_8_12, -1, 2, 0}, +/* 13 */ { 4, s_8_13, -1, 2, 0}, +/* 14 */ { 4, s_8_14, -1, 2, 0}, +/* 15 */ { 4, s_8_15, -1, 2, 0}, +/* 16 */ { 2, s_8_16, -1, 2, 0}, +/* 17 */ { 4, s_8_17, 16, 2, 0}, +/* 18 */ { 4, s_8_18, 16, 2, 0}, +/* 19 */ { 5, s_8_19, 16, 2, 0}, +/* 20 */ { 3, s_8_20, 16, 2, 0}, +/* 21 */ { 5, s_8_21, 20, 2, 0}, +/* 22 */ { 5, s_8_22, 20, 2, 0}, +/* 23 */ { 5, s_8_23, 20, 2, 0}, +/* 24 */ { 2, s_8_24, -1, 1, 0}, +/* 25 */ { 4, s_8_25, 24, 2, 0}, +/* 26 */ { 5, s_8_26, 24, 2, 0}, +/* 27 */ { 4, s_8_27, -1, 2, 0}, +/* 28 */ { 5, s_8_28, -1, 2, 0}, +/* 29 */ { 4, s_8_29, -1, 2, 0}, +/* 30 */ { 4, s_8_30, -1, 2, 0}, +/* 31 */ { 4, s_8_31, -1, 2, 0}, +/* 32 */ { 3, s_8_32, -1, 2, 0}, +/* 33 */ { 3, s_8_33, -1, 2, 0}, +/* 34 */ { 4, s_8_34, -1, 2, 0}, +/* 35 */ { 5, s_8_35, -1, 2, 0}, +/* 36 */ { 2, s_8_36, -1, 2, 0}, +/* 37 */ { 2, s_8_37, -1, 2, 0}, +/* 38 */ { 2, s_8_38, -1, 2, 0}, +/* 39 */ { 2, s_8_39, -1, 2, 0}, +/* 40 */ { 4, s_8_40, 39, 2, 0}, +/* 41 */ { 4, s_8_41, 39, 2, 0}, +/* 42 */ { 4, s_8_42, 39, 2, 0}, +/* 43 */ { 4, s_8_43, 39, 2, 0}, +/* 44 */ { 5, s_8_44, 39, 2, 0}, +/* 45 */ { 3, s_8_45, 39, 2, 0}, +/* 46 */ { 5, s_8_46, 45, 2, 0}, +/* 47 */ { 5, s_8_47, 45, 2, 0}, +/* 48 */ { 5, s_8_48, 45, 2, 0}, +/* 49 */ { 2, s_8_49, -1, 1, 0}, +/* 50 */ { 4, s_8_50, 49, 2, 0}, +/* 51 */ { 5, s_8_51, 49, 2, 0}, +/* 52 */ { 5, s_8_52, -1, 2, 0}, +/* 53 */ { 5, s_8_53, -1, 2, 0}, +/* 54 */ { 6, s_8_54, -1, 2, 0}, +/* 55 */ { 4, s_8_55, -1, 2, 0}, +/* 56 */ { 6, s_8_56, 55, 2, 0}, +/* 57 */ { 6, s_8_57, 55, 2, 0}, +/* 58 */ { 6, s_8_58, 55, 2, 0}, +/* 59 */ { 5, s_8_59, -1, 2, 0}, +/* 60 */ { 6, s_8_60, -1, 2, 0}, +/* 61 */ { 6, s_8_61, -1, 2, 0}, +/* 62 */ { 6, s_8_62, -1, 2, 0}, +/* 63 */ { 3, s_8_63, -1, 2, 0}, +/* 64 */ { 3, s_8_64, -1, 1, 0}, +/* 65 */ { 5, s_8_65, 64, 2, 0}, +/* 66 */ { 5, s_8_66, 64, 2, 0}, +/* 67 */ { 5, s_8_67, 64, 2, 0}, +/* 68 */ { 4, s_8_68, -1, 2, 0}, +/* 69 */ { 4, s_8_69, -1, 2, 0}, +/* 70 */ { 4, s_8_70, -1, 2, 0}, +/* 71 */ { 6, s_8_71, 70, 2, 0}, +/* 72 */ { 6, s_8_72, 70, 2, 0}, +/* 73 */ { 7, s_8_73, 70, 2, 0}, +/* 74 */ { 5, s_8_74, 70, 2, 0}, +/* 75 */ { 7, s_8_75, 74, 2, 0}, +/* 76 */ { 7, s_8_76, 74, 2, 0}, +/* 77 */ { 7, s_8_77, 74, 2, 0}, +/* 78 */ { 4, s_8_78, -1, 1, 0}, +/* 79 */ { 6, s_8_79, 78, 2, 0}, +/* 80 */ { 6, s_8_80, 78, 2, 0}, +/* 81 */ { 6, s_8_81, 78, 2, 0}, +/* 82 */ { 6, s_8_82, 78, 2, 0}, +/* 83 */ { 7, s_8_83, 78, 2, 0}, +/* 84 */ { 4, s_8_84, -1, 2, 0}, +/* 85 */ { 4, s_8_85, -1, 2, 0}, +/* 86 */ { 4, s_8_86, -1, 2, 0}, +/* 87 */ { 4, s_8_87, -1, 2, 0}, +/* 88 */ { 2, s_8_88, -1, 2, 0}, +/* 89 */ { 3, s_8_89, -1, 2, 0}, +/* 90 */ { 3, s_8_90, -1, 2, 0}, +/* 91 */ { 3, s_8_91, -1, 2, 0}, +/* 92 */ { 3, s_8_92, -1, 2, 0}, +/* 93 */ { 3, s_8_93, -1, 2, 0}, +/* 94 */ { 3, s_8_94, -1, 2, 0}, +/* 95 */ { 2, s_8_95, -1, 2, 0} +}; + +static const symbol s_9_0[1] = { 'a' }; +static const symbol s_9_1[1] = { 'e' }; +static const symbol s_9_2[1] = { 'o' }; +static const symbol s_9_3[2] = { 'o', 's' }; +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] = +{ +/* 0 */ { 1, s_9_0, -1, 1, 0}, +/* 1 */ { 1, s_9_1, -1, 2, 0}, +/* 2 */ { 1, s_9_2, -1, 1, 0}, +/* 3 */ { 2, s_9_3, -1, 1, 0}, +/* 4 */ { 1, s_9_4, -1, 1, 0}, +/* 5 */ { 1, s_9_5, -1, 2, 0}, +/* 6 */ { 1, s_9_6, -1, 1, 0}, +/* 7 */ { 1, s_9_7, -1, 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[] = { 'u' }; +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[] = { 'u' }; +static const symbol s_18[] = { 'u' }; +static const symbol s_19[] = { 'g' }; +static const symbol s_20[] = { 'u' }; +static const symbol s_21[] = { 'g' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 37 */ + { int c2 = z->c; /* or, line 39 */ + if (in_grouping(z, g_v, 97, 252, 0)) goto lab2; + { int c3 = z->c; /* or, line 38 */ + if (out_grouping(z, g_v, 97, 252, 0)) goto lab4; + { /* gopast */ /* grouping v, line 38 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping(z, g_v, 97, 252, 0)) goto lab2; + { /* gopast */ /* non v, line 38 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping(z, g_v, 97, 252, 0)) goto lab0; + { int c4 = z->c; /* or, line 40 */ + if (out_grouping(z, g_v, 97, 252, 0)) goto lab6; + { /* gopast */ /* grouping v, line 40 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping(z, g_v, 97, 252, 0)) goto lab0; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 40 */ + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 41 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 43 */ + { /* gopast */ /* grouping v, line 44 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 44 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 44 */ + { /* gopast */ /* grouping v, line 45 */ + int ret = out_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 45 */ + int ret = in_grouping(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 45 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 49 */ + int c1 = z->c; + z->bra = z->c; /* [, line 50 */ + 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); /* substring, line 50 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 50 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 52 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 54 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 55 */ + if (ret < 0) return ret; + } + break; + case 6: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 57 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 68 */ + 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; /* substring, line 68 */ + z->bra = z->c; /* ], line 68 */ + 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); /* substring, line 72 */ + if (!(among_var)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 72 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + z->bra = z->c; /* ], line 73 */ + { int ret = slice_from_s(z, 5, s_5); /* <-, line 73 */ + if (ret < 0) return ret; + } + break; + case 2: + z->bra = z->c; /* ], line 74 */ + { int ret = slice_from_s(z, 4, s_6); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + z->bra = z->c; /* ], line 75 */ + { int ret = slice_from_s(z, 2, s_7); /* <-, line 75 */ + if (ret < 0) return ret; + } + break; + case 4: + z->bra = z->c; /* ], line 76 */ + { int ret = slice_from_s(z, 2, s_8); /* <-, line 76 */ + if (ret < 0) return ret; + } + break; + case 5: + z->bra = z->c; /* ], line 77 */ + { int ret = slice_from_s(z, 2, s_9); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + break; + case 7: + if (!(eq_s_b(z, 1, s_10))) return 0; + { int ret = slice_del(z); /* delete, line 82 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 87 */ + 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); /* substring, line 87 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 87 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 99 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 105 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 105 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 106 */ + z->ket = z->c; /* [, line 106 */ + if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 106 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 106 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 106 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 111 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_12); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 115 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_13); /* <-, line 115 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 119 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_14); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 123 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 124 */ + z->ket = z->c; /* [, line 125 */ + 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 - m_keep; goto lab1; } + among_var = find_among_b(z, a_3, 4); /* substring, line 125 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 125 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 125 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + z->ket = z->c; /* [, line 126 */ + if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 126 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 126 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 126 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 135 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 135 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 136 */ + z->ket = z->c; /* [, line 137 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - m_keep; goto lab2; } + among_var = find_among_b(z, a_4, 3); /* substring, line 137 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 137 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 140 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 140 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 148 */ + z->ket = z->c; /* [, line 149 */ + 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 - m_keep; goto lab3; } + among_var = find_among_b(z, a_5, 3); /* substring, line 149 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 149 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab3; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 152 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + break; + } + lab3: + ; + } + break; + case 9: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 159 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 159 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 160 */ + z->ket = z->c; /* [, line 161 */ + if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m_keep; goto lab4; } + z->bra = z->c; /* ], line 161 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call R2, line 161 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 161 */ + if (ret < 0) return ret; + } + lab4: + ; + } + break; + } + return 1; +} + +static int r_y_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 168 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 168 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 168 */ + among_var = find_among_b(z, a_7, 12); /* substring, line 168 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 168 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (!(eq_s_b(z, 1, s_17))) return 0; + { int ret = slice_del(z); /* delete, line 171 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 176 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 176 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 176 */ + among_var = find_among_b(z, a_8, 96); /* substring, line 176 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 176 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 179 */ + if (!(eq_s_b(z, 1, s_18))) { z->c = z->l - m_keep; goto lab0; } + { int m_test = z->l - z->c; /* test, line 179 */ + if (!(eq_s_b(z, 1, s_19))) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + lab0: + ; + } + z->bra = z->c; /* ], line 179 */ + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 200 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 205 */ + among_var = find_among_b(z, a_9, 8); /* substring, line 205 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 205 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 208 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 208 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 210 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 210 */ + z->ket = z->c; /* [, line 210 */ + if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 210 */ + { int m_test = z->l - z->c; /* test, line 210 */ + if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 210 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + } + return 1; +} + +extern int spanish_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 216 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 216 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 217 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 218 */ + { int ret = r_attached_pronoun(z); + if (ret == 0) goto lab1; /* call attached_pronoun, line 218 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 219 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 219 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab4; /* call standard_suffix, line 219 */ + if (ret < 0) return ret; + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_y_verb_suffix(z); + if (ret == 0) goto lab5; /* call y_verb_suffix, line 220 */ + if (ret < 0) return ret; + } + goto lab3; + lab5: + z->c = z->l - m4; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab2; /* call verb_suffix, line 221 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 223 */ + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab6; /* call residual_suffix, line 223 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m5; + } + z->c = z->lb; + { int c6 = z->c; /* do, line 225 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab7; /* call postlude, line 225 */ + if (ret < 0) return ret; + } + lab7: + z->c = c6; + } + return 1; +} + +extern struct SN_env * spanish_ISO_8859_1_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void spanish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_spanish.h b/src_c/stem_ISO_8859_1_spanish.h new file mode 100644 index 0000000..83f1498 --- /dev/null +++ b/src_c/stem_ISO_8859_1_spanish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int spanish_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_1_swedish.c b/src_c/stem_ISO_8859_1_swedish.c new file mode 100644 index 0000000..f930834 --- /dev/null +++ b/src_c/stem_ISO_8859_1_swedish.c @@ -0,0 +1,307 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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 + + +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 struct among a_0[37] = +{ +/* 0 */ { 1, s_0_0, -1, 1, 0}, +/* 1 */ { 4, s_0_1, 0, 1, 0}, +/* 2 */ { 4, s_0_2, 0, 1, 0}, +/* 3 */ { 7, s_0_3, 2, 1, 0}, +/* 4 */ { 4, s_0_4, 0, 1, 0}, +/* 5 */ { 2, s_0_5, -1, 1, 0}, +/* 6 */ { 1, s_0_6, -1, 1, 0}, +/* 7 */ { 3, s_0_7, 6, 1, 0}, +/* 8 */ { 4, s_0_8, 6, 1, 0}, +/* 9 */ { 4, s_0_9, 6, 1, 0}, +/* 10 */ { 3, s_0_10, 6, 1, 0}, +/* 11 */ { 4, s_0_11, 6, 1, 0}, +/* 12 */ { 2, s_0_12, -1, 1, 0}, +/* 13 */ { 5, s_0_13, 12, 1, 0}, +/* 14 */ { 4, s_0_14, 12, 1, 0}, +/* 15 */ { 5, s_0_15, 12, 1, 0}, +/* 16 */ { 3, s_0_16, -1, 1, 0}, +/* 17 */ { 2, s_0_17, -1, 1, 0}, +/* 18 */ { 2, s_0_18, -1, 1, 0}, +/* 19 */ { 5, s_0_19, 18, 1, 0}, +/* 20 */ { 2, s_0_20, -1, 1, 0}, +/* 21 */ { 1, s_0_21, -1, 2, 0}, +/* 22 */ { 2, s_0_22, 21, 1, 0}, +/* 23 */ { 5, s_0_23, 22, 1, 0}, +/* 24 */ { 5, s_0_24, 22, 1, 0}, +/* 25 */ { 5, s_0_25, 22, 1, 0}, +/* 26 */ { 2, s_0_26, 21, 1, 0}, +/* 27 */ { 4, s_0_27, 26, 1, 0}, +/* 28 */ { 5, s_0_28, 26, 1, 0}, +/* 29 */ { 3, s_0_29, 21, 1, 0}, +/* 30 */ { 5, s_0_30, 29, 1, 0}, +/* 31 */ { 6, s_0_31, 29, 1, 0}, +/* 32 */ { 4, s_0_32, 21, 1, 0}, +/* 33 */ { 2, s_0_33, -1, 1, 0}, +/* 34 */ { 5, s_0_34, -1, 1, 0}, +/* 35 */ { 3, s_0_35, -1, 1, 0}, +/* 36 */ { 3, s_0_36, -1, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 2, s_1_4, -1, -1, 0}, +/* 5 */ { 2, s_1_5, -1, -1, 0}, +/* 6 */ { 2, s_1_6, -1, -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[4] = { 'l', 0xF6, 's', 't' }; + +static const struct among a_2[5] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 3, s_2_2, -1, 1, 0}, +/* 3 */ { 5, s_2_3, -1, 3, 0}, +/* 4 */ { 4, s_2_4, -1, 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 }; + +static const unsigned char g_s_ending[] = { 119, 127, 149 }; + +static const symbol s_0[] = { 'l', 0xF6, 's' }; +static const symbol s_1[] = { 'f', 'u', 'l', 'l' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c_test = z->c; /* test, line 29 */ + { int ret = z->c + 3; + if (0 > ret || ret > z->l) return 0; + z->c = ret; /* hop, line 29 */ + } + z->I[1] = z->c; /* setmark x, line 29 */ + z->c = c_test; + } + if (out_grouping(z, g_v, 97, 246, 1) < 0) return 0; /* goto */ /* grouping v, line 30 */ + { /* gopast */ /* non v, line 30 */ + int ret = in_grouping(z, g_v, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 30 */ + /* try, line 31 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 37 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 37 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 37 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 37); /* substring, line 37 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 37 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 44 */ + 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); /* delete, line 46 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int mlimit; /* setlimit, line 50 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 50 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* and, line 52 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 7))) { z->lb = mlimit; return 0; } /* among, line 51 */ + z->c = z->l - m2; + z->ket = z->c; /* [, line 52 */ + if (z->c <= z->lb) { z->lb = mlimit; return 0; } + z->c--; /* next, line 52 */ + z->bra = z->c; /* ], line 52 */ + { int ret = slice_del(z); /* delete, line 52 */ + if (ret < 0) return ret; + } + } + z->lb = mlimit; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 55 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 55 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 56 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 5); /* substring, line 56 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 56 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 57 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_0); /* <-, line 58 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_1); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +extern int swedish_ISO_8859_1_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 66 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 66 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 67 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 68 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 68 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 69 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 69 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 70 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 70 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * swedish_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void swedish_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_1_swedish.h b/src_c/stem_ISO_8859_1_swedish.h new file mode 100644 index 0000000..4184e5c --- /dev/null +++ b/src_c/stem_ISO_8859_1_swedish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * swedish_ISO_8859_1_create_env(void); +extern void swedish_ISO_8859_1_close_env(struct SN_env * z); + +extern int swedish_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_ISO_8859_2_romanian.c b/src_c/stem_ISO_8859_2_romanian.c new file mode 100644 index 0000000..cc72700 --- /dev/null +++ b/src_c/stem_ISO_8859_2_romanian.c @@ -0,0 +1,998 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int romanian_ISO_8859_2_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_combo_suffix(struct SN_env * z); +static int r_standard_suffix(struct SN_env * z); +static int r_step_0(struct SN_env * z); +static int r_R2(struct SN_env * z); +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); +static int r_prelude(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * romanian_ISO_8859_2_create_env(void); +extern void romanian_ISO_8859_2_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[1] = { 'I' }; +static const symbol s_0_2[1] = { 'U' }; + +static const struct among a_0[3] = +{ +/* 0 */ { 0, 0, -1, 3, 0}, +/* 1 */ { 1, s_0_1, 0, 1, 0}, +/* 2 */ { 1, s_0_2, 0, 2, 0} +}; + +static const symbol s_1_0[2] = { 'e', 'a' }; +static const symbol s_1_1[4] = { 'a', 0xFE, 'i', 'a' }; +static const symbol s_1_2[3] = { 'a', 'u', 'a' }; +static const symbol s_1_3[3] = { 'i', 'u', 'a' }; +static const symbol s_1_4[4] = { 'a', 0xFE, 'i', 'e' }; +static const symbol s_1_5[3] = { 'e', 'l', 'e' }; +static const symbol s_1_6[3] = { 'i', 'l', 'e' }; +static const symbol s_1_7[4] = { 'i', 'i', 'l', 'e' }; +static const symbol s_1_8[3] = { 'i', 'e', 'i' }; +static const symbol s_1_9[4] = { 'a', 't', 'e', 'i' }; +static const symbol s_1_10[2] = { 'i', 'i' }; +static const symbol s_1_11[4] = { 'u', 'l', 'u', 'i' }; +static const symbol s_1_12[2] = { 'u', 'l' }; +static const symbol s_1_13[4] = { 'e', 'l', 'o', 'r' }; +static const symbol s_1_14[4] = { 'i', 'l', 'o', 'r' }; +static const symbol s_1_15[5] = { 'i', 'i', 'l', 'o', 'r' }; + +static const struct among a_1[16] = +{ +/* 0 */ { 2, s_1_0, -1, 3, 0}, +/* 1 */ { 4, s_1_1, -1, 7, 0}, +/* 2 */ { 3, s_1_2, -1, 2, 0}, +/* 3 */ { 3, s_1_3, -1, 4, 0}, +/* 4 */ { 4, s_1_4, -1, 7, 0}, +/* 5 */ { 3, s_1_5, -1, 3, 0}, +/* 6 */ { 3, s_1_6, -1, 5, 0}, +/* 7 */ { 4, s_1_7, 6, 4, 0}, +/* 8 */ { 3, s_1_8, -1, 4, 0}, +/* 9 */ { 4, s_1_9, -1, 6, 0}, +/* 10 */ { 2, s_1_10, -1, 4, 0}, +/* 11 */ { 4, s_1_11, -1, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 4, s_1_13, -1, 3, 0}, +/* 14 */ { 4, s_1_14, -1, 4, 0}, +/* 15 */ { 5, s_1_15, 14, 4, 0} +}; + +static const symbol s_2_0[5] = { 'i', 'c', 'a', 'l', 'a' }; +static const symbol s_2_1[5] = { 'i', 'c', 'i', 'v', 'a' }; +static const symbol s_2_2[5] = { 'a', 't', 'i', 'v', 'a' }; +static const symbol s_2_3[5] = { 'i', 't', 'i', 'v', 'a' }; +static const symbol s_2_4[5] = { 'i', 'c', 'a', 'l', 'e' }; +static const symbol s_2_5[6] = { 'a', 0xFE, 'i', 'u', 'n', 'e' }; +static const symbol s_2_6[6] = { 'i', 0xFE, 'i', 'u', 'n', 'e' }; +static const symbol s_2_7[6] = { 'a', 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_8[6] = { 'i', 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_9[6] = { 0xE3, 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_10[7] = { 'i', 'c', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_11[9] = { 'a', 'b', 'i', 'l', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_12[9] = { 'i', 'b', 'i', 'l', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_13[7] = { 'i', 'v', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_14[5] = { 'i', 'c', 'i', 'v', 'e' }; +static const symbol s_2_15[5] = { 'a', 't', 'i', 'v', 'e' }; +static const symbol s_2_16[5] = { 'i', 't', 'i', 'v', 'e' }; +static const symbol s_2_17[5] = { 'i', 'c', 'a', 'l', 'i' }; +static const symbol s_2_18[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_2_19[7] = { 'i', 'c', 'a', 't', 'o', 'r', 'i' }; +static const symbol s_2_20[5] = { 'i', 't', 'o', 'r', 'i' }; +static const symbol s_2_21[5] = { 0xE3, 't', 'o', 'r', 'i' }; +static const symbol s_2_22[7] = { 'i', 'c', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_23[9] = { 'a', 'b', 'i', 'l', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_24[7] = { 'i', 'v', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_25[5] = { 'i', 'c', 'i', 'v', 'i' }; +static const symbol s_2_26[5] = { 'a', 't', 'i', 'v', 'i' }; +static const symbol s_2_27[5] = { 'i', 't', 'i', 'v', 'i' }; +static const symbol s_2_28[6] = { 'i', 'c', 'i', 't', 0xE3, 'i' }; +static const symbol s_2_29[8] = { 'a', 'b', 'i', 'l', 'i', 't', 0xE3, 'i' }; +static const symbol s_2_30[6] = { 'i', 'v', 'i', 't', 0xE3, 'i' }; +static const symbol s_2_31[7] = { 'i', 'c', 'i', 't', 0xE3, 0xFE, 'i' }; +static const symbol s_2_32[9] = { 'a', 'b', 'i', 'l', 'i', 't', 0xE3, 0xFE, 'i' }; +static const symbol s_2_33[7] = { 'i', 'v', 'i', 't', 0xE3, 0xFE, 'i' }; +static const symbol s_2_34[4] = { 'i', 'c', 'a', 'l' }; +static const symbol s_2_35[4] = { 'a', 't', 'o', 'r' }; +static const symbol s_2_36[6] = { 'i', 'c', 'a', 't', 'o', 'r' }; +static const symbol s_2_37[4] = { 'i', 't', 'o', 'r' }; +static const symbol s_2_38[4] = { 0xE3, 't', 'o', 'r' }; +static const symbol s_2_39[4] = { 'i', 'c', 'i', 'v' }; +static const symbol s_2_40[4] = { 'a', 't', 'i', 'v' }; +static const symbol s_2_41[4] = { 'i', 't', 'i', 'v' }; +static const symbol s_2_42[5] = { 'i', 'c', 'a', 'l', 0xE3 }; +static const symbol s_2_43[5] = { 'i', 'c', 'i', 'v', 0xE3 }; +static const symbol s_2_44[5] = { 'a', 't', 'i', 'v', 0xE3 }; +static const symbol s_2_45[5] = { 'i', 't', 'i', 'v', 0xE3 }; + +static const struct among a_2[46] = +{ +/* 0 */ { 5, s_2_0, -1, 4, 0}, +/* 1 */ { 5, s_2_1, -1, 4, 0}, +/* 2 */ { 5, s_2_2, -1, 5, 0}, +/* 3 */ { 5, s_2_3, -1, 6, 0}, +/* 4 */ { 5, s_2_4, -1, 4, 0}, +/* 5 */ { 6, s_2_5, -1, 5, 0}, +/* 6 */ { 6, s_2_6, -1, 6, 0}, +/* 7 */ { 6, s_2_7, -1, 5, 0}, +/* 8 */ { 6, s_2_8, -1, 6, 0}, +/* 9 */ { 6, s_2_9, -1, 5, 0}, +/* 10 */ { 7, s_2_10, -1, 4, 0}, +/* 11 */ { 9, s_2_11, -1, 1, 0}, +/* 12 */ { 9, s_2_12, -1, 2, 0}, +/* 13 */ { 7, s_2_13, -1, 3, 0}, +/* 14 */ { 5, s_2_14, -1, 4, 0}, +/* 15 */ { 5, s_2_15, -1, 5, 0}, +/* 16 */ { 5, s_2_16, -1, 6, 0}, +/* 17 */ { 5, s_2_17, -1, 4, 0}, +/* 18 */ { 5, s_2_18, -1, 5, 0}, +/* 19 */ { 7, s_2_19, 18, 4, 0}, +/* 20 */ { 5, s_2_20, -1, 6, 0}, +/* 21 */ { 5, s_2_21, -1, 5, 0}, +/* 22 */ { 7, s_2_22, -1, 4, 0}, +/* 23 */ { 9, s_2_23, -1, 1, 0}, +/* 24 */ { 7, s_2_24, -1, 3, 0}, +/* 25 */ { 5, s_2_25, -1, 4, 0}, +/* 26 */ { 5, s_2_26, -1, 5, 0}, +/* 27 */ { 5, s_2_27, -1, 6, 0}, +/* 28 */ { 6, s_2_28, -1, 4, 0}, +/* 29 */ { 8, s_2_29, -1, 1, 0}, +/* 30 */ { 6, s_2_30, -1, 3, 0}, +/* 31 */ { 7, s_2_31, -1, 4, 0}, +/* 32 */ { 9, s_2_32, -1, 1, 0}, +/* 33 */ { 7, s_2_33, -1, 3, 0}, +/* 34 */ { 4, s_2_34, -1, 4, 0}, +/* 35 */ { 4, s_2_35, -1, 5, 0}, +/* 36 */ { 6, s_2_36, 35, 4, 0}, +/* 37 */ { 4, s_2_37, -1, 6, 0}, +/* 38 */ { 4, s_2_38, -1, 5, 0}, +/* 39 */ { 4, s_2_39, -1, 4, 0}, +/* 40 */ { 4, s_2_40, -1, 5, 0}, +/* 41 */ { 4, s_2_41, -1, 6, 0}, +/* 42 */ { 5, s_2_42, -1, 4, 0}, +/* 43 */ { 5, s_2_43, -1, 4, 0}, +/* 44 */ { 5, s_2_44, -1, 5, 0}, +/* 45 */ { 5, s_2_45, -1, 6, 0} +}; + +static const symbol s_3_0[3] = { 'i', 'c', 'a' }; +static const symbol s_3_1[5] = { 'a', 'b', 'i', 'l', 'a' }; +static const symbol s_3_2[5] = { 'i', 'b', 'i', 'l', 'a' }; +static const symbol s_3_3[4] = { 'o', 'a', 's', 'a' }; +static const symbol s_3_4[3] = { 'a', 't', 'a' }; +static const symbol s_3_5[3] = { 'i', 't', 'a' }; +static const symbol s_3_6[4] = { 'a', 'n', 't', 'a' }; +static const symbol s_3_7[4] = { 'i', 's', 't', 'a' }; +static const symbol s_3_8[3] = { 'u', 't', 'a' }; +static const symbol s_3_9[3] = { 'i', 'v', 'a' }; +static const symbol s_3_10[2] = { 'i', 'c' }; +static const symbol s_3_11[3] = { 'i', 'c', 'e' }; +static const symbol s_3_12[5] = { 'a', 'b', 'i', 'l', 'e' }; +static const symbol s_3_13[5] = { 'i', 'b', 'i', 'l', 'e' }; +static const symbol s_3_14[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_3_15[4] = { 'i', 'u', 'n', 'e' }; +static const symbol s_3_16[4] = { 'o', 'a', 's', 'e' }; +static const symbol s_3_17[3] = { 'a', 't', 'e' }; +static const symbol s_3_18[5] = { 'i', 't', 'a', 't', 'e' }; +static const symbol s_3_19[3] = { 'i', 't', 'e' }; +static const symbol s_3_20[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_3_21[4] = { 'i', 's', 't', 'e' }; +static const symbol s_3_22[3] = { 'u', 't', 'e' }; +static const symbol s_3_23[3] = { 'i', 'v', 'e' }; +static const symbol s_3_24[3] = { 'i', 'c', 'i' }; +static const symbol s_3_25[5] = { 'a', 'b', 'i', 'l', 'i' }; +static const symbol s_3_26[5] = { 'i', 'b', 'i', 'l', 'i' }; +static const symbol s_3_27[4] = { 'i', 'u', 'n', 'i' }; +static const symbol s_3_28[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_3_29[3] = { 'o', 's', 'i' }; +static const symbol s_3_30[3] = { 'a', 't', 'i' }; +static const symbol s_3_31[5] = { 'i', 't', 'a', 't', 'i' }; +static const symbol s_3_32[3] = { 'i', 't', 'i' }; +static const symbol s_3_33[4] = { 'a', 'n', 't', 'i' }; +static const symbol s_3_34[4] = { 'i', 's', 't', 'i' }; +static const symbol s_3_35[3] = { 'u', 't', 'i' }; +static const symbol s_3_36[4] = { 'i', 0xBA, 't', 'i' }; +static const symbol s_3_37[3] = { 'i', 'v', 'i' }; +static const symbol s_3_38[3] = { 'o', 0xBA, 'i' }; +static const symbol s_3_39[4] = { 'i', 't', 0xE3, 'i' }; +static const symbol s_3_40[5] = { 'i', 't', 0xE3, 0xFE, 'i' }; +static const symbol s_3_41[4] = { 'a', 'b', 'i', 'l' }; +static const symbol s_3_42[4] = { 'i', 'b', 'i', 'l' }; +static const symbol s_3_43[3] = { 'i', 's', 'm' }; +static const symbol s_3_44[4] = { 'a', 't', 'o', 'r' }; +static const symbol s_3_45[2] = { 'o', 's' }; +static const symbol s_3_46[2] = { 'a', 't' }; +static const symbol s_3_47[2] = { 'i', 't' }; +static const symbol s_3_48[3] = { 'a', 'n', 't' }; +static const symbol s_3_49[3] = { 'i', 's', 't' }; +static const symbol s_3_50[2] = { 'u', 't' }; +static const symbol s_3_51[2] = { 'i', 'v' }; +static const symbol s_3_52[3] = { 'i', 'c', 0xE3 }; +static const symbol s_3_53[5] = { 'a', 'b', 'i', 'l', 0xE3 }; +static const symbol s_3_54[5] = { 'i', 'b', 'i', 'l', 0xE3 }; +static const symbol s_3_55[4] = { 'o', 'a', 's', 0xE3 }; +static const symbol s_3_56[3] = { 'a', 't', 0xE3 }; +static const symbol s_3_57[3] = { 'i', 't', 0xE3 }; +static const symbol s_3_58[4] = { 'a', 'n', 't', 0xE3 }; +static const symbol s_3_59[4] = { 'i', 's', 't', 0xE3 }; +static const symbol s_3_60[3] = { 'u', 't', 0xE3 }; +static const symbol s_3_61[3] = { 'i', 'v', 0xE3 }; + +static const struct among a_3[62] = +{ +/* 0 */ { 3, s_3_0, -1, 1, 0}, +/* 1 */ { 5, s_3_1, -1, 1, 0}, +/* 2 */ { 5, s_3_2, -1, 1, 0}, +/* 3 */ { 4, s_3_3, -1, 1, 0}, +/* 4 */ { 3, s_3_4, -1, 1, 0}, +/* 5 */ { 3, s_3_5, -1, 1, 0}, +/* 6 */ { 4, s_3_6, -1, 1, 0}, +/* 7 */ { 4, s_3_7, -1, 3, 0}, +/* 8 */ { 3, s_3_8, -1, 1, 0}, +/* 9 */ { 3, s_3_9, -1, 1, 0}, +/* 10 */ { 2, s_3_10, -1, 1, 0}, +/* 11 */ { 3, s_3_11, -1, 1, 0}, +/* 12 */ { 5, s_3_12, -1, 1, 0}, +/* 13 */ { 5, s_3_13, -1, 1, 0}, +/* 14 */ { 4, s_3_14, -1, 3, 0}, +/* 15 */ { 4, s_3_15, -1, 2, 0}, +/* 16 */ { 4, s_3_16, -1, 1, 0}, +/* 17 */ { 3, s_3_17, -1, 1, 0}, +/* 18 */ { 5, s_3_18, 17, 1, 0}, +/* 19 */ { 3, s_3_19, -1, 1, 0}, +/* 20 */ { 4, s_3_20, -1, 1, 0}, +/* 21 */ { 4, s_3_21, -1, 3, 0}, +/* 22 */ { 3, s_3_22, -1, 1, 0}, +/* 23 */ { 3, s_3_23, -1, 1, 0}, +/* 24 */ { 3, s_3_24, -1, 1, 0}, +/* 25 */ { 5, s_3_25, -1, 1, 0}, +/* 26 */ { 5, s_3_26, -1, 1, 0}, +/* 27 */ { 4, s_3_27, -1, 2, 0}, +/* 28 */ { 5, s_3_28, -1, 1, 0}, +/* 29 */ { 3, s_3_29, -1, 1, 0}, +/* 30 */ { 3, s_3_30, -1, 1, 0}, +/* 31 */ { 5, s_3_31, 30, 1, 0}, +/* 32 */ { 3, s_3_32, -1, 1, 0}, +/* 33 */ { 4, s_3_33, -1, 1, 0}, +/* 34 */ { 4, s_3_34, -1, 3, 0}, +/* 35 */ { 3, s_3_35, -1, 1, 0}, +/* 36 */ { 4, s_3_36, -1, 3, 0}, +/* 37 */ { 3, s_3_37, -1, 1, 0}, +/* 38 */ { 3, s_3_38, -1, 1, 0}, +/* 39 */ { 4, s_3_39, -1, 1, 0}, +/* 40 */ { 5, s_3_40, -1, 1, 0}, +/* 41 */ { 4, s_3_41, -1, 1, 0}, +/* 42 */ { 4, s_3_42, -1, 1, 0}, +/* 43 */ { 3, s_3_43, -1, 3, 0}, +/* 44 */ { 4, s_3_44, -1, 1, 0}, +/* 45 */ { 2, s_3_45, -1, 1, 0}, +/* 46 */ { 2, s_3_46, -1, 1, 0}, +/* 47 */ { 2, s_3_47, -1, 1, 0}, +/* 48 */ { 3, s_3_48, -1, 1, 0}, +/* 49 */ { 3, s_3_49, -1, 3, 0}, +/* 50 */ { 2, s_3_50, -1, 1, 0}, +/* 51 */ { 2, s_3_51, -1, 1, 0}, +/* 52 */ { 3, s_3_52, -1, 1, 0}, +/* 53 */ { 5, s_3_53, -1, 1, 0}, +/* 54 */ { 5, s_3_54, -1, 1, 0}, +/* 55 */ { 4, s_3_55, -1, 1, 0}, +/* 56 */ { 3, s_3_56, -1, 1, 0}, +/* 57 */ { 3, s_3_57, -1, 1, 0}, +/* 58 */ { 4, s_3_58, -1, 1, 0}, +/* 59 */ { 4, s_3_59, -1, 3, 0}, +/* 60 */ { 3, s_3_60, -1, 1, 0}, +/* 61 */ { 3, s_3_61, -1, 1, 0} +}; + +static const symbol s_4_0[2] = { 'e', 'a' }; +static const symbol s_4_1[2] = { 'i', 'a' }; +static const symbol s_4_2[3] = { 'e', 's', 'c' }; +static const symbol s_4_3[3] = { 0xE3, 's', 'c' }; +static const symbol s_4_4[3] = { 'i', 'n', 'd' }; +static const symbol s_4_5[3] = { 0xE2, 'n', 'd' }; +static const symbol s_4_6[3] = { 'a', 'r', 'e' }; +static const symbol s_4_7[3] = { 'e', 'r', 'e' }; +static const symbol s_4_8[3] = { 'i', 'r', 'e' }; +static const symbol s_4_9[3] = { 0xE2, 'r', 'e' }; +static const symbol s_4_10[2] = { 's', 'e' }; +static const symbol s_4_11[3] = { 'a', 's', 'e' }; +static const symbol s_4_12[4] = { 's', 'e', 's', 'e' }; +static const symbol s_4_13[3] = { 'i', 's', 'e' }; +static const symbol s_4_14[3] = { 'u', 's', 'e' }; +static const symbol s_4_15[3] = { 0xE2, 's', 'e' }; +static const symbol s_4_16[4] = { 'e', 0xBA, 't', 'e' }; +static const symbol s_4_17[4] = { 0xE3, 0xBA, 't', 'e' }; +static const symbol s_4_18[3] = { 'e', 'z', 'e' }; +static const symbol s_4_19[2] = { 'a', 'i' }; +static const symbol s_4_20[3] = { 'e', 'a', 'i' }; +static const symbol s_4_21[3] = { 'i', 'a', 'i' }; +static const symbol s_4_22[3] = { 's', 'e', 'i' }; +static const symbol s_4_23[4] = { 'e', 0xBA, 't', 'i' }; +static const symbol s_4_24[4] = { 0xE3, 0xBA, 't', 'i' }; +static const symbol s_4_25[2] = { 'u', 'i' }; +static const symbol s_4_26[3] = { 'e', 'z', 'i' }; +static const symbol s_4_27[3] = { 'a', 0xBA, 'i' }; +static const symbol s_4_28[4] = { 's', 'e', 0xBA, 'i' }; +static const symbol s_4_29[5] = { 'a', 's', 'e', 0xBA, 'i' }; +static const symbol s_4_30[6] = { 's', 'e', 's', 'e', 0xBA, 'i' }; +static const symbol s_4_31[5] = { 'i', 's', 'e', 0xBA, 'i' }; +static const symbol s_4_32[5] = { 'u', 's', 'e', 0xBA, 'i' }; +static const symbol s_4_33[5] = { 0xE2, 's', 'e', 0xBA, 'i' }; +static const symbol s_4_34[3] = { 'i', 0xBA, 'i' }; +static const symbol s_4_35[3] = { 'u', 0xBA, 'i' }; +static const symbol s_4_36[3] = { 0xE2, 0xBA, 'i' }; +static const symbol s_4_37[2] = { 0xE2, 'i' }; +static const symbol s_4_38[3] = { 'a', 0xFE, 'i' }; +static const symbol s_4_39[4] = { 'e', 'a', 0xFE, 'i' }; +static const symbol s_4_40[4] = { 'i', 'a', 0xFE, 'i' }; +static const symbol s_4_41[3] = { 'e', 0xFE, 'i' }; +static const symbol s_4_42[3] = { 'i', 0xFE, 'i' }; +static const symbol s_4_43[3] = { 0xE2, 0xFE, 'i' }; +static const symbol s_4_44[5] = { 'a', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_45[6] = { 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_46[7] = { 'a', 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_47[8] = { 's', 'e', 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_48[7] = { 'i', 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_49[7] = { 'u', 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_50[7] = { 0xE2, 's', 'e', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_51[5] = { 'i', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_52[5] = { 'u', 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_53[5] = { 0xE2, 'r', 0xE3, 0xFE, 'i' }; +static const symbol s_4_54[2] = { 'a', 'm' }; +static const symbol s_4_55[3] = { 'e', 'a', 'm' }; +static const symbol s_4_56[3] = { 'i', 'a', 'm' }; +static const symbol s_4_57[2] = { 'e', 'm' }; +static const symbol s_4_58[4] = { 'a', 's', 'e', 'm' }; +static const symbol s_4_59[5] = { 's', 'e', 's', 'e', 'm' }; +static const symbol s_4_60[4] = { 'i', 's', 'e', 'm' }; +static const symbol s_4_61[4] = { 'u', 's', 'e', 'm' }; +static const symbol s_4_62[4] = { 0xE2, 's', 'e', 'm' }; +static const symbol s_4_63[2] = { 'i', 'm' }; +static const symbol s_4_64[2] = { 0xE2, 'm' }; +static const symbol s_4_65[2] = { 0xE3, 'm' }; +static const symbol s_4_66[4] = { 'a', 'r', 0xE3, 'm' }; +static const symbol s_4_67[5] = { 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_68[6] = { 'a', 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_69[7] = { 's', 'e', 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_70[6] = { 'i', 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_71[6] = { 'u', 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_72[6] = { 0xE2, 's', 'e', 'r', 0xE3, 'm' }; +static const symbol s_4_73[4] = { 'i', 'r', 0xE3, 'm' }; +static const symbol s_4_74[4] = { 'u', 'r', 0xE3, 'm' }; +static const symbol s_4_75[4] = { 0xE2, 'r', 0xE3, 'm' }; +static const symbol s_4_76[2] = { 'a', 'u' }; +static const symbol s_4_77[3] = { 'e', 'a', 'u' }; +static const symbol s_4_78[3] = { 'i', 'a', 'u' }; +static const symbol s_4_79[4] = { 'i', 'n', 'd', 'u' }; +static const symbol s_4_80[4] = { 0xE2, 'n', 'd', 'u' }; +static const symbol s_4_81[2] = { 'e', 'z' }; +static const symbol s_4_82[5] = { 'e', 'a', 's', 'c', 0xE3 }; +static const symbol s_4_83[3] = { 'a', 'r', 0xE3 }; +static const symbol s_4_84[4] = { 's', 'e', 'r', 0xE3 }; +static const symbol s_4_85[5] = { 'a', 's', 'e', 'r', 0xE3 }; +static const symbol s_4_86[6] = { 's', 'e', 's', 'e', 'r', 0xE3 }; +static const symbol s_4_87[5] = { 'i', 's', 'e', 'r', 0xE3 }; +static const symbol s_4_88[5] = { 'u', 's', 'e', 'r', 0xE3 }; +static const symbol s_4_89[5] = { 0xE2, 's', 'e', 'r', 0xE3 }; +static const symbol s_4_90[3] = { 'i', 'r', 0xE3 }; +static const symbol s_4_91[3] = { 'u', 'r', 0xE3 }; +static const symbol s_4_92[3] = { 0xE2, 'r', 0xE3 }; +static const symbol s_4_93[4] = { 'e', 'a', 'z', 0xE3 }; + +static const struct among a_4[94] = +{ +/* 0 */ { 2, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 1, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 3, s_4_3, -1, 1, 0}, +/* 4 */ { 3, s_4_4, -1, 1, 0}, +/* 5 */ { 3, s_4_5, -1, 1, 0}, +/* 6 */ { 3, s_4_6, -1, 1, 0}, +/* 7 */ { 3, s_4_7, -1, 1, 0}, +/* 8 */ { 3, s_4_8, -1, 1, 0}, +/* 9 */ { 3, s_4_9, -1, 1, 0}, +/* 10 */ { 2, s_4_10, -1, 2, 0}, +/* 11 */ { 3, s_4_11, 10, 1, 0}, +/* 12 */ { 4, s_4_12, 10, 2, 0}, +/* 13 */ { 3, s_4_13, 10, 1, 0}, +/* 14 */ { 3, s_4_14, 10, 1, 0}, +/* 15 */ { 3, s_4_15, 10, 1, 0}, +/* 16 */ { 4, s_4_16, -1, 1, 0}, +/* 17 */ { 4, s_4_17, -1, 1, 0}, +/* 18 */ { 3, s_4_18, -1, 1, 0}, +/* 19 */ { 2, s_4_19, -1, 1, 0}, +/* 20 */ { 3, s_4_20, 19, 1, 0}, +/* 21 */ { 3, s_4_21, 19, 1, 0}, +/* 22 */ { 3, s_4_22, -1, 2, 0}, +/* 23 */ { 4, s_4_23, -1, 1, 0}, +/* 24 */ { 4, s_4_24, -1, 1, 0}, +/* 25 */ { 2, s_4_25, -1, 1, 0}, +/* 26 */ { 3, s_4_26, -1, 1, 0}, +/* 27 */ { 3, s_4_27, -1, 1, 0}, +/* 28 */ { 4, s_4_28, -1, 2, 0}, +/* 29 */ { 5, s_4_29, 28, 1, 0}, +/* 30 */ { 6, s_4_30, 28, 2, 0}, +/* 31 */ { 5, s_4_31, 28, 1, 0}, +/* 32 */ { 5, s_4_32, 28, 1, 0}, +/* 33 */ { 5, s_4_33, 28, 1, 0}, +/* 34 */ { 3, s_4_34, -1, 1, 0}, +/* 35 */ { 3, s_4_35, -1, 1, 0}, +/* 36 */ { 3, s_4_36, -1, 1, 0}, +/* 37 */ { 2, s_4_37, -1, 1, 0}, +/* 38 */ { 3, s_4_38, -1, 2, 0}, +/* 39 */ { 4, s_4_39, 38, 1, 0}, +/* 40 */ { 4, s_4_40, 38, 1, 0}, +/* 41 */ { 3, s_4_41, -1, 2, 0}, +/* 42 */ { 3, s_4_42, -1, 2, 0}, +/* 43 */ { 3, s_4_43, -1, 2, 0}, +/* 44 */ { 5, s_4_44, -1, 1, 0}, +/* 45 */ { 6, s_4_45, -1, 2, 0}, +/* 46 */ { 7, s_4_46, 45, 1, 0}, +/* 47 */ { 8, s_4_47, 45, 2, 0}, +/* 48 */ { 7, s_4_48, 45, 1, 0}, +/* 49 */ { 7, s_4_49, 45, 1, 0}, +/* 50 */ { 7, s_4_50, 45, 1, 0}, +/* 51 */ { 5, s_4_51, -1, 1, 0}, +/* 52 */ { 5, s_4_52, -1, 1, 0}, +/* 53 */ { 5, s_4_53, -1, 1, 0}, +/* 54 */ { 2, s_4_54, -1, 1, 0}, +/* 55 */ { 3, s_4_55, 54, 1, 0}, +/* 56 */ { 3, s_4_56, 54, 1, 0}, +/* 57 */ { 2, s_4_57, -1, 2, 0}, +/* 58 */ { 4, s_4_58, 57, 1, 0}, +/* 59 */ { 5, s_4_59, 57, 2, 0}, +/* 60 */ { 4, s_4_60, 57, 1, 0}, +/* 61 */ { 4, s_4_61, 57, 1, 0}, +/* 62 */ { 4, s_4_62, 57, 1, 0}, +/* 63 */ { 2, s_4_63, -1, 2, 0}, +/* 64 */ { 2, s_4_64, -1, 2, 0}, +/* 65 */ { 2, s_4_65, -1, 2, 0}, +/* 66 */ { 4, s_4_66, 65, 1, 0}, +/* 67 */ { 5, s_4_67, 65, 2, 0}, +/* 68 */ { 6, s_4_68, 67, 1, 0}, +/* 69 */ { 7, s_4_69, 67, 2, 0}, +/* 70 */ { 6, s_4_70, 67, 1, 0}, +/* 71 */ { 6, s_4_71, 67, 1, 0}, +/* 72 */ { 6, s_4_72, 67, 1, 0}, +/* 73 */ { 4, s_4_73, 65, 1, 0}, +/* 74 */ { 4, s_4_74, 65, 1, 0}, +/* 75 */ { 4, s_4_75, 65, 1, 0}, +/* 76 */ { 2, s_4_76, -1, 1, 0}, +/* 77 */ { 3, s_4_77, 76, 1, 0}, +/* 78 */ { 3, s_4_78, 76, 1, 0}, +/* 79 */ { 4, s_4_79, -1, 1, 0}, +/* 80 */ { 4, s_4_80, -1, 1, 0}, +/* 81 */ { 2, s_4_81, -1, 1, 0}, +/* 82 */ { 5, s_4_82, -1, 1, 0}, +/* 83 */ { 3, s_4_83, -1, 1, 0}, +/* 84 */ { 4, s_4_84, -1, 2, 0}, +/* 85 */ { 5, s_4_85, 84, 1, 0}, +/* 86 */ { 6, s_4_86, 84, 2, 0}, +/* 87 */ { 5, s_4_87, 84, 1, 0}, +/* 88 */ { 5, s_4_88, 84, 1, 0}, +/* 89 */ { 5, s_4_89, 84, 1, 0}, +/* 90 */ { 3, s_4_90, -1, 1, 0}, +/* 91 */ { 3, s_4_91, -1, 1, 0}, +/* 92 */ { 3, s_4_92, -1, 1, 0}, +/* 93 */ { 4, s_4_93, -1, 1, 0} +}; + +static const symbol s_5_0[1] = { 'a' }; +static const symbol s_5_1[1] = { 'e' }; +static const symbol s_5_2[2] = { 'i', 'e' }; +static const symbol s_5_3[1] = { 'i' }; +static const symbol s_5_4[1] = { 0xE3 }; + +static const struct among a_5[5] = +{ +/* 0 */ { 1, s_5_0, -1, 1, 0}, +/* 1 */ { 1, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, 1, 1, 0}, +/* 3 */ { 1, s_5_3, -1, 1, 0}, +/* 4 */ { 1, s_5_4, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 32 }; + +static const symbol s_0[] = { 'u' }; +static const symbol s_1[] = { 'U' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'I' }; +static const symbol s_4[] = { 'i' }; +static const symbol s_5[] = { 'u' }; +static const symbol s_6[] = { 'a' }; +static const symbol s_7[] = { 'e' }; +static const symbol s_8[] = { 'i' }; +static const symbol s_9[] = { 'a', 'b' }; +static const symbol s_10[] = { 'i' }; +static const symbol s_11[] = { 'a', 't' }; +static const symbol s_12[] = { 'a', 0xFE, 'i' }; +static const symbol s_13[] = { 'a', 'b', 'i', 'l' }; +static const symbol s_14[] = { 'i', 'b', 'i', 'l' }; +static const symbol s_15[] = { 'i', 'v' }; +static const symbol s_16[] = { 'i', 'c' }; +static const symbol s_17[] = { 'a', 't' }; +static const symbol s_18[] = { 'i', 't' }; +static const symbol s_19[] = { 0xFE }; +static const symbol s_20[] = { 't' }; +static const symbol s_21[] = { 'i', 's', 't' }; +static const symbol s_22[] = { 'u' }; + +static int r_prelude(struct SN_env * z) { + while(1) { /* repeat, line 32 */ + int c1 = z->c; + while(1) { /* goto, line 32 */ + int c2 = z->c; + if (in_grouping(z, g_v, 97, 238, 0)) goto lab1; + z->bra = z->c; /* [, line 33 */ + { int c3 = z->c; /* or, line 33 */ + if (!(eq_s(z, 1, s_0))) goto lab3; + z->ket = z->c; /* ], line 33 */ + if (in_grouping(z, g_v, 97, 238, 0)) goto lab3; + { int ret = slice_from_s(z, 1, s_1); /* <-, line 33 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = c3; + if (!(eq_s(z, 1, s_2))) goto lab1; + z->ket = z->c; /* ], line 34 */ + if (in_grouping(z, g_v, 97, 238, 0)) goto lab1; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 34 */ + if (ret < 0) return ret; + } + } + lab2: + z->c = c2; + break; + lab1: + z->c = c2; + if (z->c >= z->l) goto lab0; + z->c++; /* goto, line 32 */ + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 44 */ + { int c2 = z->c; /* or, line 46 */ + if (in_grouping(z, g_v, 97, 238, 0)) goto lab2; + { int c3 = z->c; /* or, line 45 */ + if (out_grouping(z, g_v, 97, 238, 0)) goto lab4; + { /* gopast */ /* grouping v, line 45 */ + int ret = out_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping(z, g_v, 97, 238, 0)) goto lab2; + { /* gopast */ /* non v, line 45 */ + int ret = in_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping(z, g_v, 97, 238, 0)) goto lab0; + { int c4 = z->c; /* or, line 47 */ + if (out_grouping(z, g_v, 97, 238, 0)) goto lab6; + { /* gopast */ /* grouping v, line 47 */ + int ret = out_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping(z, g_v, 97, 238, 0)) goto lab0; + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 47 */ + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 48 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 50 */ + { /* gopast */ /* grouping v, line 51 */ + int ret = out_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 51 */ + int ret = in_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 51 */ + { /* gopast */ /* grouping v, line 52 */ + int ret = out_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 52 */ + int ret = in_grouping(z, g_v, 97, 238, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 52 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 56 */ + int c1 = z->c; + z->bra = z->c; /* [, line 58 */ + 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_0, 3); /* substring, line 58 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 58 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c >= z->l) goto lab0; + z->c++; /* next, line 61 */ + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_step_0(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 73 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((266786 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_1, 16); /* substring, line 73 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 73 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 73 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 75 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 81 */ + if (ret < 0) return ret; + } + break; + case 5: + { int m1 = z->l - z->c; (void)m1; /* not, line 83 */ + if (!(eq_s_b(z, 2, s_9))) goto lab0; + return 0; + lab0: + z->c = z->l - m1; + } + { int ret = slice_from_s(z, 1, s_10); /* <-, line 83 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_11); /* <-, line 85 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 3, s_12); /* <-, line 87 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_combo_suffix(struct SN_env * z) { + int among_var; + { int m_test = z->l - z->c; /* test, line 91 */ + z->ket = z->c; /* [, line 92 */ + among_var = find_among_b(z, a_2, 46); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 92 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_13); /* <-, line 101 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_14); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_15); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 2, s_16); /* <-, line 113 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 2, s_17); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_18); /* <-, line 122 */ + if (ret < 0) return ret; + } + break; + } + z->B[0] = 1; /* set standard_suffix_removed, line 125 */ + z->c = z->l - m_test; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->B[0] = 0; /* unset standard_suffix_removed, line 130 */ + while(1) { /* repeat, line 131 */ + int m1 = z->l - z->c; (void)m1; + { int ret = r_combo_suffix(z); + if (ret == 0) goto lab0; /* call combo_suffix, line 131 */ + if (ret < 0) return ret; + } + continue; + lab0: + z->c = z->l - m1; + break; + } + z->ket = z->c; /* [, line 132 */ + among_var = find_among_b(z, a_3, 62); /* substring, line 132 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 132 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 132 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 149 */ + if (ret < 0) return ret; + } + break; + case 2: + if (!(eq_s_b(z, 1, s_19))) return 0; + z->bra = z->c; /* ], line 152 */ + { int ret = slice_from_s(z, 1, s_20); /* <-, line 152 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_21); /* <-, line 156 */ + if (ret < 0) return ret; + } + break; + } + z->B[0] = 1; /* set standard_suffix_removed, line 160 */ + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 164 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 164 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 165 */ + among_var = find_among_b(z, a_4, 94); /* substring, line 165 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 165 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int m2 = z->l - z->c; (void)m2; /* or, line 200 */ + if (out_grouping_b(z, g_v, 97, 238, 0)) goto lab1; + goto lab0; + lab1: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_22))) { z->lb = mlimit; return 0; } + } + lab0: + { int ret = slice_del(z); /* delete, line 200 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 214 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_vowel_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 219 */ + among_var = find_among_b(z, a_5, 5); /* substring, line 219 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 219 */ + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 219 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 220 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int romanian_ISO_8859_2_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 226 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 226 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 227 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 227 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 228 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 229 */ + { int ret = r_step_0(z); + if (ret == 0) goto lab2; /* call step_0, line 229 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 230 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab3; /* call standard_suffix, line 230 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 231 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 231 */ + if (!(z->B[0])) goto lab6; /* Boolean test standard_suffix_removed, line 231 */ + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 231 */ + if (ret < 0) return ret; + } + } + lab5: + lab4: + z->c = z->l - m5; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 232 */ + { int ret = r_vowel_suffix(z); + if (ret == 0) goto lab7; /* call vowel_suffix, line 232 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + z->c = z->lb; + { int c8 = z->c; /* do, line 234 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab8; /* call postlude, line 234 */ + if (ret < 0) return ret; + } + lab8: + z->c = c8; + } + return 1; +} + +extern struct SN_env * romanian_ISO_8859_2_create_env(void) { return SN_create_env(0, 3, 1); } + +extern void romanian_ISO_8859_2_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_ISO_8859_2_romanian.h b/src_c/stem_ISO_8859_2_romanian.h new file mode 100644 index 0000000..931f269 --- /dev/null +++ b/src_c/stem_ISO_8859_2_romanian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * romanian_ISO_8859_2_create_env(void); +extern void romanian_ISO_8859_2_close_env(struct SN_env * z); + +extern int romanian_ISO_8859_2_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_KOI8_R_russian.c b/src_c/stem_KOI8_R_russian.c new file mode 100644 index 0000000..3d93a9c --- /dev/null +++ b/src_c/stem_KOI8_R_russian.c @@ -0,0 +1,700 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +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); +static int r_verb(struct SN_env * z); +static int r_reflexive(struct SN_env * z); +static int r_adjectival(struct SN_env * z); +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); + + +#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 }; +static const symbol s_0_3[1] = { 0xD7 }; +static const symbol s_0_4[2] = { 0xC9, 0xD7 }; +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] = +{ +/* 0 */ { 3, s_0_0, -1, 1, 0}, +/* 1 */ { 4, s_0_1, 0, 2, 0}, +/* 2 */ { 4, s_0_2, 0, 2, 0}, +/* 3 */ { 1, s_0_3, -1, 1, 0}, +/* 4 */ { 2, s_0_4, 3, 2, 0}, +/* 5 */ { 2, s_0_5, 3, 2, 0}, +/* 6 */ { 5, s_0_6, -1, 1, 0}, +/* 7 */ { 6, s_0_7, 6, 2, 0}, +/* 8 */ { 6, s_0_8, 6, 2, 0} +}; + +static const symbol s_1_0[2] = { 0xC0, 0xC0 }; +static const symbol s_1_1[2] = { 0xC5, 0xC0 }; +static const symbol s_1_2[2] = { 0xCF, 0xC0 }; +static const symbol s_1_3[2] = { 0xD5, 0xC0 }; +static const symbol s_1_4[2] = { 0xC5, 0xC5 }; +static const symbol s_1_5[2] = { 0xC9, 0xC5 }; +static const symbol s_1_6[2] = { 0xCF, 0xC5 }; +static const symbol s_1_7[2] = { 0xD9, 0xC5 }; +static const symbol s_1_8[2] = { 0xC9, 0xC8 }; +static const symbol s_1_9[2] = { 0xD9, 0xC8 }; +static const symbol s_1_10[3] = { 0xC9, 0xCD, 0xC9 }; +static const symbol s_1_11[3] = { 0xD9, 0xCD, 0xC9 }; +static const symbol s_1_12[2] = { 0xC5, 0xCA }; +static const symbol s_1_13[2] = { 0xC9, 0xCA }; +static const symbol s_1_14[2] = { 0xCF, 0xCA }; +static const symbol s_1_15[2] = { 0xD9, 0xCA }; +static const symbol s_1_16[2] = { 0xC5, 0xCD }; +static const symbol s_1_17[2] = { 0xC9, 0xCD }; +static const symbol s_1_18[2] = { 0xCF, 0xCD }; +static const symbol s_1_19[2] = { 0xD9, 0xCD }; +static const symbol s_1_20[3] = { 0xC5, 0xC7, 0xCF }; +static const symbol s_1_21[3] = { 0xCF, 0xC7, 0xCF }; +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] = +{ +/* 0 */ { 2, s_1_0, -1, 1, 0}, +/* 1 */ { 2, s_1_1, -1, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 1, 0}, +/* 3 */ { 2, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 2, s_1_5, -1, 1, 0}, +/* 6 */ { 2, s_1_6, -1, 1, 0}, +/* 7 */ { 2, s_1_7, -1, 1, 0}, +/* 8 */ { 2, s_1_8, -1, 1, 0}, +/* 9 */ { 2, s_1_9, -1, 1, 0}, +/* 10 */ { 3, s_1_10, -1, 1, 0}, +/* 11 */ { 3, s_1_11, -1, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 2, s_1_13, -1, 1, 0}, +/* 14 */ { 2, s_1_14, -1, 1, 0}, +/* 15 */ { 2, s_1_15, -1, 1, 0}, +/* 16 */ { 2, s_1_16, -1, 1, 0}, +/* 17 */ { 2, s_1_17, -1, 1, 0}, +/* 18 */ { 2, s_1_18, -1, 1, 0}, +/* 19 */ { 2, s_1_19, -1, 1, 0}, +/* 20 */ { 3, s_1_20, -1, 1, 0}, +/* 21 */ { 3, s_1_21, -1, 1, 0}, +/* 22 */ { 2, s_1_22, -1, 1, 0}, +/* 23 */ { 2, s_1_23, -1, 1, 0}, +/* 24 */ { 3, s_1_24, -1, 1, 0}, +/* 25 */ { 3, s_1_25, -1, 1, 0} +}; + +static const symbol s_2_0[2] = { 0xC5, 0xCD }; +static const symbol s_2_1[2] = { 0xCE, 0xCE }; +static const symbol s_2_2[2] = { 0xD7, 0xDB }; +static const symbol s_2_3[3] = { 0xC9, 0xD7, 0xDB }; +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] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 2, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, 2, 2, 0}, +/* 4 */ { 3, s_2_4, 2, 2, 0}, +/* 5 */ { 1, s_2_5, -1, 1, 0}, +/* 6 */ { 2, s_2_6, 5, 1, 0}, +/* 7 */ { 3, s_2_7, 6, 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] = +{ +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 2, s_3_1, -1, 1, 0} +}; + +static const symbol s_4_0[1] = { 0xC0 }; +static const symbol s_4_1[2] = { 0xD5, 0xC0 }; +static const symbol s_4_2[2] = { 0xCC, 0xC1 }; +static const symbol s_4_3[3] = { 0xC9, 0xCC, 0xC1 }; +static const symbol s_4_4[3] = { 0xD9, 0xCC, 0xC1 }; +static const symbol s_4_5[2] = { 0xCE, 0xC1 }; +static const symbol s_4_6[3] = { 0xC5, 0xCE, 0xC1 }; +static const symbol s_4_7[3] = { 0xC5, 0xD4, 0xC5 }; +static const symbol s_4_8[3] = { 0xC9, 0xD4, 0xC5 }; +static const symbol s_4_9[3] = { 0xCA, 0xD4, 0xC5 }; +static const symbol s_4_10[4] = { 0xC5, 0xCA, 0xD4, 0xC5 }; +static const symbol s_4_11[4] = { 0xD5, 0xCA, 0xD4, 0xC5 }; +static const symbol s_4_12[2] = { 0xCC, 0xC9 }; +static const symbol s_4_13[3] = { 0xC9, 0xCC, 0xC9 }; +static const symbol s_4_14[3] = { 0xD9, 0xCC, 0xC9 }; +static const symbol s_4_15[1] = { 0xCA }; +static const symbol s_4_16[2] = { 0xC5, 0xCA }; +static const symbol s_4_17[2] = { 0xD5, 0xCA }; +static const symbol s_4_18[1] = { 0xCC }; +static const symbol s_4_19[2] = { 0xC9, 0xCC }; +static const symbol s_4_20[2] = { 0xD9, 0xCC }; +static const symbol s_4_21[2] = { 0xC5, 0xCD }; +static const symbol s_4_22[2] = { 0xC9, 0xCD }; +static const symbol s_4_23[2] = { 0xD9, 0xCD }; +static const symbol s_4_24[1] = { 0xCE }; +static const symbol s_4_25[2] = { 0xC5, 0xCE }; +static const symbol s_4_26[2] = { 0xCC, 0xCF }; +static const symbol s_4_27[3] = { 0xC9, 0xCC, 0xCF }; +static const symbol s_4_28[3] = { 0xD9, 0xCC, 0xCF }; +static const symbol s_4_29[2] = { 0xCE, 0xCF }; +static const symbol s_4_30[3] = { 0xC5, 0xCE, 0xCF }; +static const symbol s_4_31[3] = { 0xCE, 0xCE, 0xCF }; +static const symbol s_4_32[2] = { 0xC0, 0xD4 }; +static const symbol s_4_33[3] = { 0xD5, 0xC0, 0xD4 }; +static const symbol s_4_34[2] = { 0xC5, 0xD4 }; +static const symbol s_4_35[3] = { 0xD5, 0xC5, 0xD4 }; +static const symbol s_4_36[2] = { 0xC9, 0xD4 }; +static const symbol s_4_37[2] = { 0xD1, 0xD4 }; +static const symbol s_4_38[2] = { 0xD9, 0xD4 }; +static const symbol s_4_39[2] = { 0xD4, 0xD8 }; +static const symbol s_4_40[3] = { 0xC9, 0xD4, 0xD8 }; +static const symbol s_4_41[3] = { 0xD9, 0xD4, 0xD8 }; +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] = +{ +/* 0 */ { 1, s_4_0, -1, 2, 0}, +/* 1 */ { 2, s_4_1, 0, 2, 0}, +/* 2 */ { 2, s_4_2, -1, 1, 0}, +/* 3 */ { 3, s_4_3, 2, 2, 0}, +/* 4 */ { 3, s_4_4, 2, 2, 0}, +/* 5 */ { 2, s_4_5, -1, 1, 0}, +/* 6 */ { 3, s_4_6, 5, 2, 0}, +/* 7 */ { 3, s_4_7, -1, 1, 0}, +/* 8 */ { 3, s_4_8, -1, 2, 0}, +/* 9 */ { 3, s_4_9, -1, 1, 0}, +/* 10 */ { 4, s_4_10, 9, 2, 0}, +/* 11 */ { 4, s_4_11, 9, 2, 0}, +/* 12 */ { 2, s_4_12, -1, 1, 0}, +/* 13 */ { 3, s_4_13, 12, 2, 0}, +/* 14 */ { 3, s_4_14, 12, 2, 0}, +/* 15 */ { 1, s_4_15, -1, 1, 0}, +/* 16 */ { 2, s_4_16, 15, 2, 0}, +/* 17 */ { 2, s_4_17, 15, 2, 0}, +/* 18 */ { 1, s_4_18, -1, 1, 0}, +/* 19 */ { 2, s_4_19, 18, 2, 0}, +/* 20 */ { 2, s_4_20, 18, 2, 0}, +/* 21 */ { 2, s_4_21, -1, 1, 0}, +/* 22 */ { 2, s_4_22, -1, 2, 0}, +/* 23 */ { 2, s_4_23, -1, 2, 0}, +/* 24 */ { 1, s_4_24, -1, 1, 0}, +/* 25 */ { 2, s_4_25, 24, 2, 0}, +/* 26 */ { 2, s_4_26, -1, 1, 0}, +/* 27 */ { 3, s_4_27, 26, 2, 0}, +/* 28 */ { 3, s_4_28, 26, 2, 0}, +/* 29 */ { 2, s_4_29, -1, 1, 0}, +/* 30 */ { 3, s_4_30, 29, 2, 0}, +/* 31 */ { 3, s_4_31, 29, 1, 0}, +/* 32 */ { 2, s_4_32, -1, 1, 0}, +/* 33 */ { 3, s_4_33, 32, 2, 0}, +/* 34 */ { 2, s_4_34, -1, 1, 0}, +/* 35 */ { 3, s_4_35, 34, 2, 0}, +/* 36 */ { 2, s_4_36, -1, 2, 0}, +/* 37 */ { 2, s_4_37, -1, 2, 0}, +/* 38 */ { 2, s_4_38, -1, 2, 0}, +/* 39 */ { 2, s_4_39, -1, 1, 0}, +/* 40 */ { 3, s_4_40, 39, 2, 0}, +/* 41 */ { 3, s_4_41, 39, 2, 0}, +/* 42 */ { 3, s_4_42, -1, 1, 0}, +/* 43 */ { 3, s_4_43, -1, 2, 0}, +/* 44 */ { 2, s_4_44, -1, 1, 0}, +/* 45 */ { 3, s_4_45, 44, 2, 0} +}; + +static const symbol s_5_0[1] = { 0xC0 }; +static const symbol s_5_1[2] = { 0xC9, 0xC0 }; +static const symbol s_5_2[2] = { 0xD8, 0xC0 }; +static const symbol s_5_3[1] = { 0xC1 }; +static const symbol s_5_4[1] = { 0xC5 }; +static const symbol s_5_5[2] = { 0xC9, 0xC5 }; +static const symbol s_5_6[2] = { 0xD8, 0xC5 }; +static const symbol s_5_7[2] = { 0xC1, 0xC8 }; +static const symbol s_5_8[2] = { 0xD1, 0xC8 }; +static const symbol s_5_9[3] = { 0xC9, 0xD1, 0xC8 }; +static const symbol s_5_10[1] = { 0xC9 }; +static const symbol s_5_11[2] = { 0xC5, 0xC9 }; +static const symbol s_5_12[2] = { 0xC9, 0xC9 }; +static const symbol s_5_13[3] = { 0xC1, 0xCD, 0xC9 }; +static const symbol s_5_14[3] = { 0xD1, 0xCD, 0xC9 }; +static const symbol s_5_15[4] = { 0xC9, 0xD1, 0xCD, 0xC9 }; +static const symbol s_5_16[1] = { 0xCA }; +static const symbol s_5_17[2] = { 0xC5, 0xCA }; +static const symbol s_5_18[3] = { 0xC9, 0xC5, 0xCA }; +static const symbol s_5_19[2] = { 0xC9, 0xCA }; +static const symbol s_5_20[2] = { 0xCF, 0xCA }; +static const symbol s_5_21[2] = { 0xC1, 0xCD }; +static const symbol s_5_22[2] = { 0xC5, 0xCD }; +static const symbol s_5_23[3] = { 0xC9, 0xC5, 0xCD }; +static const symbol s_5_24[2] = { 0xCF, 0xCD }; +static const symbol s_5_25[2] = { 0xD1, 0xCD }; +static const symbol s_5_26[3] = { 0xC9, 0xD1, 0xCD }; +static const symbol s_5_27[1] = { 0xCF }; +static const symbol s_5_28[1] = { 0xD1 }; +static const symbol s_5_29[2] = { 0xC9, 0xD1 }; +static const symbol s_5_30[2] = { 0xD8, 0xD1 }; +static const symbol s_5_31[1] = { 0xD5 }; +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] = +{ +/* 0 */ { 1, s_5_0, -1, 1, 0}, +/* 1 */ { 2, s_5_1, 0, 1, 0}, +/* 2 */ { 2, s_5_2, 0, 1, 0}, +/* 3 */ { 1, s_5_3, -1, 1, 0}, +/* 4 */ { 1, s_5_4, -1, 1, 0}, +/* 5 */ { 2, s_5_5, 4, 1, 0}, +/* 6 */ { 2, s_5_6, 4, 1, 0}, +/* 7 */ { 2, s_5_7, -1, 1, 0}, +/* 8 */ { 2, s_5_8, -1, 1, 0}, +/* 9 */ { 3, s_5_9, 8, 1, 0}, +/* 10 */ { 1, s_5_10, -1, 1, 0}, +/* 11 */ { 2, s_5_11, 10, 1, 0}, +/* 12 */ { 2, s_5_12, 10, 1, 0}, +/* 13 */ { 3, s_5_13, 10, 1, 0}, +/* 14 */ { 3, s_5_14, 10, 1, 0}, +/* 15 */ { 4, s_5_15, 14, 1, 0}, +/* 16 */ { 1, s_5_16, -1, 1, 0}, +/* 17 */ { 2, s_5_17, 16, 1, 0}, +/* 18 */ { 3, s_5_18, 17, 1, 0}, +/* 19 */ { 2, s_5_19, 16, 1, 0}, +/* 20 */ { 2, s_5_20, 16, 1, 0}, +/* 21 */ { 2, s_5_21, -1, 1, 0}, +/* 22 */ { 2, s_5_22, -1, 1, 0}, +/* 23 */ { 3, s_5_23, 22, 1, 0}, +/* 24 */ { 2, s_5_24, -1, 1, 0}, +/* 25 */ { 2, s_5_25, -1, 1, 0}, +/* 26 */ { 3, s_5_26, 25, 1, 0}, +/* 27 */ { 1, s_5_27, -1, 1, 0}, +/* 28 */ { 1, s_5_28, -1, 1, 0}, +/* 29 */ { 2, s_5_29, 28, 1, 0}, +/* 30 */ { 2, s_5_30, 28, 1, 0}, +/* 31 */ { 1, s_5_31, -1, 1, 0}, +/* 32 */ { 2, s_5_32, -1, 1, 0}, +/* 33 */ { 2, s_5_33, -1, 1, 0}, +/* 34 */ { 1, s_5_34, -1, 1, 0}, +/* 35 */ { 1, s_5_35, -1, 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] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 4, s_6_1, -1, 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] = +{ +/* 0 */ { 4, s_7_0, -1, 1, 0}, +/* 1 */ { 1, s_7_1, -1, 2, 0}, +/* 2 */ { 1, s_7_2, -1, 3, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 35, 130, 34, 18 }; + +static const symbol s_0[] = { 0xC1 }; +static const symbol s_1[] = { 0xD1 }; +static const symbol s_2[] = { 0xC1 }; +static const symbol s_3[] = { 0xD1 }; +static const symbol s_4[] = { 0xC1 }; +static const symbol s_5[] = { 0xD1 }; +static const symbol s_6[] = { 0xCE }; +static const symbol s_7[] = { 0xCE }; +static const symbol s_8[] = { 0xCE }; +static const symbol s_9[] = { 0xC9 }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c1 = z->c; /* do, line 63 */ + { /* gopast */ /* grouping v, line 64 */ + int ret = out_grouping(z, g_v, 192, 220, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[0] = z->c; /* setmark pV, line 64 */ + { /* gopast */ /* non v, line 64 */ + int ret = in_grouping(z, g_v, 192, 220, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* grouping v, line 65 */ + int ret = out_grouping(z, g_v, 192, 220, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 65 */ + int ret = in_grouping(z, g_v, 192, 220, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 65 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_perfective_gerund(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 74 */ + 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); /* substring, line 74 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 74 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 78 */ + if (!(eq_s_b(z, 1, s_0))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_1))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 85 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjective(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 90 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((2271009 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_1, 26); /* substring, line 90 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 90 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjectival(struct SN_env * z) { + int among_var; + { int ret = r_adjective(z); + if (ret == 0) return 0; /* call adjective, line 104 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */ + z->ket = z->c; /* [, line 112 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((671113216 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m_keep; goto lab0; } + among_var = find_among_b(z, a_2, 8); /* substring, line 112 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 112 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 117 */ + if (!(eq_s_b(z, 1, s_2))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_3))) { z->c = z->l - m_keep; goto lab0; } + } + lab1: + { int ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 124 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + return 1; +} + +static int r_reflexive(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 131 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 209 && z->p[z->c - 1] != 216)) return 0; + among_var = find_among_b(z, a_3, 2); /* substring, line 131 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 131 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 139 */ + 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); /* substring, line 139 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 139 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 145 */ + if (!(eq_s_b(z, 1, s_4))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_5))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 153 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_noun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 162 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 6 || !((60991267 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_5, 36); /* substring, line 162 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 162 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 169 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_derivational(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 178 */ + if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 212 && z->p[z->c - 1] != 216)) return 0; + among_var = find_among_b(z, a_6, 2); /* substring, line 178 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 178 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 178 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 181 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_tidy_up(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 186 */ + 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); /* substring, line 186 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 186 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 190 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 191 */ + if (!(eq_s_b(z, 1, s_6))) return 0; + z->bra = z->c; /* ], line 191 */ + if (!(eq_s_b(z, 1, s_7))) return 0; + { int ret = slice_del(z); /* delete, line 191 */ + if (ret < 0) return ret; + } + break; + case 2: + if (!(eq_s_b(z, 1, s_8))) return 0; + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 196 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int russian_KOI8_R_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 203 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 203 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 204 */ + + { int mlimit; /* setlimit, line 204 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 204 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + { int m3 = z->l - z->c; (void)m3; /* do, line 205 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 206 */ + { int ret = r_perfective_gerund(z); + if (ret == 0) goto lab3; /* call perfective_gerund, line 206 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = z->l - m4; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 207 */ + { int ret = r_reflexive(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call reflexive, line 207 */ + if (ret < 0) return ret; + } + lab4: + ; + } + { int m5 = z->l - z->c; (void)m5; /* or, line 208 */ + { int ret = r_adjectival(z); + if (ret == 0) goto lab6; /* call adjectival, line 208 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m5; + { int ret = r_verb(z); + if (ret == 0) goto lab7; /* call verb, line 208 */ + if (ret < 0) return ret; + } + goto lab5; + lab7: + z->c = z->l - m5; + { int ret = r_noun(z); + if (ret == 0) goto lab1; /* call noun, line 208 */ + if (ret < 0) return ret; + } + } + lab5: + ; + } + lab2: + lab1: + z->c = z->l - m3; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 211 */ + z->ket = z->c; /* [, line 211 */ + if (!(eq_s_b(z, 1, s_9))) { z->c = z->l - m_keep; goto lab8; } + z->bra = z->c; /* ], line 211 */ + { int ret = slice_del(z); /* delete, line 211 */ + if (ret < 0) return ret; + } + lab8: + ; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 214 */ + { int ret = r_derivational(z); + if (ret == 0) goto lab9; /* call derivational, line 214 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 215 */ + { int ret = r_tidy_up(z); + if (ret == 0) goto lab10; /* call tidy_up, line 215 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m7; + } + z->lb = mlimit; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * russian_KOI8_R_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void russian_KOI8_R_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_KOI8_R_russian.h b/src_c/stem_KOI8_R_russian.h new file mode 100644 index 0000000..de2179d --- /dev/null +++ b/src_c/stem_KOI8_R_russian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#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); + +extern int russian_KOI8_R_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_danish.c b/src_c/stem_UTF_8_danish.c new file mode 100644 index 0000000..e470542 --- /dev/null +++ b/src_c/stem_UTF_8_danish.c @@ -0,0 +1,339 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int danish_UTF_8_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_UTF_8_create_env(void); +extern void danish_UTF_8_close_env(struct SN_env * z); + + +#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' }; +static const symbol s_0_3[1] = { 'e' }; +static const symbol s_0_4[5] = { 'e', 'r', 'e', 'd', 'e' }; +static const symbol s_0_5[4] = { 'e', 'n', 'd', 'e' }; +static const symbol s_0_6[6] = { 'e', 'r', 'e', 'n', 'd', 'e' }; +static const symbol s_0_7[3] = { 'e', 'n', 'e' }; +static const symbol s_0_8[4] = { 'e', 'r', 'n', 'e' }; +static const symbol s_0_9[3] = { 'e', 'r', 'e' }; +static const symbol s_0_10[2] = { 'e', 'n' }; +static const symbol s_0_11[5] = { 'h', 'e', 'd', 'e', 'n' }; +static const symbol s_0_12[4] = { 'e', 'r', 'e', 'n' }; +static const symbol s_0_13[2] = { 'e', 'r' }; +static const symbol s_0_14[5] = { 'h', 'e', 'd', 'e', 'r' }; +static const symbol s_0_15[4] = { 'e', 'r', 'e', 'r' }; +static const symbol s_0_16[1] = { 's' }; +static const symbol s_0_17[4] = { 'h', 'e', 'd', 's' }; +static const symbol s_0_18[2] = { 'e', 's' }; +static const symbol s_0_19[5] = { 'e', 'n', 'd', 'e', 's' }; +static const symbol s_0_20[7] = { 'e', 'r', 'e', 'n', 'd', 'e', 's' }; +static const symbol s_0_21[4] = { 'e', 'n', 'e', 's' }; +static const symbol s_0_22[5] = { 'e', 'r', 'n', 'e', 's' }; +static const symbol s_0_23[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_0_24[3] = { 'e', 'n', 's' }; +static const symbol s_0_25[6] = { 'h', 'e', 'd', 'e', 'n', 's' }; +static const symbol s_0_26[5] = { 'e', 'r', 'e', 'n', 's' }; +static const symbol s_0_27[3] = { 'e', 'r', 's' }; +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] = +{ +/* 0 */ { 3, s_0_0, -1, 1, 0}, +/* 1 */ { 5, s_0_1, 0, 1, 0}, +/* 2 */ { 4, s_0_2, -1, 1, 0}, +/* 3 */ { 1, s_0_3, -1, 1, 0}, +/* 4 */ { 5, s_0_4, 3, 1, 0}, +/* 5 */ { 4, s_0_5, 3, 1, 0}, +/* 6 */ { 6, s_0_6, 5, 1, 0}, +/* 7 */ { 3, s_0_7, 3, 1, 0}, +/* 8 */ { 4, s_0_8, 3, 1, 0}, +/* 9 */ { 3, s_0_9, 3, 1, 0}, +/* 10 */ { 2, s_0_10, -1, 1, 0}, +/* 11 */ { 5, s_0_11, 10, 1, 0}, +/* 12 */ { 4, s_0_12, 10, 1, 0}, +/* 13 */ { 2, s_0_13, -1, 1, 0}, +/* 14 */ { 5, s_0_14, 13, 1, 0}, +/* 15 */ { 4, s_0_15, 13, 1, 0}, +/* 16 */ { 1, s_0_16, -1, 2, 0}, +/* 17 */ { 4, s_0_17, 16, 1, 0}, +/* 18 */ { 2, s_0_18, 16, 1, 0}, +/* 19 */ { 5, s_0_19, 18, 1, 0}, +/* 20 */ { 7, s_0_20, 19, 1, 0}, +/* 21 */ { 4, s_0_21, 18, 1, 0}, +/* 22 */ { 5, s_0_22, 18, 1, 0}, +/* 23 */ { 4, s_0_23, 18, 1, 0}, +/* 24 */ { 3, s_0_24, 16, 1, 0}, +/* 25 */ { 6, s_0_25, 24, 1, 0}, +/* 26 */ { 5, s_0_26, 24, 1, 0}, +/* 27 */ { 3, s_0_27, 16, 1, 0}, +/* 28 */ { 3, s_0_28, 16, 1, 0}, +/* 29 */ { 5, s_0_29, 28, 1, 0}, +/* 30 */ { 2, s_0_30, -1, 1, 0}, +/* 31 */ { 4, s_0_31, 30, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -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[4] = { 'e', 'l', 'i', 'g' }; +static const symbol s_2_3[3] = { 'e', 'l', 's' }; +static const symbol s_2_4[5] = { 'l', 0xC3, 0xB8, 's', 't' }; + +static const struct among a_2[5] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 4, s_2_2, 1, 1, 0}, +/* 3 */ { 3, s_2_3, -1, 1, 0}, +/* 4 */ { 5, s_2_4, -1, 2, 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 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', 0xC3, 0xB8, 's' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c_test = z->c; /* test, line 33 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); + if (ret < 0) return 0; + z->c = ret; /* hop, line 33 */ + } + z->I[1] = z->c; /* setmark x, line 33 */ + z->c = c_test; + } + if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 34 */ + { /* gopast */ /* non v, line 34 */ + int ret = in_grouping_U(z, g_v, 97, 248, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 34 */ + /* try, line 35 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 41 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 41 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 41 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 32); /* substring, line 41 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 41 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 48 */ + if (ret < 0) return ret; + } + break; + case 2: + if (in_grouping_b_U(z, g_s_ending, 97, 229, 0)) return 0; + { int ret = slice_del(z); /* delete, line 50 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 55 */ + { int mlimit; /* setlimit, line 56 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 56 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 56 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit; return 0; } /* substring, line 56 */ + z->bra = z->c; /* ], line 56 */ + z->lb = mlimit; + } + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 62 */ + } + z->bra = z->c; /* ], line 62 */ + { int ret = slice_del(z); /* delete, line 62 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 66 */ + z->ket = z->c; /* [, line 66 */ + if (!(eq_s_b(z, 2, s_0))) goto lab0; + z->bra = z->c; /* ], line 66 */ + if (!(eq_s_b(z, 2, s_1))) goto lab0; + { int ret = slice_del(z); /* delete, line 66 */ + if (ret < 0) return ret; + } + lab0: + z->c = z->l - m1; + } + { int mlimit; /* setlimit, line 67 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 67 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + z->ket = z->c; /* [, line 67 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 5); /* substring, line 67 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 67 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 70 */ + if (ret < 0) return ret; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 70 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab1; /* call consonant_pair, line 70 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m3; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_2); /* <-, line 72 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_undouble(struct SN_env * z) { + { int mlimit; /* setlimit, line 76 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 76 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 76 */ + if (out_grouping_b_U(z, g_v, 97, 248, 0)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 76 */ + z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 76 */ + if (z->S[0] == 0) return -1; /* -> ch, line 76 */ + z->lb = mlimit; + } + if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 77 */ + { int ret = slice_del(z); /* delete, line 78 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int danish_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 84 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 84 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 85 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 86 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 86 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 87 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 87 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 88 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 88 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 89 */ + { int ret = r_undouble(z); + if (ret == 0) goto lab4; /* call undouble, line 89 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * danish_UTF_8_create_env(void) { return SN_create_env(1, 2, 0); } + +extern void danish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 1); } + diff --git a/src_c/stem_UTF_8_danish.h b/src_c/stem_UTF_8_danish.h new file mode 100644 index 0000000..ed744d4 --- /dev/null +++ b/src_c/stem_UTF_8_danish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * danish_UTF_8_create_env(void); +extern void danish_UTF_8_close_env(struct SN_env * z); + +extern int danish_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_dutch.c b/src_c/stem_UTF_8_dutch.c new file mode 100644 index 0000000..06cb812 --- /dev/null +++ b/src_c/stem_UTF_8_dutch.c @@ -0,0 +1,634 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int dutch_UTF_8_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); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * dutch_UTF_8_create_env(void); +extern void dutch_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[2] = { 0xC3, 0xA1 }; +static const symbol s_0_2[2] = { 0xC3, 0xA4 }; +static const symbol s_0_3[2] = { 0xC3, 0xA9 }; +static const symbol s_0_4[2] = { 0xC3, 0xAB }; +static const symbol s_0_5[2] = { 0xC3, 0xAD }; +static const symbol s_0_6[2] = { 0xC3, 0xAF }; +static const symbol s_0_7[2] = { 0xC3, 0xB3 }; +static const symbol s_0_8[2] = { 0xC3, 0xB6 }; +static const symbol s_0_9[2] = { 0xC3, 0xBA }; +static const symbol s_0_10[2] = { 0xC3, 0xBC }; + +static const struct among a_0[11] = +{ +/* 0 */ { 0, 0, -1, 6, 0}, +/* 1 */ { 2, s_0_1, 0, 1, 0}, +/* 2 */ { 2, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, 2, 0}, +/* 4 */ { 2, s_0_4, 0, 2, 0}, +/* 5 */ { 2, s_0_5, 0, 3, 0}, +/* 6 */ { 2, s_0_6, 0, 3, 0}, +/* 7 */ { 2, s_0_7, 0, 4, 0}, +/* 8 */ { 2, s_0_8, 0, 4, 0}, +/* 9 */ { 2, s_0_9, 0, 5, 0}, +/* 10 */ { 2, s_0_10, 0, 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, -1, 3, 0}, +/* 1 */ { 1, s_1_1, 0, 2, 0}, +/* 2 */ { 1, s_1_2, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -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] = +{ +/* 0 */ { 3, s_3_0, -1, 2, 0}, +/* 1 */ { 2, s_3_1, -1, 3, 0}, +/* 2 */ { 2, s_3_2, -1, 2, 0}, +/* 3 */ { 5, s_3_3, 2, 1, 0}, +/* 4 */ { 1, s_3_4, -1, 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] = +{ +/* 0 */ { 3, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 2, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 3, 0}, +/* 4 */ { 4, s_4_4, -1, 4, 0}, +/* 5 */ { 3, s_4_5, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, -1, 0}, +/* 1 */ { 2, s_5_1, -1, -1, 0}, +/* 2 */ { 2, s_5_2, -1, -1, 0}, +/* 3 */ { 2, s_5_3, -1, -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 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[] = { 'Y' }; +static const symbol s_7[] = { 'i' }; +static const symbol s_8[] = { 'I' }; +static const symbol s_9[] = { 'y' }; +static const symbol s_10[] = { 'Y' }; +static const symbol s_11[] = { 'y' }; +static const symbol s_12[] = { 'i' }; +static const symbol s_13[] = { 'e' }; +static const symbol s_14[] = { 'g', 'e', 'm' }; +static const symbol s_15[] = { 'h', 'e', 'i', 'd' }; +static const symbol s_16[] = { 'h', 'e', 'i', 'd' }; +static const symbol s_17[] = { 'c' }; +static const symbol s_18[] = { 'e', 'n' }; +static const symbol s_19[] = { 'i', 'g' }; +static const symbol s_20[] = { 'e' }; +static const symbol s_21[] = { 'e' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + { int c_test = z->c; /* test, line 42 */ + while(1) { /* repeat, line 42 */ + int c1 = z->c; + z->bra = z->c; /* [, line 43 */ + if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((340306450 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 6; else + among_var = find_among(z, a_0, 11); /* substring, line 43 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 43 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 45 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 47 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 49 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 54 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + { int c_keep = z->c; /* try, line 57 */ + z->bra = z->c; /* [, line 57 */ + if (!(eq_s(z, 1, s_5))) { z->c = c_keep; goto lab1; } + z->ket = z->c; /* ], line 57 */ + { int ret = slice_from_s(z, 1, s_6); /* <-, line 57 */ + if (ret < 0) return ret; + } + lab1: + ; + } + while(1) { /* repeat, line 58 */ + int c2 = z->c; + while(1) { /* goto, line 58 */ + int c3 = z->c; + if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab3; + z->bra = z->c; /* [, line 59 */ + { int c4 = z->c; /* or, line 59 */ + if (!(eq_s(z, 1, s_7))) goto lab5; + z->ket = z->c; /* ], line 59 */ + if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab5; + { int ret = slice_from_s(z, 1, s_8); /* <-, line 59 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = c4; + if (!(eq_s(z, 1, s_9))) goto lab3; + z->ket = z->c; /* ], line 60 */ + { int ret = slice_from_s(z, 1, s_10); /* <-, line 60 */ + if (ret < 0) return ret; + } + } + lab4: + z->c = c3; + break; + lab3: + z->c = c3; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab2; + z->c = ret; /* goto, line 58 */ + } + } + continue; + lab2: + z->c = c2; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { /* gopast */ /* grouping v, line 69 */ + int ret = out_grouping_U(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 69 */ + int ret = in_grouping_U(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 69 */ + /* try, line 70 */ + if (!(z->I[0] < 3)) goto lab0; + z->I[0] = 3; +lab0: + { /* gopast */ /* grouping v, line 71 */ + int ret = out_grouping_U(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 71 */ + int ret = in_grouping_U(z, g_v, 97, 232, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 71 */ + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 75 */ + int c1 = z->c; + z->bra = z->c; /* [, line 77 */ + 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); /* substring, line 77 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 77 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 80 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_undouble(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 91 */ + 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; /* among, line 91 */ + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 91 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 91 */ + } + z->bra = z->c; /* ], line 91 */ + { int ret = slice_del(z); /* delete, line 91 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_e_ending(struct SN_env * z) { + z->B[0] = 0; /* unset e_found, line 95 */ + z->ket = z->c; /* [, line 96 */ + if (!(eq_s_b(z, 1, s_13))) return 0; + z->bra = z->c; /* ], line 96 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 96 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 96 */ + if (out_grouping_b_U(z, g_v, 97, 232, 0)) return 0; + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set e_found, line 97 */ + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 98 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_en_ending(struct SN_env * z) { + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 102 */ + if (ret < 0) return ret; + } + { int m1 = z->l - z->c; (void)m1; /* and, line 102 */ + if (out_grouping_b_U(z, g_v, 97, 232, 0)) return 0; + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* not, line 102 */ + if (!(eq_s_b(z, 3, s_14))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + } + { int ret = slice_del(z); /* delete, line 102 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 103 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 107 */ + z->ket = z->c; /* [, line 108 */ + 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); /* substring, line 108 */ + if (!(among_var)) goto lab0; + z->bra = z->c; /* ], line 108 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_15); /* <-, line 110 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_en_ending(z); + if (ret == 0) goto lab0; /* call en_ending, line 113 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 116 */ + if (ret < 0) return ret; + } + if (out_grouping_b_U(z, g_v_j, 97, 232, 0)) goto lab0; + { int ret = slice_del(z); /* delete, line 116 */ + if (ret < 0) return ret; + } + break; + } + lab0: + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 120 */ + { int ret = r_e_ending(z); + if (ret == 0) goto lab1; /* call e_ending, line 120 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 122 */ + z->ket = z->c; /* [, line 122 */ + if (!(eq_s_b(z, 4, s_16))) goto lab2; + z->bra = z->c; /* ], line 122 */ + { int ret = r_R2(z); + if (ret == 0) goto lab2; /* call R2, line 122 */ + if (ret < 0) return ret; + } + { int m4 = z->l - z->c; (void)m4; /* not, line 122 */ + if (!(eq_s_b(z, 1, s_17))) goto lab3; + goto lab2; + lab3: + z->c = z->l - m4; + } + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 123 */ + if (!(eq_s_b(z, 2, s_18))) goto lab2; + z->bra = z->c; /* ], line 123 */ + { int ret = r_en_ending(z); + if (ret == 0) goto lab2; /* call en_ending, line 123 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 126 */ + z->ket = z->c; /* [, line 127 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab4; + among_var = find_among_b(z, a_4, 6); /* substring, line 127 */ + if (!(among_var)) goto lab4; + z->bra = z->c; /* ], line 127 */ + switch(among_var) { + case 0: goto lab4; + case 1: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 129 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 130 */ + z->ket = z->c; /* [, line 130 */ + if (!(eq_s_b(z, 2, s_19))) goto lab6; + z->bra = z->c; /* ], line 130 */ + { int ret = r_R2(z); + if (ret == 0) goto lab6; /* call R2, line 130 */ + if (ret < 0) return ret; + } + { int m7 = z->l - z->c; (void)m7; /* not, line 130 */ + if (!(eq_s_b(z, 1, s_20))) goto lab7; + goto lab6; + lab7: + z->c = z->l - m7; + } + { int ret = slice_del(z); /* delete, line 130 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_undouble(z); + if (ret == 0) goto lab4; /* call undouble, line 130 */ + if (ret < 0) return ret; + } + } + lab5: + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 133 */ + if (ret < 0) return ret; + } + { int m8 = z->l - z->c; (void)m8; /* not, line 133 */ + if (!(eq_s_b(z, 1, s_21))) goto lab8; + goto lab4; + lab8: + z->c = z->l - m8; + } + { int ret = slice_del(z); /* delete, line 133 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 136 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 136 */ + if (ret < 0) return ret; + } + { int ret = r_e_ending(z); + if (ret == 0) goto lab4; /* call e_ending, line 136 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 139 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 139 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) goto lab4; /* call R2, line 142 */ + if (ret < 0) return ret; + } + if (!(z->B[0])) goto lab4; /* Boolean test e_found, line 142 */ + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + break; + } + lab4: + z->c = z->l - m5; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 146 */ + if (out_grouping_b_U(z, g_v_I, 73, 232, 0)) goto lab9; + { int m_test = z->l - z->c; /* test, line 148 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab9; + if (!(find_among_b(z, a_5, 4))) goto lab9; /* among, line 149 */ + if (out_grouping_b_U(z, g_v, 97, 232, 0)) goto lab9; + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 152 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab9; + z->c = ret; /* next, line 152 */ + } + z->bra = z->c; /* ], line 152 */ + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m9; + } + return 1; +} + +extern int dutch_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 159 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 159 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 160 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 160 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 161 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 162 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab2; /* call standard_suffix, line 162 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + z->c = z->lb; + { int c4 = z->c; /* do, line 163 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab3; /* call postlude, line 163 */ + if (ret < 0) return ret; + } + lab3: + z->c = c4; + } + return 1; +} + +extern struct SN_env * dutch_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void dutch_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_dutch.h b/src_c/stem_UTF_8_dutch.h new file mode 100644 index 0000000..a996464 --- /dev/null +++ b/src_c/stem_UTF_8_dutch.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * dutch_UTF_8_create_env(void); +extern void dutch_UTF_8_close_env(struct SN_env * z); + +extern int dutch_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_english.c b/src_c/stem_UTF_8_english.c new file mode 100644 index 0000000..a00f721 --- /dev/null +++ b/src_c/stem_UTF_8_english.c @@ -0,0 +1,1125 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int english_UTF_8_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); +static int r_Step_3(struct SN_env * z); +static int r_Step_2(struct SN_env * z); +static int r_Step_1c(struct SN_env * z); +static int r_Step_1b(struct SN_env * z); +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); +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_UTF_8_create_env(void); +extern void english_UTF_8_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 5, s_0_0, -1, -1, 0}, +/* 1 */ { 6, s_0_1, -1, -1, 0}, +/* 2 */ { 5, s_0_2, -1, -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] = +{ +/* 0 */ { 1, s_1_0, -1, 1, 0}, +/* 1 */ { 3, s_1_1, 0, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 1, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'e', 'd' }; +static const symbol s_2_1[1] = { 's' }; +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] = +{ +/* 0 */ { 3, s_2_0, -1, 2, 0}, +/* 1 */ { 1, s_2_1, -1, 3, 0}, +/* 2 */ { 3, s_2_2, 1, 2, 0}, +/* 3 */ { 4, s_2_3, 1, 1, 0}, +/* 4 */ { 2, s_2_4, 1, -1, 0}, +/* 5 */ { 2, s_2_5, 1, -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, 0, -1, 3, 0}, +/* 1 */ { 2, s_3_1, 0, 2, 0}, +/* 2 */ { 2, s_3_2, 0, 2, 0}, +/* 3 */ { 2, s_3_3, 0, 2, 0}, +/* 4 */ { 2, s_3_4, 0, 2, 0}, +/* 5 */ { 2, s_3_5, 0, 1, 0}, +/* 6 */ { 2, s_3_6, 0, 2, 0}, +/* 7 */ { 2, s_3_7, 0, 2, 0}, +/* 8 */ { 2, s_3_8, 0, 2, 0}, +/* 9 */ { 2, s_3_9, 0, 2, 0}, +/* 10 */ { 2, s_3_10, 0, 1, 0}, +/* 11 */ { 2, s_3_11, 0, 2, 0}, +/* 12 */ { 2, s_3_12, 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] = +{ +/* 0 */ { 2, s_4_0, -1, 2, 0}, +/* 1 */ { 3, s_4_1, 0, 1, 0}, +/* 2 */ { 3, s_4_2, -1, 2, 0}, +/* 3 */ { 4, s_4_3, -1, 2, 0}, +/* 4 */ { 5, s_4_4, 3, 1, 0}, +/* 5 */ { 5, s_4_5, -1, 2, 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] = +{ +/* 0 */ { 4, s_5_0, -1, 3, 0}, +/* 1 */ { 4, s_5_1, -1, 2, 0}, +/* 2 */ { 3, s_5_2, -1, 13, 0}, +/* 3 */ { 2, s_5_3, -1, 16, 0}, +/* 4 */ { 3, s_5_4, 3, 12, 0}, +/* 5 */ { 4, s_5_5, 4, 4, 0}, +/* 6 */ { 4, s_5_6, 3, 8, 0}, +/* 7 */ { 5, s_5_7, 3, 14, 0}, +/* 8 */ { 6, s_5_8, 3, 15, 0}, +/* 9 */ { 5, s_5_9, 3, 10, 0}, +/* 10 */ { 5, s_5_10, 3, 5, 0}, +/* 11 */ { 5, s_5_11, -1, 8, 0}, +/* 12 */ { 6, s_5_12, -1, 12, 0}, +/* 13 */ { 5, s_5_13, -1, 11, 0}, +/* 14 */ { 6, s_5_14, -1, 1, 0}, +/* 15 */ { 7, s_5_15, 14, 7, 0}, +/* 16 */ { 5, s_5_16, -1, 8, 0}, +/* 17 */ { 5, s_5_17, -1, 7, 0}, +/* 18 */ { 7, s_5_18, 17, 6, 0}, +/* 19 */ { 4, s_5_19, -1, 6, 0}, +/* 20 */ { 4, s_5_20, -1, 7, 0}, +/* 21 */ { 7, s_5_21, -1, 11, 0}, +/* 22 */ { 7, s_5_22, -1, 9, 0}, +/* 23 */ { 7, s_5_23, -1, 10, 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] = +{ +/* 0 */ { 5, s_6_0, -1, 4, 0}, +/* 1 */ { 5, s_6_1, -1, 6, 0}, +/* 2 */ { 5, s_6_2, -1, 3, 0}, +/* 3 */ { 5, s_6_3, -1, 4, 0}, +/* 4 */ { 4, s_6_4, -1, 4, 0}, +/* 5 */ { 6, s_6_5, -1, 1, 0}, +/* 6 */ { 7, s_6_6, 5, 2, 0}, +/* 7 */ { 3, s_6_7, -1, 5, 0}, +/* 8 */ { 4, s_6_8, -1, 5, 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] = +{ +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 4, s_7_1, -1, 1, 0}, +/* 2 */ { 4, s_7_2, -1, 1, 0}, +/* 3 */ { 4, s_7_3, -1, 1, 0}, +/* 4 */ { 4, s_7_4, -1, 1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 3, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 3, s_7_8, -1, 1, 0}, +/* 9 */ { 2, s_7_9, -1, 1, 0}, +/* 10 */ { 3, s_7_10, -1, 1, 0}, +/* 11 */ { 3, s_7_11, -1, 2, 0}, +/* 12 */ { 2, s_7_12, -1, 1, 0}, +/* 13 */ { 3, s_7_13, -1, 1, 0}, +/* 14 */ { 3, s_7_14, -1, 1, 0}, +/* 15 */ { 3, s_7_15, -1, 1, 0}, +/* 16 */ { 4, s_7_16, 15, 1, 0}, +/* 17 */ { 5, s_7_17, 16, 1, 0} +}; + +static const symbol s_8_0[1] = { 'e' }; +static const symbol s_8_1[1] = { 'l' }; + +static const struct among a_8[2] = +{ +/* 0 */ { 1, s_8_0, -1, 1, 0}, +/* 1 */ { 1, s_8_1, -1, 2, 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] = +{ +/* 0 */ { 7, s_9_0, -1, -1, 0}, +/* 1 */ { 7, s_9_1, -1, -1, 0}, +/* 2 */ { 6, s_9_2, -1, -1, 0}, +/* 3 */ { 7, s_9_3, -1, -1, 0}, +/* 4 */ { 6, s_9_4, -1, -1, 0}, +/* 5 */ { 7, s_9_5, -1, -1, 0}, +/* 6 */ { 7, s_9_6, -1, -1, 0}, +/* 7 */ { 6, s_9_7, -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 struct among a_10[18] = +{ +/* 0 */ { 5, s_10_0, -1, -1, 0}, +/* 1 */ { 5, s_10_1, -1, -1, 0}, +/* 2 */ { 4, s_10_2, -1, -1, 0}, +/* 3 */ { 6, s_10_3, -1, -1, 0}, +/* 4 */ { 5, s_10_4, -1, 3, 0}, +/* 5 */ { 5, s_10_5, -1, 9, 0}, +/* 6 */ { 6, s_10_6, -1, 7, 0}, +/* 7 */ { 4, s_10_7, -1, -1, 0}, +/* 8 */ { 4, s_10_8, -1, 6, 0}, +/* 9 */ { 5, s_10_9, -1, 4, 0}, +/* 10 */ { 4, s_10_10, -1, -1, 0}, +/* 11 */ { 4, s_10_11, -1, 10, 0}, +/* 12 */ { 6, s_10_12, -1, 11, 0}, +/* 13 */ { 5, s_10_13, -1, 2, 0}, +/* 14 */ { 4, s_10_14, -1, 1, 0}, +/* 15 */ { 3, s_10_15, -1, -1, 0}, +/* 16 */ { 5, s_10_16, -1, 5, 0}, +/* 17 */ { 4, s_10_17, -1, 8, 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 unsigned char g_valid_LI[] = { 55, 141, 2 }; + +static const symbol s_0[] = { '\'' }; +static const symbol s_1[] = { 'y' }; +static const symbol s_2[] = { 'Y' }; +static const symbol s_3[] = { 'y' }; +static const symbol s_4[] = { 'Y' }; +static const symbol s_5[] = { 's', 's' }; +static const symbol s_6[] = { 'i' }; +static const symbol s_7[] = { 'i', 'e' }; +static const symbol s_8[] = { 'e', 'e' }; +static const symbol s_9[] = { 'e' }; +static const symbol s_10[] = { 'e' }; +static const symbol s_11[] = { 'y' }; +static const symbol s_12[] = { 'Y' }; +static const symbol s_13[] = { 'i' }; +static const symbol s_14[] = { 't', 'i', 'o', 'n' }; +static const symbol s_15[] = { 'e', 'n', 'c', 'e' }; +static const symbol s_16[] = { 'a', 'n', 'c', 'e' }; +static const symbol s_17[] = { 'a', 'b', 'l', 'e' }; +static const symbol s_18[] = { 'e', 'n', 't' }; +static const symbol s_19[] = { 'i', 'z', 'e' }; +static const symbol s_20[] = { 'a', 't', 'e' }; +static const symbol s_21[] = { 'a', 'l' }; +static const symbol s_22[] = { 'f', 'u', 'l' }; +static const symbol s_23[] = { 'o', 'u', 's' }; +static const symbol s_24[] = { 'i', 'v', 'e' }; +static const symbol s_25[] = { 'b', 'l', 'e' }; +static const symbol s_26[] = { 'l' }; +static const symbol s_27[] = { 'o', 'g' }; +static const symbol s_28[] = { 'f', 'u', 'l' }; +static const symbol s_29[] = { 'l', 'e', 's', 's' }; +static const symbol s_30[] = { 't', 'i', 'o', 'n' }; +static const symbol s_31[] = { 'a', 't', 'e' }; +static const symbol s_32[] = { 'a', 'l' }; +static const symbol s_33[] = { 'i', 'c' }; +static const symbol s_34[] = { 's' }; +static const symbol s_35[] = { 't' }; +static const symbol s_36[] = { 'l' }; +static const symbol s_37[] = { 's', 'k', 'i' }; +static const symbol s_38[] = { 's', 'k', 'y' }; +static const symbol s_39[] = { 'd', 'i', 'e' }; +static const symbol s_40[] = { 'l', 'i', 'e' }; +static const symbol s_41[] = { 't', 'i', 'e' }; +static const symbol s_42[] = { 'i', 'd', 'l' }; +static const symbol s_43[] = { 'g', 'e', 'n', 't', 'l' }; +static const symbol s_44[] = { 'u', 'g', 'l', 'i' }; +static const symbol s_45[] = { 'e', 'a', 'r', 'l', 'i' }; +static const symbol s_46[] = { 'o', 'n', 'l', 'i' }; +static const symbol s_47[] = { 's', 'i', 'n', 'g', 'l' }; +static const symbol s_48[] = { 'Y' }; +static const symbol s_49[] = { 'y' }; + +static int r_prelude(struct SN_env * z) { + z->B[0] = 0; /* unset Y_found, line 26 */ + { int c1 = z->c; /* do, line 27 */ + z->bra = z->c; /* [, line 27 */ + if (!(eq_s(z, 1, s_0))) goto lab0; + z->ket = z->c; /* ], line 27 */ + { int ret = slice_del(z); /* delete, line 27 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 28 */ + z->bra = z->c; /* [, line 28 */ + if (!(eq_s(z, 1, s_1))) goto lab1; + z->ket = z->c; /* ], line 28 */ + { int ret = slice_from_s(z, 1, s_2); /* <-, line 28 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 28 */ + lab1: + z->c = c2; + } + { int c3 = z->c; /* do, line 29 */ + while(1) { /* repeat, line 29 */ + int c4 = z->c; + while(1) { /* goto, line 29 */ + int c5 = z->c; + if (in_grouping_U(z, g_v, 97, 121, 0)) goto lab4; + z->bra = z->c; /* [, line 29 */ + if (!(eq_s(z, 1, s_3))) goto lab4; + z->ket = z->c; /* ], line 29 */ + z->c = c5; + break; + lab4: + z->c = c5; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab3; + z->c = ret; /* goto, line 29 */ + } + } + { int ret = slice_from_s(z, 1, s_4); /* <-, line 29 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 29 */ + continue; + lab3: + z->c = c4; + break; + } + z->c = c3; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c1 = z->c; /* do, line 35 */ + { int c2 = z->c; /* or, line 41 */ + 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; /* among, line 36 */ + goto lab1; + lab2: + z->c = c2; + { /* gopast */ /* grouping v, line 41 */ + int ret = out_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 41 */ + int ret = in_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + } + lab1: + z->I[0] = z->c; /* setmark p1, line 42 */ + { /* gopast */ /* grouping v, line 43 */ + int ret = out_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 43 */ + int ret = in_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 43 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_shortv(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 51 */ + if (out_grouping_b_U(z, g_v_WXY, 89, 121, 0)) goto lab1; + if (in_grouping_b_U(z, g_v, 97, 121, 0)) goto lab1; + if (out_grouping_b_U(z, g_v, 97, 121, 0)) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (out_grouping_b_U(z, g_v, 97, 121, 0)) return 0; + if (in_grouping_b_U(z, g_v, 97, 121, 0)) return 0; + if (z->c > z->lb) return 0; /* atlimit, line 52 */ + } +lab0: + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_Step_1a(struct SN_env * z) { + int among_var; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 59 */ + z->ket = z->c; /* [, line 60 */ + if (z->c <= z->lb || (z->p[z->c - 1] != 39 && z->p[z->c - 1] != 115)) { z->c = z->l - m_keep; goto lab0; } + among_var = find_among_b(z, a_1, 3); /* substring, line 60 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 60 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + { int ret = slice_del(z); /* delete, line 62 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + z->ket = z->c; /* [, line 65 */ + 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); /* substring, line 65 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 65 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_5); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 68 */ + { int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 2); + if (ret < 0) goto lab2; + z->c = ret; /* hop, line 68 */ + } + { int ret = slice_from_s(z, 1, s_6); /* <-, line 68 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m1; + { int ret = slice_from_s(z, 2, s_7); /* <-, line 68 */ + if (ret < 0) return ret; + } + } + lab1: + break; + case 3: + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 69 */ + } + { /* gopast */ /* grouping v, line 69 */ + int ret = out_grouping_b_U(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + { int ret = slice_del(z); /* delete, line 69 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_1b(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 75 */ + 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); /* substring, line 75 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 75 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 77 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_8); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m_test = z->l - z->c; /* test, line 80 */ + { /* gopast */ /* grouping v, line 80 */ + int ret = out_grouping_b_U(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 80 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 81 */ + 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); /* substring, line 81 */ + if (!(among_var)) return 0; + z->c = z->l - m_test; + } + switch(among_var) { + case 0: return 0; + case 1: + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_9); /* <+, line 83 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + case 2: + z->ket = z->c; /* [, line 86 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 86 */ + } + z->bra = z->c; /* ], line 86 */ + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c != z->I[0]) return 0; /* atmark, line 87 */ + { int m_test = z->l - z->c; /* test, line 87 */ + { int ret = r_shortv(z); + if (ret == 0) return 0; /* call shortv, line 87 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_10); /* <+, line 87 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + } + break; + } + return 1; +} + +static int r_Step_1c(struct SN_env * z) { + z->ket = z->c; /* [, line 94 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 94 */ + if (!(eq_s_b(z, 1, s_11))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_12))) return 0; + } +lab0: + z->bra = z->c; /* ], line 94 */ + if (out_grouping_b_U(z, g_v, 97, 121, 0)) return 0; + { int m2 = z->l - z->c; (void)m2; /* not, line 95 */ + if (z->c > z->lb) goto lab2; /* atlimit, line 95 */ + return 0; + lab2: + z->c = z->l - m2; + } + { int ret = slice_from_s(z, 1, s_13); /* <-, line 96 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_2(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 100 */ + 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); /* substring, line 100 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 100 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 100 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_14); /* <-, line 101 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_15); /* <-, line 102 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_16); /* <-, line 103 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 4, s_17); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_18); /* <-, line 105 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 3, s_19); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 3, s_20); /* <-, line 109 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 2, s_21); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 3, s_22); /* <-, line 112 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 3, s_23); /* <-, line 114 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 3, s_24); /* <-, line 116 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 3, s_25); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 13: + if (!(eq_s_b(z, 1, s_26))) return 0; + { int ret = slice_from_s(z, 2, s_27); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 3, s_28); /* <-, line 120 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_from_s(z, 4, s_29); /* <-, line 121 */ + if (ret < 0) return ret; + } + break; + case 16: + if (in_grouping_b_U(z, g_valid_LI, 99, 116, 0)) return 0; + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_3(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 127 */ + 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); /* substring, line 127 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 127 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 127 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_30); /* <-, line 128 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_31); /* <-, line 129 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_32); /* <-, line 130 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 2, s_33); /* <-, line 132 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 136 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 136 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_4(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 141 */ + 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); /* substring, line 141 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 141 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 141 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 144 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 145 */ + if (!(eq_s_b(z, 1, s_34))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_35))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_5(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 150 */ + 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); /* substring, line 150 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 150 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 151 */ + { int ret = r_R2(z); + if (ret == 0) goto lab1; /* call R2, line 151 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 151 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* not, line 151 */ + { int ret = r_shortv(z); + if (ret == 0) goto lab2; /* call shortv, line 151 */ + if (ret < 0) return ret; + } + return 0; + lab2: + z->c = z->l - m2; + } + } + lab0: + { int ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 152 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_36))) return 0; + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_exception2(struct SN_env * z) { + z->ket = z->c; /* [, line 158 */ + 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; /* substring, line 158 */ + z->bra = z->c; /* ], line 158 */ + if (z->c > z->lb) return 0; /* atlimit, line 158 */ + return 1; +} + +static int r_exception1(struct SN_env * z) { + int among_var; + z->bra = z->c; /* [, line 170 */ + 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); /* substring, line 170 */ + if (!(among_var)) return 0; + z->ket = z->c; /* ], line 170 */ + if (z->c < z->l) return 0; /* atlimit, line 170 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 3, s_37); /* <-, line 174 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 3, s_38); /* <-, line 175 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_39); /* <-, line 176 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 3, s_40); /* <-, line 177 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_41); /* <-, line 178 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 3, s_42); /* <-, line 182 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 5, s_43); /* <-, line 183 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 4, s_44); /* <-, line 184 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 5, s_45); /* <-, line 185 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 4, s_46); /* <-, line 186 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 5, s_47); /* <-, line 187 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + if (!(z->B[0])) return 0; /* Boolean test Y_found, line 203 */ + while(1) { /* repeat, line 203 */ + int c1 = z->c; + while(1) { /* goto, line 203 */ + int c2 = z->c; + z->bra = z->c; /* [, line 203 */ + if (!(eq_s(z, 1, s_48))) goto lab1; + z->ket = z->c; /* ], line 203 */ + z->c = c2; + break; + lab1: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* goto, line 203 */ + } + } + { int ret = slice_from_s(z, 1, s_49); /* <-, line 203 */ + if (ret < 0) return ret; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +extern int english_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* or, line 207 */ + { int ret = r_exception1(z); + if (ret == 0) goto lab1; /* call exception1, line 207 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = c1; + { int c2 = z->c; /* not, line 208 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); + if (ret < 0) goto lab3; + z->c = ret; /* hop, line 208 */ + } + goto lab2; + lab3: + z->c = c2; + } + goto lab0; + lab2: + z->c = c1; + { int c3 = z->c; /* do, line 209 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab4; /* call prelude, line 209 */ + if (ret < 0) return ret; + } + lab4: + z->c = c3; + } + { int c4 = z->c; /* do, line 210 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab5; /* call mark_regions, line 210 */ + if (ret < 0) return ret; + } + lab5: + z->c = c4; + } + z->lb = z->c; z->c = z->l; /* backwards, line 211 */ + + { int m5 = z->l - z->c; (void)m5; /* do, line 213 */ + { int ret = r_Step_1a(z); + if (ret == 0) goto lab6; /* call Step_1a, line 213 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 215 */ + { int ret = r_exception2(z); + if (ret == 0) goto lab8; /* call exception2, line 215 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m6; + { int m7 = z->l - z->c; (void)m7; /* do, line 217 */ + { int ret = r_Step_1b(z); + if (ret == 0) goto lab9; /* call Step_1b, line 217 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 218 */ + { int ret = r_Step_1c(z); + if (ret == 0) goto lab10; /* call Step_1c, line 218 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 220 */ + { int ret = r_Step_2(z); + if (ret == 0) goto lab11; /* call Step_2, line 220 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 221 */ + { int ret = r_Step_3(z); + if (ret == 0) goto lab12; /* call Step_3, line 221 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m10; + } + { int m11 = z->l - z->c; (void)m11; /* do, line 222 */ + { int ret = r_Step_4(z); + if (ret == 0) goto lab13; /* call Step_4, line 222 */ + if (ret < 0) return ret; + } + lab13: + z->c = z->l - m11; + } + { int m12 = z->l - z->c; (void)m12; /* do, line 224 */ + { int ret = r_Step_5(z); + if (ret == 0) goto lab14; /* call Step_5, line 224 */ + if (ret < 0) return ret; + } + lab14: + z->c = z->l - m12; + } + } + lab7: + z->c = z->lb; + { int c13 = z->c; /* do, line 227 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab15; /* call postlude, line 227 */ + if (ret < 0) return ret; + } + lab15: + z->c = c13; + } + } +lab0: + return 1; +} + +extern struct SN_env * english_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void english_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_english.h b/src_c/stem_UTF_8_english.h new file mode 100644 index 0000000..619a8bc --- /dev/null +++ b/src_c/stem_UTF_8_english.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * english_UTF_8_create_env(void); +extern void english_UTF_8_close_env(struct SN_env * z); + +extern int english_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_finnish.c b/src_c/stem_UTF_8_finnish.c new file mode 100644 index 0000000..65a432a --- /dev/null +++ b/src_c/stem_UTF_8_finnish.c @@ -0,0 +1,768 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int finnish_UTF_8_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); +static int r_i_plural(struct SN_env * z); +static int r_case_ending(struct SN_env * z); +static int r_VI(struct SN_env * z); +static int r_LONG(struct SN_env * z); +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_UTF_8_create_env(void); +extern void finnish_UTF_8_close_env(struct SN_env * z); + + +#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' }; +static const symbol s_0_3[3] = { 'h', 'a', 'n' }; +static const symbol s_0_4[3] = { 'k', 'i', 'n' }; +static const symbol s_0_5[4] = { 'h', 0xC3, 0xA4, 'n' }; +static const symbol s_0_6[6] = { 'k', 0xC3, 0xA4, 0xC3, 0xA4, 'n' }; +static const symbol s_0_7[2] = { 'k', 'o' }; +static const symbol s_0_8[3] = { 'p', 0xC3, 0xA4 }; +static const symbol s_0_9[3] = { 'k', 0xC3, 0xB6 }; + +static const struct among a_0[10] = +{ +/* 0 */ { 2, s_0_0, -1, 1, 0}, +/* 1 */ { 3, s_0_1, -1, 2, 0}, +/* 2 */ { 4, s_0_2, -1, 1, 0}, +/* 3 */ { 3, s_0_3, -1, 1, 0}, +/* 4 */ { 3, s_0_4, -1, 1, 0}, +/* 5 */ { 4, s_0_5, -1, 1, 0}, +/* 6 */ { 6, s_0_6, -1, 1, 0}, +/* 7 */ { 2, s_0_7, -1, 1, 0}, +/* 8 */ { 3, s_0_8, -1, 1, 0}, +/* 9 */ { 3, s_0_9, -1, 1, 0} +}; + +static const symbol s_1_0[3] = { 'l', 'l', 'a' }; +static const symbol s_1_1[2] = { 'n', 'a' }; +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] = +{ +/* 0 */ { 3, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 3, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 3, s_1_4, 3, -1, 0}, +/* 5 */ { 3, s_1_5, 3, -1, 0} +}; + +static const symbol s_2_0[4] = { 'l', 'l', 0xC3, 0xA4 }; +static const symbol s_2_1[3] = { 'n', 0xC3, 0xA4 }; +static const symbol s_2_2[4] = { 's', 's', 0xC3, 0xA4 }; +static const symbol s_2_3[3] = { 't', 0xC3, 0xA4 }; +static const symbol s_2_4[4] = { 'l', 't', 0xC3, 0xA4 }; +static const symbol s_2_5[4] = { 's', 't', 0xC3, 0xA4 }; + +static const struct among a_2[6] = +{ +/* 0 */ { 4, s_2_0, -1, -1, 0}, +/* 1 */ { 3, s_2_1, -1, -1, 0}, +/* 2 */ { 4, s_2_2, -1, -1, 0}, +/* 3 */ { 3, s_2_3, -1, -1, 0}, +/* 4 */ { 4, s_2_4, 3, -1, 0}, +/* 5 */ { 4, s_2_5, 3, -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] = +{ +/* 0 */ { 3, s_3_0, -1, -1, 0}, +/* 1 */ { 3, s_3_1, -1, -1, 0} +}; + +static const symbol s_4_0[3] = { 'n', 's', 'a' }; +static const symbol s_4_1[3] = { 'm', 'm', 'e' }; +static const symbol s_4_2[3] = { 'n', 'n', 'e' }; +static const symbol s_4_3[2] = { 'n', 'i' }; +static const symbol s_4_4[2] = { 's', 'i' }; +static const symbol s_4_5[2] = { 'a', 'n' }; +static const symbol s_4_6[2] = { 'e', 'n' }; +static const symbol s_4_7[3] = { 0xC3, 0xA4, 'n' }; +static const symbol s_4_8[4] = { 'n', 's', 0xC3, 0xA4 }; + +static const struct among a_4[9] = +{ +/* 0 */ { 3, s_4_0, -1, 3, 0}, +/* 1 */ { 3, s_4_1, -1, 3, 0}, +/* 2 */ { 3, s_4_2, -1, 3, 0}, +/* 3 */ { 2, s_4_3, -1, 2, 0}, +/* 4 */ { 2, s_4_4, -1, 1, 0}, +/* 5 */ { 2, s_4_5, -1, 4, 0}, +/* 6 */ { 2, s_4_6, -1, 6, 0}, +/* 7 */ { 3, s_4_7, -1, 5, 0}, +/* 8 */ { 4, s_4_8, -1, 3, 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] = { 'i', 'i' }; +static const symbol s_5_3[2] = { 'o', 'o' }; +static const symbol s_5_4[2] = { 'u', 'u' }; +static const symbol s_5_5[4] = { 0xC3, 0xA4, 0xC3, 0xA4 }; +static const symbol s_5_6[4] = { 0xC3, 0xB6, 0xC3, 0xB6 }; + +static const struct among a_5[7] = +{ +/* 0 */ { 2, s_5_0, -1, -1, 0}, +/* 1 */ { 2, s_5_1, -1, -1, 0}, +/* 2 */ { 2, s_5_2, -1, -1, 0}, +/* 3 */ { 2, s_5_3, -1, -1, 0}, +/* 4 */ { 2, s_5_4, -1, -1, 0}, +/* 5 */ { 4, s_5_5, -1, -1, 0}, +/* 6 */ { 4, s_5_6, -1, -1, 0} +}; + +static const symbol s_6_0[1] = { 'a' }; +static const symbol s_6_1[3] = { 'l', 'l', 'a' }; +static const symbol s_6_2[2] = { 'n', 'a' }; +static const symbol s_6_3[3] = { 's', 's', 'a' }; +static const symbol s_6_4[2] = { 't', 'a' }; +static const symbol s_6_5[3] = { 'l', 't', 'a' }; +static const symbol s_6_6[3] = { 's', 't', 'a' }; +static const symbol s_6_7[3] = { 't', 't', 'a' }; +static const symbol s_6_8[3] = { 'l', 'l', 'e' }; +static const symbol s_6_9[3] = { 'i', 'n', 'e' }; +static const symbol s_6_10[3] = { 'k', 's', 'i' }; +static const symbol s_6_11[1] = { 'n' }; +static const symbol s_6_12[3] = { 'h', 'a', 'n' }; +static const symbol s_6_13[3] = { 'd', 'e', 'n' }; +static const symbol s_6_14[4] = { 's', 'e', 'e', 'n' }; +static const symbol s_6_15[3] = { 'h', 'e', 'n' }; +static const symbol s_6_16[4] = { 't', 't', 'e', 'n' }; +static const symbol s_6_17[3] = { 'h', 'i', 'n' }; +static const symbol s_6_18[4] = { 's', 'i', 'i', 'n' }; +static const symbol s_6_19[3] = { 'h', 'o', 'n' }; +static const symbol s_6_20[4] = { 'h', 0xC3, 0xA4, 'n' }; +static const symbol s_6_21[4] = { 'h', 0xC3, 0xB6, 'n' }; +static const symbol s_6_22[2] = { 0xC3, 0xA4 }; +static const symbol s_6_23[4] = { 'l', 'l', 0xC3, 0xA4 }; +static const symbol s_6_24[3] = { 'n', 0xC3, 0xA4 }; +static const symbol s_6_25[4] = { 's', 's', 0xC3, 0xA4 }; +static const symbol s_6_26[3] = { 't', 0xC3, 0xA4 }; +static const symbol s_6_27[4] = { 'l', 't', 0xC3, 0xA4 }; +static const symbol s_6_28[4] = { 's', 't', 0xC3, 0xA4 }; +static const symbol s_6_29[4] = { 't', 't', 0xC3, 0xA4 }; + +static const struct among a_6[30] = +{ +/* 0 */ { 1, s_6_0, -1, 8, 0}, +/* 1 */ { 3, s_6_1, 0, -1, 0}, +/* 2 */ { 2, s_6_2, 0, -1, 0}, +/* 3 */ { 3, s_6_3, 0, -1, 0}, +/* 4 */ { 2, s_6_4, 0, -1, 0}, +/* 5 */ { 3, s_6_5, 4, -1, 0}, +/* 6 */ { 3, s_6_6, 4, -1, 0}, +/* 7 */ { 3, s_6_7, 4, 9, 0}, +/* 8 */ { 3, s_6_8, -1, -1, 0}, +/* 9 */ { 3, s_6_9, -1, -1, 0}, +/* 10 */ { 3, s_6_10, -1, -1, 0}, +/* 11 */ { 1, s_6_11, -1, 7, 0}, +/* 12 */ { 3, s_6_12, 11, 1, 0}, +/* 13 */ { 3, s_6_13, 11, -1, r_VI}, +/* 14 */ { 4, s_6_14, 11, -1, r_LONG}, +/* 15 */ { 3, s_6_15, 11, 2, 0}, +/* 16 */ { 4, s_6_16, 11, -1, r_VI}, +/* 17 */ { 3, s_6_17, 11, 3, 0}, +/* 18 */ { 4, s_6_18, 11, -1, r_VI}, +/* 19 */ { 3, s_6_19, 11, 4, 0}, +/* 20 */ { 4, s_6_20, 11, 5, 0}, +/* 21 */ { 4, s_6_21, 11, 6, 0}, +/* 22 */ { 2, s_6_22, -1, 8, 0}, +/* 23 */ { 4, s_6_23, 22, -1, 0}, +/* 24 */ { 3, s_6_24, 22, -1, 0}, +/* 25 */ { 4, s_6_25, 22, -1, 0}, +/* 26 */ { 3, s_6_26, 22, -1, 0}, +/* 27 */ { 4, s_6_27, 26, -1, 0}, +/* 28 */ { 4, s_6_28, 26, -1, 0}, +/* 29 */ { 4, s_6_29, 26, 9, 0} +}; + +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' }; +static const symbol s_7_3[3] = { 'm', 'p', 'a' }; +static const symbol s_7_4[4] = { 'i', 'm', 'p', 'a' }; +static const symbol s_7_5[3] = { 'm', 'm', 'i' }; +static const symbol s_7_6[4] = { 'i', 'm', 'm', 'i' }; +static const symbol s_7_7[3] = { 'm', 'p', 'i' }; +static const symbol s_7_8[4] = { 'i', 'm', 'p', 'i' }; +static const symbol s_7_9[4] = { 'e', 'j', 0xC3, 0xA4 }; +static const symbol s_7_10[4] = { 'm', 'm', 0xC3, 0xA4 }; +static const symbol s_7_11[5] = { 'i', 'm', 'm', 0xC3, 0xA4 }; +static const symbol s_7_12[4] = { 'm', 'p', 0xC3, 0xA4 }; +static const symbol s_7_13[5] = { 'i', 'm', 'p', 0xC3, 0xA4 }; + +static const struct among a_7[14] = +{ +/* 0 */ { 3, s_7_0, -1, -1, 0}, +/* 1 */ { 3, s_7_1, -1, 1, 0}, +/* 2 */ { 4, s_7_2, 1, -1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 4, s_7_4, 3, -1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 4, s_7_6, 5, -1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 4, s_7_8, 7, -1, 0}, +/* 9 */ { 4, s_7_9, -1, -1, 0}, +/* 10 */ { 4, s_7_10, -1, 1, 0}, +/* 11 */ { 5, s_7_11, 10, -1, 0}, +/* 12 */ { 4, s_7_12, -1, 1, 0}, +/* 13 */ { 5, 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] = +{ +/* 0 */ { 1, s_8_0, -1, -1, 0}, +/* 1 */ { 1, s_8_1, -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] = +{ +/* 0 */ { 3, s_9_0, -1, 1, 0}, +/* 1 */ { 4, s_9_1, 0, -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 }; + +static const unsigned char g_V1[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; + +static const unsigned char g_V2[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 }; + +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' }; +static const symbol s_1[] = { 'k', 's', 'e' }; +static const symbol s_2[] = { 'k', 's', 'i' }; +static const symbol s_3[] = { 'i' }; +static const symbol s_4[] = { 'a' }; +static const symbol s_5[] = { 'e' }; +static const symbol s_6[] = { 'i' }; +static const symbol s_7[] = { 'o' }; +static const symbol s_8[] = { 0xC3, 0xA4 }; +static const symbol s_9[] = { 0xC3, 0xB6 }; +static const symbol s_10[] = { 'i', 'e' }; +static const symbol s_11[] = { 'e' }; +static const symbol s_12[] = { 'p', 'o' }; +static const symbol s_13[] = { 't' }; +static const symbol s_14[] = { 'p', 'o' }; +static const symbol s_15[] = { 'j' }; +static const symbol s_16[] = { 'o' }; +static const symbol s_17[] = { 'u' }; +static const symbol s_18[] = { 'o' }; +static const symbol s_19[] = { 'j' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + if (out_grouping_U(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 46 */ + { /* gopast */ /* non V1, line 46 */ + int ret = in_grouping_U(z, g_V1, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 46 */ + if (out_grouping_U(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* grouping V1, line 47 */ + { /* gopast */ /* non V1, line 47 */ + int ret = in_grouping_U(z, g_V1, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 47 */ + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_particle_etc(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 55 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 55 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 55 */ + among_var = find_among_b(z, a_0, 10); /* substring, line 55 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 55 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (in_grouping_b_U(z, g_particle_end, 97, 246, 0)) return 0; + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 64 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 66 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_possessive(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 69 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 69 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 69 */ + among_var = find_among_b(z, a_4, 9); /* substring, line 69 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 69 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m2 = z->l - z->c; (void)m2; /* not, line 72 */ + if (!(eq_s_b(z, 1, s_0))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + { int ret = slice_del(z); /* delete, line 72 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 74 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 74 */ + if (!(eq_s_b(z, 3, s_1))) return 0; + z->bra = z->c; /* ], line 74 */ + { int ret = slice_from_s(z, 3, s_2); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 78 */ + 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; /* among, line 81 */ + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + break; + case 5: + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 164) return 0; + if (!(find_among_b(z, a_2, 6))) return 0; /* among, line 83 */ + { int ret = slice_del(z); /* delete, line 84 */ + 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; /* among, line 86 */ + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_LONG(struct SN_env * z) { + if (!(find_among_b(z, a_5, 7))) return 0; /* among, line 91 */ + return 1; +} + +static int r_VI(struct SN_env * z) { + if (!(eq_s_b(z, 1, s_3))) return 0; + if (in_grouping_b_U(z, g_V2, 97, 246, 0)) return 0; + return 1; +} + +static int r_case_ending(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 96 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 96 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 96 */ + among_var = find_among_b(z, a_6, 30); /* substring, line 96 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 96 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (!(eq_s_b(z, 1, s_4))) return 0; + break; + case 2: + if (!(eq_s_b(z, 1, s_5))) return 0; + break; + case 3: + if (!(eq_s_b(z, 1, s_6))) return 0; + break; + case 4: + if (!(eq_s_b(z, 1, s_7))) return 0; + break; + case 5: + if (!(eq_s_b(z, 2, s_8))) return 0; + break; + case 6: + if (!(eq_s_b(z, 2, s_9))) return 0; + break; + case 7: + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */ + { int m2 = z->l - z->c; (void)m2; /* and, line 113 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 112 */ + { int ret = r_LONG(z); + if (ret == 0) goto lab2; /* call LONG, line 111 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m3; + if (!(eq_s_b(z, 2, s_10))) { z->c = z->l - m_keep; goto lab0; } + } + lab1: + z->c = z->l - m2; + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) { z->c = z->l - m_keep; goto lab0; } + z->c = ret; /* next, line 113 */ + } + } + z->bra = z->c; /* ], line 113 */ + lab0: + ; + } + break; + case 8: + if (in_grouping_b_U(z, g_V1, 97, 246, 0)) return 0; + if (out_grouping_b_U(z, g_V1, 97, 246, 0)) return 0; + break; + case 9: + if (!(eq_s_b(z, 1, s_11))) return 0; + break; + } + { int ret = slice_del(z); /* delete, line 138 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set ending_removed, line 139 */ + return 1; +} + +static int r_other_endings(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 142 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[1]) return 0; + z->c = z->I[1]; /* tomark, line 142 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 142 */ + among_var = find_among_b(z, a_7, 14); /* substring, line 142 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 142 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m2 = z->l - z->c; (void)m2; /* not, line 146 */ + if (!(eq_s_b(z, 2, s_12))) goto lab0; + return 0; + lab0: + z->c = z->l - m2; + } + break; + } + { int ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_i_plural(struct SN_env * z) { + { int mlimit; /* setlimit, line 154 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 154 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 154 */ + if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_8, 2))) { z->lb = mlimit; return 0; } /* substring, line 154 */ + z->bra = z->c; /* ], line 154 */ + z->lb = mlimit; + } + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_t_plural(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 161 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 161 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 162 */ + if (!(eq_s_b(z, 1, s_13))) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 162 */ + { int m_test = z->l - z->c; /* test, line 162 */ + if (in_grouping_b_U(z, g_V1, 97, 246, 0)) { z->lb = mlimit; return 0; } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + z->lb = mlimit; + } + { int mlimit; /* setlimit, line 165 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[1]) return 0; + z->c = z->I[1]; /* tomark, line 165 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + z->ket = z->c; /* [, line 165 */ + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_9, 2); /* substring, line 165 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 165 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m3 = z->l - z->c; (void)m3; /* not, line 167 */ + if (!(eq_s_b(z, 2, s_14))) goto lab0; + return 0; + lab0: + z->c = z->l - m3; + } + break; + } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_tidy(struct SN_env * z) { + { int mlimit; /* setlimit, line 173 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 173 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* do, line 174 */ + { int m3 = z->l - z->c; (void)m3; /* and, line 174 */ + { int ret = r_LONG(z); + if (ret == 0) goto lab0; /* call LONG, line 174 */ + if (ret < 0) return ret; + } + z->c = z->l - m3; + z->ket = z->c; /* [, line 174 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 174 */ + } + z->bra = z->c; /* ], line 174 */ + { int ret = slice_del(z); /* delete, line 174 */ + if (ret < 0) return ret; + } + } + lab0: + z->c = z->l - m2; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 175 */ + z->ket = z->c; /* [, line 175 */ + if (in_grouping_b_U(z, g_AEI, 97, 228, 0)) goto lab1; + z->bra = z->c; /* ], line 175 */ + if (out_grouping_b_U(z, g_V1, 97, 246, 0)) goto lab1; + { int ret = slice_del(z); /* delete, line 175 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 176 */ + z->ket = z->c; /* [, line 176 */ + if (!(eq_s_b(z, 1, s_15))) goto lab2; + z->bra = z->c; /* ], line 176 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 176 */ + if (!(eq_s_b(z, 1, s_16))) goto lab4; + goto lab3; + lab4: + z->c = z->l - m6; + if (!(eq_s_b(z, 1, s_17))) goto lab2; + } + lab3: + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m5; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 177 */ + z->ket = z->c; /* [, line 177 */ + if (!(eq_s_b(z, 1, s_18))) goto lab5; + z->bra = z->c; /* ], line 177 */ + if (!(eq_s_b(z, 1, s_19))) goto lab5; + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m7; + } + z->lb = mlimit; + } + if (in_grouping_b_U(z, g_V1, 97, 246, 1) < 0) return 0; /* goto */ /* non V1, line 179 */ + z->ket = z->c; /* [, line 179 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 179 */ + } + z->bra = z->c; /* ], line 179 */ + z->S[0] = slice_to(z, z->S[0]); /* -> x, line 179 */ + if (z->S[0] == 0) return -1; /* -> x, line 179 */ + if (!(eq_v_b(z, z->S[0]))) return 0; /* name x, line 179 */ + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int finnish_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 185 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 185 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->B[0] = 0; /* unset ending_removed, line 186 */ + z->lb = z->c; z->c = z->l; /* backwards, line 187 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 188 */ + { int ret = r_particle_etc(z); + if (ret == 0) goto lab1; /* call particle_etc, line 188 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 189 */ + { int ret = r_possessive(z); + if (ret == 0) goto lab2; /* call possessive, line 189 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 190 */ + { int ret = r_case_ending(z); + if (ret == 0) goto lab3; /* call case_ending, line 190 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 191 */ + { int ret = r_other_endings(z); + if (ret == 0) goto lab4; /* call other_endings, line 191 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* or, line 192 */ + if (!(z->B[0])) goto lab6; /* Boolean test ending_removed, line 192 */ + { int m7 = z->l - z->c; (void)m7; /* do, line 192 */ + { int ret = r_i_plural(z); + if (ret == 0) goto lab7; /* call i_plural, line 192 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int m8 = z->l - z->c; (void)m8; /* do, line 192 */ + { int ret = r_t_plural(z); + if (ret == 0) goto lab8; /* call t_plural, line 192 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m8; + } + } +lab5: + { int m9 = z->l - z->c; (void)m9; /* do, line 193 */ + { int ret = r_tidy(z); + if (ret == 0) goto lab9; /* call tidy, line 193 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m9; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * finnish_UTF_8_create_env(void) { return SN_create_env(1, 2, 1); } + +extern void finnish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 1); } + diff --git a/src_c/stem_UTF_8_finnish.h b/src_c/stem_UTF_8_finnish.h new file mode 100644 index 0000000..d2f2fd9 --- /dev/null +++ b/src_c/stem_UTF_8_finnish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * finnish_UTF_8_create_env(void); +extern void finnish_UTF_8_close_env(struct SN_env * z); + +extern int finnish_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_french.c b/src_c/stem_UTF_8_french.c new file mode 100644 index 0000000..55b5fbf --- /dev/null +++ b/src_c/stem_UTF_8_french.c @@ -0,0 +1,1256 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int french_UTF_8_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); +static int r_verb_suffix(struct SN_env * z); +static int r_i_verb_suffix(struct SN_env * z); +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_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 * french_UTF_8_create_env(void); +extern void french_UTF_8_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 3, s_0_0, -1, -1, 0}, +/* 1 */ { 3, s_0_1, -1, -1, 0}, +/* 2 */ { 3, s_0_2, -1, -1, 0} +}; + +static const symbol s_1_1[1] = { 'I' }; +static const symbol s_1_2[1] = { 'U' }; +static const symbol s_1_3[1] = { 'Y' }; + +static const struct among a_1[4] = +{ +/* 0 */ { 0, 0, -1, 4, 0}, +/* 1 */ { 1, s_1_1, 0, 1, 0}, +/* 2 */ { 1, s_1_2, 0, 2, 0}, +/* 3 */ { 1, s_1_3, 0, 3, 0} +}; + +static const symbol s_2_0[3] = { 'i', 'q', 'U' }; +static const symbol s_2_1[3] = { 'a', 'b', 'l' }; +static const symbol s_2_2[4] = { 'I', 0xC3, 0xA8, 'r' }; +static const symbol s_2_3[4] = { 'i', 0xC3, 0xA8, '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] = +{ +/* 0 */ { 3, s_2_0, -1, 3, 0}, +/* 1 */ { 3, s_2_1, -1, 3, 0}, +/* 2 */ { 4, s_2_2, -1, 4, 0}, +/* 3 */ { 4, s_2_3, -1, 4, 0}, +/* 4 */ { 3, s_2_4, -1, 2, 0}, +/* 5 */ { 2, s_2_5, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, 2, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 2, s_3_2, -1, 3, 0} +}; + +static const symbol s_4_0[4] = { 'i', 'q', 'U', 'e' }; +static const symbol s_4_1[6] = { 'a', 't', 'r', 'i', 'c', 'e' }; +static const symbol s_4_2[4] = { 'a', 'n', 'c', 'e' }; +static const symbol s_4_3[4] = { 'e', 'n', 'c', 'e' }; +static const symbol s_4_4[5] = { 'l', 'o', 'g', 'i', 'e' }; +static const symbol s_4_5[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_4_6[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_4_7[4] = { 'e', 'u', 's', 'e' }; +static const symbol s_4_8[4] = { 'i', 's', 't', 'e' }; +static const symbol s_4_9[3] = { 'i', 'v', 'e' }; +static const symbol s_4_10[2] = { 'i', 'f' }; +static const symbol s_4_11[5] = { 'u', 's', 'i', 'o', 'n' }; +static const symbol s_4_12[5] = { 'a', 't', 'i', 'o', 'n' }; +static const symbol s_4_13[5] = { 'u', 't', 'i', 'o', 'n' }; +static const symbol s_4_14[5] = { 'a', 't', 'e', 'u', 'r' }; +static const symbol s_4_15[5] = { 'i', 'q', 'U', 'e', 's' }; +static const symbol s_4_16[7] = { 'a', 't', 'r', 'i', 'c', 'e', 's' }; +static const symbol s_4_17[5] = { 'a', 'n', 'c', 'e', 's' }; +static const symbol s_4_18[5] = { 'e', 'n', 'c', 'e', 's' }; +static const symbol s_4_19[6] = { 'l', 'o', 'g', 'i', 'e', 's' }; +static const symbol s_4_20[5] = { 'a', 'b', 'l', 'e', 's' }; +static const symbol s_4_21[5] = { 'i', 's', 'm', 'e', 's' }; +static const symbol s_4_22[5] = { 'e', 'u', 's', 'e', 's' }; +static const symbol s_4_23[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_4_24[4] = { 'i', 'v', 'e', 's' }; +static const symbol s_4_25[3] = { 'i', 'f', 's' }; +static const symbol s_4_26[6] = { 'u', 's', 'i', 'o', 'n', 's' }; +static const symbol s_4_27[6] = { 'a', 't', 'i', 'o', 'n', 's' }; +static const symbol s_4_28[6] = { 'u', 't', 'i', 'o', 'n', 's' }; +static const symbol s_4_29[6] = { 'a', 't', 'e', 'u', 'r', 's' }; +static const symbol s_4_30[5] = { 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_31[6] = { 'e', 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_32[9] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't', 's' }; +static const symbol s_4_33[5] = { 'i', 't', 0xC3, 0xA9, 's' }; +static const symbol s_4_34[4] = { 'm', 'e', 'n', 't' }; +static const symbol s_4_35[5] = { 'e', 'm', 'e', 'n', 't' }; +static const symbol s_4_36[8] = { 'i', 's', 's', 'e', 'm', 'e', 'n', 't' }; +static const symbol s_4_37[6] = { 'a', 'm', 'm', 'e', 'n', 't' }; +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[4] = { 'i', 't', 0xC3, 0xA9 }; + +static const struct among a_4[43] = +{ +/* 0 */ { 4, s_4_0, -1, 1, 0}, +/* 1 */ { 6, s_4_1, -1, 2, 0}, +/* 2 */ { 4, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 5, 0}, +/* 4 */ { 5, s_4_4, -1, 3, 0}, +/* 5 */ { 4, s_4_5, -1, 1, 0}, +/* 6 */ { 4, s_4_6, -1, 1, 0}, +/* 7 */ { 4, s_4_7, -1, 11, 0}, +/* 8 */ { 4, s_4_8, -1, 1, 0}, +/* 9 */ { 3, s_4_9, -1, 8, 0}, +/* 10 */ { 2, s_4_10, -1, 8, 0}, +/* 11 */ { 5, s_4_11, -1, 4, 0}, +/* 12 */ { 5, s_4_12, -1, 2, 0}, +/* 13 */ { 5, s_4_13, -1, 4, 0}, +/* 14 */ { 5, s_4_14, -1, 2, 0}, +/* 15 */ { 5, s_4_15, -1, 1, 0}, +/* 16 */ { 7, s_4_16, -1, 2, 0}, +/* 17 */ { 5, s_4_17, -1, 1, 0}, +/* 18 */ { 5, s_4_18, -1, 5, 0}, +/* 19 */ { 6, s_4_19, -1, 3, 0}, +/* 20 */ { 5, s_4_20, -1, 1, 0}, +/* 21 */ { 5, s_4_21, -1, 1, 0}, +/* 22 */ { 5, s_4_22, -1, 11, 0}, +/* 23 */ { 5, s_4_23, -1, 1, 0}, +/* 24 */ { 4, s_4_24, -1, 8, 0}, +/* 25 */ { 3, s_4_25, -1, 8, 0}, +/* 26 */ { 6, s_4_26, -1, 4, 0}, +/* 27 */ { 6, s_4_27, -1, 2, 0}, +/* 28 */ { 6, s_4_28, -1, 4, 0}, +/* 29 */ { 6, s_4_29, -1, 2, 0}, +/* 30 */ { 5, s_4_30, -1, 15, 0}, +/* 31 */ { 6, s_4_31, 30, 6, 0}, +/* 32 */ { 9, s_4_32, 31, 12, 0}, +/* 33 */ { 5, s_4_33, -1, 7, 0}, +/* 34 */ { 4, s_4_34, -1, 15, 0}, +/* 35 */ { 5, s_4_35, 34, 6, 0}, +/* 36 */ { 8, s_4_36, 35, 12, 0}, +/* 37 */ { 6, s_4_37, 34, 13, 0}, +/* 38 */ { 6, s_4_38, 34, 14, 0}, +/* 39 */ { 3, s_4_39, -1, 10, 0}, +/* 40 */ { 4, s_4_40, 39, 9, 0}, +/* 41 */ { 3, s_4_41, -1, 1, 0}, +/* 42 */ { 4, s_4_42, -1, 7, 0} +}; + +static const symbol s_5_0[3] = { 'i', 'r', 'a' }; +static const symbol s_5_1[2] = { 'i', 'e' }; +static const symbol s_5_2[4] = { 'i', 's', 's', 'e' }; +static const symbol s_5_3[7] = { 'i', 's', 's', 'a', 'n', 't', 'e' }; +static const symbol s_5_4[1] = { 'i' }; +static const symbol s_5_5[4] = { 'i', 'r', 'a', 'i' }; +static const symbol s_5_6[2] = { 'i', 'r' }; +static const symbol s_5_7[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_5_8[3] = { 'i', 'e', 's' }; +static const symbol s_5_9[5] = { 0xC3, 0xAE, 'm', 'e', 's' }; +static const symbol s_5_10[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_5_11[8] = { 'i', 's', 's', 'a', 'n', 't', 'e', 's' }; +static const symbol s_5_12[5] = { 0xC3, 0xAE, 't', 'e', 's' }; +static const symbol s_5_13[2] = { 'i', 's' }; +static const symbol s_5_14[5] = { 'i', 'r', 'a', 'i', 's' }; +static const symbol s_5_15[6] = { 'i', 's', 's', 'a', 'i', 's' }; +static const symbol s_5_16[6] = { 'i', 'r', 'i', 'o', 'n', 's' }; +static const symbol s_5_17[7] = { 'i', 's', 's', 'i', 'o', 'n', 's' }; +static const symbol s_5_18[5] = { 'i', 'r', 'o', 'n', 's' }; +static const symbol s_5_19[6] = { 'i', 's', 's', 'o', 'n', 's' }; +static const symbol s_5_20[7] = { 'i', 's', 's', 'a', 'n', 't', 's' }; +static const symbol s_5_21[2] = { 'i', 't' }; +static const symbol s_5_22[5] = { 'i', 'r', 'a', 'i', 't' }; +static const symbol s_5_23[6] = { 'i', 's', 's', 'a', 'i', 't' }; +static const symbol s_5_24[6] = { 'i', 's', 's', 'a', 'n', 't' }; +static const symbol s_5_25[7] = { 'i', 'r', 'a', 'I', 'e', 'n', 't' }; +static const symbol s_5_26[8] = { 'i', 's', 's', 'a', 'I', 'e', 'n', 't' }; +static const symbol s_5_27[5] = { 'i', 'r', 'e', 'n', 't' }; +static const symbol s_5_28[6] = { 'i', 's', 's', 'e', 'n', 't' }; +static const symbol s_5_29[5] = { 'i', 'r', 'o', 'n', 't' }; +static const symbol s_5_30[3] = { 0xC3, 0xAE, 't' }; +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] = +{ +/* 0 */ { 3, s_5_0, -1, 1, 0}, +/* 1 */ { 2, s_5_1, -1, 1, 0}, +/* 2 */ { 4, s_5_2, -1, 1, 0}, +/* 3 */ { 7, s_5_3, -1, 1, 0}, +/* 4 */ { 1, s_5_4, -1, 1, 0}, +/* 5 */ { 4, s_5_5, 4, 1, 0}, +/* 6 */ { 2, s_5_6, -1, 1, 0}, +/* 7 */ { 4, s_5_7, -1, 1, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 5, s_5_9, -1, 1, 0}, +/* 10 */ { 5, s_5_10, -1, 1, 0}, +/* 11 */ { 8, s_5_11, -1, 1, 0}, +/* 12 */ { 5, s_5_12, -1, 1, 0}, +/* 13 */ { 2, s_5_13, -1, 1, 0}, +/* 14 */ { 5, s_5_14, 13, 1, 0}, +/* 15 */ { 6, s_5_15, 13, 1, 0}, +/* 16 */ { 6, s_5_16, -1, 1, 0}, +/* 17 */ { 7, s_5_17, -1, 1, 0}, +/* 18 */ { 5, s_5_18, -1, 1, 0}, +/* 19 */ { 6, s_5_19, -1, 1, 0}, +/* 20 */ { 7, s_5_20, -1, 1, 0}, +/* 21 */ { 2, s_5_21, -1, 1, 0}, +/* 22 */ { 5, s_5_22, 21, 1, 0}, +/* 23 */ { 6, s_5_23, 21, 1, 0}, +/* 24 */ { 6, s_5_24, -1, 1, 0}, +/* 25 */ { 7, s_5_25, -1, 1, 0}, +/* 26 */ { 8, s_5_26, -1, 1, 0}, +/* 27 */ { 5, s_5_27, -1, 1, 0}, +/* 28 */ { 6, s_5_28, -1, 1, 0}, +/* 29 */ { 5, s_5_29, -1, 1, 0}, +/* 30 */ { 3, s_5_30, -1, 1, 0}, +/* 31 */ { 5, s_5_31, -1, 1, 0}, +/* 32 */ { 6, s_5_32, -1, 1, 0}, +/* 33 */ { 4, s_5_33, -1, 1, 0}, +/* 34 */ { 5, s_5_34, -1, 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[3] = { 0xC3, 0xA9, '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[5] = { 0xC3, 0xA2, '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[5] = { 0xC3, 0xA2, 't', 'e', 's' }; +static const symbol s_6_14[4] = { 0xC3, 0xA9, '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[3] = { 0xC3, 0xA9, '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[6] = { 0xC3, 0xA8, '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[3] = { 0xC3, 0xA2, '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[2] = { 0xC3, 0xA9 }; + +static const struct among a_6[38] = +{ +/* 0 */ { 1, s_6_0, -1, 3, 0}, +/* 1 */ { 3, s_6_1, 0, 2, 0}, +/* 2 */ { 4, s_6_2, -1, 3, 0}, +/* 3 */ { 4, s_6_3, -1, 3, 0}, +/* 4 */ { 3, s_6_4, -1, 2, 0}, +/* 5 */ { 2, s_6_5, -1, 3, 0}, +/* 6 */ { 4, s_6_6, 5, 2, 0}, +/* 7 */ { 2, s_6_7, -1, 2, 0}, +/* 8 */ { 2, s_6_8, -1, 3, 0}, +/* 9 */ { 4, s_6_9, 8, 2, 0}, +/* 10 */ { 5, s_6_10, -1, 3, 0}, +/* 11 */ { 5, s_6_11, -1, 3, 0}, +/* 12 */ { 5, s_6_12, -1, 3, 0}, +/* 13 */ { 5, s_6_13, -1, 3, 0}, +/* 14 */ { 4, s_6_14, -1, 2, 0}, +/* 15 */ { 3, s_6_15, -1, 3, 0}, +/* 16 */ { 5, s_6_16, 15, 2, 0}, +/* 17 */ { 4, s_6_17, -1, 1, 0}, +/* 18 */ { 6, s_6_18, 17, 2, 0}, +/* 19 */ { 7, s_6_19, 17, 3, 0}, +/* 20 */ { 5, s_6_20, -1, 2, 0}, +/* 21 */ { 4, s_6_21, -1, 3, 0}, +/* 22 */ { 3, s_6_22, -1, 2, 0}, +/* 23 */ { 3, s_6_23, -1, 3, 0}, +/* 24 */ { 5, s_6_24, 23, 2, 0}, +/* 25 */ { 3, s_6_25, -1, 3, 0}, +/* 26 */ { 5, s_6_26, -1, 3, 0}, +/* 27 */ { 7, s_6_27, 26, 2, 0}, +/* 28 */ { 6, s_6_28, -1, 2, 0}, +/* 29 */ { 6, s_6_29, -1, 3, 0}, +/* 30 */ { 5, s_6_30, -1, 2, 0}, +/* 31 */ { 3, s_6_31, -1, 3, 0}, +/* 32 */ { 2, s_6_32, -1, 2, 0}, +/* 33 */ { 3, s_6_33, 32, 2, 0}, +/* 34 */ { 5, s_6_34, 33, 2, 0}, +/* 35 */ { 6, s_6_35, 33, 3, 0}, +/* 36 */ { 4, s_6_36, 32, 2, 0}, +/* 37 */ { 2, s_6_37, -1, 2, 0} +}; + +static const symbol s_7_0[1] = { 'e' }; +static const symbol s_7_1[5] = { 'I', 0xC3, 0xA8, 'r', 'e' }; +static const symbol s_7_2[5] = { 'i', 0xC3, 0xA8, '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 symbol s_7_6[2] = { 0xC3, 0xAB }; + +static const struct among a_7[7] = +{ +/* 0 */ { 1, s_7_0, -1, 3, 0}, +/* 1 */ { 5, s_7_1, 0, 2, 0}, +/* 2 */ { 5, s_7_2, 0, 2, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 3, s_7_4, -1, 2, 0}, +/* 5 */ { 3, s_7_5, -1, 2, 0}, +/* 6 */ { 2, s_7_6, -1, 4, 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 struct among a_8[5] = +{ +/* 0 */ { 3, s_8_0, -1, -1, 0}, +/* 1 */ { 4, s_8_1, -1, -1, 0}, +/* 2 */ { 3, s_8_2, -1, -1, 0}, +/* 3 */ { 3, s_8_3, -1, -1, 0}, +/* 4 */ { 3, s_8_4, -1, -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_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[] = { 'u' }; +static const symbol s_1[] = { 'U' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'I' }; +static const symbol s_4[] = { 'y' }; +static const symbol s_5[] = { 'Y' }; +static const symbol s_6[] = { 'y' }; +static const symbol s_7[] = { 'Y' }; +static const symbol s_8[] = { 'q' }; +static const symbol s_9[] = { 'u' }; +static const symbol s_10[] = { 'U' }; +static const symbol s_11[] = { 'i' }; +static const symbol s_12[] = { 'u' }; +static const symbol s_13[] = { 'y' }; +static const symbol s_14[] = { 'i', 'c' }; +static const symbol s_15[] = { 'i', 'q', 'U' }; +static const symbol s_16[] = { 'l', 'o', 'g' }; +static const symbol s_17[] = { 'u' }; +static const symbol s_18[] = { 'e', 'n', 't' }; +static const symbol s_19[] = { 'a', 't' }; +static const symbol s_20[] = { 'e', 'u', 'x' }; +static const symbol s_21[] = { 'i' }; +static const symbol s_22[] = { 'a', 'b', 'l' }; +static const symbol s_23[] = { 'i', 'q', 'U' }; +static const symbol s_24[] = { 'a', 't' }; +static const symbol s_25[] = { 'i', 'c' }; +static const symbol s_26[] = { 'i', 'q', 'U' }; +static const symbol s_27[] = { 'e', 'a', 'u' }; +static const symbol s_28[] = { 'a', 'l' }; +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[] = { 'e' }; +static const symbol s_33[] = { 's' }; +static const symbol s_34[] = { 's' }; +static const symbol s_35[] = { 't' }; +static const symbol s_36[] = { 'i' }; +static const symbol s_37[] = { 'g', 'u' }; +static const symbol s_38[] = { 0xC3, 0xA9 }; +static const symbol s_39[] = { 0xC3, 0xA8 }; +static const symbol s_40[] = { 'e' }; +static const symbol s_41[] = { 'Y' }; +static const symbol s_42[] = { 'i' }; +static const symbol s_43[] = { 0xC3, 0xA7 }; +static const symbol s_44[] = { 'c' }; + +static int r_prelude(struct SN_env * z) { + while(1) { /* repeat, line 38 */ + int c1 = z->c; + while(1) { /* goto, line 38 */ + int c2 = z->c; + { int c3 = z->c; /* or, line 44 */ + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab3; + z->bra = z->c; /* [, line 40 */ + { int c4 = z->c; /* or, line 40 */ + if (!(eq_s(z, 1, s_0))) goto lab5; + z->ket = z->c; /* ], line 40 */ + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab5; + { int ret = slice_from_s(z, 1, s_1); /* <-, line 40 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = c4; + if (!(eq_s(z, 1, s_2))) goto lab6; + z->ket = z->c; /* ], line 41 */ + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab6; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 41 */ + if (ret < 0) return ret; + } + goto lab4; + lab6: + z->c = c4; + if (!(eq_s(z, 1, s_4))) goto lab3; + z->ket = z->c; /* ], line 42 */ + { int ret = slice_from_s(z, 1, s_5); /* <-, line 42 */ + if (ret < 0) return ret; + } + } + lab4: + goto lab2; + lab3: + z->c = c3; + z->bra = z->c; /* [, line 45 */ + if (!(eq_s(z, 1, s_6))) goto lab7; + z->ket = z->c; /* ], line 45 */ + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab7; + { int ret = slice_from_s(z, 1, s_7); /* <-, line 45 */ + if (ret < 0) return ret; + } + goto lab2; + lab7: + z->c = c3; + if (!(eq_s(z, 1, s_8))) goto lab1; + z->bra = z->c; /* [, line 47 */ + if (!(eq_s(z, 1, s_9))) goto lab1; + z->ket = z->c; /* ], line 47 */ + { int ret = slice_from_s(z, 1, s_10); /* <-, line 47 */ + if (ret < 0) return ret; + } + } + lab2: + z->c = c2; + break; + lab1: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* goto, line 38 */ + } + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 56 */ + { int c2 = z->c; /* or, line 58 */ + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; + if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab2; + z->c = ret; /* next, line 57 */ + } + goto lab1; + 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; /* among, line 59 */ + goto lab1; + lab3: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 66 */ + } + { /* gopast */ /* grouping v, line 66 */ + int ret = out_grouping_U(z, g_v, 97, 251, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + } + lab1: + z->I[0] = z->c; /* setmark pV, line 67 */ + lab0: + z->c = c1; + } + { int c3 = z->c; /* do, line 69 */ + { /* gopast */ /* grouping v, line 70 */ + int ret = out_grouping_U(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 70 */ + int ret = in_grouping_U(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 70 */ + { /* gopast */ /* grouping v, line 71 */ + int ret = out_grouping_U(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 71 */ + int ret = in_grouping_U(z, g_v, 97, 251, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 71 */ + lab4: + z->c = c3; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 75 */ + int c1 = z->c; + z->bra = z->c; /* [, line 77 */ + if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652096 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 4; else + among_var = find_among(z, a_1, 4); /* substring, line 77 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 77 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 80 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 81 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 92 */ + among_var = find_among_b(z, a_4, 43); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 96 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 99 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 100 */ + z->ket = z->c; /* [, line 100 */ + if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 100 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 100 */ + { int ret = r_R2(z); + if (ret == 0) goto lab2; /* call R2, line 100 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 100 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m1; + { int ret = slice_from_s(z, 3, s_15); /* <-, line 100 */ + if (ret < 0) return ret; + } + } + lab1: + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 104 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_16); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 107 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_17); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_18); /* <-, line 110 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 114 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 114 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 115 */ + z->ket = z->c; /* [, line 116 */ + among_var = find_among_b(z, a_2, 6); /* substring, line 116 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 116 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab3; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 117 */ + if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 117 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m2 = z->l - z->c; (void)m2; /* or, line 118 */ + { int ret = r_R2(z); + if (ret == 0) goto lab5; /* call R2, line 118 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 118 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = z->l - m2; + { int ret = r_R1(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R1, line 118 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_20); /* <-, line 118 */ + if (ret < 0) return ret; + } + } + lab4: + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 120 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 120 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call RV, line 122 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_21); /* <-, line 122 */ + if (ret < 0) return ret; + } + break; + } + lab3: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 129 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 129 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 130 */ + z->ket = z->c; /* [, line 131 */ + 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 - m_keep; goto lab6; } + among_var = find_among_b(z, a_3, 3); /* substring, line 131 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab6; } + z->bra = z->c; /* ], line 131 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab6; } + case 1: + { int m3 = z->l - z->c; (void)m3; /* or, line 132 */ + { int ret = r_R2(z); + if (ret == 0) goto lab8; /* call R2, line 132 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 132 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m3; + { int ret = slice_from_s(z, 3, s_22); /* <-, line 132 */ + if (ret < 0) return ret; + } + } + lab7: + break; + case 2: + { int m4 = z->l - z->c; (void)m4; /* or, line 133 */ + { int ret = r_R2(z); + if (ret == 0) goto lab10; /* call R2, line 133 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 133 */ + if (ret < 0) return ret; + } + goto lab9; + lab10: + z->c = z->l - m4; + { int ret = slice_from_s(z, 3, s_23); /* <-, line 133 */ + if (ret < 0) return ret; + } + } + lab9: + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + } + lab6: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 141 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 141 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 142 */ + z->ket = z->c; /* [, line 142 */ + if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - m_keep; goto lab11; } + z->bra = z->c; /* ], line 142 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab11; } /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 142 */ + if (!(eq_s_b(z, 2, s_25))) { z->c = z->l - m_keep; goto lab11; } + z->bra = z->c; /* ], line 142 */ + { int m5 = z->l - z->c; (void)m5; /* or, line 142 */ + { int ret = r_R2(z); + if (ret == 0) goto lab13; /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + goto lab12; + lab13: + z->c = z->l - m5; + { int ret = slice_from_s(z, 3, s_26); /* <-, line 142 */ + if (ret < 0) return ret; + } + } + lab12: + lab11: + ; + } + break; + case 9: + { int ret = slice_from_s(z, 3, s_27); /* <-, line 144 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 145 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_28); /* <-, line 145 */ + if (ret < 0) return ret; + } + break; + case 11: + { int m6 = z->l - z->c; (void)m6; /* or, line 147 */ + { int ret = r_R2(z); + if (ret == 0) goto lab15; /* call R2, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + goto lab14; + lab15: + z->c = z->l - m6; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_29); /* <-, line 147 */ + if (ret < 0) return ret; + } + } + lab14: + break; + case 12: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 150 */ + if (ret < 0) return ret; + } + if (out_grouping_b_U(z, g_v, 97, 251, 0)) return 0; + { int ret = slice_del(z); /* delete, line 150 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 155 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_30); /* <-, line 155 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 155 */ + break; + case 14: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 156 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_31); /* <-, line 156 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 156 */ + break; + case 15: + { int m_test = z->l - z->c; /* test, line 158 */ + if (in_grouping_b_U(z, g_v, 97, 251, 0)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 158 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + return 0; /* fail, line 158 */ + break; + } + return 1; +} + +static int r_i_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 163 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 163 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 164 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_5, 35); /* substring, line 164 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 164 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + if (out_grouping_b_U(z, g_v, 97, 251, 0)) { z->lb = mlimit; return 0; } + { int ret = slice_del(z); /* delete, line 170 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 174 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 174 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 175 */ + among_var = find_among_b(z, a_6, 38); /* substring, line 175 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 175 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->lb = mlimit; return 0; } /* call R2, line 177 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 185 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 190 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 191 */ + z->ket = z->c; /* [, line 191 */ + if (!(eq_s_b(z, 1, s_32))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 191 */ + { int ret = slice_del(z); /* delete, line 191 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 199 */ + z->ket = z->c; /* [, line 199 */ + if (!(eq_s_b(z, 1, s_33))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 199 */ + { int m_test = z->l - z->c; /* test, line 199 */ + if (out_grouping_b_U(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 199 */ + if (ret < 0) return ret; + } + lab0: + ; + } + { int mlimit; /* setlimit, line 200 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 200 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 201 */ + among_var = find_among_b(z, a_7, 7); /* substring, line 201 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 201 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->lb = mlimit; return 0; } /* call R2, line 202 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* or, line 202 */ + if (!(eq_s_b(z, 1, s_34))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_35))) { z->lb = mlimit; return 0; } + } + lab1: + { int ret = slice_del(z); /* delete, line 202 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_36); /* <-, line 204 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 205 */ + if (ret < 0) return ret; + } + break; + case 4: + if (!(eq_s_b(z, 2, s_37))) { z->lb = mlimit; return 0; } + { int ret = slice_del(z); /* delete, line 206 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_un_double(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 212 */ + 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; /* among, line 212 */ + z->c = z->l - m_test; + } + z->ket = z->c; /* [, line 212 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 212 */ + } + z->bra = z->c; /* ], line 212 */ + { int ret = slice_del(z); /* delete, line 212 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_un_accent(struct SN_env * z) { + { int i = 1; + while(1) { /* atleast, line 216 */ + if (out_grouping_b_U(z, g_v, 97, 251, 0)) goto lab0; + i--; + continue; + lab0: + break; + } + if (i > 0) return 0; + } + z->ket = z->c; /* [, line 217 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 217 */ + if (!(eq_s_b(z, 2, s_38))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_39))) return 0; + } +lab1: + z->bra = z->c; /* ], line 217 */ + { int ret = slice_from_s(z, 1, s_40); /* <-, line 217 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int french_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 223 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 223 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 224 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 224 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 225 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 227 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 237 */ + { int m5 = z->l - z->c; (void)m5; /* and, line 233 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 229 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab6; /* call standard_suffix, line 229 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_i_verb_suffix(z); + if (ret == 0) goto lab7; /* call i_verb_suffix, line 230 */ + if (ret < 0) return ret; + } + goto lab5; + lab7: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 231 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = z->l - m5; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 234 */ + z->ket = z->c; /* [, line 234 */ + { int m7 = z->l - z->c; (void)m7; /* or, line 234 */ + if (!(eq_s_b(z, 1, s_41))) goto lab10; + z->bra = z->c; /* ], line 234 */ + { int ret = slice_from_s(z, 1, s_42); /* <-, line 234 */ + if (ret < 0) return ret; + } + goto lab9; + lab10: + z->c = z->l - m7; + if (!(eq_s_b(z, 2, s_43))) { z->c = z->l - m_keep; goto lab8; } + z->bra = z->c; /* ], line 235 */ + { int ret = slice_from_s(z, 1, s_44); /* <-, line 235 */ + if (ret < 0) return ret; + } + } + lab9: + lab8: + ; + } + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab2; /* call residual_suffix, line 238 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 243 */ + { int ret = r_un_double(z); + if (ret == 0) goto lab11; /* call un_double, line 243 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 244 */ + { int ret = r_un_accent(z); + if (ret == 0) goto lab12; /* call un_accent, line 244 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m9; + } + z->c = z->lb; + { int c10 = z->c; /* do, line 246 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab13; /* call postlude, line 246 */ + if (ret < 0) return ret; + } + lab13: + z->c = c10; + } + return 1; +} + +extern struct SN_env * french_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void french_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_french.h b/src_c/stem_UTF_8_french.h new file mode 100644 index 0000000..08e3418 --- /dev/null +++ b/src_c/stem_UTF_8_french.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * french_UTF_8_create_env(void); +extern void french_UTF_8_close_env(struct SN_env * z); + +extern int french_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_german.c b/src_c/stem_UTF_8_german.c new file mode 100644 index 0000000..2ebe86a --- /dev/null +++ b/src_c/stem_UTF_8_german.c @@ -0,0 +1,527 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int german_UTF_8_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_UTF_8_create_env(void); +extern void german_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[1] = { 'U' }; +static const symbol s_0_2[1] = { 'Y' }; +static const symbol s_0_3[2] = { 0xC3, 0xA4 }; +static const symbol s_0_4[2] = { 0xC3, 0xB6 }; +static const symbol s_0_5[2] = { 0xC3, 0xBC }; + +static const struct among a_0[6] = +{ +/* 0 */ { 0, 0, -1, 6, 0}, +/* 1 */ { 1, s_0_1, 0, 2, 0}, +/* 2 */ { 1, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, 3, 0}, +/* 4 */ { 2, s_0_4, 0, 4, 0}, +/* 5 */ { 2, s_0_5, 0, 5, 0} +}; + +static const symbol s_1_0[1] = { 'e' }; +static const symbol s_1_1[2] = { 'e', 'm' }; +static const symbol s_1_2[2] = { 'e', 'n' }; +static const symbol s_1_3[3] = { 'e', 'r', 'n' }; +static const symbol s_1_4[2] = { 'e', 'r' }; +static const symbol s_1_5[1] = { 's' }; +static const symbol s_1_6[2] = { 'e', 's' }; + +static const struct among a_1[7] = +{ +/* 0 */ { 1, s_1_0, -1, 2, 0}, +/* 1 */ { 2, s_1_1, -1, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 2, 0}, +/* 3 */ { 3, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 1, s_1_5, -1, 3, 0}, +/* 6 */ { 2, s_1_6, 5, 2, 0} +}; + +static const symbol s_2_0[2] = { 'e', 'n' }; +static const symbol s_2_1[2] = { 'e', 'r' }; +static const symbol s_2_2[2] = { 's', 't' }; +static const symbol s_2_3[3] = { 'e', 's', 't' }; + +static const struct among a_2[4] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 2, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 2, 0}, +/* 3 */ { 3, s_2_3, 2, 1, 0} +}; + +static const symbol s_3_0[2] = { 'i', 'g' }; +static const symbol s_3_1[4] = { 'l', 'i', 'c', 'h' }; + +static const struct among a_3[2] = +{ +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 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] = { 'u', 'n', 'g' }; +static const symbol s_4_3[4] = { 'l', 'i', 'c', 'h' }; +static const symbol s_4_4[4] = { 'i', 's', 'c', 'h' }; +static const symbol s_4_5[2] = { 'i', 'k' }; +static const symbol s_4_6[4] = { 'h', 'e', 'i', 't' }; +static const symbol s_4_7[4] = { 'k', 'e', 'i', 't' }; + +static const struct among a_4[8] = +{ +/* 0 */ { 3, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 2, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 3, 0}, +/* 4 */ { 4, s_4_4, -1, 2, 0}, +/* 5 */ { 2, s_4_5, -1, 2, 0}, +/* 6 */ { 4, s_4_6, -1, 3, 0}, +/* 7 */ { 4, s_4_7, -1, 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_s_ending[] = { 117, 30, 5 }; + +static const unsigned char g_st_ending[] = { 117, 30, 4 }; + +static const symbol s_0[] = { 0xC3, 0x9F }; +static const symbol s_1[] = { 's', 's' }; +static const symbol s_2[] = { 'u' }; +static const symbol s_3[] = { 'U' }; +static const symbol s_4[] = { 'y' }; +static const symbol s_5[] = { 'Y' }; +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[] = { 'u' }; +static const symbol s_11[] = { 's' }; +static const symbol s_12[] = { 'n', 'i', 's' }; +static const symbol s_13[] = { 'i', 'g' }; +static const symbol s_14[] = { 'e' }; +static const symbol s_15[] = { 'e' }; +static const symbol s_16[] = { 'e', 'r' }; +static const symbol s_17[] = { 'e', 'n' }; + +static int r_prelude(struct SN_env * z) { + { int c_test = z->c; /* test, line 35 */ + while(1) { /* repeat, line 35 */ + int c1 = z->c; + { int c2 = z->c; /* or, line 38 */ + z->bra = z->c; /* [, line 37 */ + if (!(eq_s(z, 2, s_0))) goto lab2; + z->ket = z->c; /* ], line 37 */ + { int ret = slice_from_s(z, 2, s_1); /* <-, line 37 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 38 */ + } + } + lab1: + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + while(1) { /* repeat, line 41 */ + int c3 = z->c; + while(1) { /* goto, line 41 */ + int c4 = z->c; + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4; + z->bra = z->c; /* [, line 42 */ + { int c5 = z->c; /* or, line 42 */ + if (!(eq_s(z, 1, s_2))) goto lab6; + z->ket = z->c; /* ], line 42 */ + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab6; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 42 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = c5; + if (!(eq_s(z, 1, s_4))) goto lab4; + z->ket = z->c; /* ], line 43 */ + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4; + { int ret = slice_from_s(z, 1, s_5); /* <-, line 43 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = c4; + break; + lab4: + z->c = c4; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab3; + z->c = ret; /* goto, line 41 */ + } + } + continue; + lab3: + z->c = c3; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c_test = z->c; /* test, line 52 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); + if (ret < 0) return 0; + z->c = ret; /* hop, line 52 */ + } + z->I[2] = z->c; /* setmark x, line 52 */ + z->c = c_test; + } + { /* gopast */ /* grouping v, line 54 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 54 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 54 */ + /* try, line 55 */ + if (!(z->I[0] < z->I[2])) goto lab0; + z->I[0] = z->I[2]; +lab0: + { /* gopast */ /* grouping v, line 56 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + { /* gopast */ /* non v, line 56 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 56 */ + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 60 */ + int c1 = z->c; + z->bra = z->c; /* [, line 62 */ + among_var = find_among(z, a_0, 6); /* substring, line 62 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 62 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_9); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 67 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 68 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + { int m1 = z->l - z->c; (void)m1; /* do, line 79 */ + z->ket = z->c; /* [, line 80 */ + 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_1, 7); /* substring, line 80 */ + if (!(among_var)) goto lab0; + z->bra = z->c; /* ], line 80 */ + { int ret = r_R1(z); + if (ret == 0) goto lab0; /* call R1, line 80 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_del(z); /* delete, line 82 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 85 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 86 */ + z->ket = z->c; /* [, line 86 */ + if (!(eq_s_b(z, 1, s_11))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 86 */ + if (!(eq_s_b(z, 3, s_12))) { z->c = z->l - m_keep; goto lab1; } + { int ret = slice_del(z); /* delete, line 86 */ + if (ret < 0) return ret; + } + lab1: + ; + } + break; + case 3: + if (in_grouping_b_U(z, g_s_ending, 98, 116, 0)) goto lab0; + { int ret = slice_del(z); /* delete, line 89 */ + if (ret < 0) return ret; + } + break; + } + lab0: + z->c = z->l - m1; + } + { int m2 = z->l - z->c; (void)m2; /* do, line 93 */ + z->ket = z->c; /* [, line 94 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2; + among_var = find_among_b(z, a_2, 4); /* substring, line 94 */ + if (!(among_var)) goto lab2; + z->bra = z->c; /* ], line 94 */ + { int ret = r_R1(z); + if (ret == 0) goto lab2; /* call R1, line 94 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab2; + case 1: + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + case 2: + if (in_grouping_b_U(z, g_st_ending, 98, 116, 0)) goto lab2; + { int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 3); + if (ret < 0) goto lab2; + z->c = ret; /* hop, line 99 */ + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + } + lab2: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 103 */ + z->ket = z->c; /* [, line 104 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3; + among_var = find_among_b(z, a_4, 8); /* substring, line 104 */ + if (!(among_var)) goto lab3; + z->bra = z->c; /* ], line 104 */ + { int ret = r_R2(z); + if (ret == 0) goto lab3; /* call R2, line 104 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: goto lab3; + case 1: + { int ret = slice_del(z); /* delete, line 106 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 107 */ + z->ket = z->c; /* [, line 107 */ + if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m_keep; goto lab4; } + z->bra = z->c; /* ], line 107 */ + { int m4 = z->l - z->c; (void)m4; /* not, line 107 */ + if (!(eq_s_b(z, 1, s_14))) goto lab5; + { z->c = z->l - m_keep; goto lab4; } + lab5: + z->c = z->l - m4; + } + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call R2, line 107 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 107 */ + if (ret < 0) return ret; + } + lab4: + ; + } + break; + case 2: + { int m5 = z->l - z->c; (void)m5; /* not, line 110 */ + if (!(eq_s_b(z, 1, s_15))) goto lab6; + goto lab3; + lab6: + z->c = z->l - m5; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 114 */ + z->ket = z->c; /* [, line 115 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 115 */ + if (!(eq_s_b(z, 2, s_16))) goto lab9; + goto lab8; + lab9: + z->c = z->l - m6; + if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m_keep; goto lab7; } + } + lab8: + z->bra = z->c; /* ], line 115 */ + { int ret = r_R1(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab7; } /* call R1, line 115 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 115 */ + if (ret < 0) return ret; + } + lab7: + ; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 119 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 120 */ + z->ket = z->c; /* [, line 121 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m_keep; goto lab10; } + among_var = find_among_b(z, a_3, 2); /* substring, line 121 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab10; } + z->bra = z->c; /* ], line 121 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call R2, line 121 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab10; } + case 1: + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + break; + } + lab10: + ; + } + break; + } + lab3: + z->c = z->l - m3; + } + return 1; +} + +extern int german_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 134 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 134 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 135 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 135 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 136 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 137 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab2; /* call standard_suffix, line 137 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + z->c = z->lb; + { int c4 = z->c; /* do, line 138 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab3; /* call postlude, line 138 */ + if (ret < 0) return ret; + } + lab3: + z->c = c4; + } + return 1; +} + +extern struct SN_env * german_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void german_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_german.h b/src_c/stem_UTF_8_german.h new file mode 100644 index 0000000..5bd84d4 --- /dev/null +++ b/src_c/stem_UTF_8_german.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * german_UTF_8_create_env(void); +extern void german_UTF_8_close_env(struct SN_env * z); + +extern int german_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_hungarian.c b/src_c/stem_UTF_8_hungarian.c new file mode 100644 index 0000000..44a62f7 --- /dev/null +++ b/src_c/stem_UTF_8_hungarian.c @@ -0,0 +1,1234 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int hungarian_UTF_8_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); +static int r_instrum(struct SN_env * z); +static int r_plur_owner(struct SN_env * z); +static int r_sing_owner(struct SN_env * z); +static int r_owned(struct SN_env * z); +static int r_plural(struct SN_env * z); +static int r_case_other(struct SN_env * z); +static int r_case_special(struct SN_env * z); +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_UTF_8_create_env(void); +extern void hungarian_UTF_8_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 2, s_0_0, -1, -1, 0}, +/* 1 */ { 3, s_0_1, -1, -1, 0}, +/* 2 */ { 2, s_0_2, -1, -1, 0}, +/* 3 */ { 2, s_0_3, -1, -1, 0}, +/* 4 */ { 2, s_0_4, -1, -1, 0}, +/* 5 */ { 2, s_0_5, -1, -1, 0}, +/* 6 */ { 2, s_0_6, -1, -1, 0}, +/* 7 */ { 2, s_0_7, -1, -1, 0} +}; + +static const symbol s_1_0[2] = { 0xC3, 0xA1 }; +static const symbol s_1_1[2] = { 0xC3, 0xA9 }; + +static const struct among a_1[2] = +{ +/* 0 */ { 2, s_1_0, -1, 1, 0}, +/* 1 */ { 2, 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -1, 0}, +/* 3 */ { 2, s_2_3, -1, -1, 0}, +/* 4 */ { 2, s_2_4, -1, -1, 0}, +/* 5 */ { 2, s_2_5, -1, -1, 0}, +/* 6 */ { 2, s_2_6, -1, -1, 0}, +/* 7 */ { 2, s_2_7, -1, -1, 0}, +/* 8 */ { 2, s_2_8, -1, -1, 0}, +/* 9 */ { 2, s_2_9, -1, -1, 0}, +/* 10 */ { 2, s_2_10, -1, -1, 0}, +/* 11 */ { 2, s_2_11, -1, -1, 0}, +/* 12 */ { 3, s_2_12, -1, -1, 0}, +/* 13 */ { 2, s_2_13, -1, -1, 0}, +/* 14 */ { 3, s_2_14, -1, -1, 0}, +/* 15 */ { 2, s_2_15, -1, -1, 0}, +/* 16 */ { 2, s_2_16, -1, -1, 0}, +/* 17 */ { 3, s_2_17, -1, -1, 0}, +/* 18 */ { 3, s_2_18, -1, -1, 0}, +/* 19 */ { 3, s_2_19, -1, -1, 0}, +/* 20 */ { 3, s_2_20, -1, -1, 0}, +/* 21 */ { 3, s_2_21, -1, -1, 0}, +/* 22 */ { 2, s_2_22, -1, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 2, s_3_1, -1, 2, 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[4] = { 'n', 0xC3, 0xA1, 'l' }; +static const symbol s_4_11[4] = { 'n', 0xC3, 0xA9, 'l' }; +static const symbol s_4_12[4] = { 'b', 0xC3, 0xB3, 'l' }; +static const symbol s_4_13[4] = { 'r', 0xC3, 0xB3, 'l' }; +static const symbol s_4_14[4] = { 't', 0xC3, 0xB3, 'l' }; +static const symbol s_4_15[4] = { 'b', 0xC3, 0xB5, 'l' }; +static const symbol s_4_16[4] = { 'r', 0xC3, 0xB5, 'l' }; +static const symbol s_4_17[4] = { 't', 0xC3, 0xB5, 'l' }; +static const symbol s_4_18[3] = { 0xC3, 0xBC, '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[7] = { 'k', 0xC3, 0xA9, 'p', 'p', 'e', 'n' }; +static const symbol s_4_25[2] = { 'o', 'n' }; +static const symbol s_4_26[3] = { 0xC3, 0xB6, 'n' }; +static const symbol s_4_27[5] = { 'k', 0xC3, 0xA9, '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[5] = { 'k', 0xC3, 0xA9, 'n', 't' }; +static const symbol s_4_33[7] = { 'a', 'n', 'k', 0xC3, 0xA9, 'n', 't' }; +static const symbol s_4_34[7] = { 'e', 'n', 'k', 0xC3, 0xA9, 'n', 't' }; +static const symbol s_4_35[7] = { 'o', 'n', 'k', 0xC3, 0xA9, 'n', 't' }; +static const symbol s_4_36[2] = { 'o', 't' }; +static const symbol s_4_37[4] = { 0xC3, 0xA9, 'r', 't' }; +static const symbol s_4_38[3] = { 0xC3, 0xB6, '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[4] = { 'h', 0xC3, 0xB6, 'z' }; +static const symbol s_4_42[3] = { 'v', 0xC3, 0xA1 }; +static const symbol s_4_43[3] = { 'v', 0xC3, 0xA9 }; + +static const struct among a_4[44] = +{ +/* 0 */ { 2, s_4_0, -1, -1, 0}, +/* 1 */ { 2, s_4_1, -1, -1, 0}, +/* 2 */ { 2, s_4_2, -1, -1, 0}, +/* 3 */ { 2, s_4_3, -1, -1, 0}, +/* 4 */ { 2, s_4_4, -1, -1, 0}, +/* 5 */ { 3, s_4_5, -1, -1, 0}, +/* 6 */ { 3, s_4_6, -1, -1, 0}, +/* 7 */ { 3, s_4_7, -1, -1, 0}, +/* 8 */ { 3, s_4_8, -1, -1, 0}, +/* 9 */ { 2, s_4_9, -1, -1, 0}, +/* 10 */ { 4, s_4_10, -1, -1, 0}, +/* 11 */ { 4, s_4_11, -1, -1, 0}, +/* 12 */ { 4, s_4_12, -1, -1, 0}, +/* 13 */ { 4, s_4_13, -1, -1, 0}, +/* 14 */ { 4, s_4_14, -1, -1, 0}, +/* 15 */ { 4, s_4_15, -1, -1, 0}, +/* 16 */ { 4, s_4_16, -1, -1, 0}, +/* 17 */ { 4, s_4_17, -1, -1, 0}, +/* 18 */ { 3, s_4_18, -1, -1, 0}, +/* 19 */ { 1, s_4_19, -1, -1, 0}, +/* 20 */ { 2, s_4_20, 19, -1, 0}, +/* 21 */ { 3, s_4_21, 20, -1, 0}, +/* 22 */ { 2, s_4_22, 19, -1, 0}, +/* 23 */ { 3, s_4_23, 22, -1, 0}, +/* 24 */ { 7, s_4_24, 22, -1, 0}, +/* 25 */ { 2, s_4_25, 19, -1, 0}, +/* 26 */ { 3, s_4_26, 19, -1, 0}, +/* 27 */ { 5, s_4_27, -1, -1, 0}, +/* 28 */ { 3, s_4_28, -1, -1, 0}, +/* 29 */ { 1, s_4_29, -1, -1, 0}, +/* 30 */ { 2, s_4_30, 29, -1, 0}, +/* 31 */ { 2, s_4_31, 29, -1, 0}, +/* 32 */ { 5, s_4_32, 29, -1, 0}, +/* 33 */ { 7, s_4_33, 32, -1, 0}, +/* 34 */ { 7, s_4_34, 32, -1, 0}, +/* 35 */ { 7, s_4_35, 32, -1, 0}, +/* 36 */ { 2, s_4_36, 29, -1, 0}, +/* 37 */ { 4, s_4_37, 29, -1, 0}, +/* 38 */ { 3, s_4_38, 29, -1, 0}, +/* 39 */ { 3, s_4_39, -1, -1, 0}, +/* 40 */ { 3, s_4_40, -1, -1, 0}, +/* 41 */ { 4, s_4_41, -1, -1, 0}, +/* 42 */ { 3, s_4_42, -1, -1, 0}, +/* 43 */ { 3, s_4_43, -1, -1, 0} +}; + +static const symbol s_5_0[3] = { 0xC3, 0xA1, 'n' }; +static const symbol s_5_1[3] = { 0xC3, 0xA9, 'n' }; +static const symbol s_5_2[8] = { 0xC3, 0xA1, 'n', 'k', 0xC3, 0xA9, 'n', 't' }; + +static const struct among a_5[3] = +{ +/* 0 */ { 3, s_5_0, -1, 2, 0}, +/* 1 */ { 3, s_5_1, -1, 1, 0}, +/* 2 */ { 8, s_5_2, -1, 3, 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[6] = { 0xC3, 0xA1, 's', 't', 'u', 'l' }; +static const symbol s_6_3[5] = { 's', 't', 0xC3, 0xBC, 'l' }; +static const symbol s_6_4[6] = { 'e', 's', 't', 0xC3, 0xBC, 'l' }; +static const symbol s_6_5[7] = { 0xC3, 0xA9, 's', 't', 0xC3, 0xBC, 'l' }; + +static const struct among a_6[6] = +{ +/* 0 */ { 4, s_6_0, -1, 2, 0}, +/* 1 */ { 5, s_6_1, 0, 1, 0}, +/* 2 */ { 6, s_6_2, 0, 3, 0}, +/* 3 */ { 5, s_6_3, -1, 2, 0}, +/* 4 */ { 6, s_6_4, 3, 1, 0}, +/* 5 */ { 7, s_6_5, 3, 4, 0} +}; + +static const symbol s_7_0[2] = { 0xC3, 0xA1 }; +static const symbol s_7_1[2] = { 0xC3, 0xA9 }; + +static const struct among a_7[2] = +{ +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 2, s_7_1, -1, 2, 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[3] = { 0xC3, 0xA1, 'k' }; +static const symbol s_8_5[3] = { 0xC3, 0xA9, 'k' }; +static const symbol s_8_6[3] = { 0xC3, 0xB6, 'k' }; + +static const struct among a_8[7] = +{ +/* 0 */ { 1, s_8_0, -1, 7, 0}, +/* 1 */ { 2, s_8_1, 0, 4, 0}, +/* 2 */ { 2, s_8_2, 0, 6, 0}, +/* 3 */ { 2, s_8_3, 0, 5, 0}, +/* 4 */ { 3, s_8_4, 0, 1, 0}, +/* 5 */ { 3, s_8_5, 0, 2, 0}, +/* 6 */ { 3, s_8_6, 0, 3, 0} +}; + +static const symbol s_9_0[3] = { 0xC3, 0xA9, 'i' }; +static const symbol s_9_1[5] = { 0xC3, 0xA1, 0xC3, 0xA9, 'i' }; +static const symbol s_9_2[5] = { 0xC3, 0xA9, 0xC3, 0xA9, 'i' }; +static const symbol s_9_3[2] = { 0xC3, 0xA9 }; +static const symbol s_9_4[3] = { 'k', 0xC3, 0xA9 }; +static const symbol s_9_5[4] = { 'a', 'k', 0xC3, 0xA9 }; +static const symbol s_9_6[4] = { 'e', 'k', 0xC3, 0xA9 }; +static const symbol s_9_7[4] = { 'o', 'k', 0xC3, 0xA9 }; +static const symbol s_9_8[5] = { 0xC3, 0xA1, 'k', 0xC3, 0xA9 }; +static const symbol s_9_9[5] = { 0xC3, 0xA9, 'k', 0xC3, 0xA9 }; +static const symbol s_9_10[5] = { 0xC3, 0xB6, 'k', 0xC3, 0xA9 }; +static const symbol s_9_11[4] = { 0xC3, 0xA9, 0xC3, 0xA9 }; + +static const struct among a_9[12] = +{ +/* 0 */ { 3, s_9_0, -1, 7, 0}, +/* 1 */ { 5, s_9_1, 0, 6, 0}, +/* 2 */ { 5, s_9_2, 0, 5, 0}, +/* 3 */ { 2, s_9_3, -1, 9, 0}, +/* 4 */ { 3, s_9_4, 3, 4, 0}, +/* 5 */ { 4, s_9_5, 4, 1, 0}, +/* 6 */ { 4, s_9_6, 4, 1, 0}, +/* 7 */ { 4, s_9_7, 4, 1, 0}, +/* 8 */ { 5, s_9_8, 4, 3, 0}, +/* 9 */ { 5, s_9_9, 4, 2, 0}, +/* 10 */ { 5, s_9_10, 4, 1, 0}, +/* 11 */ { 4, s_9_11, 3, 8, 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[3] = { 0xC3, 0xA1, 'd' }; +static const symbol s_10_7[3] = { 0xC3, 0xA9, 'd' }; +static const symbol s_10_8[3] = { 0xC3, 0xB6, '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[4] = { 0xC3, 0xA1, 'n', 'k' }; +static const symbol s_10_14[4] = { 0xC3, 0xA9, 'n', 'k' }; +static const symbol s_10_15[4] = { 0xC3, 0xBC, '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[5] = { 0xC3, 0xA1, 'j', 'u', 'k' }; +static const symbol s_10_19[3] = { 0xC3, 0xBC, 'k' }; +static const symbol s_10_20[4] = { 'j', 0xC3, 0xBC, 'k' }; +static const symbol s_10_21[6] = { 0xC3, 0xA9, 'j', 0xC3, 0xBC, '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[3] = { 0xC3, 0xA1, 'm' }; +static const symbol s_10_27[3] = { 0xC3, 0xA9, 'm' }; +static const symbol s_10_28[1] = { 'o' }; +static const symbol s_10_29[2] = { 0xC3, 0xA1 }; +static const symbol s_10_30[2] = { 0xC3, 0xA9 }; + +static const struct among a_10[31] = +{ +/* 0 */ { 1, s_10_0, -1, 18, 0}, +/* 1 */ { 2, s_10_1, 0, 17, 0}, +/* 2 */ { 1, s_10_2, -1, 16, 0}, +/* 3 */ { 2, s_10_3, 2, 13, 0}, +/* 4 */ { 2, s_10_4, 2, 13, 0}, +/* 5 */ { 2, s_10_5, 2, 13, 0}, +/* 6 */ { 3, s_10_6, 2, 14, 0}, +/* 7 */ { 3, s_10_7, 2, 15, 0}, +/* 8 */ { 3, s_10_8, 2, 13, 0}, +/* 9 */ { 1, s_10_9, -1, 18, 0}, +/* 10 */ { 2, s_10_10, 9, 17, 0}, +/* 11 */ { 2, s_10_11, -1, 4, 0}, +/* 12 */ { 3, s_10_12, 11, 1, 0}, +/* 13 */ { 4, s_10_13, 11, 2, 0}, +/* 14 */ { 4, s_10_14, 11, 3, 0}, +/* 15 */ { 4, s_10_15, 11, 1, 0}, +/* 16 */ { 2, s_10_16, -1, 8, 0}, +/* 17 */ { 3, s_10_17, 16, 7, 0}, +/* 18 */ { 5, s_10_18, 17, 5, 0}, +/* 19 */ { 3, s_10_19, -1, 8, 0}, +/* 20 */ { 4, s_10_20, 19, 7, 0}, +/* 21 */ { 6, s_10_21, 20, 6, 0}, +/* 22 */ { 1, s_10_22, -1, 12, 0}, +/* 23 */ { 2, s_10_23, 22, 9, 0}, +/* 24 */ { 2, s_10_24, 22, 9, 0}, +/* 25 */ { 2, s_10_25, 22, 9, 0}, +/* 26 */ { 3, s_10_26, 22, 10, 0}, +/* 27 */ { 3, s_10_27, 22, 11, 0}, +/* 28 */ { 1, s_10_28, -1, 18, 0}, +/* 29 */ { 2, s_10_29, -1, 19, 0}, +/* 30 */ { 2, s_10_30, -1, 20, 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[4] = { 0xC3, 0xA1, 'i', 'd' }; +static const symbol s_11_6[4] = { 0xC3, 0xA9, '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[3] = { 0xC3, 0xA1, 'i' }; +static const symbol s_11_13[3] = { 0xC3, 0xA9, '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[6] = { 0xC3, 0xA9, '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[4] = { 0xC3, 0xA1, 'i', 'k' }; +static const symbol s_11_24[4] = { 0xC3, 0xA9, '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[5] = { 0xC3, 0xA1, 'i', 'n', 'k' }; +static const symbol s_11_31[5] = { 0xC3, 0xA9, '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[6] = { 0xC3, 0xA1, '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[4] = { 0xC3, 0xA1, 'i', 'm' }; +static const symbol s_11_41[4] = { 0xC3, 0xA9, 'i', 'm' }; + +static const struct among a_11[42] = +{ +/* 0 */ { 2, s_11_0, -1, 10, 0}, +/* 1 */ { 3, s_11_1, 0, 9, 0}, +/* 2 */ { 4, s_11_2, 1, 6, 0}, +/* 3 */ { 3, s_11_3, 0, 9, 0}, +/* 4 */ { 4, s_11_4, 3, 6, 0}, +/* 5 */ { 4, s_11_5, 0, 7, 0}, +/* 6 */ { 4, s_11_6, 0, 8, 0}, +/* 7 */ { 1, s_11_7, -1, 15, 0}, +/* 8 */ { 2, s_11_8, 7, 14, 0}, +/* 9 */ { 3, s_11_9, 8, 11, 0}, +/* 10 */ { 2, s_11_10, 7, 14, 0}, +/* 11 */ { 3, s_11_11, 10, 11, 0}, +/* 12 */ { 3, s_11_12, 7, 12, 0}, +/* 13 */ { 3, s_11_13, 7, 13, 0}, +/* 14 */ { 4, s_11_14, -1, 24, 0}, +/* 15 */ { 5, s_11_15, 14, 21, 0}, +/* 16 */ { 6, s_11_16, 15, 20, 0}, +/* 17 */ { 6, s_11_17, 14, 23, 0}, +/* 18 */ { 2, s_11_18, -1, 29, 0}, +/* 19 */ { 3, s_11_19, 18, 26, 0}, +/* 20 */ { 4, s_11_20, 19, 25, 0}, +/* 21 */ { 3, s_11_21, 18, 26, 0}, +/* 22 */ { 4, s_11_22, 21, 25, 0}, +/* 23 */ { 4, s_11_23, 18, 27, 0}, +/* 24 */ { 4, s_11_24, 18, 28, 0}, +/* 25 */ { 3, s_11_25, -1, 20, 0}, +/* 26 */ { 4, s_11_26, 25, 17, 0}, +/* 27 */ { 5, s_11_27, 26, 16, 0}, +/* 28 */ { 4, s_11_28, 25, 17, 0}, +/* 29 */ { 5, s_11_29, 28, 16, 0}, +/* 30 */ { 5, s_11_30, 25, 18, 0}, +/* 31 */ { 5, s_11_31, 25, 19, 0}, +/* 32 */ { 5, s_11_32, -1, 21, 0}, +/* 33 */ { 6, s_11_33, 32, 20, 0}, +/* 34 */ { 6, s_11_34, -1, 22, 0}, +/* 35 */ { 2, s_11_35, -1, 5, 0}, +/* 36 */ { 3, s_11_36, 35, 4, 0}, +/* 37 */ { 4, s_11_37, 36, 1, 0}, +/* 38 */ { 3, s_11_38, 35, 4, 0}, +/* 39 */ { 4, s_11_39, 38, 1, 0}, +/* 40 */ { 4, s_11_40, 35, 2, 0}, +/* 41 */ { 4, s_11_41, 35, 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[] = { 'a' }; +static const symbol s_6[] = { 'e' }; +static const symbol s_7[] = { 'a' }; +static const symbol s_8[] = { 'e' }; +static const symbol s_9[] = { 'e' }; +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 const symbol s_14[] = { 'a' }; +static const symbol s_15[] = { 'e' }; +static const symbol s_16[] = { 'a' }; +static const symbol s_17[] = { 'e' }; +static const symbol s_18[] = { 'a' }; +static const symbol s_19[] = { 'e' }; +static const symbol s_20[] = { 'a' }; +static const symbol s_21[] = { 'e' }; +static const symbol s_22[] = { 'a' }; +static const symbol s_23[] = { 'e' }; +static const symbol s_24[] = { 'a' }; +static const symbol s_25[] = { 'e' }; +static const symbol s_26[] = { 'a' }; +static const symbol s_27[] = { 'e' }; +static const symbol s_28[] = { 'a' }; +static const symbol s_29[] = { 'e' }; +static const symbol s_30[] = { 'a' }; +static const symbol s_31[] = { 'e' }; +static const symbol s_32[] = { 'a' }; +static const symbol s_33[] = { 'e' }; +static const symbol s_34[] = { 'a' }; +static const symbol s_35[] = { 'e' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c1 = z->c; /* or, line 51 */ + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab1; + if (in_grouping_U(z, g_v, 97, 252, 1) < 0) goto lab1; /* goto */ /* non v, line 48 */ + { int c2 = z->c; /* or, line 49 */ + 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; /* among, line 49 */ + goto lab2; + lab3: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab1; + z->c = ret; /* next, line 49 */ + } + } + lab2: + z->I[0] = z->c; /* setmark p1, line 50 */ + goto lab0; + lab1: + z->c = c1; + if (out_grouping_U(z, g_v, 97, 252, 0)) return 0; + { /* gopast */ /* grouping v, line 53 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 53 */ + } +lab0: + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_v_ending(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 61 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0; + among_var = find_among_b(z, a_1, 2); /* substring, line 61 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 61 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 61 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 62 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_double(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 68 */ + 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; /* among, line 68 */ + z->c = z->l - m_test; + } + return 1; +} + +static int r_undouble(struct SN_env * z) { + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 73 */ + } + z->ket = z->c; /* [, line 73 */ + { int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 1); + if (ret < 0) return 0; + z->c = ret; /* hop, line 73 */ + } + z->bra = z->c; /* ], line 73 */ + { int ret = slice_del(z); /* delete, line 73 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_instrum(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 77 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0; + among_var = find_among_b(z, a_3, 2); /* substring, line 77 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 77 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 77 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 79 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 82 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_case(struct SN_env * z) { + z->ket = z->c; /* [, line 87 */ + if (!(find_among_b(z, a_4, 44))) return 0; /* substring, line 87 */ + z->bra = z->c; /* ], line 87 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 87 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 111 */ + if (ret < 0) return ret; + } + { int ret = r_v_ending(z); + if (ret == 0) return 0; /* call v_ending, line 112 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_case_special(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 116 */ + if (z->c - 2 <= 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); /* substring, line 116 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 116 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 116 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_case_other(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 124 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0; + among_var = find_among_b(z, a_6, 6); /* substring, line 124 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 124 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 124 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 126 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 127 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 128 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_factive(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 133 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0; + among_var = find_among_b(z, a_7, 2); /* substring, line 133 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 133 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 133 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 134 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_double(z); + if (ret == 0) return 0; /* call double, line 135 */ + if (ret < 0) return ret; + } + break; + } + { int ret = slice_del(z); /* delete, line 137 */ + if (ret < 0) return ret; + } + { int ret = r_undouble(z); + if (ret == 0) return 0; /* call undouble, line 138 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_plural(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 142 */ + if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0; + among_var = find_among_b(z, a_8, 7); /* substring, line 142 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 142 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 142 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 143 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 144 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 146 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 148 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 149 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_owned(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 154 */ + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 169)) return 0; + among_var = find_among_b(z, a_9, 12); /* substring, line 154 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 154 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 154 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 155 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_9); /* <-, line 156 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 157 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 158 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 159 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 160 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 161 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 162 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_sing_owner(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 168 */ + among_var = find_among_b(z, a_10, 31); /* substring, line 168 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 168 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 168 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 169 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_14); /* <-, line 170 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_15); /* <-, line 171 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 172 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_16); /* <-, line 173 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_17); /* <-, line 174 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_del(z); /* delete, line 175 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 177 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 1, s_18); /* <-, line 178 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 1, s_19); /* <-, line 179 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_del(z); /* delete, line 180 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_del(z); /* delete, line 181 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 1, s_20); /* <-, line 182 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_from_s(z, 1, s_21); /* <-, line 183 */ + if (ret < 0) return ret; + } + break; + case 16: + { int ret = slice_del(z); /* delete, line 184 */ + if (ret < 0) return ret; + } + break; + case 17: + { int ret = slice_del(z); /* delete, line 185 */ + if (ret < 0) return ret; + } + break; + case 18: + { int ret = slice_del(z); /* delete, line 186 */ + if (ret < 0) return ret; + } + break; + case 19: + { int ret = slice_from_s(z, 1, s_22); /* <-, line 187 */ + if (ret < 0) return ret; + } + break; + case 20: + { int ret = slice_from_s(z, 1, s_23); /* <-, line 188 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_plur_owner(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 193 */ + 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); /* substring, line 193 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 193 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 193 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_24); /* <-, line 195 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_25); /* <-, line 196 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_del(z); /* delete, line 197 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_del(z); /* delete, line 198 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 199 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 1, s_26); /* <-, line 200 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 1, s_27); /* <-, line 201 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_del(z); /* delete, line 202 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_del(z); /* delete, line 203 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_del(z); /* delete, line 204 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 1, s_28); /* <-, line 205 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_from_s(z, 1, s_29); /* <-, line 206 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_del(z); /* delete, line 207 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret = slice_del(z); /* delete, line 208 */ + if (ret < 0) return ret; + } + break; + case 16: + { int ret = slice_del(z); /* delete, line 209 */ + if (ret < 0) return ret; + } + break; + case 17: + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + break; + case 18: + { int ret = slice_from_s(z, 1, s_30); /* <-, line 211 */ + if (ret < 0) return ret; + } + break; + case 19: + { int ret = slice_from_s(z, 1, s_31); /* <-, line 212 */ + if (ret < 0) return ret; + } + break; + case 20: + { int ret = slice_del(z); /* delete, line 214 */ + if (ret < 0) return ret; + } + break; + case 21: + { int ret = slice_del(z); /* delete, line 215 */ + if (ret < 0) return ret; + } + break; + case 22: + { int ret = slice_from_s(z, 1, s_32); /* <-, line 216 */ + if (ret < 0) return ret; + } + break; + case 23: + { int ret = slice_from_s(z, 1, s_33); /* <-, line 217 */ + if (ret < 0) return ret; + } + break; + case 24: + { int ret = slice_del(z); /* delete, line 218 */ + if (ret < 0) return ret; + } + break; + case 25: + { int ret = slice_del(z); /* delete, line 219 */ + if (ret < 0) return ret; + } + break; + case 26: + { int ret = slice_del(z); /* delete, line 220 */ + if (ret < 0) return ret; + } + break; + case 27: + { int ret = slice_from_s(z, 1, s_34); /* <-, line 221 */ + if (ret < 0) return ret; + } + break; + case 28: + { int ret = slice_from_s(z, 1, s_35); /* <-, line 222 */ + if (ret < 0) return ret; + } + break; + case 29: + { int ret = slice_del(z); /* delete, line 223 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int hungarian_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 229 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 229 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 230 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 231 */ + { int ret = r_instrum(z); + if (ret == 0) goto lab1; /* call instrum, line 231 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 232 */ + { int ret = r_case(z); + if (ret == 0) goto lab2; /* call case, line 232 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 233 */ + { int ret = r_case_special(z); + if (ret == 0) goto lab3; /* call case_special, line 233 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 234 */ + { int ret = r_case_other(z); + if (ret == 0) goto lab4; /* call case_other, line 234 */ + if (ret < 0) return ret; + } + lab4: + z->c = z->l - m5; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 235 */ + { int ret = r_factive(z); + if (ret == 0) goto lab5; /* call factive, line 235 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 236 */ + { int ret = r_owned(z); + if (ret == 0) goto lab6; /* call owned, line 236 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 237 */ + { int ret = r_sing_owner(z); + if (ret == 0) goto lab7; /* call sing_owner, line 237 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 238 */ + { int ret = r_plur_owner(z); + if (ret == 0) goto lab8; /* call plur_owner, line 238 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 239 */ + { int ret = r_plural(z); + if (ret == 0) goto lab9; /* call plural, line 239 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m10; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * hungarian_UTF_8_create_env(void) { return SN_create_env(0, 1, 0); } + +extern void hungarian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_hungarian.h b/src_c/stem_UTF_8_hungarian.h new file mode 100644 index 0000000..d81bd23 --- /dev/null +++ b/src_c/stem_UTF_8_hungarian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * hungarian_UTF_8_create_env(void); +extern void hungarian_UTF_8_close_env(struct SN_env * z); + +extern int hungarian_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_italian.c b/src_c/stem_UTF_8_italian.c new file mode 100644 index 0000000..7bb0511 --- /dev/null +++ b/src_c/stem_UTF_8_italian.c @@ -0,0 +1,1073 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int italian_UTF_8_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); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +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); +static int r_prelude(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * italian_UTF_8_create_env(void); +extern void italian_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[2] = { 'q', 'u' }; +static const symbol s_0_2[2] = { 0xC3, 0xA1 }; +static const symbol s_0_3[2] = { 0xC3, 0xA9 }; +static const symbol s_0_4[2] = { 0xC3, 0xAD }; +static const symbol s_0_5[2] = { 0xC3, 0xB3 }; +static const symbol s_0_6[2] = { 0xC3, 0xBA }; + +static const struct among a_0[7] = +{ +/* 0 */ { 0, 0, -1, 7, 0}, +/* 1 */ { 2, s_0_1, 0, 6, 0}, +/* 2 */ { 2, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, 2, 0}, +/* 4 */ { 2, s_0_4, 0, 3, 0}, +/* 5 */ { 2, s_0_5, 0, 4, 0}, +/* 6 */ { 2, s_0_6, 0, 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, 0, -1, 3, 0}, +/* 1 */ { 1, s_1_1, 0, 1, 0}, +/* 2 */ { 1, s_1_2, 0, 2, 0} +}; + +static const symbol s_2_0[2] = { 'l', 'a' }; +static const symbol s_2_1[4] = { 'c', 'e', 'l', 'a' }; +static const symbol s_2_2[6] = { 'g', 'l', 'i', 'e', 'l', 'a' }; +static const symbol s_2_3[4] = { 'm', 'e', 'l', 'a' }; +static const symbol s_2_4[4] = { 't', 'e', 'l', 'a' }; +static const symbol s_2_5[4] = { 'v', 'e', 'l', 'a' }; +static const symbol s_2_6[2] = { 'l', 'e' }; +static const symbol s_2_7[4] = { 'c', 'e', 'l', 'e' }; +static const symbol s_2_8[6] = { 'g', 'l', 'i', 'e', 'l', 'e' }; +static const symbol s_2_9[4] = { 'm', 'e', 'l', 'e' }; +static const symbol s_2_10[4] = { 't', 'e', 'l', 'e' }; +static const symbol s_2_11[4] = { 'v', 'e', 'l', 'e' }; +static const symbol s_2_12[2] = { 'n', 'e' }; +static const symbol s_2_13[4] = { 'c', 'e', 'n', 'e' }; +static const symbol s_2_14[6] = { 'g', 'l', 'i', 'e', 'n', 'e' }; +static const symbol s_2_15[4] = { 'm', 'e', 'n', 'e' }; +static const symbol s_2_16[4] = { 's', 'e', 'n', 'e' }; +static const symbol s_2_17[4] = { 't', 'e', 'n', 'e' }; +static const symbol s_2_18[4] = { 'v', 'e', 'n', 'e' }; +static const symbol s_2_19[2] = { 'c', 'i' }; +static const symbol s_2_20[2] = { 'l', 'i' }; +static const symbol s_2_21[4] = { 'c', 'e', 'l', 'i' }; +static const symbol s_2_22[6] = { 'g', 'l', 'i', 'e', 'l', 'i' }; +static const symbol s_2_23[4] = { 'm', 'e', 'l', 'i' }; +static const symbol s_2_24[4] = { 't', 'e', 'l', 'i' }; +static const symbol s_2_25[4] = { 'v', 'e', 'l', 'i' }; +static const symbol s_2_26[3] = { 'g', 'l', 'i' }; +static const symbol s_2_27[2] = { 'm', 'i' }; +static const symbol s_2_28[2] = { 's', 'i' }; +static const symbol s_2_29[2] = { 't', 'i' }; +static const symbol s_2_30[2] = { 'v', 'i' }; +static const symbol s_2_31[2] = { 'l', 'o' }; +static const symbol s_2_32[4] = { 'c', 'e', 'l', 'o' }; +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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 4, s_2_1, 0, -1, 0}, +/* 2 */ { 6, s_2_2, 0, -1, 0}, +/* 3 */ { 4, s_2_3, 0, -1, 0}, +/* 4 */ { 4, s_2_4, 0, -1, 0}, +/* 5 */ { 4, s_2_5, 0, -1, 0}, +/* 6 */ { 2, s_2_6, -1, -1, 0}, +/* 7 */ { 4, s_2_7, 6, -1, 0}, +/* 8 */ { 6, s_2_8, 6, -1, 0}, +/* 9 */ { 4, s_2_9, 6, -1, 0}, +/* 10 */ { 4, s_2_10, 6, -1, 0}, +/* 11 */ { 4, s_2_11, 6, -1, 0}, +/* 12 */ { 2, s_2_12, -1, -1, 0}, +/* 13 */ { 4, s_2_13, 12, -1, 0}, +/* 14 */ { 6, s_2_14, 12, -1, 0}, +/* 15 */ { 4, s_2_15, 12, -1, 0}, +/* 16 */ { 4, s_2_16, 12, -1, 0}, +/* 17 */ { 4, s_2_17, 12, -1, 0}, +/* 18 */ { 4, s_2_18, 12, -1, 0}, +/* 19 */ { 2, s_2_19, -1, -1, 0}, +/* 20 */ { 2, s_2_20, -1, -1, 0}, +/* 21 */ { 4, s_2_21, 20, -1, 0}, +/* 22 */ { 6, s_2_22, 20, -1, 0}, +/* 23 */ { 4, s_2_23, 20, -1, 0}, +/* 24 */ { 4, s_2_24, 20, -1, 0}, +/* 25 */ { 4, s_2_25, 20, -1, 0}, +/* 26 */ { 3, s_2_26, 20, -1, 0}, +/* 27 */ { 2, s_2_27, -1, -1, 0}, +/* 28 */ { 2, s_2_28, -1, -1, 0}, +/* 29 */ { 2, s_2_29, -1, -1, 0}, +/* 30 */ { 2, s_2_30, -1, -1, 0}, +/* 31 */ { 2, s_2_31, -1, -1, 0}, +/* 32 */ { 4, s_2_32, 31, -1, 0}, +/* 33 */ { 6, s_2_33, 31, -1, 0}, +/* 34 */ { 4, s_2_34, 31, -1, 0}, +/* 35 */ { 4, s_2_35, 31, -1, 0}, +/* 36 */ { 4, s_2_36, 31, -1, 0} +}; + +static const symbol s_3_0[4] = { 'a', 'n', 'd', 'o' }; +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] = +{ +/* 0 */ { 4, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 2, s_3_2, -1, 2, 0}, +/* 3 */ { 2, s_3_3, -1, 2, 0}, +/* 4 */ { 2, s_3_4, -1, 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] = +{ +/* 0 */ { 2, s_4_0, -1, -1, 0}, +/* 1 */ { 4, s_4_1, -1, -1, 0}, +/* 2 */ { 2, s_4_2, -1, -1, 0}, +/* 3 */ { 2, s_4_3, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, -1, 1, 0} +}; + +static const symbol s_6_0[3] = { 'i', 'c', 'a' }; +static const symbol s_6_1[5] = { 'l', 'o', 'g', 'i', 'a' }; +static const symbol s_6_2[3] = { 'o', 's', 'a' }; +static const symbol s_6_3[4] = { 'i', 's', 't', 'a' }; +static const symbol s_6_4[3] = { 'i', 'v', 'a' }; +static const symbol s_6_5[4] = { 'a', 'n', 'z', 'a' }; +static const symbol s_6_6[4] = { 'e', 'n', 'z', 'a' }; +static const symbol s_6_7[3] = { 'i', 'c', 'e' }; +static const symbol s_6_8[6] = { 'a', 't', 'r', 'i', 'c', 'e' }; +static const symbol s_6_9[4] = { 'i', 'c', 'h', 'e' }; +static const symbol s_6_10[5] = { 'l', 'o', 'g', 'i', 'e' }; +static const symbol s_6_11[5] = { 'a', 'b', 'i', 'l', 'e' }; +static const symbol s_6_12[5] = { 'i', 'b', 'i', 'l', 'e' }; +static const symbol s_6_13[6] = { 'u', 's', 'i', 'o', 'n', 'e' }; +static const symbol s_6_14[6] = { 'a', 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_6_15[6] = { 'u', 'z', 'i', 'o', 'n', 'e' }; +static const symbol s_6_16[5] = { 'a', 't', 'o', 'r', 'e' }; +static const symbol s_6_17[3] = { 'o', 's', 'e' }; +static const symbol s_6_18[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_6_19[5] = { 'm', 'e', 'n', 't', 'e' }; +static const symbol s_6_20[6] = { 'a', 'm', 'e', 'n', 't', 'e' }; +static const symbol s_6_21[4] = { 'i', 's', 't', 'e' }; +static const symbol s_6_22[3] = { 'i', 'v', 'e' }; +static const symbol s_6_23[4] = { 'a', 'n', 'z', 'e' }; +static const symbol s_6_24[4] = { 'e', 'n', 'z', 'e' }; +static const symbol s_6_25[3] = { 'i', 'c', 'i' }; +static const symbol s_6_26[6] = { 'a', 't', 'r', 'i', 'c', 'i' }; +static const symbol s_6_27[4] = { 'i', 'c', 'h', 'i' }; +static const symbol s_6_28[5] = { 'a', 'b', 'i', 'l', 'i' }; +static const symbol s_6_29[5] = { 'i', 'b', 'i', 'l', 'i' }; +static const symbol s_6_30[4] = { 'i', 's', 'm', 'i' }; +static const symbol s_6_31[6] = { 'u', 's', 'i', 'o', 'n', 'i' }; +static const symbol s_6_32[6] = { 'a', 'z', 'i', 'o', 'n', 'i' }; +static const symbol s_6_33[6] = { 'u', 'z', 'i', 'o', 'n', 'i' }; +static const symbol s_6_34[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_6_35[3] = { 'o', 's', 'i' }; +static const symbol s_6_36[4] = { 'a', 'n', 't', 'i' }; +static const symbol s_6_37[6] = { 'a', 'm', 'e', 'n', 't', 'i' }; +static const symbol s_6_38[6] = { 'i', 'm', 'e', 'n', 't', 'i' }; +static const symbol s_6_39[4] = { 'i', 's', 't', 'i' }; +static const symbol s_6_40[3] = { 'i', 'v', 'i' }; +static const symbol s_6_41[3] = { 'i', 'c', 'o' }; +static const symbol s_6_42[4] = { 'i', 's', 'm', 'o' }; +static const symbol s_6_43[3] = { 'o', 's', 'o' }; +static const symbol s_6_44[6] = { 'a', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_6_45[6] = { 'i', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_6_46[3] = { 'i', 'v', 'o' }; +static const symbol s_6_47[4] = { 'i', 't', 0xC3, 0xA0 }; +static const symbol s_6_48[5] = { 'i', 's', 't', 0xC3, 0xA0 }; +static const symbol s_6_49[5] = { 'i', 's', 't', 0xC3, 0xA8 }; +static const symbol s_6_50[5] = { 'i', 's', 't', 0xC3, 0xAC }; + +static const struct among a_6[51] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 5, s_6_1, -1, 3, 0}, +/* 2 */ { 3, s_6_2, -1, 1, 0}, +/* 3 */ { 4, s_6_3, -1, 1, 0}, +/* 4 */ { 3, s_6_4, -1, 9, 0}, +/* 5 */ { 4, s_6_5, -1, 1, 0}, +/* 6 */ { 4, s_6_6, -1, 5, 0}, +/* 7 */ { 3, s_6_7, -1, 1, 0}, +/* 8 */ { 6, s_6_8, 7, 1, 0}, +/* 9 */ { 4, s_6_9, -1, 1, 0}, +/* 10 */ { 5, s_6_10, -1, 3, 0}, +/* 11 */ { 5, s_6_11, -1, 1, 0}, +/* 12 */ { 5, s_6_12, -1, 1, 0}, +/* 13 */ { 6, s_6_13, -1, 4, 0}, +/* 14 */ { 6, s_6_14, -1, 2, 0}, +/* 15 */ { 6, s_6_15, -1, 4, 0}, +/* 16 */ { 5, s_6_16, -1, 2, 0}, +/* 17 */ { 3, s_6_17, -1, 1, 0}, +/* 18 */ { 4, s_6_18, -1, 1, 0}, +/* 19 */ { 5, s_6_19, -1, 1, 0}, +/* 20 */ { 6, s_6_20, 19, 7, 0}, +/* 21 */ { 4, s_6_21, -1, 1, 0}, +/* 22 */ { 3, s_6_22, -1, 9, 0}, +/* 23 */ { 4, s_6_23, -1, 1, 0}, +/* 24 */ { 4, s_6_24, -1, 5, 0}, +/* 25 */ { 3, s_6_25, -1, 1, 0}, +/* 26 */ { 6, s_6_26, 25, 1, 0}, +/* 27 */ { 4, s_6_27, -1, 1, 0}, +/* 28 */ { 5, s_6_28, -1, 1, 0}, +/* 29 */ { 5, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, -1, 1, 0}, +/* 31 */ { 6, s_6_31, -1, 4, 0}, +/* 32 */ { 6, s_6_32, -1, 2, 0}, +/* 33 */ { 6, s_6_33, -1, 4, 0}, +/* 34 */ { 5, s_6_34, -1, 2, 0}, +/* 35 */ { 3, s_6_35, -1, 1, 0}, +/* 36 */ { 4, s_6_36, -1, 1, 0}, +/* 37 */ { 6, s_6_37, -1, 6, 0}, +/* 38 */ { 6, s_6_38, -1, 6, 0}, +/* 39 */ { 4, s_6_39, -1, 1, 0}, +/* 40 */ { 3, s_6_40, -1, 9, 0}, +/* 41 */ { 3, s_6_41, -1, 1, 0}, +/* 42 */ { 4, s_6_42, -1, 1, 0}, +/* 43 */ { 3, s_6_43, -1, 1, 0}, +/* 44 */ { 6, s_6_44, -1, 6, 0}, +/* 45 */ { 6, s_6_45, -1, 6, 0}, +/* 46 */ { 3, s_6_46, -1, 9, 0}, +/* 47 */ { 4, s_6_47, -1, 8, 0}, +/* 48 */ { 5, s_6_48, -1, 1, 0}, +/* 49 */ { 5, s_6_49, -1, 1, 0}, +/* 50 */ { 5, s_6_50, -1, 1, 0} +}; + +static const symbol s_7_0[4] = { 'i', 's', 'c', 'a' }; +static const symbol s_7_1[4] = { 'e', 'n', 'd', 'a' }; +static const symbol s_7_2[3] = { 'a', 't', 'a' }; +static const symbol s_7_3[3] = { 'i', 't', 'a' }; +static const symbol s_7_4[3] = { 'u', 't', 'a' }; +static const symbol s_7_5[3] = { 'a', 'v', 'a' }; +static const symbol s_7_6[3] = { 'e', 'v', 'a' }; +static const symbol s_7_7[3] = { 'i', 'v', 'a' }; +static const symbol s_7_8[6] = { 'e', 'r', 'e', 'b', 'b', 'e' }; +static const symbol s_7_9[6] = { 'i', 'r', 'e', 'b', 'b', 'e' }; +static const symbol s_7_10[4] = { 'i', 's', 'c', 'e' }; +static const symbol s_7_11[4] = { 'e', 'n', 'd', 'e' }; +static const symbol s_7_12[3] = { 'a', 'r', 'e' }; +static const symbol s_7_13[3] = { 'e', 'r', 'e' }; +static const symbol s_7_14[3] = { 'i', 'r', 'e' }; +static const symbol s_7_15[4] = { 'a', 's', 's', 'e' }; +static const symbol s_7_16[3] = { 'a', 't', 'e' }; +static const symbol s_7_17[5] = { 'a', 'v', 'a', 't', 'e' }; +static const symbol s_7_18[5] = { 'e', 'v', 'a', 't', 'e' }; +static const symbol s_7_19[5] = { 'i', 'v', 'a', 't', 'e' }; +static const symbol s_7_20[3] = { 'e', 't', 'e' }; +static const symbol s_7_21[5] = { 'e', 'r', 'e', 't', 'e' }; +static const symbol s_7_22[5] = { 'i', 'r', 'e', 't', 'e' }; +static const symbol s_7_23[3] = { 'i', 't', 'e' }; +static const symbol s_7_24[6] = { 'e', 'r', 'e', 's', 't', 'e' }; +static const symbol s_7_25[6] = { 'i', 'r', 'e', 's', 't', 'e' }; +static const symbol s_7_26[3] = { 'u', 't', 'e' }; +static const symbol s_7_27[4] = { 'e', 'r', 'a', 'i' }; +static const symbol s_7_28[4] = { 'i', 'r', 'a', 'i' }; +static const symbol s_7_29[4] = { 'i', 's', 'c', 'i' }; +static const symbol s_7_30[4] = { 'e', 'n', 'd', 'i' }; +static const symbol s_7_31[4] = { 'e', 'r', 'e', 'i' }; +static const symbol s_7_32[4] = { 'i', 'r', 'e', 'i' }; +static const symbol s_7_33[4] = { 'a', 's', 's', 'i' }; +static const symbol s_7_34[3] = { 'a', 't', 'i' }; +static const symbol s_7_35[3] = { 'i', 't', 'i' }; +static const symbol s_7_36[6] = { 'e', 'r', 'e', 's', 't', 'i' }; +static const symbol s_7_37[6] = { 'i', 'r', 'e', 's', 't', 'i' }; +static const symbol s_7_38[3] = { 'u', 't', 'i' }; +static const symbol s_7_39[3] = { 'a', 'v', 'i' }; +static const symbol s_7_40[3] = { 'e', 'v', 'i' }; +static const symbol s_7_41[3] = { 'i', 'v', 'i' }; +static const symbol s_7_42[4] = { 'i', 's', 'c', 'o' }; +static const symbol s_7_43[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_7_44[4] = { 'e', 'n', 'd', 'o' }; +static const symbol s_7_45[4] = { 'Y', 'a', 'm', 'o' }; +static const symbol s_7_46[4] = { 'i', 'a', 'm', 'o' }; +static const symbol s_7_47[5] = { 'a', 'v', 'a', 'm', 'o' }; +static const symbol s_7_48[5] = { 'e', 'v', 'a', 'm', 'o' }; +static const symbol s_7_49[5] = { 'i', 'v', 'a', 'm', 'o' }; +static const symbol s_7_50[5] = { 'e', 'r', 'e', 'm', 'o' }; +static const symbol s_7_51[5] = { 'i', 'r', 'e', 'm', 'o' }; +static const symbol s_7_52[6] = { 'a', 's', 's', 'i', 'm', 'o' }; +static const symbol s_7_53[4] = { 'a', 'm', 'm', 'o' }; +static const symbol s_7_54[4] = { 'e', 'm', 'm', 'o' }; +static const symbol s_7_55[6] = { 'e', 'r', 'e', 'm', 'm', 'o' }; +static const symbol s_7_56[6] = { 'i', 'r', 'e', 'm', 'm', 'o' }; +static const symbol s_7_57[4] = { 'i', 'm', 'm', 'o' }; +static const symbol s_7_58[3] = { 'a', 'n', 'o' }; +static const symbol s_7_59[6] = { 'i', 's', 'c', 'a', 'n', 'o' }; +static const symbol s_7_60[5] = { 'a', 'v', 'a', 'n', 'o' }; +static const symbol s_7_61[5] = { 'e', 'v', 'a', 'n', 'o' }; +static const symbol s_7_62[5] = { 'i', 'v', 'a', 'n', 'o' }; +static const symbol s_7_63[6] = { 'e', 'r', 'a', 'n', 'n', 'o' }; +static const symbol s_7_64[6] = { 'i', 'r', 'a', 'n', 'n', 'o' }; +static const symbol s_7_65[3] = { 'o', 'n', 'o' }; +static const symbol s_7_66[6] = { 'i', 's', 'c', 'o', 'n', 'o' }; +static const symbol s_7_67[5] = { 'a', 'r', 'o', 'n', 'o' }; +static const symbol s_7_68[5] = { 'e', 'r', 'o', 'n', 'o' }; +static const symbol s_7_69[5] = { 'i', 'r', 'o', 'n', 'o' }; +static const symbol s_7_70[8] = { 'e', 'r', 'e', 'b', 'b', 'e', 'r', 'o' }; +static const symbol s_7_71[8] = { 'i', 'r', 'e', 'b', 'b', 'e', 'r', 'o' }; +static const symbol s_7_72[6] = { 'a', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_73[6] = { 'e', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_74[6] = { 'i', 's', 's', 'e', 'r', 'o' }; +static const symbol s_7_75[3] = { 'a', 't', 'o' }; +static const symbol s_7_76[3] = { 'i', 't', 'o' }; +static const symbol s_7_77[3] = { 'u', 't', 'o' }; +static const symbol s_7_78[3] = { 'a', 'v', 'o' }; +static const symbol s_7_79[3] = { 'e', 'v', 'o' }; +static const symbol s_7_80[3] = { 'i', 'v', 'o' }; +static const symbol s_7_81[2] = { 'a', 'r' }; +static const symbol s_7_82[2] = { 'i', 'r' }; +static const symbol s_7_83[4] = { 'e', 'r', 0xC3, 0xA0 }; +static const symbol s_7_84[4] = { 'i', 'r', 0xC3, 0xA0 }; +static const symbol s_7_85[4] = { 'e', 'r', 0xC3, 0xB2 }; +static const symbol s_7_86[4] = { 'i', 'r', 0xC3, 0xB2 }; + +static const struct among a_7[87] = +{ +/* 0 */ { 4, s_7_0, -1, 1, 0}, +/* 1 */ { 4, s_7_1, -1, 1, 0}, +/* 2 */ { 3, s_7_2, -1, 1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 3, s_7_4, -1, 1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 3, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 6, s_7_8, -1, 1, 0}, +/* 9 */ { 6, s_7_9, -1, 1, 0}, +/* 10 */ { 4, s_7_10, -1, 1, 0}, +/* 11 */ { 4, s_7_11, -1, 1, 0}, +/* 12 */ { 3, s_7_12, -1, 1, 0}, +/* 13 */ { 3, s_7_13, -1, 1, 0}, +/* 14 */ { 3, s_7_14, -1, 1, 0}, +/* 15 */ { 4, s_7_15, -1, 1, 0}, +/* 16 */ { 3, s_7_16, -1, 1, 0}, +/* 17 */ { 5, s_7_17, 16, 1, 0}, +/* 18 */ { 5, s_7_18, 16, 1, 0}, +/* 19 */ { 5, s_7_19, 16, 1, 0}, +/* 20 */ { 3, s_7_20, -1, 1, 0}, +/* 21 */ { 5, s_7_21, 20, 1, 0}, +/* 22 */ { 5, s_7_22, 20, 1, 0}, +/* 23 */ { 3, s_7_23, -1, 1, 0}, +/* 24 */ { 6, s_7_24, -1, 1, 0}, +/* 25 */ { 6, s_7_25, -1, 1, 0}, +/* 26 */ { 3, s_7_26, -1, 1, 0}, +/* 27 */ { 4, s_7_27, -1, 1, 0}, +/* 28 */ { 4, s_7_28, -1, 1, 0}, +/* 29 */ { 4, s_7_29, -1, 1, 0}, +/* 30 */ { 4, s_7_30, -1, 1, 0}, +/* 31 */ { 4, s_7_31, -1, 1, 0}, +/* 32 */ { 4, s_7_32, -1, 1, 0}, +/* 33 */ { 4, s_7_33, -1, 1, 0}, +/* 34 */ { 3, s_7_34, -1, 1, 0}, +/* 35 */ { 3, s_7_35, -1, 1, 0}, +/* 36 */ { 6, s_7_36, -1, 1, 0}, +/* 37 */ { 6, s_7_37, -1, 1, 0}, +/* 38 */ { 3, s_7_38, -1, 1, 0}, +/* 39 */ { 3, s_7_39, -1, 1, 0}, +/* 40 */ { 3, s_7_40, -1, 1, 0}, +/* 41 */ { 3, s_7_41, -1, 1, 0}, +/* 42 */ { 4, s_7_42, -1, 1, 0}, +/* 43 */ { 4, s_7_43, -1, 1, 0}, +/* 44 */ { 4, s_7_44, -1, 1, 0}, +/* 45 */ { 4, s_7_45, -1, 1, 0}, +/* 46 */ { 4, s_7_46, -1, 1, 0}, +/* 47 */ { 5, s_7_47, -1, 1, 0}, +/* 48 */ { 5, s_7_48, -1, 1, 0}, +/* 49 */ { 5, s_7_49, -1, 1, 0}, +/* 50 */ { 5, s_7_50, -1, 1, 0}, +/* 51 */ { 5, s_7_51, -1, 1, 0}, +/* 52 */ { 6, s_7_52, -1, 1, 0}, +/* 53 */ { 4, s_7_53, -1, 1, 0}, +/* 54 */ { 4, s_7_54, -1, 1, 0}, +/* 55 */ { 6, s_7_55, 54, 1, 0}, +/* 56 */ { 6, s_7_56, 54, 1, 0}, +/* 57 */ { 4, s_7_57, -1, 1, 0}, +/* 58 */ { 3, s_7_58, -1, 1, 0}, +/* 59 */ { 6, s_7_59, 58, 1, 0}, +/* 60 */ { 5, s_7_60, 58, 1, 0}, +/* 61 */ { 5, s_7_61, 58, 1, 0}, +/* 62 */ { 5, s_7_62, 58, 1, 0}, +/* 63 */ { 6, s_7_63, -1, 1, 0}, +/* 64 */ { 6, s_7_64, -1, 1, 0}, +/* 65 */ { 3, s_7_65, -1, 1, 0}, +/* 66 */ { 6, s_7_66, 65, 1, 0}, +/* 67 */ { 5, s_7_67, 65, 1, 0}, +/* 68 */ { 5, s_7_68, 65, 1, 0}, +/* 69 */ { 5, s_7_69, 65, 1, 0}, +/* 70 */ { 8, s_7_70, -1, 1, 0}, +/* 71 */ { 8, s_7_71, -1, 1, 0}, +/* 72 */ { 6, s_7_72, -1, 1, 0}, +/* 73 */ { 6, s_7_73, -1, 1, 0}, +/* 74 */ { 6, s_7_74, -1, 1, 0}, +/* 75 */ { 3, s_7_75, -1, 1, 0}, +/* 76 */ { 3, s_7_76, -1, 1, 0}, +/* 77 */ { 3, s_7_77, -1, 1, 0}, +/* 78 */ { 3, s_7_78, -1, 1, 0}, +/* 79 */ { 3, s_7_79, -1, 1, 0}, +/* 80 */ { 3, s_7_80, -1, 1, 0}, +/* 81 */ { 2, s_7_81, -1, 1, 0}, +/* 82 */ { 2, s_7_82, -1, 1, 0}, +/* 83 */ { 4, s_7_83, -1, 1, 0}, +/* 84 */ { 4, s_7_84, -1, 1, 0}, +/* 85 */ { 4, s_7_85, -1, 1, 0}, +/* 86 */ { 4, s_7_86, -1, 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 }; + +static const unsigned char g_AEIO[] = { 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 }; + +static const unsigned char g_CG[] = { 17 }; + +static const symbol s_0[] = { 0xC3, 0xA0 }; +static const symbol s_1[] = { 0xC3, 0xA8 }; +static const symbol s_2[] = { 0xC3, 0xAC }; +static const symbol s_3[] = { 0xC3, 0xB2 }; +static const symbol s_4[] = { 0xC3, 0xB9 }; +static const symbol s_5[] = { 'q', 'U' }; +static const symbol s_6[] = { 'u' }; +static const symbol s_7[] = { 'U' }; +static const symbol s_8[] = { 'i' }; +static const symbol s_9[] = { 'I' }; +static const symbol s_10[] = { 'i' }; +static const symbol s_11[] = { 'u' }; +static const symbol s_12[] = { 'e' }; +static const symbol s_13[] = { 'i', 'c' }; +static const symbol s_14[] = { 'l', 'o', 'g' }; +static const symbol s_15[] = { 'u' }; +static const symbol s_16[] = { 'e', 'n', 't', 'e' }; +static const symbol s_17[] = { 'a', 't' }; +static const symbol s_18[] = { 'a', 't' }; +static const symbol s_19[] = { 'i', 'c' }; +static const symbol s_20[] = { 'i' }; +static const symbol s_21[] = { 'h' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + { int c_test = z->c; /* test, line 35 */ + while(1) { /* repeat, line 35 */ + int c1 = z->c; + z->bra = z->c; /* [, line 36 */ + among_var = find_among(z, a_0, 7); /* substring, line 36 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 36 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 2, s_0); /* <-, line 37 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_1); /* <-, line 38 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_2); /* <-, line 39 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 2, s_3); /* <-, line 40 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 2, s_4); /* <-, line 41 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_5); /* <-, line 42 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 43 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + z->c = c_test; + } + while(1) { /* repeat, line 46 */ + int c2 = z->c; + while(1) { /* goto, line 46 */ + int c3 = z->c; + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab2; + z->bra = z->c; /* [, line 47 */ + { int c4 = z->c; /* or, line 47 */ + if (!(eq_s(z, 1, s_6))) goto lab4; + z->ket = z->c; /* ], line 47 */ + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab4; + { int ret = slice_from_s(z, 1, s_7); /* <-, line 47 */ + if (ret < 0) return ret; + } + goto lab3; + lab4: + z->c = c4; + if (!(eq_s(z, 1, s_8))) goto lab2; + z->ket = z->c; /* ], line 48 */ + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab2; + { int ret = slice_from_s(z, 1, s_9); /* <-, line 48 */ + if (ret < 0) return ret; + } + } + lab3: + z->c = c3; + break; + lab2: + z->c = c3; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab1; + z->c = ret; /* goto, line 46 */ + } + } + continue; + lab1: + z->c = c2; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 58 */ + { int c2 = z->c; /* or, line 60 */ + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab2; + { int c3 = z->c; /* or, line 59 */ + if (out_grouping_U(z, g_v, 97, 249, 0)) goto lab4; + { /* gopast */ /* grouping v, line 59 */ + int ret = out_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab2; + { /* gopast */ /* non v, line 59 */ + int ret = in_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping_U(z, g_v, 97, 249, 0)) goto lab0; + { int c4 = z->c; /* or, line 61 */ + if (out_grouping_U(z, g_v, 97, 249, 0)) goto lab6; + { /* gopast */ /* grouping v, line 61 */ + int ret = out_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping_U(z, g_v, 97, 249, 0)) goto lab0; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 61 */ + } + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 62 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 64 */ + { /* gopast */ /* grouping v, line 65 */ + int ret = out_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 65 */ + int ret = in_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 65 */ + { /* gopast */ /* grouping v, line 66 */ + int ret = out_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 66 */ + int ret = in_grouping_U(z, g_v, 97, 249, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 66 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 70 */ + int c1 = z->c; + z->bra = z->c; /* [, line 72 */ + 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); /* substring, line 72 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 72 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_10); /* <-, line 73 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_11); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 75 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 87 */ + 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; /* substring, line 87 */ + z->bra = z->c; /* ], line 87 */ + 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, line 97 */ + if (!(among_var)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 97 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 98 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_12); /* <-, line 99 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 104 */ + among_var = find_among_b(z, a_6, 51); /* substring, line 104 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 104 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 111 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 111 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 113 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 114 */ + z->ket = z->c; /* [, line 114 */ + if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 114 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 114 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 114 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 117 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_14); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 119 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_15); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 121 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_16); /* <-, line 121 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 123 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 125 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 126 */ + z->ket = z->c; /* [, line 127 */ + 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 - m_keep; goto lab1; } + among_var = find_among_b(z, a_4, 4); /* substring, line 127 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 127 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 127 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 127 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + z->ket = z->c; /* [, line 128 */ + if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 128 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 128 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 128 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 135 */ + z->ket = z->c; /* [, line 136 */ + 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 - m_keep; goto lab2; } + among_var = find_among_b(z, a_5, 3); /* substring, line 136 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 136 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 137 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 137 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 9: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 142 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 142 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 143 */ + z->ket = z->c; /* [, line 143 */ + if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 143 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 143 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 143 */ + if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 143 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 143 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + lab3: + ; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 148 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 148 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 149 */ + among_var = find_among_b(z, a_7, 87); /* substring, line 149 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 149 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 163 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_vowel_suffix(struct SN_env * z) { + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 171 */ + z->ket = z->c; /* [, line 172 */ + if (in_grouping_b_U(z, g_AEIO, 97, 242, 0)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 172 */ + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 172 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 172 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 173 */ + if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 173 */ + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 173 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 173 */ + if (ret < 0) return ret; + } + lab0: + ; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 175 */ + z->ket = z->c; /* [, line 176 */ + if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 176 */ + if (in_grouping_b_U(z, g_CG, 99, 103, 0)) { z->c = z->l - m_keep; goto lab1; } + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call RV, line 176 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 176 */ + if (ret < 0) return ret; + } + lab1: + ; + } + return 1; +} + +extern int italian_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 182 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 182 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 183 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 183 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 184 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 185 */ + { int ret = r_attached_pronoun(z); + if (ret == 0) goto lab2; /* call attached_pronoun, line 185 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 186 */ + { int m5 = z->l - z->c; (void)m5; /* or, line 186 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab5; /* call standard_suffix, line 186 */ + if (ret < 0) return ret; + } + goto lab4; + lab5: + z->c = z->l - m5; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab3; /* call verb_suffix, line 186 */ + if (ret < 0) return ret; + } + } + lab4: + lab3: + z->c = z->l - m4; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 187 */ + { int ret = r_vowel_suffix(z); + if (ret == 0) goto lab6; /* call vowel_suffix, line 187 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m6; + } + z->c = z->lb; + { int c7 = z->c; /* do, line 189 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab7; /* call postlude, line 189 */ + if (ret < 0) return ret; + } + lab7: + z->c = c7; + } + return 1; +} + +extern struct SN_env * italian_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void italian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_italian.h b/src_c/stem_UTF_8_italian.h new file mode 100644 index 0000000..3bee080 --- /dev/null +++ b/src_c/stem_UTF_8_italian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * italian_UTF_8_create_env(void); +extern void italian_UTF_8_close_env(struct SN_env * z); + +extern int italian_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_norwegian.c b/src_c/stem_UTF_8_norwegian.c new file mode 100644 index 0000000..6a7b5f4 --- /dev/null +++ b/src_c/stem_UTF_8_norwegian.c @@ -0,0 +1,299 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int norwegian_UTF_8_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_UTF_8_create_env(void); +extern void norwegian_UTF_8_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 struct among a_0[29] = +{ +/* 0 */ { 1, s_0_0, -1, 1, 0}, +/* 1 */ { 1, s_0_1, -1, 1, 0}, +/* 2 */ { 3, s_0_2, 1, 1, 0}, +/* 3 */ { 4, s_0_3, 1, 1, 0}, +/* 4 */ { 4, s_0_4, 1, 1, 0}, +/* 5 */ { 3, s_0_5, 1, 1, 0}, +/* 6 */ { 3, s_0_6, 1, 1, 0}, +/* 7 */ { 6, s_0_7, 6, 1, 0}, +/* 8 */ { 4, s_0_8, 1, 3, 0}, +/* 9 */ { 2, s_0_9, -1, 1, 0}, +/* 10 */ { 5, s_0_10, 9, 1, 0}, +/* 11 */ { 2, s_0_11, -1, 1, 0}, +/* 12 */ { 2, s_0_12, -1, 1, 0}, +/* 13 */ { 5, s_0_13, 12, 1, 0}, +/* 14 */ { 1, s_0_14, -1, 2, 0}, +/* 15 */ { 2, s_0_15, 14, 1, 0}, +/* 16 */ { 2, s_0_16, 14, 1, 0}, +/* 17 */ { 4, s_0_17, 16, 1, 0}, +/* 18 */ { 5, s_0_18, 16, 1, 0}, +/* 19 */ { 4, s_0_19, 16, 1, 0}, +/* 20 */ { 7, s_0_20, 19, 1, 0}, +/* 21 */ { 3, s_0_21, 14, 1, 0}, +/* 22 */ { 6, s_0_22, 21, 1, 0}, +/* 23 */ { 3, s_0_23, 14, 1, 0}, +/* 24 */ { 3, s_0_24, 14, 1, 0}, +/* 25 */ { 2, s_0_25, -1, 1, 0}, +/* 26 */ { 3, s_0_26, 25, 1, 0}, +/* 27 */ { 3, s_0_27, -1, 3, 0}, +/* 28 */ { 3, s_0_28, -1, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -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] = +{ +/* 0 */ { 3, s_2_0, -1, 1, 0}, +/* 1 */ { 4, s_2_1, 0, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, 2, 1, 0}, +/* 4 */ { 3, s_2_4, 2, 1, 0}, +/* 5 */ { 4, s_2_5, 4, 1, 0}, +/* 6 */ { 3, s_2_6, -1, 1, 0}, +/* 7 */ { 3, s_2_7, -1, 1, 0}, +/* 8 */ { 4, s_2_8, 7, 1, 0}, +/* 9 */ { 4, s_2_9, 7, 1, 0}, +/* 10 */ { 7, s_2_10, 9, 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 unsigned char g_s_ending[] = { 119, 125, 149, 1 }; + +static const symbol s_0[] = { 'k' }; +static const symbol s_1[] = { 'e', 'r' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c_test = z->c; /* test, line 30 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); + if (ret < 0) return 0; + z->c = ret; /* hop, line 30 */ + } + z->I[1] = z->c; /* setmark x, line 30 */ + z->c = c_test; + } + if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 31 */ + { /* gopast */ /* non v, line 31 */ + int ret = in_grouping_U(z, g_v, 97, 248, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 31 */ + /* try, line 32 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 38 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 38 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 38 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 29); /* substring, line 38 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 38 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 44 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m2 = z->l - z->c; (void)m2; /* or, line 46 */ + if (in_grouping_b_U(z, g_s_ending, 98, 122, 0)) goto lab1; + goto lab0; + lab1: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_0))) return 0; + if (out_grouping_b_U(z, g_v, 97, 248, 0)) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 46 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_1); /* <-, line 48 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 53 */ + { int mlimit; /* setlimit, line 54 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 54 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 54 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit; return 0; } /* substring, line 54 */ + z->bra = z->c; /* ], line 54 */ + z->lb = mlimit; + } + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 59 */ + } + z->bra = z->c; /* ], line 59 */ + { int ret = slice_del(z); /* delete, line 59 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 63 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 63 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 63 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 11); /* substring, line 63 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 63 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 67 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int norwegian_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 74 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 74 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 75 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 76 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 76 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 77 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 77 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 78 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 78 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * norwegian_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void norwegian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_norwegian.h b/src_c/stem_UTF_8_norwegian.h new file mode 100644 index 0000000..c75444b --- /dev/null +++ b/src_c/stem_UTF_8_norwegian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * norwegian_UTF_8_create_env(void); +extern void norwegian_UTF_8_close_env(struct SN_env * z); + +extern int norwegian_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_porter.c b/src_c/stem_UTF_8_porter.c new file mode 100644 index 0000000..0c4813f --- /dev/null +++ b/src_c/stem_UTF_8_porter.c @@ -0,0 +1,755 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int porter_UTF_8_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); +static int r_Step_3(struct SN_env * z); +static int r_Step_2(struct SN_env * z); +static int r_Step_1c(struct SN_env * z); +static int r_Step_1b(struct SN_env * z); +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_UTF_8_create_env(void); +extern void porter_UTF_8_close_env(struct SN_env * z); + + +#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] = +{ +/* 0 */ { 1, s_0_0, -1, 3, 0}, +/* 1 */ { 3, s_0_1, 0, 2, 0}, +/* 2 */ { 4, s_0_2, 0, 1, 0}, +/* 3 */ { 2, s_0_3, 0, -1, 0} +}; + +static const symbol s_1_1[2] = { 'b', 'b' }; +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] = { 'b', 'l' }; +static const symbol s_1_6[2] = { 'm', 'm' }; +static const symbol s_1_7[2] = { 'n', 'n' }; +static const symbol s_1_8[2] = { 'p', 'p' }; +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, 0, -1, 3, 0}, +/* 1 */ { 2, s_1_1, 0, 2, 0}, +/* 2 */ { 2, s_1_2, 0, 2, 0}, +/* 3 */ { 2, s_1_3, 0, 2, 0}, +/* 4 */ { 2, s_1_4, 0, 2, 0}, +/* 5 */ { 2, s_1_5, 0, 1, 0}, +/* 6 */ { 2, s_1_6, 0, 2, 0}, +/* 7 */ { 2, s_1_7, 0, 2, 0}, +/* 8 */ { 2, s_1_8, 0, 2, 0}, +/* 9 */ { 2, s_1_9, 0, 2, 0}, +/* 10 */ { 2, s_1_10, 0, 1, 0}, +/* 11 */ { 2, s_1_11, 0, 2, 0}, +/* 12 */ { 2, s_1_12, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, 2, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 3, s_2_2, -1, 2, 0} +}; + +static const symbol s_3_0[4] = { 'a', 'n', 'c', 'i' }; +static const symbol s_3_1[4] = { 'e', 'n', 'c', 'i' }; +static const symbol s_3_2[4] = { 'a', 'b', 'l', 'i' }; +static const symbol s_3_3[3] = { 'e', 'l', 'i' }; +static const symbol s_3_4[4] = { 'a', 'l', 'l', 'i' }; +static const symbol s_3_5[5] = { 'o', 'u', 's', 'l', 'i' }; +static const symbol s_3_6[5] = { 'e', 'n', 't', 'l', 'i' }; +static const symbol s_3_7[5] = { 'a', 'l', 'i', 't', 'i' }; +static const symbol s_3_8[6] = { 'b', 'i', 'l', 'i', 't', 'i' }; +static const symbol s_3_9[5] = { 'i', 'v', 'i', 't', 'i' }; +static const symbol s_3_10[6] = { 't', 'i', 'o', 'n', 'a', 'l' }; +static const symbol s_3_11[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' }; +static const symbol s_3_12[5] = { 'a', 'l', 'i', 's', 'm' }; +static const symbol s_3_13[5] = { 'a', 't', 'i', 'o', 'n' }; +static const symbol s_3_14[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' }; +static const symbol s_3_15[4] = { 'i', 'z', 'e', 'r' }; +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] = +{ +/* 0 */ { 4, s_3_0, -1, 3, 0}, +/* 1 */ { 4, s_3_1, -1, 2, 0}, +/* 2 */ { 4, s_3_2, -1, 4, 0}, +/* 3 */ { 3, s_3_3, -1, 6, 0}, +/* 4 */ { 4, s_3_4, -1, 9, 0}, +/* 5 */ { 5, s_3_5, -1, 12, 0}, +/* 6 */ { 5, s_3_6, -1, 5, 0}, +/* 7 */ { 5, s_3_7, -1, 10, 0}, +/* 8 */ { 6, s_3_8, -1, 14, 0}, +/* 9 */ { 5, s_3_9, -1, 13, 0}, +/* 10 */ { 6, s_3_10, -1, 1, 0}, +/* 11 */ { 7, s_3_11, 10, 8, 0}, +/* 12 */ { 5, s_3_12, -1, 10, 0}, +/* 13 */ { 5, s_3_13, -1, 8, 0}, +/* 14 */ { 7, s_3_14, 13, 7, 0}, +/* 15 */ { 4, s_3_15, -1, 7, 0}, +/* 16 */ { 4, s_3_16, -1, 8, 0}, +/* 17 */ { 7, s_3_17, -1, 13, 0}, +/* 18 */ { 7, s_3_18, -1, 11, 0}, +/* 19 */ { 7, s_3_19, -1, 12, 0} +}; + +static const symbol s_4_0[5] = { 'i', 'c', 'a', 't', 'e' }; +static const symbol s_4_1[5] = { 'a', 't', 'i', 'v', 'e' }; +static const symbol s_4_2[5] = { 'a', 'l', 'i', 'z', 'e' }; +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] = +{ +/* 0 */ { 5, s_4_0, -1, 2, 0}, +/* 1 */ { 5, s_4_1, -1, 3, 0}, +/* 2 */ { 5, s_4_2, -1, 1, 0}, +/* 3 */ { 5, s_4_3, -1, 2, 0}, +/* 4 */ { 4, s_4_4, -1, 2, 0}, +/* 5 */ { 3, s_4_5, -1, 3, 0}, +/* 6 */ { 4, s_4_6, -1, 3, 0} +}; + +static const symbol s_5_0[2] = { 'i', 'c' }; +static const symbol s_5_1[4] = { 'a', 'n', 'c', 'e' }; +static const symbol s_5_2[4] = { 'e', 'n', 'c', 'e' }; +static const symbol s_5_3[4] = { 'a', 'b', 'l', 'e' }; +static const symbol s_5_4[4] = { 'i', 'b', 'l', 'e' }; +static const symbol s_5_5[3] = { 'a', 't', 'e' }; +static const symbol s_5_6[3] = { 'i', 'v', 'e' }; +static const symbol s_5_7[3] = { 'i', 'z', 'e' }; +static const symbol s_5_8[3] = { 'i', 't', 'i' }; +static const symbol s_5_9[2] = { 'a', 'l' }; +static const symbol s_5_10[3] = { 'i', 's', 'm' }; +static const symbol s_5_11[3] = { 'i', 'o', 'n' }; +static const symbol s_5_12[2] = { 'e', 'r' }; +static const symbol s_5_13[3] = { 'o', 'u', 's' }; +static const symbol s_5_14[3] = { 'a', 'n', 't' }; +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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 4, s_5_2, -1, 1, 0}, +/* 3 */ { 4, s_5_3, -1, 1, 0}, +/* 4 */ { 4, s_5_4, -1, 1, 0}, +/* 5 */ { 3, s_5_5, -1, 1, 0}, +/* 6 */ { 3, s_5_6, -1, 1, 0}, +/* 7 */ { 3, s_5_7, -1, 1, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 2, s_5_9, -1, 1, 0}, +/* 10 */ { 3, s_5_10, -1, 1, 0}, +/* 11 */ { 3, s_5_11, -1, 2, 0}, +/* 12 */ { 2, s_5_12, -1, 1, 0}, +/* 13 */ { 3, s_5_13, -1, 1, 0}, +/* 14 */ { 3, s_5_14, -1, 1, 0}, +/* 15 */ { 3, s_5_15, -1, 1, 0}, +/* 16 */ { 4, s_5_16, 15, 1, 0}, +/* 17 */ { 5, s_5_17, 16, 1, 0}, +/* 18 */ { 2, s_5_18, -1, 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[] = { 'y' }; +static const symbol s_6[] = { 'Y' }; +static const symbol s_7[] = { 'i' }; +static const symbol s_8[] = { 't', 'i', 'o', 'n' }; +static const symbol s_9[] = { 'e', 'n', 'c', 'e' }; +static const symbol s_10[] = { 'a', 'n', 'c', 'e' }; +static const symbol s_11[] = { 'a', 'b', 'l', 'e' }; +static const symbol s_12[] = { 'e', 'n', 't' }; +static const symbol s_13[] = { 'e' }; +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[] = { 'a', 'l' }; +static const symbol s_18[] = { 'f', 'u', 'l' }; +static const symbol s_19[] = { 'o', 'u', 's' }; +static const symbol s_20[] = { 'i', 'v', 'e' }; +static const symbol s_21[] = { 'b', 'l', 'e' }; +static const symbol s_22[] = { 'a', 'l' }; +static const symbol s_23[] = { 'i', 'c' }; +static const symbol s_24[] = { 's' }; +static const symbol s_25[] = { 't' }; +static const symbol s_26[] = { 'e' }; +static const symbol s_27[] = { 'l' }; +static const symbol s_28[] = { 'l' }; +static const symbol s_29[] = { 'y' }; +static const symbol s_30[] = { 'Y' }; +static const symbol s_31[] = { 'y' }; +static const symbol s_32[] = { 'Y' }; +static const symbol s_33[] = { 'Y' }; +static const symbol s_34[] = { 'y' }; + +static int r_shortv(struct SN_env * z) { + if (out_grouping_b_U(z, g_v_WXY, 89, 121, 0)) return 0; + if (in_grouping_b_U(z, g_v, 97, 121, 0)) return 0; + if (out_grouping_b_U(z, g_v, 97, 121, 0)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_Step_1a(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 25 */ + if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0; + among_var = find_among_b(z, a_0, 4); /* substring, line 25 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 25 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_0); /* <-, line 26 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 27 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 29 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_1b(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 34 */ + 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); /* substring, line 34 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 34 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 35 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 2, s_2); /* <-, line 35 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m_test = z->l - z->c; /* test, line 38 */ + { /* gopast */ /* grouping v, line 38 */ + int ret = out_grouping_b_U(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + z->c = z->l - m_test; + } + { int ret = slice_del(z); /* delete, line 38 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 39 */ + 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); /* substring, line 39 */ + if (!(among_var)) return 0; + z->c = z->l - m_test; + } + switch(among_var) { + case 0: return 0; + case 1: + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_3); /* <+, line 41 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + case 2: + z->ket = z->c; /* [, line 44 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 44 */ + } + z->bra = z->c; /* ], line 44 */ + { int ret = slice_del(z); /* delete, line 44 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c != z->I[0]) return 0; /* atmark, line 45 */ + { int m_test = z->l - z->c; /* test, line 45 */ + { int ret = r_shortv(z); + if (ret == 0) return 0; /* call shortv, line 45 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_4); /* <+, line 45 */ + z->c = c_keep; + if (ret < 0) return ret; + } + break; + } + break; + } + return 1; +} + +static int r_Step_1c(struct SN_env * z) { + z->ket = z->c; /* [, line 52 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 52 */ + if (!(eq_s_b(z, 1, s_5))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_6))) return 0; + } +lab0: + z->bra = z->c; /* ], line 52 */ + { /* gopast */ /* grouping v, line 53 */ + int ret = out_grouping_b_U(z, g_v, 97, 121, 1); + if (ret < 0) return 0; + z->c -= ret; + } + { int ret = slice_from_s(z, 1, s_7); /* <-, line 54 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_2(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 58 */ + 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); /* substring, line 58 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 58 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 58 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_8); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_9); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_10); /* <-, line 61 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 4, s_11); /* <-, line 62 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 3, s_12); /* <-, line 63 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 1, s_13); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 3, s_14); /* <-, line 66 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret = slice_from_s(z, 3, s_15); /* <-, line 68 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret = slice_from_s(z, 2, s_16); /* <-, line 69 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret = slice_from_s(z, 2, s_17); /* <-, line 71 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret = slice_from_s(z, 3, s_18); /* <-, line 72 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret = slice_from_s(z, 3, s_19); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 13: + { int ret = slice_from_s(z, 3, s_20); /* <-, line 76 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret = slice_from_s(z, 3, s_21); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_3(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 82 */ + 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); /* substring, line 82 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 82 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 82 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 2, s_22); /* <-, line 83 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_23); /* <-, line 85 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 87 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_4(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 92 */ + 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); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 92 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 95 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m1 = z->l - z->c; (void)m1; /* or, line 96 */ + if (!(eq_s_b(z, 1, s_24))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_25))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 96 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_5a(struct SN_env * z) { + z->ket = z->c; /* [, line 101 */ + if (!(eq_s_b(z, 1, s_26))) return 0; + z->bra = z->c; /* ], line 101 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 102 */ + { int ret = r_R2(z); + if (ret == 0) goto lab1; /* call R2, line 102 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 102 */ + if (ret < 0) return ret; + } + { int m2 = z->l - z->c; (void)m2; /* not, line 102 */ + { int ret = r_shortv(z); + if (ret == 0) goto lab2; /* call shortv, line 102 */ + if (ret < 0) return ret; + } + return 0; + lab2: + z->c = z->l - m2; + } + } +lab0: + { int ret = slice_del(z); /* delete, line 103 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_Step_5b(struct SN_env * z) { + z->ket = z->c; /* [, line 107 */ + if (!(eq_s_b(z, 1, s_27))) return 0; + z->bra = z->c; /* ], line 107 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 108 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_28))) return 0; + { int ret = slice_del(z); /* delete, line 109 */ + if (ret < 0) return ret; + } + return 1; +} + +extern int porter_UTF_8_stem(struct SN_env * z) { + z->B[0] = 0; /* unset Y_found, line 115 */ + { int c1 = z->c; /* do, line 116 */ + z->bra = z->c; /* [, line 116 */ + if (!(eq_s(z, 1, s_29))) goto lab0; + z->ket = z->c; /* ], line 116 */ + { int ret = slice_from_s(z, 1, s_30); /* <-, line 116 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 116 */ + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 117 */ + while(1) { /* repeat, line 117 */ + int c3 = z->c; + while(1) { /* goto, line 117 */ + int c4 = z->c; + if (in_grouping_U(z, g_v, 97, 121, 0)) goto lab3; + z->bra = z->c; /* [, line 117 */ + if (!(eq_s(z, 1, s_31))) goto lab3; + z->ket = z->c; /* ], line 117 */ + z->c = c4; + break; + lab3: + z->c = c4; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab2; + z->c = ret; /* goto, line 117 */ + } + } + { int ret = slice_from_s(z, 1, s_32); /* <-, line 117 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 117 */ + continue; + lab2: + z->c = c3; + break; + } + z->c = c2; + } + z->I[0] = z->l; + z->I[1] = z->l; + { int c5 = z->c; /* do, line 121 */ + { /* gopast */ /* grouping v, line 122 */ + int ret = out_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 122 */ + int ret = in_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 122 */ + { /* gopast */ /* grouping v, line 123 */ + int ret = out_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + { /* gopast */ /* non v, line 123 */ + int ret = in_grouping_U(z, g_v, 97, 121, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 123 */ + lab4: + z->c = c5; + } + z->lb = z->c; z->c = z->l; /* backwards, line 126 */ + + { int m6 = z->l - z->c; (void)m6; /* do, line 127 */ + { int ret = r_Step_1a(z); + if (ret == 0) goto lab5; /* call Step_1a, line 127 */ + if (ret < 0) return ret; + } + lab5: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 128 */ + { int ret = r_Step_1b(z); + if (ret == 0) goto lab6; /* call Step_1b, line 128 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m7; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 129 */ + { int ret = r_Step_1c(z); + if (ret == 0) goto lab7; /* call Step_1c, line 129 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m8; + } + { int m9 = z->l - z->c; (void)m9; /* do, line 130 */ + { int ret = r_Step_2(z); + if (ret == 0) goto lab8; /* call Step_2, line 130 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m9; + } + { int m10 = z->l - z->c; (void)m10; /* do, line 131 */ + { int ret = r_Step_3(z); + if (ret == 0) goto lab9; /* call Step_3, line 131 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m10; + } + { int m11 = z->l - z->c; (void)m11; /* do, line 132 */ + { int ret = r_Step_4(z); + if (ret == 0) goto lab10; /* call Step_4, line 132 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m11; + } + { int m12 = z->l - z->c; (void)m12; /* do, line 133 */ + { int ret = r_Step_5a(z); + if (ret == 0) goto lab11; /* call Step_5a, line 133 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m12; + } + { int m13 = z->l - z->c; (void)m13; /* do, line 134 */ + { int ret = r_Step_5b(z); + if (ret == 0) goto lab12; /* call Step_5b, line 134 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m13; + } + z->c = z->lb; + { int c14 = z->c; /* do, line 137 */ + if (!(z->B[0])) goto lab13; /* Boolean test Y_found, line 137 */ + while(1) { /* repeat, line 137 */ + int c15 = z->c; + while(1) { /* goto, line 137 */ + int c16 = z->c; + z->bra = z->c; /* [, line 137 */ + if (!(eq_s(z, 1, s_33))) goto lab15; + z->ket = z->c; /* ], line 137 */ + z->c = c16; + break; + lab15: + z->c = c16; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab14; + z->c = ret; /* goto, line 137 */ + } + } + { int ret = slice_from_s(z, 1, s_34); /* <-, line 137 */ + if (ret < 0) return ret; + } + continue; + lab14: + z->c = c15; + break; + } + lab13: + z->c = c14; + } + return 1; +} + +extern struct SN_env * porter_UTF_8_create_env(void) { return SN_create_env(0, 2, 1); } + +extern void porter_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_porter.h b/src_c/stem_UTF_8_porter.h new file mode 100644 index 0000000..82d469a --- /dev/null +++ b/src_c/stem_UTF_8_porter.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * porter_UTF_8_create_env(void); +extern void porter_UTF_8_close_env(struct SN_env * z); + +extern int porter_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_portuguese.c b/src_c/stem_UTF_8_portuguese.c new file mode 100644 index 0000000..282dbb7 --- /dev/null +++ b/src_c/stem_UTF_8_portuguese.c @@ -0,0 +1,1023 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int portuguese_UTF_8_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); +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_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_UTF_8_create_env(void); +extern void portuguese_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[2] = { 0xC3, 0xA3 }; +static const symbol s_0_2[2] = { 0xC3, 0xB5 }; + +static const struct among a_0[3] = +{ +/* 0 */ { 0, 0, -1, 3, 0}, +/* 1 */ { 2, s_0_1, 0, 1, 0}, +/* 2 */ { 2, s_0_2, 0, 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, 0, -1, 3, 0}, +/* 1 */ { 2, s_1_1, 0, 1, 0}, +/* 2 */ { 2, s_1_2, 0, 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] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 2, s_2_2, -1, -1, 0}, +/* 3 */ { 2, s_2_3, -1, 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[5] = { 0xC3, 0xAD, 'v', 'e', 'l' }; + +static const struct among a_3[3] = +{ +/* 0 */ { 4, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0}, +/* 2 */ { 5, s_3_2, -1, 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] = +{ +/* 0 */ { 2, s_4_0, -1, 1, 0}, +/* 1 */ { 4, s_4_1, -1, 1, 0}, +/* 2 */ { 2, s_4_2, -1, 1, 0} +}; + +static const symbol s_5_0[3] = { 'i', 'c', 'a' }; +static const symbol s_5_1[6] = { 0xC3, 0xA2, 'n', 'c', 'i', 'a' }; +static const symbol s_5_2[6] = { 0xC3, 0xAA, 'n', 'c', 'i', 'a' }; +static const symbol s_5_3[3] = { 'i', 'r', 'a' }; +static const symbol s_5_4[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_5_5[3] = { 'o', 's', 'a' }; +static const symbol s_5_6[4] = { 'i', 's', 't', 'a' }; +static const symbol s_5_7[3] = { 'i', 'v', 'a' }; +static const symbol s_5_8[3] = { 'e', 'z', 'a' }; +static const symbol s_5_9[6] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a' }; +static const symbol s_5_10[5] = { 'i', 'd', 'a', 'd', 'e' }; +static const symbol s_5_11[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_5_12[5] = { 'm', 'e', 'n', 't', 'e' }; +static const symbol s_5_13[6] = { 'a', 'm', 'e', 'n', 't', 'e' }; +static const symbol s_5_14[5] = { 0xC3, 0xA1, 'v', 'e', 'l' }; +static const symbol s_5_15[5] = { 0xC3, 0xAD, 'v', 'e', 'l' }; +static const symbol s_5_16[6] = { 'u', 'c', 'i', 0xC3, 0xB3, 'n' }; +static const symbol s_5_17[3] = { 'i', 'c', 'o' }; +static const symbol s_5_18[4] = { 'i', 's', 'm', 'o' }; +static const symbol s_5_19[3] = { 'o', 's', 'o' }; +static const symbol s_5_20[6] = { 'a', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_5_21[6] = { 'i', 'm', 'e', 'n', 't', 'o' }; +static const symbol s_5_22[3] = { 'i', 'v', 'o' }; +static const symbol s_5_23[6] = { 'a', 0xC3, 0xA7, 'a', '~', 'o' }; +static const symbol s_5_24[4] = { 'a', 'd', 'o', 'r' }; +static const symbol s_5_25[4] = { 'i', 'c', 'a', 's' }; +static const symbol s_5_26[7] = { 0xC3, 0xAA, 'n', 'c', 'i', 'a', 's' }; +static const symbol s_5_27[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_5_28[6] = { 'a', 'd', 'o', 'r', 'a', 's' }; +static const symbol s_5_29[4] = { 'o', 's', 'a', 's' }; +static const symbol s_5_30[5] = { 'i', 's', 't', 'a', 's' }; +static const symbol s_5_31[4] = { 'i', 'v', 'a', 's' }; +static const symbol s_5_32[4] = { 'e', 'z', 'a', 's' }; +static const symbol s_5_33[7] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_5_34[6] = { 'i', 'd', 'a', 'd', 'e', 's' }; +static const symbol s_5_35[7] = { 'u', 'c', 'i', 'o', 'n', 'e', 's' }; +static const symbol s_5_36[6] = { 'a', 'd', 'o', 'r', 'e', 's' }; +static const symbol s_5_37[5] = { 'a', 'n', 't', 'e', 's' }; +static const symbol s_5_38[7] = { 'a', 0xC3, 0xA7, 'o', '~', 'e', 's' }; +static const symbol s_5_39[4] = { 'i', 'c', 'o', 's' }; +static const symbol s_5_40[5] = { 'i', 's', 'm', 'o', 's' }; +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] = +{ +/* 0 */ { 3, s_5_0, -1, 1, 0}, +/* 1 */ { 6, s_5_1, -1, 1, 0}, +/* 2 */ { 6, s_5_2, -1, 4, 0}, +/* 3 */ { 3, s_5_3, -1, 9, 0}, +/* 4 */ { 5, s_5_4, -1, 1, 0}, +/* 5 */ { 3, s_5_5, -1, 1, 0}, +/* 6 */ { 4, s_5_6, -1, 1, 0}, +/* 7 */ { 3, s_5_7, -1, 8, 0}, +/* 8 */ { 3, s_5_8, -1, 1, 0}, +/* 9 */ { 6, s_5_9, -1, 2, 0}, +/* 10 */ { 5, s_5_10, -1, 7, 0}, +/* 11 */ { 4, s_5_11, -1, 1, 0}, +/* 12 */ { 5, s_5_12, -1, 6, 0}, +/* 13 */ { 6, s_5_13, 12, 5, 0}, +/* 14 */ { 5, s_5_14, -1, 1, 0}, +/* 15 */ { 5, s_5_15, -1, 1, 0}, +/* 16 */ { 6, s_5_16, -1, 3, 0}, +/* 17 */ { 3, s_5_17, -1, 1, 0}, +/* 18 */ { 4, s_5_18, -1, 1, 0}, +/* 19 */ { 3, s_5_19, -1, 1, 0}, +/* 20 */ { 6, s_5_20, -1, 1, 0}, +/* 21 */ { 6, s_5_21, -1, 1, 0}, +/* 22 */ { 3, s_5_22, -1, 8, 0}, +/* 23 */ { 6, s_5_23, -1, 1, 0}, +/* 24 */ { 4, s_5_24, -1, 1, 0}, +/* 25 */ { 4, s_5_25, -1, 1, 0}, +/* 26 */ { 7, s_5_26, -1, 4, 0}, +/* 27 */ { 4, s_5_27, -1, 9, 0}, +/* 28 */ { 6, s_5_28, -1, 1, 0}, +/* 29 */ { 4, s_5_29, -1, 1, 0}, +/* 30 */ { 5, s_5_30, -1, 1, 0}, +/* 31 */ { 4, s_5_31, -1, 8, 0}, +/* 32 */ { 4, s_5_32, -1, 1, 0}, +/* 33 */ { 7, s_5_33, -1, 2, 0}, +/* 34 */ { 6, s_5_34, -1, 7, 0}, +/* 35 */ { 7, s_5_35, -1, 3, 0}, +/* 36 */ { 6, s_5_36, -1, 1, 0}, +/* 37 */ { 5, s_5_37, -1, 1, 0}, +/* 38 */ { 7, s_5_38, -1, 1, 0}, +/* 39 */ { 4, s_5_39, -1, 1, 0}, +/* 40 */ { 5, s_5_40, -1, 1, 0}, +/* 41 */ { 4, s_5_41, -1, 1, 0}, +/* 42 */ { 7, s_5_42, -1, 1, 0}, +/* 43 */ { 7, s_5_43, -1, 1, 0}, +/* 44 */ { 4, s_5_44, -1, 8, 0} +}; + +static const symbol s_6_0[3] = { 'a', 'd', 'a' }; +static const symbol s_6_1[3] = { 'i', 'd', 'a' }; +static const symbol s_6_2[2] = { 'i', 'a' }; +static const symbol s_6_3[4] = { 'a', 'r', 'i', 'a' }; +static const symbol s_6_4[4] = { 'e', 'r', 'i', 'a' }; +static const symbol s_6_5[4] = { 'i', 'r', 'i', 'a' }; +static const symbol s_6_6[3] = { 'a', 'r', 'a' }; +static const symbol s_6_7[3] = { 'e', 'r', 'a' }; +static const symbol s_6_8[3] = { 'i', 'r', 'a' }; +static const symbol s_6_9[3] = { 'a', 'v', 'a' }; +static const symbol s_6_10[4] = { 'a', 's', 's', 'e' }; +static const symbol s_6_11[4] = { 'e', 's', 's', 'e' }; +static const symbol s_6_12[4] = { 'i', 's', 's', 'e' }; +static const symbol s_6_13[4] = { 'a', 's', 't', 'e' }; +static const symbol s_6_14[4] = { 'e', 's', 't', 'e' }; +static const symbol s_6_15[4] = { 'i', 's', 't', 'e' }; +static const symbol s_6_16[2] = { 'e', 'i' }; +static const symbol s_6_17[4] = { 'a', 'r', 'e', 'i' }; +static const symbol s_6_18[4] = { 'e', 'r', 'e', 'i' }; +static const symbol s_6_19[4] = { 'i', 'r', 'e', 'i' }; +static const symbol s_6_20[2] = { 'a', 'm' }; +static const symbol s_6_21[3] = { 'i', 'a', 'm' }; +static const symbol s_6_22[5] = { 'a', 'r', 'i', 'a', 'm' }; +static const symbol s_6_23[5] = { 'e', 'r', 'i', 'a', 'm' }; +static const symbol s_6_24[5] = { 'i', 'r', 'i', 'a', 'm' }; +static const symbol s_6_25[4] = { 'a', 'r', 'a', 'm' }; +static const symbol s_6_26[4] = { 'e', 'r', 'a', 'm' }; +static const symbol s_6_27[4] = { 'i', 'r', 'a', 'm' }; +static const symbol s_6_28[4] = { 'a', 'v', 'a', 'm' }; +static const symbol s_6_29[2] = { 'e', 'm' }; +static const symbol s_6_30[4] = { 'a', 'r', 'e', 'm' }; +static const symbol s_6_31[4] = { 'e', 'r', 'e', 'm' }; +static const symbol s_6_32[4] = { 'i', 'r', 'e', 'm' }; +static const symbol s_6_33[5] = { 'a', 's', 's', 'e', 'm' }; +static const symbol s_6_34[5] = { 'e', 's', 's', 'e', 'm' }; +static const symbol s_6_35[5] = { 'i', 's', 's', 'e', 'm' }; +static const symbol s_6_36[3] = { 'a', 'd', 'o' }; +static const symbol s_6_37[3] = { 'i', 'd', 'o' }; +static const symbol s_6_38[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_6_39[4] = { 'e', 'n', 'd', 'o' }; +static const symbol s_6_40[4] = { 'i', 'n', 'd', 'o' }; +static const symbol s_6_41[5] = { 'a', 'r', 'a', '~', 'o' }; +static const symbol s_6_42[5] = { 'e', 'r', 'a', '~', 'o' }; +static const symbol s_6_43[5] = { 'i', 'r', 'a', '~', 'o' }; +static const symbol s_6_44[2] = { 'a', 'r' }; +static const symbol s_6_45[2] = { 'e', 'r' }; +static const symbol s_6_46[2] = { 'i', 'r' }; +static const symbol s_6_47[2] = { 'a', 's' }; +static const symbol s_6_48[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_6_49[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_6_50[3] = { 'i', 'a', 's' }; +static const symbol s_6_51[5] = { 'a', 'r', 'i', 'a', 's' }; +static const symbol s_6_52[5] = { 'e', 'r', 'i', 'a', 's' }; +static const symbol s_6_53[5] = { 'i', 'r', 'i', 'a', 's' }; +static const symbol s_6_54[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_6_55[4] = { 'e', 'r', 'a', 's' }; +static const symbol s_6_56[4] = { 'i', 'r', 'a', 's' }; +static const symbol s_6_57[4] = { 'a', 'v', 'a', 's' }; +static const symbol s_6_58[2] = { 'e', 's' }; +static const symbol s_6_59[5] = { 'a', 'r', 'd', 'e', 's' }; +static const symbol s_6_60[5] = { 'e', 'r', 'd', 'e', 's' }; +static const symbol s_6_61[5] = { 'i', 'r', 'd', 'e', 's' }; +static const symbol s_6_62[4] = { 'a', 'r', 'e', 's' }; +static const symbol s_6_63[4] = { 'e', 'r', 'e', 's' }; +static const symbol s_6_64[4] = { 'i', 'r', 'e', 's' }; +static const symbol s_6_65[5] = { 'a', 's', 's', 'e', 's' }; +static const symbol s_6_66[5] = { 'e', 's', 's', 'e', 's' }; +static const symbol s_6_67[5] = { 'i', 's', 's', 'e', 's' }; +static const symbol s_6_68[5] = { 'a', 's', 't', 'e', 's' }; +static const symbol s_6_69[5] = { 'e', 's', 't', 'e', 's' }; +static const symbol s_6_70[5] = { 'i', 's', 't', 'e', 's' }; +static const symbol s_6_71[2] = { 'i', 's' }; +static const symbol s_6_72[3] = { 'a', 'i', 's' }; +static const symbol s_6_73[3] = { 'e', 'i', 's' }; +static const symbol s_6_74[5] = { 'a', 'r', 'e', 'i', 's' }; +static const symbol s_6_75[5] = { 'e', 'r', 'e', 'i', 's' }; +static const symbol s_6_76[5] = { 'i', 'r', 'e', 'i', 's' }; +static const symbol s_6_77[6] = { 0xC3, 0xA1, 'r', 'e', 'i', 's' }; +static const symbol s_6_78[6] = { 0xC3, 0xA9, 'r', 'e', 'i', 's' }; +static const symbol s_6_79[6] = { 0xC3, 0xAD, 'r', 'e', 'i', 's' }; +static const symbol s_6_80[7] = { 0xC3, 0xA1, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_81[7] = { 0xC3, 0xA9, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_82[7] = { 0xC3, 0xAD, 's', 's', 'e', 'i', 's' }; +static const symbol s_6_83[6] = { 0xC3, 0xA1, 'v', 'e', 'i', 's' }; +static const symbol s_6_84[5] = { 0xC3, 0xAD, 'e', 'i', 's' }; +static const symbol s_6_85[7] = { 'a', 'r', 0xC3, 0xAD, 'e', 'i', 's' }; +static const symbol s_6_86[7] = { 'e', 'r', 0xC3, 0xAD, 'e', 'i', 's' }; +static const symbol s_6_87[7] = { 'i', 'r', 0xC3, 0xAD, 'e', 'i', 's' }; +static const symbol s_6_88[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_6_89[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_6_90[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_6_91[7] = { 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_92[7] = { 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_93[7] = { 0xC3, 0xAD, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_6_94[7] = { 0xC3, 0xA1, 'v', 'a', 'm', 'o', 's' }; +static const symbol s_6_95[6] = { 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_6_96[8] = { 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_6_97[8] = { 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_6_98[8] = { 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_6_99[4] = { 'e', 'm', 'o', 's' }; +static const symbol s_6_100[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_101[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_102[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_6_103[8] = { 0xC3, 0xA1, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_104[8] = { 0xC3, 0xAA, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_105[8] = { 0xC3, 0xAD, 's', 's', 'e', 'm', 'o', 's' }; +static const symbol s_6_106[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_6_107[5] = { 'a', 'r', 'm', 'o', 's' }; +static const symbol s_6_108[5] = { 'e', 'r', 'm', 'o', 's' }; +static const symbol s_6_109[5] = { 'i', 'r', 'm', 'o', 's' }; +static const symbol s_6_110[5] = { 0xC3, 0xA1, 'm', 'o', 's' }; +static const symbol s_6_111[5] = { 'a', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_6_112[5] = { 'e', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_6_113[5] = { 'i', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_6_114[2] = { 'e', 'u' }; +static const symbol s_6_115[2] = { 'i', 'u' }; +static const symbol s_6_116[2] = { 'o', 'u' }; +static const symbol s_6_117[4] = { 'a', 'r', 0xC3, 0xA1 }; +static const symbol s_6_118[4] = { 'e', 'r', 0xC3, 0xA1 }; +static const symbol s_6_119[4] = { 'i', 'r', 0xC3, 0xA1 }; + +static const struct among a_6[120] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 3, s_6_1, -1, 1, 0}, +/* 2 */ { 2, s_6_2, -1, 1, 0}, +/* 3 */ { 4, s_6_3, 2, 1, 0}, +/* 4 */ { 4, s_6_4, 2, 1, 0}, +/* 5 */ { 4, s_6_5, 2, 1, 0}, +/* 6 */ { 3, s_6_6, -1, 1, 0}, +/* 7 */ { 3, s_6_7, -1, 1, 0}, +/* 8 */ { 3, s_6_8, -1, 1, 0}, +/* 9 */ { 3, s_6_9, -1, 1, 0}, +/* 10 */ { 4, s_6_10, -1, 1, 0}, +/* 11 */ { 4, s_6_11, -1, 1, 0}, +/* 12 */ { 4, s_6_12, -1, 1, 0}, +/* 13 */ { 4, s_6_13, -1, 1, 0}, +/* 14 */ { 4, s_6_14, -1, 1, 0}, +/* 15 */ { 4, s_6_15, -1, 1, 0}, +/* 16 */ { 2, s_6_16, -1, 1, 0}, +/* 17 */ { 4, s_6_17, 16, 1, 0}, +/* 18 */ { 4, s_6_18, 16, 1, 0}, +/* 19 */ { 4, s_6_19, 16, 1, 0}, +/* 20 */ { 2, s_6_20, -1, 1, 0}, +/* 21 */ { 3, s_6_21, 20, 1, 0}, +/* 22 */ { 5, s_6_22, 21, 1, 0}, +/* 23 */ { 5, s_6_23, 21, 1, 0}, +/* 24 */ { 5, s_6_24, 21, 1, 0}, +/* 25 */ { 4, s_6_25, 20, 1, 0}, +/* 26 */ { 4, s_6_26, 20, 1, 0}, +/* 27 */ { 4, s_6_27, 20, 1, 0}, +/* 28 */ { 4, s_6_28, 20, 1, 0}, +/* 29 */ { 2, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, 29, 1, 0}, +/* 31 */ { 4, s_6_31, 29, 1, 0}, +/* 32 */ { 4, s_6_32, 29, 1, 0}, +/* 33 */ { 5, s_6_33, 29, 1, 0}, +/* 34 */ { 5, s_6_34, 29, 1, 0}, +/* 35 */ { 5, s_6_35, 29, 1, 0}, +/* 36 */ { 3, s_6_36, -1, 1, 0}, +/* 37 */ { 3, s_6_37, -1, 1, 0}, +/* 38 */ { 4, s_6_38, -1, 1, 0}, +/* 39 */ { 4, s_6_39, -1, 1, 0}, +/* 40 */ { 4, s_6_40, -1, 1, 0}, +/* 41 */ { 5, s_6_41, -1, 1, 0}, +/* 42 */ { 5, s_6_42, -1, 1, 0}, +/* 43 */ { 5, s_6_43, -1, 1, 0}, +/* 44 */ { 2, s_6_44, -1, 1, 0}, +/* 45 */ { 2, s_6_45, -1, 1, 0}, +/* 46 */ { 2, s_6_46, -1, 1, 0}, +/* 47 */ { 2, s_6_47, -1, 1, 0}, +/* 48 */ { 4, s_6_48, 47, 1, 0}, +/* 49 */ { 4, s_6_49, 47, 1, 0}, +/* 50 */ { 3, s_6_50, 47, 1, 0}, +/* 51 */ { 5, s_6_51, 50, 1, 0}, +/* 52 */ { 5, s_6_52, 50, 1, 0}, +/* 53 */ { 5, s_6_53, 50, 1, 0}, +/* 54 */ { 4, s_6_54, 47, 1, 0}, +/* 55 */ { 4, s_6_55, 47, 1, 0}, +/* 56 */ { 4, s_6_56, 47, 1, 0}, +/* 57 */ { 4, s_6_57, 47, 1, 0}, +/* 58 */ { 2, s_6_58, -1, 1, 0}, +/* 59 */ { 5, s_6_59, 58, 1, 0}, +/* 60 */ { 5, s_6_60, 58, 1, 0}, +/* 61 */ { 5, s_6_61, 58, 1, 0}, +/* 62 */ { 4, s_6_62, 58, 1, 0}, +/* 63 */ { 4, s_6_63, 58, 1, 0}, +/* 64 */ { 4, s_6_64, 58, 1, 0}, +/* 65 */ { 5, s_6_65, 58, 1, 0}, +/* 66 */ { 5, s_6_66, 58, 1, 0}, +/* 67 */ { 5, s_6_67, 58, 1, 0}, +/* 68 */ { 5, s_6_68, 58, 1, 0}, +/* 69 */ { 5, s_6_69, 58, 1, 0}, +/* 70 */ { 5, s_6_70, 58, 1, 0}, +/* 71 */ { 2, s_6_71, -1, 1, 0}, +/* 72 */ { 3, s_6_72, 71, 1, 0}, +/* 73 */ { 3, s_6_73, 71, 1, 0}, +/* 74 */ { 5, s_6_74, 73, 1, 0}, +/* 75 */ { 5, s_6_75, 73, 1, 0}, +/* 76 */ { 5, s_6_76, 73, 1, 0}, +/* 77 */ { 6, s_6_77, 73, 1, 0}, +/* 78 */ { 6, s_6_78, 73, 1, 0}, +/* 79 */ { 6, s_6_79, 73, 1, 0}, +/* 80 */ { 7, s_6_80, 73, 1, 0}, +/* 81 */ { 7, s_6_81, 73, 1, 0}, +/* 82 */ { 7, s_6_82, 73, 1, 0}, +/* 83 */ { 6, s_6_83, 73, 1, 0}, +/* 84 */ { 5, s_6_84, 73, 1, 0}, +/* 85 */ { 7, s_6_85, 84, 1, 0}, +/* 86 */ { 7, s_6_86, 84, 1, 0}, +/* 87 */ { 7, s_6_87, 84, 1, 0}, +/* 88 */ { 4, s_6_88, -1, 1, 0}, +/* 89 */ { 4, s_6_89, -1, 1, 0}, +/* 90 */ { 4, s_6_90, -1, 1, 0}, +/* 91 */ { 7, s_6_91, 90, 1, 0}, +/* 92 */ { 7, s_6_92, 90, 1, 0}, +/* 93 */ { 7, s_6_93, 90, 1, 0}, +/* 94 */ { 7, s_6_94, 90, 1, 0}, +/* 95 */ { 6, s_6_95, 90, 1, 0}, +/* 96 */ { 8, s_6_96, 95, 1, 0}, +/* 97 */ { 8, s_6_97, 95, 1, 0}, +/* 98 */ { 8, s_6_98, 95, 1, 0}, +/* 99 */ { 4, s_6_99, -1, 1, 0}, +/*100 */ { 6, s_6_100, 99, 1, 0}, +/*101 */ { 6, s_6_101, 99, 1, 0}, +/*102 */ { 6, s_6_102, 99, 1, 0}, +/*103 */ { 8, s_6_103, 99, 1, 0}, +/*104 */ { 8, s_6_104, 99, 1, 0}, +/*105 */ { 8, s_6_105, 99, 1, 0}, +/*106 */ { 4, s_6_106, -1, 1, 0}, +/*107 */ { 5, s_6_107, -1, 1, 0}, +/*108 */ { 5, s_6_108, -1, 1, 0}, +/*109 */ { 5, s_6_109, -1, 1, 0}, +/*110 */ { 5, s_6_110, -1, 1, 0}, +/*111 */ { 5, s_6_111, -1, 1, 0}, +/*112 */ { 5, s_6_112, -1, 1, 0}, +/*113 */ { 5, s_6_113, -1, 1, 0}, +/*114 */ { 2, s_6_114, -1, 1, 0}, +/*115 */ { 2, s_6_115, -1, 1, 0}, +/*116 */ { 2, s_6_116, -1, 1, 0}, +/*117 */ { 4, s_6_117, -1, 1, 0}, +/*118 */ { 4, s_6_118, -1, 1, 0}, +/*119 */ { 4, s_6_119, -1, 1, 0} +}; + +static const symbol s_7_0[1] = { 'a' }; +static const symbol s_7_1[1] = { 'i' }; +static const symbol s_7_2[1] = { 'o' }; +static const symbol s_7_3[2] = { 'o', 's' }; +static const symbol s_7_4[2] = { 0xC3, 0xA1 }; +static const symbol s_7_5[2] = { 0xC3, 0xAD }; +static const symbol s_7_6[2] = { 0xC3, 0xB3 }; + +static const struct among a_7[7] = +{ +/* 0 */ { 1, s_7_0, -1, 1, 0}, +/* 1 */ { 1, s_7_1, -1, 1, 0}, +/* 2 */ { 1, s_7_2, -1, 1, 0}, +/* 3 */ { 2, s_7_3, -1, 1, 0}, +/* 4 */ { 2, s_7_4, -1, 1, 0}, +/* 5 */ { 2, s_7_5, -1, 1, 0}, +/* 6 */ { 2, s_7_6, -1, 1, 0} +}; + +static const symbol s_8_0[1] = { 'e' }; +static const symbol s_8_1[2] = { 0xC3, 0xA7 }; +static const symbol s_8_2[2] = { 0xC3, 0xA9 }; +static const symbol s_8_3[2] = { 0xC3, 0xAA }; + +static const struct among a_8[4] = +{ +/* 0 */ { 1, s_8_0, -1, 1, 0}, +/* 1 */ { 2, s_8_1, -1, 2, 0}, +/* 2 */ { 2, s_8_2, -1, 1, 0}, +/* 3 */ { 2, s_8_3, -1, 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[] = { 0xC3, 0xA3 }; +static const symbol s_3[] = { 0xC3, 0xB5 }; +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[] = { 'e' }; +static const symbol s_10[] = { 'i', 'r' }; +static const symbol s_11[] = { 'u' }; +static const symbol s_12[] = { 'g' }; +static const symbol s_13[] = { 'i' }; +static const symbol s_14[] = { 'c' }; +static const symbol s_15[] = { 'c' }; +static const symbol s_16[] = { 'i' }; +static const symbol s_17[] = { 'c' }; + +static int r_prelude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 36 */ + int c1 = z->c; + z->bra = z->c; /* [, line 37 */ + if (z->c + 1 >= z->l || (z->p[z->c + 1] != 163 && z->p[z->c + 1] != 181)) among_var = 3; else + among_var = find_among(z, a_0, 3); /* substring, line 37 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 37 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 2, s_0); /* <-, line 38 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_1); /* <-, line 39 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 40 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 50 */ + { int c2 = z->c; /* or, line 52 */ + if (in_grouping_U(z, g_v, 97, 250, 0)) goto lab2; + { int c3 = z->c; /* or, line 51 */ + if (out_grouping_U(z, g_v, 97, 250, 0)) goto lab4; + { /* gopast */ /* grouping v, line 51 */ + int ret = out_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping_U(z, g_v, 97, 250, 0)) goto lab2; + { /* gopast */ /* non v, line 51 */ + int ret = in_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping_U(z, g_v, 97, 250, 0)) goto lab0; + { int c4 = z->c; /* or, line 53 */ + if (out_grouping_U(z, g_v, 97, 250, 0)) goto lab6; + { /* gopast */ /* grouping v, line 53 */ + int ret = out_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping_U(z, g_v, 97, 250, 0)) goto lab0; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 53 */ + } + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 54 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 56 */ + { /* gopast */ /* grouping v, line 57 */ + int ret = out_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 57 */ + int ret = in_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 57 */ + { /* gopast */ /* grouping v, line 58 */ + int ret = out_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 58 */ + int ret = in_grouping_U(z, g_v, 97, 250, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 58 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 62 */ + int c1 = z->c; + z->bra = z->c; /* [, line 63 */ + if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else + among_var = find_among(z, a_1, 3); /* substring, line 63 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 63 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 2, s_2); /* <-, line 64 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_3); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 66 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 77 */ + if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((839714 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_5, 45); /* substring, line 77 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 77 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 93 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 93 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 98 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_4); /* <-, line 98 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 102 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_5); /* <-, line 102 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 106 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_6); /* <-, line 106 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 110 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 110 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 111 */ + z->ket = z->c; /* [, line 112 */ + 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 - m_keep; goto lab0; } + among_var = find_among_b(z, a_2, 4); /* substring, line 112 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 112 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 112 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 112 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + z->ket = z->c; /* [, line 113 */ + if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 113 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 113 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 113 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + break; + case 6: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 122 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 123 */ + z->ket = z->c; /* [, line 124 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m_keep; goto lab1; } + among_var = find_among_b(z, a_3, 3); /* substring, line 124 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 124 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 127 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 127 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 134 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 135 */ + z->ket = z->c; /* [, line 136 */ + 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 - m_keep; goto lab2; } + among_var = find_among_b(z, a_4, 3); /* substring, line 136 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 136 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 139 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 139 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 146 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 146 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 147 */ + z->ket = z->c; /* [, line 148 */ + if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 148 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 148 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 148 */ + if (ret < 0) return ret; + } + lab3: + ; + } + break; + case 9: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 153 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_9))) return 0; + { int ret = slice_from_s(z, 2, s_10); /* <-, line 154 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 159 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 159 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 160 */ + among_var = find_among_b(z, a_6, 120); /* substring, line 160 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 160 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 184 */ + among_var = find_among_b(z, a_7, 7); /* substring, line 184 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 184 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 187 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 187 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_form(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 192 */ + among_var = find_among_b(z, a_8, 4); /* substring, line 192 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 192 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 194 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 194 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 194 */ + if (!(eq_s_b(z, 1, s_11))) goto lab1; + z->bra = z->c; /* ], line 194 */ + { int m_test = z->l - z->c; /* test, line 194 */ + if (!(eq_s_b(z, 1, s_12))) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_13))) return 0; + z->bra = z->c; /* ], line 195 */ + { int m_test = z->l - z->c; /* test, line 195 */ + if (!(eq_s_b(z, 1, s_14))) return 0; + z->c = z->l - m_test; + } + } + lab0: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 195 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 195 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_15); /* <-, line 196 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int portuguese_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 202 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 202 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 203 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 203 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 204 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 205 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 209 */ + { int m5 = z->l - z->c; (void)m5; /* and, line 207 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 206 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab6; /* call standard_suffix, line 206 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 206 */ + if (ret < 0) return ret; + } + } + lab5: + z->c = z->l - m5; + { int m7 = z->l - z->c; (void)m7; /* do, line 207 */ + z->ket = z->c; /* [, line 207 */ + if (!(eq_s_b(z, 1, s_16))) goto lab7; + z->bra = z->c; /* ], line 207 */ + { int m_test = z->l - z->c; /* test, line 207 */ + if (!(eq_s_b(z, 1, s_17))) goto lab7; + z->c = z->l - m_test; + } + { int ret = r_RV(z); + if (ret == 0) goto lab7; /* call RV, line 207 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 207 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab2; /* call residual_suffix, line 209 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m8 = z->l - z->c; (void)m8; /* do, line 211 */ + { int ret = r_residual_form(z); + if (ret == 0) goto lab8; /* call residual_form, line 211 */ + if (ret < 0) return ret; + } + lab8: + z->c = z->l - m8; + } + z->c = z->lb; + { int c9 = z->c; /* do, line 213 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab9; /* call postlude, line 213 */ + if (ret < 0) return ret; + } + lab9: + z->c = c9; + } + return 1; +} + +extern struct SN_env * portuguese_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void portuguese_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_portuguese.h b/src_c/stem_UTF_8_portuguese.h new file mode 100644 index 0000000..9fe7f9a --- /dev/null +++ b/src_c/stem_UTF_8_portuguese.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * portuguese_UTF_8_create_env(void); +extern void portuguese_UTF_8_close_env(struct SN_env * z); + +extern int portuguese_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_romanian.c b/src_c/stem_UTF_8_romanian.c new file mode 100644 index 0000000..5ca94d5 --- /dev/null +++ b/src_c/stem_UTF_8_romanian.c @@ -0,0 +1,1004 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int romanian_UTF_8_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_combo_suffix(struct SN_env * z); +static int r_standard_suffix(struct SN_env * z); +static int r_step_0(struct SN_env * z); +static int r_R2(struct SN_env * z); +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); +static int r_prelude(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * romanian_UTF_8_create_env(void); +extern void romanian_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[1] = { 'I' }; +static const symbol s_0_2[1] = { 'U' }; + +static const struct among a_0[3] = +{ +/* 0 */ { 0, 0, -1, 3, 0}, +/* 1 */ { 1, s_0_1, 0, 1, 0}, +/* 2 */ { 1, s_0_2, 0, 2, 0} +}; + +static const symbol s_1_0[2] = { 'e', 'a' }; +static const symbol s_1_1[5] = { 'a', 0xC5, 0xA3, 'i', 'a' }; +static const symbol s_1_2[3] = { 'a', 'u', 'a' }; +static const symbol s_1_3[3] = { 'i', 'u', 'a' }; +static const symbol s_1_4[5] = { 'a', 0xC5, 0xA3, 'i', 'e' }; +static const symbol s_1_5[3] = { 'e', 'l', 'e' }; +static const symbol s_1_6[3] = { 'i', 'l', 'e' }; +static const symbol s_1_7[4] = { 'i', 'i', 'l', 'e' }; +static const symbol s_1_8[3] = { 'i', 'e', 'i' }; +static const symbol s_1_9[4] = { 'a', 't', 'e', 'i' }; +static const symbol s_1_10[2] = { 'i', 'i' }; +static const symbol s_1_11[4] = { 'u', 'l', 'u', 'i' }; +static const symbol s_1_12[2] = { 'u', 'l' }; +static const symbol s_1_13[4] = { 'e', 'l', 'o', 'r' }; +static const symbol s_1_14[4] = { 'i', 'l', 'o', 'r' }; +static const symbol s_1_15[5] = { 'i', 'i', 'l', 'o', 'r' }; + +static const struct among a_1[16] = +{ +/* 0 */ { 2, s_1_0, -1, 3, 0}, +/* 1 */ { 5, s_1_1, -1, 7, 0}, +/* 2 */ { 3, s_1_2, -1, 2, 0}, +/* 3 */ { 3, s_1_3, -1, 4, 0}, +/* 4 */ { 5, s_1_4, -1, 7, 0}, +/* 5 */ { 3, s_1_5, -1, 3, 0}, +/* 6 */ { 3, s_1_6, -1, 5, 0}, +/* 7 */ { 4, s_1_7, 6, 4, 0}, +/* 8 */ { 3, s_1_8, -1, 4, 0}, +/* 9 */ { 4, s_1_9, -1, 6, 0}, +/* 10 */ { 2, s_1_10, -1, 4, 0}, +/* 11 */ { 4, s_1_11, -1, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 4, s_1_13, -1, 3, 0}, +/* 14 */ { 4, s_1_14, -1, 4, 0}, +/* 15 */ { 5, s_1_15, 14, 4, 0} +}; + +static const symbol s_2_0[5] = { 'i', 'c', 'a', 'l', 'a' }; +static const symbol s_2_1[5] = { 'i', 'c', 'i', 'v', 'a' }; +static const symbol s_2_2[5] = { 'a', 't', 'i', 'v', 'a' }; +static const symbol s_2_3[5] = { 'i', 't', 'i', 'v', 'a' }; +static const symbol s_2_4[5] = { 'i', 'c', 'a', 'l', 'e' }; +static const symbol s_2_5[7] = { 'a', 0xC5, 0xA3, 'i', 'u', 'n', 'e' }; +static const symbol s_2_6[7] = { 'i', 0xC5, 0xA3, 'i', 'u', 'n', 'e' }; +static const symbol s_2_7[6] = { 'a', 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_8[6] = { 'i', 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_9[7] = { 0xC4, 0x83, 't', 'o', 'a', 'r', 'e' }; +static const symbol s_2_10[7] = { 'i', 'c', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_11[9] = { 'a', 'b', 'i', 'l', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_12[9] = { 'i', 'b', 'i', 'l', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_13[7] = { 'i', 'v', 'i', 't', 'a', 't', 'e' }; +static const symbol s_2_14[5] = { 'i', 'c', 'i', 'v', 'e' }; +static const symbol s_2_15[5] = { 'a', 't', 'i', 'v', 'e' }; +static const symbol s_2_16[5] = { 'i', 't', 'i', 'v', 'e' }; +static const symbol s_2_17[5] = { 'i', 'c', 'a', 'l', 'i' }; +static const symbol s_2_18[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_2_19[7] = { 'i', 'c', 'a', 't', 'o', 'r', 'i' }; +static const symbol s_2_20[5] = { 'i', 't', 'o', 'r', 'i' }; +static const symbol s_2_21[6] = { 0xC4, 0x83, 't', 'o', 'r', 'i' }; +static const symbol s_2_22[7] = { 'i', 'c', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_23[9] = { 'a', 'b', 'i', 'l', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_24[7] = { 'i', 'v', 'i', 't', 'a', 't', 'i' }; +static const symbol s_2_25[5] = { 'i', 'c', 'i', 'v', 'i' }; +static const symbol s_2_26[5] = { 'a', 't', 'i', 'v', 'i' }; +static const symbol s_2_27[5] = { 'i', 't', 'i', 'v', 'i' }; +static const symbol s_2_28[7] = { 'i', 'c', 'i', 't', 0xC4, 0x83, 'i' }; +static const symbol s_2_29[9] = { 'a', 'b', 'i', 'l', 'i', 't', 0xC4, 0x83, 'i' }; +static const symbol s_2_30[7] = { 'i', 'v', 'i', 't', 0xC4, 0x83, 'i' }; +static const symbol s_2_31[9] = { 'i', 'c', 'i', 't', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_2_32[11] = { 'a', 'b', 'i', 'l', 'i', 't', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_2_33[9] = { 'i', 'v', 'i', 't', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_2_34[4] = { 'i', 'c', 'a', 'l' }; +static const symbol s_2_35[4] = { 'a', 't', 'o', 'r' }; +static const symbol s_2_36[6] = { 'i', 'c', 'a', 't', 'o', 'r' }; +static const symbol s_2_37[4] = { 'i', 't', 'o', 'r' }; +static const symbol s_2_38[5] = { 0xC4, 0x83, 't', 'o', 'r' }; +static const symbol s_2_39[4] = { 'i', 'c', 'i', 'v' }; +static const symbol s_2_40[4] = { 'a', 't', 'i', 'v' }; +static const symbol s_2_41[4] = { 'i', 't', 'i', 'v' }; +static const symbol s_2_42[6] = { 'i', 'c', 'a', 'l', 0xC4, 0x83 }; +static const symbol s_2_43[6] = { 'i', 'c', 'i', 'v', 0xC4, 0x83 }; +static const symbol s_2_44[6] = { 'a', 't', 'i', 'v', 0xC4, 0x83 }; +static const symbol s_2_45[6] = { 'i', 't', 'i', 'v', 0xC4, 0x83 }; + +static const struct among a_2[46] = +{ +/* 0 */ { 5, s_2_0, -1, 4, 0}, +/* 1 */ { 5, s_2_1, -1, 4, 0}, +/* 2 */ { 5, s_2_2, -1, 5, 0}, +/* 3 */ { 5, s_2_3, -1, 6, 0}, +/* 4 */ { 5, s_2_4, -1, 4, 0}, +/* 5 */ { 7, s_2_5, -1, 5, 0}, +/* 6 */ { 7, s_2_6, -1, 6, 0}, +/* 7 */ { 6, s_2_7, -1, 5, 0}, +/* 8 */ { 6, s_2_8, -1, 6, 0}, +/* 9 */ { 7, s_2_9, -1, 5, 0}, +/* 10 */ { 7, s_2_10, -1, 4, 0}, +/* 11 */ { 9, s_2_11, -1, 1, 0}, +/* 12 */ { 9, s_2_12, -1, 2, 0}, +/* 13 */ { 7, s_2_13, -1, 3, 0}, +/* 14 */ { 5, s_2_14, -1, 4, 0}, +/* 15 */ { 5, s_2_15, -1, 5, 0}, +/* 16 */ { 5, s_2_16, -1, 6, 0}, +/* 17 */ { 5, s_2_17, -1, 4, 0}, +/* 18 */ { 5, s_2_18, -1, 5, 0}, +/* 19 */ { 7, s_2_19, 18, 4, 0}, +/* 20 */ { 5, s_2_20, -1, 6, 0}, +/* 21 */ { 6, s_2_21, -1, 5, 0}, +/* 22 */ { 7, s_2_22, -1, 4, 0}, +/* 23 */ { 9, s_2_23, -1, 1, 0}, +/* 24 */ { 7, s_2_24, -1, 3, 0}, +/* 25 */ { 5, s_2_25, -1, 4, 0}, +/* 26 */ { 5, s_2_26, -1, 5, 0}, +/* 27 */ { 5, s_2_27, -1, 6, 0}, +/* 28 */ { 7, s_2_28, -1, 4, 0}, +/* 29 */ { 9, s_2_29, -1, 1, 0}, +/* 30 */ { 7, s_2_30, -1, 3, 0}, +/* 31 */ { 9, s_2_31, -1, 4, 0}, +/* 32 */ { 11, s_2_32, -1, 1, 0}, +/* 33 */ { 9, s_2_33, -1, 3, 0}, +/* 34 */ { 4, s_2_34, -1, 4, 0}, +/* 35 */ { 4, s_2_35, -1, 5, 0}, +/* 36 */ { 6, s_2_36, 35, 4, 0}, +/* 37 */ { 4, s_2_37, -1, 6, 0}, +/* 38 */ { 5, s_2_38, -1, 5, 0}, +/* 39 */ { 4, s_2_39, -1, 4, 0}, +/* 40 */ { 4, s_2_40, -1, 5, 0}, +/* 41 */ { 4, s_2_41, -1, 6, 0}, +/* 42 */ { 6, s_2_42, -1, 4, 0}, +/* 43 */ { 6, s_2_43, -1, 4, 0}, +/* 44 */ { 6, s_2_44, -1, 5, 0}, +/* 45 */ { 6, s_2_45, -1, 6, 0} +}; + +static const symbol s_3_0[3] = { 'i', 'c', 'a' }; +static const symbol s_3_1[5] = { 'a', 'b', 'i', 'l', 'a' }; +static const symbol s_3_2[5] = { 'i', 'b', 'i', 'l', 'a' }; +static const symbol s_3_3[4] = { 'o', 'a', 's', 'a' }; +static const symbol s_3_4[3] = { 'a', 't', 'a' }; +static const symbol s_3_5[3] = { 'i', 't', 'a' }; +static const symbol s_3_6[4] = { 'a', 'n', 't', 'a' }; +static const symbol s_3_7[4] = { 'i', 's', 't', 'a' }; +static const symbol s_3_8[3] = { 'u', 't', 'a' }; +static const symbol s_3_9[3] = { 'i', 'v', 'a' }; +static const symbol s_3_10[2] = { 'i', 'c' }; +static const symbol s_3_11[3] = { 'i', 'c', 'e' }; +static const symbol s_3_12[5] = { 'a', 'b', 'i', 'l', 'e' }; +static const symbol s_3_13[5] = { 'i', 'b', 'i', 'l', 'e' }; +static const symbol s_3_14[4] = { 'i', 's', 'm', 'e' }; +static const symbol s_3_15[4] = { 'i', 'u', 'n', 'e' }; +static const symbol s_3_16[4] = { 'o', 'a', 's', 'e' }; +static const symbol s_3_17[3] = { 'a', 't', 'e' }; +static const symbol s_3_18[5] = { 'i', 't', 'a', 't', 'e' }; +static const symbol s_3_19[3] = { 'i', 't', 'e' }; +static const symbol s_3_20[4] = { 'a', 'n', 't', 'e' }; +static const symbol s_3_21[4] = { 'i', 's', 't', 'e' }; +static const symbol s_3_22[3] = { 'u', 't', 'e' }; +static const symbol s_3_23[3] = { 'i', 'v', 'e' }; +static const symbol s_3_24[3] = { 'i', 'c', 'i' }; +static const symbol s_3_25[5] = { 'a', 'b', 'i', 'l', 'i' }; +static const symbol s_3_26[5] = { 'i', 'b', 'i', 'l', 'i' }; +static const symbol s_3_27[4] = { 'i', 'u', 'n', 'i' }; +static const symbol s_3_28[5] = { 'a', 't', 'o', 'r', 'i' }; +static const symbol s_3_29[3] = { 'o', 's', 'i' }; +static const symbol s_3_30[3] = { 'a', 't', 'i' }; +static const symbol s_3_31[5] = { 'i', 't', 'a', 't', 'i' }; +static const symbol s_3_32[3] = { 'i', 't', 'i' }; +static const symbol s_3_33[4] = { 'a', 'n', 't', 'i' }; +static const symbol s_3_34[4] = { 'i', 's', 't', 'i' }; +static const symbol s_3_35[3] = { 'u', 't', 'i' }; +static const symbol s_3_36[5] = { 'i', 0xC5, 0x9F, 't', 'i' }; +static const symbol s_3_37[3] = { 'i', 'v', 'i' }; +static const symbol s_3_38[5] = { 'i', 't', 0xC4, 0x83, 'i' }; +static const symbol s_3_39[4] = { 'o', 0xC5, 0x9F, 'i' }; +static const symbol s_3_40[7] = { 'i', 't', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_3_41[4] = { 'a', 'b', 'i', 'l' }; +static const symbol s_3_42[4] = { 'i', 'b', 'i', 'l' }; +static const symbol s_3_43[3] = { 'i', 's', 'm' }; +static const symbol s_3_44[4] = { 'a', 't', 'o', 'r' }; +static const symbol s_3_45[2] = { 'o', 's' }; +static const symbol s_3_46[2] = { 'a', 't' }; +static const symbol s_3_47[2] = { 'i', 't' }; +static const symbol s_3_48[3] = { 'a', 'n', 't' }; +static const symbol s_3_49[3] = { 'i', 's', 't' }; +static const symbol s_3_50[2] = { 'u', 't' }; +static const symbol s_3_51[2] = { 'i', 'v' }; +static const symbol s_3_52[4] = { 'i', 'c', 0xC4, 0x83 }; +static const symbol s_3_53[6] = { 'a', 'b', 'i', 'l', 0xC4, 0x83 }; +static const symbol s_3_54[6] = { 'i', 'b', 'i', 'l', 0xC4, 0x83 }; +static const symbol s_3_55[5] = { 'o', 'a', 's', 0xC4, 0x83 }; +static const symbol s_3_56[4] = { 'a', 't', 0xC4, 0x83 }; +static const symbol s_3_57[4] = { 'i', 't', 0xC4, 0x83 }; +static const symbol s_3_58[5] = { 'a', 'n', 't', 0xC4, 0x83 }; +static const symbol s_3_59[5] = { 'i', 's', 't', 0xC4, 0x83 }; +static const symbol s_3_60[4] = { 'u', 't', 0xC4, 0x83 }; +static const symbol s_3_61[4] = { 'i', 'v', 0xC4, 0x83 }; + +static const struct among a_3[62] = +{ +/* 0 */ { 3, s_3_0, -1, 1, 0}, +/* 1 */ { 5, s_3_1, -1, 1, 0}, +/* 2 */ { 5, s_3_2, -1, 1, 0}, +/* 3 */ { 4, s_3_3, -1, 1, 0}, +/* 4 */ { 3, s_3_4, -1, 1, 0}, +/* 5 */ { 3, s_3_5, -1, 1, 0}, +/* 6 */ { 4, s_3_6, -1, 1, 0}, +/* 7 */ { 4, s_3_7, -1, 3, 0}, +/* 8 */ { 3, s_3_8, -1, 1, 0}, +/* 9 */ { 3, s_3_9, -1, 1, 0}, +/* 10 */ { 2, s_3_10, -1, 1, 0}, +/* 11 */ { 3, s_3_11, -1, 1, 0}, +/* 12 */ { 5, s_3_12, -1, 1, 0}, +/* 13 */ { 5, s_3_13, -1, 1, 0}, +/* 14 */ { 4, s_3_14, -1, 3, 0}, +/* 15 */ { 4, s_3_15, -1, 2, 0}, +/* 16 */ { 4, s_3_16, -1, 1, 0}, +/* 17 */ { 3, s_3_17, -1, 1, 0}, +/* 18 */ { 5, s_3_18, 17, 1, 0}, +/* 19 */ { 3, s_3_19, -1, 1, 0}, +/* 20 */ { 4, s_3_20, -1, 1, 0}, +/* 21 */ { 4, s_3_21, -1, 3, 0}, +/* 22 */ { 3, s_3_22, -1, 1, 0}, +/* 23 */ { 3, s_3_23, -1, 1, 0}, +/* 24 */ { 3, s_3_24, -1, 1, 0}, +/* 25 */ { 5, s_3_25, -1, 1, 0}, +/* 26 */ { 5, s_3_26, -1, 1, 0}, +/* 27 */ { 4, s_3_27, -1, 2, 0}, +/* 28 */ { 5, s_3_28, -1, 1, 0}, +/* 29 */ { 3, s_3_29, -1, 1, 0}, +/* 30 */ { 3, s_3_30, -1, 1, 0}, +/* 31 */ { 5, s_3_31, 30, 1, 0}, +/* 32 */ { 3, s_3_32, -1, 1, 0}, +/* 33 */ { 4, s_3_33, -1, 1, 0}, +/* 34 */ { 4, s_3_34, -1, 3, 0}, +/* 35 */ { 3, s_3_35, -1, 1, 0}, +/* 36 */ { 5, s_3_36, -1, 3, 0}, +/* 37 */ { 3, s_3_37, -1, 1, 0}, +/* 38 */ { 5, s_3_38, -1, 1, 0}, +/* 39 */ { 4, s_3_39, -1, 1, 0}, +/* 40 */ { 7, s_3_40, -1, 1, 0}, +/* 41 */ { 4, s_3_41, -1, 1, 0}, +/* 42 */ { 4, s_3_42, -1, 1, 0}, +/* 43 */ { 3, s_3_43, -1, 3, 0}, +/* 44 */ { 4, s_3_44, -1, 1, 0}, +/* 45 */ { 2, s_3_45, -1, 1, 0}, +/* 46 */ { 2, s_3_46, -1, 1, 0}, +/* 47 */ { 2, s_3_47, -1, 1, 0}, +/* 48 */ { 3, s_3_48, -1, 1, 0}, +/* 49 */ { 3, s_3_49, -1, 3, 0}, +/* 50 */ { 2, s_3_50, -1, 1, 0}, +/* 51 */ { 2, s_3_51, -1, 1, 0}, +/* 52 */ { 4, s_3_52, -1, 1, 0}, +/* 53 */ { 6, s_3_53, -1, 1, 0}, +/* 54 */ { 6, s_3_54, -1, 1, 0}, +/* 55 */ { 5, s_3_55, -1, 1, 0}, +/* 56 */ { 4, s_3_56, -1, 1, 0}, +/* 57 */ { 4, s_3_57, -1, 1, 0}, +/* 58 */ { 5, s_3_58, -1, 1, 0}, +/* 59 */ { 5, s_3_59, -1, 3, 0}, +/* 60 */ { 4, s_3_60, -1, 1, 0}, +/* 61 */ { 4, s_3_61, -1, 1, 0} +}; + +static const symbol s_4_0[2] = { 'e', 'a' }; +static const symbol s_4_1[2] = { 'i', 'a' }; +static const symbol s_4_2[3] = { 'e', 's', 'c' }; +static const symbol s_4_3[4] = { 0xC4, 0x83, 's', 'c' }; +static const symbol s_4_4[3] = { 'i', 'n', 'd' }; +static const symbol s_4_5[4] = { 0xC3, 0xA2, 'n', 'd' }; +static const symbol s_4_6[3] = { 'a', 'r', 'e' }; +static const symbol s_4_7[3] = { 'e', 'r', 'e' }; +static const symbol s_4_8[3] = { 'i', 'r', 'e' }; +static const symbol s_4_9[4] = { 0xC3, 0xA2, 'r', 'e' }; +static const symbol s_4_10[2] = { 's', 'e' }; +static const symbol s_4_11[3] = { 'a', 's', 'e' }; +static const symbol s_4_12[4] = { 's', 'e', 's', 'e' }; +static const symbol s_4_13[3] = { 'i', 's', 'e' }; +static const symbol s_4_14[3] = { 'u', 's', 'e' }; +static const symbol s_4_15[4] = { 0xC3, 0xA2, 's', 'e' }; +static const symbol s_4_16[5] = { 'e', 0xC5, 0x9F, 't', 'e' }; +static const symbol s_4_17[6] = { 0xC4, 0x83, 0xC5, 0x9F, 't', 'e' }; +static const symbol s_4_18[3] = { 'e', 'z', 'e' }; +static const symbol s_4_19[2] = { 'a', 'i' }; +static const symbol s_4_20[3] = { 'e', 'a', 'i' }; +static const symbol s_4_21[3] = { 'i', 'a', 'i' }; +static const symbol s_4_22[3] = { 's', 'e', 'i' }; +static const symbol s_4_23[5] = { 'e', 0xC5, 0x9F, 't', 'i' }; +static const symbol s_4_24[6] = { 0xC4, 0x83, 0xC5, 0x9F, 't', 'i' }; +static const symbol s_4_25[2] = { 'u', 'i' }; +static const symbol s_4_26[3] = { 'e', 'z', 'i' }; +static const symbol s_4_27[4] = { 'a', 0xC5, 0x9F, 'i' }; +static const symbol s_4_28[5] = { 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_29[6] = { 'a', 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_30[7] = { 's', 'e', 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_31[6] = { 'i', 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_32[6] = { 'u', 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_33[7] = { 0xC3, 0xA2, 's', 'e', 0xC5, 0x9F, 'i' }; +static const symbol s_4_34[4] = { 'i', 0xC5, 0x9F, 'i' }; +static const symbol s_4_35[4] = { 'u', 0xC5, 0x9F, 'i' }; +static const symbol s_4_36[5] = { 0xC3, 0xA2, 0xC5, 0x9F, 'i' }; +static const symbol s_4_37[3] = { 0xC3, 0xA2, 'i' }; +static const symbol s_4_38[4] = { 'a', 0xC5, 0xA3, 'i' }; +static const symbol s_4_39[5] = { 'e', 'a', 0xC5, 0xA3, 'i' }; +static const symbol s_4_40[5] = { 'i', 'a', 0xC5, 0xA3, 'i' }; +static const symbol s_4_41[4] = { 'e', 0xC5, 0xA3, 'i' }; +static const symbol s_4_42[4] = { 'i', 0xC5, 0xA3, 'i' }; +static const symbol s_4_43[7] = { 'a', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_44[8] = { 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_45[9] = { 'a', 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_46[10] = { 's', 'e', 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_47[9] = { 'i', 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_48[9] = { 'u', 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_49[10] = { 0xC3, 0xA2, 's', 'e', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_50[7] = { 'i', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_51[7] = { 'u', 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_52[8] = { 0xC3, 0xA2, 'r', 0xC4, 0x83, 0xC5, 0xA3, 'i' }; +static const symbol s_4_53[5] = { 0xC3, 0xA2, 0xC5, 0xA3, 'i' }; +static const symbol s_4_54[2] = { 'a', 'm' }; +static const symbol s_4_55[3] = { 'e', 'a', 'm' }; +static const symbol s_4_56[3] = { 'i', 'a', 'm' }; +static const symbol s_4_57[2] = { 'e', 'm' }; +static const symbol s_4_58[4] = { 'a', 's', 'e', 'm' }; +static const symbol s_4_59[5] = { 's', 'e', 's', 'e', 'm' }; +static const symbol s_4_60[4] = { 'i', 's', 'e', 'm' }; +static const symbol s_4_61[4] = { 'u', 's', 'e', 'm' }; +static const symbol s_4_62[5] = { 0xC3, 0xA2, 's', 'e', 'm' }; +static const symbol s_4_63[2] = { 'i', 'm' }; +static const symbol s_4_64[3] = { 0xC4, 0x83, 'm' }; +static const symbol s_4_65[5] = { 'a', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_66[6] = { 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_67[7] = { 'a', 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_68[8] = { 's', 'e', 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_69[7] = { 'i', 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_70[7] = { 'u', 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_71[8] = { 0xC3, 0xA2, 's', 'e', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_72[5] = { 'i', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_73[5] = { 'u', 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_74[6] = { 0xC3, 0xA2, 'r', 0xC4, 0x83, 'm' }; +static const symbol s_4_75[3] = { 0xC3, 0xA2, 'm' }; +static const symbol s_4_76[2] = { 'a', 'u' }; +static const symbol s_4_77[3] = { 'e', 'a', 'u' }; +static const symbol s_4_78[3] = { 'i', 'a', 'u' }; +static const symbol s_4_79[4] = { 'i', 'n', 'd', 'u' }; +static const symbol s_4_80[5] = { 0xC3, 0xA2, 'n', 'd', 'u' }; +static const symbol s_4_81[2] = { 'e', 'z' }; +static const symbol s_4_82[6] = { 'e', 'a', 's', 'c', 0xC4, 0x83 }; +static const symbol s_4_83[4] = { 'a', 'r', 0xC4, 0x83 }; +static const symbol s_4_84[5] = { 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_85[6] = { 'a', 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_86[7] = { 's', 'e', 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_87[6] = { 'i', 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_88[6] = { 'u', 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_89[7] = { 0xC3, 0xA2, 's', 'e', 'r', 0xC4, 0x83 }; +static const symbol s_4_90[4] = { 'i', 'r', 0xC4, 0x83 }; +static const symbol s_4_91[4] = { 'u', 'r', 0xC4, 0x83 }; +static const symbol s_4_92[5] = { 0xC3, 0xA2, 'r', 0xC4, 0x83 }; +static const symbol s_4_93[5] = { 'e', 'a', 'z', 0xC4, 0x83 }; + +static const struct among a_4[94] = +{ +/* 0 */ { 2, s_4_0, -1, 1, 0}, +/* 1 */ { 2, s_4_1, -1, 1, 0}, +/* 2 */ { 3, s_4_2, -1, 1, 0}, +/* 3 */ { 4, s_4_3, -1, 1, 0}, +/* 4 */ { 3, s_4_4, -1, 1, 0}, +/* 5 */ { 4, s_4_5, -1, 1, 0}, +/* 6 */ { 3, s_4_6, -1, 1, 0}, +/* 7 */ { 3, s_4_7, -1, 1, 0}, +/* 8 */ { 3, s_4_8, -1, 1, 0}, +/* 9 */ { 4, s_4_9, -1, 1, 0}, +/* 10 */ { 2, s_4_10, -1, 2, 0}, +/* 11 */ { 3, s_4_11, 10, 1, 0}, +/* 12 */ { 4, s_4_12, 10, 2, 0}, +/* 13 */ { 3, s_4_13, 10, 1, 0}, +/* 14 */ { 3, s_4_14, 10, 1, 0}, +/* 15 */ { 4, s_4_15, 10, 1, 0}, +/* 16 */ { 5, s_4_16, -1, 1, 0}, +/* 17 */ { 6, s_4_17, -1, 1, 0}, +/* 18 */ { 3, s_4_18, -1, 1, 0}, +/* 19 */ { 2, s_4_19, -1, 1, 0}, +/* 20 */ { 3, s_4_20, 19, 1, 0}, +/* 21 */ { 3, s_4_21, 19, 1, 0}, +/* 22 */ { 3, s_4_22, -1, 2, 0}, +/* 23 */ { 5, s_4_23, -1, 1, 0}, +/* 24 */ { 6, s_4_24, -1, 1, 0}, +/* 25 */ { 2, s_4_25, -1, 1, 0}, +/* 26 */ { 3, s_4_26, -1, 1, 0}, +/* 27 */ { 4, s_4_27, -1, 1, 0}, +/* 28 */ { 5, s_4_28, -1, 2, 0}, +/* 29 */ { 6, s_4_29, 28, 1, 0}, +/* 30 */ { 7, s_4_30, 28, 2, 0}, +/* 31 */ { 6, s_4_31, 28, 1, 0}, +/* 32 */ { 6, s_4_32, 28, 1, 0}, +/* 33 */ { 7, s_4_33, 28, 1, 0}, +/* 34 */ { 4, s_4_34, -1, 1, 0}, +/* 35 */ { 4, s_4_35, -1, 1, 0}, +/* 36 */ { 5, s_4_36, -1, 1, 0}, +/* 37 */ { 3, s_4_37, -1, 1, 0}, +/* 38 */ { 4, s_4_38, -1, 2, 0}, +/* 39 */ { 5, s_4_39, 38, 1, 0}, +/* 40 */ { 5, s_4_40, 38, 1, 0}, +/* 41 */ { 4, s_4_41, -1, 2, 0}, +/* 42 */ { 4, s_4_42, -1, 2, 0}, +/* 43 */ { 7, s_4_43, -1, 1, 0}, +/* 44 */ { 8, s_4_44, -1, 2, 0}, +/* 45 */ { 9, s_4_45, 44, 1, 0}, +/* 46 */ { 10, s_4_46, 44, 2, 0}, +/* 47 */ { 9, s_4_47, 44, 1, 0}, +/* 48 */ { 9, s_4_48, 44, 1, 0}, +/* 49 */ { 10, s_4_49, 44, 1, 0}, +/* 50 */ { 7, s_4_50, -1, 1, 0}, +/* 51 */ { 7, s_4_51, -1, 1, 0}, +/* 52 */ { 8, s_4_52, -1, 1, 0}, +/* 53 */ { 5, s_4_53, -1, 2, 0}, +/* 54 */ { 2, s_4_54, -1, 1, 0}, +/* 55 */ { 3, s_4_55, 54, 1, 0}, +/* 56 */ { 3, s_4_56, 54, 1, 0}, +/* 57 */ { 2, s_4_57, -1, 2, 0}, +/* 58 */ { 4, s_4_58, 57, 1, 0}, +/* 59 */ { 5, s_4_59, 57, 2, 0}, +/* 60 */ { 4, s_4_60, 57, 1, 0}, +/* 61 */ { 4, s_4_61, 57, 1, 0}, +/* 62 */ { 5, s_4_62, 57, 1, 0}, +/* 63 */ { 2, s_4_63, -1, 2, 0}, +/* 64 */ { 3, s_4_64, -1, 2, 0}, +/* 65 */ { 5, s_4_65, 64, 1, 0}, +/* 66 */ { 6, s_4_66, 64, 2, 0}, +/* 67 */ { 7, s_4_67, 66, 1, 0}, +/* 68 */ { 8, s_4_68, 66, 2, 0}, +/* 69 */ { 7, s_4_69, 66, 1, 0}, +/* 70 */ { 7, s_4_70, 66, 1, 0}, +/* 71 */ { 8, s_4_71, 66, 1, 0}, +/* 72 */ { 5, s_4_72, 64, 1, 0}, +/* 73 */ { 5, s_4_73, 64, 1, 0}, +/* 74 */ { 6, s_4_74, 64, 1, 0}, +/* 75 */ { 3, s_4_75, -1, 2, 0}, +/* 76 */ { 2, s_4_76, -1, 1, 0}, +/* 77 */ { 3, s_4_77, 76, 1, 0}, +/* 78 */ { 3, s_4_78, 76, 1, 0}, +/* 79 */ { 4, s_4_79, -1, 1, 0}, +/* 80 */ { 5, s_4_80, -1, 1, 0}, +/* 81 */ { 2, s_4_81, -1, 1, 0}, +/* 82 */ { 6, s_4_82, -1, 1, 0}, +/* 83 */ { 4, s_4_83, -1, 1, 0}, +/* 84 */ { 5, s_4_84, -1, 2, 0}, +/* 85 */ { 6, s_4_85, 84, 1, 0}, +/* 86 */ { 7, s_4_86, 84, 2, 0}, +/* 87 */ { 6, s_4_87, 84, 1, 0}, +/* 88 */ { 6, s_4_88, 84, 1, 0}, +/* 89 */ { 7, s_4_89, 84, 1, 0}, +/* 90 */ { 4, s_4_90, -1, 1, 0}, +/* 91 */ { 4, s_4_91, -1, 1, 0}, +/* 92 */ { 5, s_4_92, -1, 1, 0}, +/* 93 */ { 5, s_4_93, -1, 1, 0} +}; + +static const symbol s_5_0[1] = { 'a' }; +static const symbol s_5_1[1] = { 'e' }; +static const symbol s_5_2[2] = { 'i', 'e' }; +static const symbol s_5_3[1] = { 'i' }; +static const symbol s_5_4[2] = { 0xC4, 0x83 }; + +static const struct among a_5[5] = +{ +/* 0 */ { 1, s_5_0, -1, 1, 0}, +/* 1 */ { 1, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, 1, 1, 0}, +/* 3 */ { 1, s_5_3, -1, 1, 0}, +/* 4 */ { 2, s_5_4, -1, 1, 0} +}; + +static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 }; + +static const symbol s_0[] = { 'u' }; +static const symbol s_1[] = { 'U' }; +static const symbol s_2[] = { 'i' }; +static const symbol s_3[] = { 'I' }; +static const symbol s_4[] = { 'i' }; +static const symbol s_5[] = { 'u' }; +static const symbol s_6[] = { 'a' }; +static const symbol s_7[] = { 'e' }; +static const symbol s_8[] = { 'i' }; +static const symbol s_9[] = { 'a', 'b' }; +static const symbol s_10[] = { 'i' }; +static const symbol s_11[] = { 'a', 't' }; +static const symbol s_12[] = { 'a', 0xC5, 0xA3, 'i' }; +static const symbol s_13[] = { 'a', 'b', 'i', 'l' }; +static const symbol s_14[] = { 'i', 'b', 'i', 'l' }; +static const symbol s_15[] = { 'i', 'v' }; +static const symbol s_16[] = { 'i', 'c' }; +static const symbol s_17[] = { 'a', 't' }; +static const symbol s_18[] = { 'i', 't' }; +static const symbol s_19[] = { 0xC5, 0xA3 }; +static const symbol s_20[] = { 't' }; +static const symbol s_21[] = { 'i', 's', 't' }; +static const symbol s_22[] = { 'u' }; + +static int r_prelude(struct SN_env * z) { + while(1) { /* repeat, line 32 */ + int c1 = z->c; + while(1) { /* goto, line 32 */ + int c2 = z->c; + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab1; + z->bra = z->c; /* [, line 33 */ + { int c3 = z->c; /* or, line 33 */ + if (!(eq_s(z, 1, s_0))) goto lab3; + z->ket = z->c; /* ], line 33 */ + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab3; + { int ret = slice_from_s(z, 1, s_1); /* <-, line 33 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = c3; + if (!(eq_s(z, 1, s_2))) goto lab1; + z->ket = z->c; /* ], line 34 */ + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab1; + { int ret = slice_from_s(z, 1, s_3); /* <-, line 34 */ + if (ret < 0) return ret; + } + } + lab2: + z->c = c2; + break; + lab1: + z->c = c2; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* goto, line 32 */ + } + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 44 */ + { int c2 = z->c; /* or, line 46 */ + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab2; + { int c3 = z->c; /* or, line 45 */ + if (out_grouping_U(z, g_v, 97, 259, 0)) goto lab4; + { /* gopast */ /* grouping v, line 45 */ + int ret = out_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab2; + { /* gopast */ /* non v, line 45 */ + int ret = in_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping_U(z, g_v, 97, 259, 0)) goto lab0; + { int c4 = z->c; /* or, line 47 */ + if (out_grouping_U(z, g_v, 97, 259, 0)) goto lab6; + { /* gopast */ /* grouping v, line 47 */ + int ret = out_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab0; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 47 */ + } + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 48 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 50 */ + { /* gopast */ /* grouping v, line 51 */ + int ret = out_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 51 */ + int ret = in_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 51 */ + { /* gopast */ /* grouping v, line 52 */ + int ret = out_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 52 */ + int ret = in_grouping_U(z, g_v, 97, 259, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 52 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 56 */ + int c1 = z->c; + z->bra = z->c; /* [, line 58 */ + 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_0, 3); /* substring, line 58 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 58 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_5); /* <-, line 60 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 61 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_step_0(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 73 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((266786 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + among_var = find_among_b(z, a_1, 16); /* substring, line 73 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 73 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 73 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 75 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_6); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_7); /* <-, line 79 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_8); /* <-, line 81 */ + if (ret < 0) return ret; + } + break; + case 5: + { int m1 = z->l - z->c; (void)m1; /* not, line 83 */ + if (!(eq_s_b(z, 2, s_9))) goto lab0; + return 0; + lab0: + z->c = z->l - m1; + } + { int ret = slice_from_s(z, 1, s_10); /* <-, line 83 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_11); /* <-, line 85 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret = slice_from_s(z, 4, s_12); /* <-, line 87 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_combo_suffix(struct SN_env * z) { + int among_var; + { int m_test = z->l - z->c; /* test, line 91 */ + z->ket = z->c; /* [, line 92 */ + among_var = find_among_b(z, a_2, 46); /* substring, line 92 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 92 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 92 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 4, s_13); /* <-, line 101 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_14); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 2, s_15); /* <-, line 107 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 2, s_16); /* <-, line 113 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 2, s_17); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_from_s(z, 2, s_18); /* <-, line 122 */ + if (ret < 0) return ret; + } + break; + } + z->B[0] = 1; /* set standard_suffix_removed, line 125 */ + z->c = z->l - m_test; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->B[0] = 0; /* unset standard_suffix_removed, line 130 */ + while(1) { /* repeat, line 131 */ + int m1 = z->l - z->c; (void)m1; + { int ret = r_combo_suffix(z); + if (ret == 0) goto lab0; /* call combo_suffix, line 131 */ + if (ret < 0) return ret; + } + continue; + lab0: + z->c = z->l - m1; + break; + } + z->ket = z->c; /* [, line 132 */ + among_var = find_among_b(z, a_3, 62); /* substring, line 132 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 132 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 132 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 149 */ + if (ret < 0) return ret; + } + break; + case 2: + if (!(eq_s_b(z, 2, s_19))) return 0; + z->bra = z->c; /* ], line 152 */ + { int ret = slice_from_s(z, 1, s_20); /* <-, line 152 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 3, s_21); /* <-, line 156 */ + if (ret < 0) return ret; + } + break; + } + z->B[0] = 1; /* set standard_suffix_removed, line 160 */ + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 164 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 164 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 165 */ + among_var = find_among_b(z, a_4, 94); /* substring, line 165 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 165 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int m2 = z->l - z->c; (void)m2; /* or, line 200 */ + if (out_grouping_b_U(z, g_v, 97, 259, 0)) goto lab1; + goto lab0; + lab1: + z->c = z->l - m2; + if (!(eq_s_b(z, 1, s_22))) { z->lb = mlimit; return 0; } + } + lab0: + { int ret = slice_del(z); /* delete, line 200 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 214 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +static int r_vowel_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 219 */ + among_var = find_among_b(z, a_5, 5); /* substring, line 219 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 219 */ + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 219 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 220 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int romanian_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 226 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab0; /* call prelude, line 226 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + { int c2 = z->c; /* do, line 227 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab1; /* call mark_regions, line 227 */ + if (ret < 0) return ret; + } + lab1: + z->c = c2; + } + z->lb = z->c; z->c = z->l; /* backwards, line 228 */ + + { int m3 = z->l - z->c; (void)m3; /* do, line 229 */ + { int ret = r_step_0(z); + if (ret == 0) goto lab2; /* call step_0, line 229 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 230 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab3; /* call standard_suffix, line 230 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 231 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 231 */ + if (!(z->B[0])) goto lab6; /* Boolean test standard_suffix_removed, line 231 */ + goto lab5; + lab6: + z->c = z->l - m6; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab4; /* call verb_suffix, line 231 */ + if (ret < 0) return ret; + } + } + lab5: + lab4: + z->c = z->l - m5; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 232 */ + { int ret = r_vowel_suffix(z); + if (ret == 0) goto lab7; /* call vowel_suffix, line 232 */ + if (ret < 0) return ret; + } + lab7: + z->c = z->l - m7; + } + z->c = z->lb; + { int c8 = z->c; /* do, line 234 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab8; /* call postlude, line 234 */ + if (ret < 0) return ret; + } + lab8: + z->c = c8; + } + return 1; +} + +extern struct SN_env * romanian_UTF_8_create_env(void) { return SN_create_env(0, 3, 1); } + +extern void romanian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_romanian.h b/src_c/stem_UTF_8_romanian.h new file mode 100644 index 0000000..d01e813 --- /dev/null +++ b/src_c/stem_UTF_8_romanian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * romanian_UTF_8_create_env(void); +extern void romanian_UTF_8_close_env(struct SN_env * z); + +extern int romanian_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_russian.c b/src_c/stem_UTF_8_russian.c new file mode 100644 index 0000000..6f0a964 --- /dev/null +++ b/src_c/stem_UTF_8_russian.c @@ -0,0 +1,694 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int russian_UTF_8_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); +static int r_verb(struct SN_env * z); +static int r_reflexive(struct SN_env * z); +static int r_adjectival(struct SN_env * z); +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_UTF_8_create_env(void); +extern void russian_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_0[10] = { 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C }; +static const symbol s_0_1[12] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C }; +static const symbol s_0_2[12] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8, 0xD1, 0x81, 0xD1, 0x8C }; +static const symbol s_0_3[2] = { 0xD0, 0xB2 }; +static const symbol s_0_4[4] = { 0xD1, 0x8B, 0xD0, 0xB2 }; +static const symbol s_0_5[4] = { 0xD0, 0xB8, 0xD0, 0xB2 }; +static const symbol s_0_6[6] = { 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 }; +static const symbol s_0_7[8] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 }; +static const symbol s_0_8[8] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88, 0xD0, 0xB8 }; + +static const struct among a_0[9] = +{ +/* 0 */ { 10, s_0_0, -1, 1, 0}, +/* 1 */ { 12, s_0_1, 0, 2, 0}, +/* 2 */ { 12, s_0_2, 0, 2, 0}, +/* 3 */ { 2, s_0_3, -1, 1, 0}, +/* 4 */ { 4, s_0_4, 3, 2, 0}, +/* 5 */ { 4, s_0_5, 3, 2, 0}, +/* 6 */ { 6, s_0_6, -1, 1, 0}, +/* 7 */ { 8, s_0_7, 6, 2, 0}, +/* 8 */ { 8, s_0_8, 6, 2, 0} +}; + +static const symbol s_1_0[6] = { 0xD0, 0xB5, 0xD0, 0xBC, 0xD1, 0x83 }; +static const symbol s_1_1[6] = { 0xD0, 0xBE, 0xD0, 0xBC, 0xD1, 0x83 }; +static const symbol s_1_2[4] = { 0xD1, 0x8B, 0xD1, 0x85 }; +static const symbol s_1_3[4] = { 0xD0, 0xB8, 0xD1, 0x85 }; +static const symbol s_1_4[4] = { 0xD1, 0x83, 0xD1, 0x8E }; +static const symbol s_1_5[4] = { 0xD1, 0x8E, 0xD1, 0x8E }; +static const symbol s_1_6[4] = { 0xD0, 0xB5, 0xD1, 0x8E }; +static const symbol s_1_7[4] = { 0xD0, 0xBE, 0xD1, 0x8E }; +static const symbol s_1_8[4] = { 0xD1, 0x8F, 0xD1, 0x8F }; +static const symbol s_1_9[4] = { 0xD0, 0xB0, 0xD1, 0x8F }; +static const symbol s_1_10[4] = { 0xD1, 0x8B, 0xD0, 0xB5 }; +static const symbol s_1_11[4] = { 0xD0, 0xB5, 0xD0, 0xB5 }; +static const symbol s_1_12[4] = { 0xD0, 0xB8, 0xD0, 0xB5 }; +static const symbol s_1_13[4] = { 0xD0, 0xBE, 0xD0, 0xB5 }; +static const symbol s_1_14[6] = { 0xD1, 0x8B, 0xD0, 0xBC, 0xD0, 0xB8 }; +static const symbol s_1_15[6] = { 0xD0, 0xB8, 0xD0, 0xBC, 0xD0, 0xB8 }; +static const symbol s_1_16[4] = { 0xD1, 0x8B, 0xD0, 0xB9 }; +static const symbol s_1_17[4] = { 0xD0, 0xB5, 0xD0, 0xB9 }; +static const symbol s_1_18[4] = { 0xD0, 0xB8, 0xD0, 0xB9 }; +static const symbol s_1_19[4] = { 0xD0, 0xBE, 0xD0, 0xB9 }; +static const symbol s_1_20[4] = { 0xD1, 0x8B, 0xD0, 0xBC }; +static const symbol s_1_21[4] = { 0xD0, 0xB5, 0xD0, 0xBC }; +static const symbol s_1_22[4] = { 0xD0, 0xB8, 0xD0, 0xBC }; +static const symbol s_1_23[4] = { 0xD0, 0xBE, 0xD0, 0xBC }; +static const symbol s_1_24[6] = { 0xD0, 0xB5, 0xD0, 0xB3, 0xD0, 0xBE }; +static const symbol s_1_25[6] = { 0xD0, 0xBE, 0xD0, 0xB3, 0xD0, 0xBE }; + +static const struct among a_1[26] = +{ +/* 0 */ { 6, s_1_0, -1, 1, 0}, +/* 1 */ { 6, s_1_1, -1, 1, 0}, +/* 2 */ { 4, s_1_2, -1, 1, 0}, +/* 3 */ { 4, s_1_3, -1, 1, 0}, +/* 4 */ { 4, s_1_4, -1, 1, 0}, +/* 5 */ { 4, s_1_5, -1, 1, 0}, +/* 6 */ { 4, s_1_6, -1, 1, 0}, +/* 7 */ { 4, s_1_7, -1, 1, 0}, +/* 8 */ { 4, s_1_8, -1, 1, 0}, +/* 9 */ { 4, s_1_9, -1, 1, 0}, +/* 10 */ { 4, s_1_10, -1, 1, 0}, +/* 11 */ { 4, s_1_11, -1, 1, 0}, +/* 12 */ { 4, s_1_12, -1, 1, 0}, +/* 13 */ { 4, s_1_13, -1, 1, 0}, +/* 14 */ { 6, s_1_14, -1, 1, 0}, +/* 15 */ { 6, s_1_15, -1, 1, 0}, +/* 16 */ { 4, s_1_16, -1, 1, 0}, +/* 17 */ { 4, s_1_17, -1, 1, 0}, +/* 18 */ { 4, s_1_18, -1, 1, 0}, +/* 19 */ { 4, s_1_19, -1, 1, 0}, +/* 20 */ { 4, s_1_20, -1, 1, 0}, +/* 21 */ { 4, s_1_21, -1, 1, 0}, +/* 22 */ { 4, s_1_22, -1, 1, 0}, +/* 23 */ { 4, s_1_23, -1, 1, 0}, +/* 24 */ { 6, s_1_24, -1, 1, 0}, +/* 25 */ { 6, s_1_25, -1, 1, 0} +}; + +static const symbol s_2_0[4] = { 0xD0, 0xB2, 0xD1, 0x88 }; +static const symbol s_2_1[6] = { 0xD1, 0x8B, 0xD0, 0xB2, 0xD1, 0x88 }; +static const symbol s_2_2[6] = { 0xD0, 0xB8, 0xD0, 0xB2, 0xD1, 0x88 }; +static const symbol s_2_3[2] = { 0xD1, 0x89 }; +static const symbol s_2_4[4] = { 0xD1, 0x8E, 0xD1, 0x89 }; +static const symbol s_2_5[6] = { 0xD1, 0x83, 0xD1, 0x8E, 0xD1, 0x89 }; +static const symbol s_2_6[4] = { 0xD0, 0xB5, 0xD0, 0xBC }; +static const symbol s_2_7[4] = { 0xD0, 0xBD, 0xD0, 0xBD }; + +static const struct among a_2[8] = +{ +/* 0 */ { 4, s_2_0, -1, 1, 0}, +/* 1 */ { 6, s_2_1, 0, 2, 0}, +/* 2 */ { 6, s_2_2, 0, 2, 0}, +/* 3 */ { 2, s_2_3, -1, 1, 0}, +/* 4 */ { 4, s_2_4, 3, 1, 0}, +/* 5 */ { 6, s_2_5, 4, 2, 0}, +/* 6 */ { 4, s_2_6, -1, 1, 0}, +/* 7 */ { 4, s_2_7, -1, 1, 0} +}; + +static const symbol s_3_0[4] = { 0xD1, 0x81, 0xD1, 0x8C }; +static const symbol s_3_1[4] = { 0xD1, 0x81, 0xD1, 0x8F }; + +static const struct among a_3[2] = +{ +/* 0 */ { 4, s_3_0, -1, 1, 0}, +/* 1 */ { 4, s_3_1, -1, 1, 0} +}; + +static const symbol s_4_0[4] = { 0xD1, 0x8B, 0xD1, 0x82 }; +static const symbol s_4_1[4] = { 0xD1, 0x8E, 0xD1, 0x82 }; +static const symbol s_4_2[6] = { 0xD1, 0x83, 0xD1, 0x8E, 0xD1, 0x82 }; +static const symbol s_4_3[4] = { 0xD1, 0x8F, 0xD1, 0x82 }; +static const symbol s_4_4[4] = { 0xD0, 0xB5, 0xD1, 0x82 }; +static const symbol s_4_5[6] = { 0xD1, 0x83, 0xD0, 0xB5, 0xD1, 0x82 }; +static const symbol s_4_6[4] = { 0xD0, 0xB8, 0xD1, 0x82 }; +static const symbol s_4_7[4] = { 0xD0, 0xBD, 0xD1, 0x8B }; +static const symbol s_4_8[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD1, 0x8B }; +static const symbol s_4_9[4] = { 0xD1, 0x82, 0xD1, 0x8C }; +static const symbol s_4_10[6] = { 0xD1, 0x8B, 0xD1, 0x82, 0xD1, 0x8C }; +static const symbol s_4_11[6] = { 0xD0, 0xB8, 0xD1, 0x82, 0xD1, 0x8C }; +static const symbol s_4_12[6] = { 0xD0, 0xB5, 0xD1, 0x88, 0xD1, 0x8C }; +static const symbol s_4_13[6] = { 0xD0, 0xB8, 0xD1, 0x88, 0xD1, 0x8C }; +static const symbol s_4_14[2] = { 0xD1, 0x8E }; +static const symbol s_4_15[4] = { 0xD1, 0x83, 0xD1, 0x8E }; +static const symbol s_4_16[4] = { 0xD0, 0xBB, 0xD0, 0xB0 }; +static const symbol s_4_17[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xB0 }; +static const symbol s_4_18[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xB0 }; +static const symbol s_4_19[4] = { 0xD0, 0xBD, 0xD0, 0xB0 }; +static const symbol s_4_20[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD0, 0xB0 }; +static const symbol s_4_21[6] = { 0xD0, 0xB5, 0xD1, 0x82, 0xD0, 0xB5 }; +static const symbol s_4_22[6] = { 0xD0, 0xB8, 0xD1, 0x82, 0xD0, 0xB5 }; +static const symbol s_4_23[6] = { 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 }; +static const symbol s_4_24[8] = { 0xD1, 0x83, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 }; +static const symbol s_4_25[8] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x82, 0xD0, 0xB5 }; +static const symbol s_4_26[4] = { 0xD0, 0xBB, 0xD0, 0xB8 }; +static const symbol s_4_27[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xB8 }; +static const symbol s_4_28[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xB8 }; +static const symbol s_4_29[2] = { 0xD0, 0xB9 }; +static const symbol s_4_30[4] = { 0xD1, 0x83, 0xD0, 0xB9 }; +static const symbol s_4_31[4] = { 0xD0, 0xB5, 0xD0, 0xB9 }; +static const symbol s_4_32[2] = { 0xD0, 0xBB }; +static const symbol s_4_33[4] = { 0xD1, 0x8B, 0xD0, 0xBB }; +static const symbol s_4_34[4] = { 0xD0, 0xB8, 0xD0, 0xBB }; +static const symbol s_4_35[4] = { 0xD1, 0x8B, 0xD0, 0xBC }; +static const symbol s_4_36[4] = { 0xD0, 0xB5, 0xD0, 0xBC }; +static const symbol s_4_37[4] = { 0xD0, 0xB8, 0xD0, 0xBC }; +static const symbol s_4_38[2] = { 0xD0, 0xBD }; +static const symbol s_4_39[4] = { 0xD0, 0xB5, 0xD0, 0xBD }; +static const symbol s_4_40[4] = { 0xD0, 0xBB, 0xD0, 0xBE }; +static const symbol s_4_41[6] = { 0xD1, 0x8B, 0xD0, 0xBB, 0xD0, 0xBE }; +static const symbol s_4_42[6] = { 0xD0, 0xB8, 0xD0, 0xBB, 0xD0, 0xBE }; +static const symbol s_4_43[4] = { 0xD0, 0xBD, 0xD0, 0xBE }; +static const symbol s_4_44[6] = { 0xD0, 0xB5, 0xD0, 0xBD, 0xD0, 0xBE }; +static const symbol s_4_45[6] = { 0xD0, 0xBD, 0xD0, 0xBD, 0xD0, 0xBE }; + +static const struct among a_4[46] = +{ +/* 0 */ { 4, s_4_0, -1, 2, 0}, +/* 1 */ { 4, s_4_1, -1, 1, 0}, +/* 2 */ { 6, s_4_2, 1, 2, 0}, +/* 3 */ { 4, s_4_3, -1, 2, 0}, +/* 4 */ { 4, s_4_4, -1, 1, 0}, +/* 5 */ { 6, s_4_5, 4, 2, 0}, +/* 6 */ { 4, s_4_6, -1, 2, 0}, +/* 7 */ { 4, s_4_7, -1, 1, 0}, +/* 8 */ { 6, s_4_8, 7, 2, 0}, +/* 9 */ { 4, s_4_9, -1, 1, 0}, +/* 10 */ { 6, s_4_10, 9, 2, 0}, +/* 11 */ { 6, s_4_11, 9, 2, 0}, +/* 12 */ { 6, s_4_12, -1, 1, 0}, +/* 13 */ { 6, s_4_13, -1, 2, 0}, +/* 14 */ { 2, s_4_14, -1, 2, 0}, +/* 15 */ { 4, s_4_15, 14, 2, 0}, +/* 16 */ { 4, s_4_16, -1, 1, 0}, +/* 17 */ { 6, s_4_17, 16, 2, 0}, +/* 18 */ { 6, s_4_18, 16, 2, 0}, +/* 19 */ { 4, s_4_19, -1, 1, 0}, +/* 20 */ { 6, s_4_20, 19, 2, 0}, +/* 21 */ { 6, s_4_21, -1, 1, 0}, +/* 22 */ { 6, s_4_22, -1, 2, 0}, +/* 23 */ { 6, s_4_23, -1, 1, 0}, +/* 24 */ { 8, s_4_24, 23, 2, 0}, +/* 25 */ { 8, s_4_25, 23, 2, 0}, +/* 26 */ { 4, s_4_26, -1, 1, 0}, +/* 27 */ { 6, s_4_27, 26, 2, 0}, +/* 28 */ { 6, s_4_28, 26, 2, 0}, +/* 29 */ { 2, s_4_29, -1, 1, 0}, +/* 30 */ { 4, s_4_30, 29, 2, 0}, +/* 31 */ { 4, s_4_31, 29, 2, 0}, +/* 32 */ { 2, s_4_32, -1, 1, 0}, +/* 33 */ { 4, s_4_33, 32, 2, 0}, +/* 34 */ { 4, s_4_34, 32, 2, 0}, +/* 35 */ { 4, s_4_35, -1, 2, 0}, +/* 36 */ { 4, s_4_36, -1, 1, 0}, +/* 37 */ { 4, s_4_37, -1, 2, 0}, +/* 38 */ { 2, s_4_38, -1, 1, 0}, +/* 39 */ { 4, s_4_39, 38, 2, 0}, +/* 40 */ { 4, s_4_40, -1, 1, 0}, +/* 41 */ { 6, s_4_41, 40, 2, 0}, +/* 42 */ { 6, s_4_42, 40, 2, 0}, +/* 43 */ { 4, s_4_43, -1, 1, 0}, +/* 44 */ { 6, s_4_44, 43, 2, 0}, +/* 45 */ { 6, s_4_45, 43, 1, 0} +}; + +static const symbol s_5_0[2] = { 0xD1, 0x83 }; +static const symbol s_5_1[4] = { 0xD1, 0x8F, 0xD1, 0x85 }; +static const symbol s_5_2[6] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD1, 0x85 }; +static const symbol s_5_3[4] = { 0xD0, 0xB0, 0xD1, 0x85 }; +static const symbol s_5_4[2] = { 0xD1, 0x8B }; +static const symbol s_5_5[2] = { 0xD1, 0x8C }; +static const symbol s_5_6[2] = { 0xD1, 0x8E }; +static const symbol s_5_7[4] = { 0xD1, 0x8C, 0xD1, 0x8E }; +static const symbol s_5_8[4] = { 0xD0, 0xB8, 0xD1, 0x8E }; +static const symbol s_5_9[2] = { 0xD1, 0x8F }; +static const symbol s_5_10[4] = { 0xD1, 0x8C, 0xD1, 0x8F }; +static const symbol s_5_11[4] = { 0xD0, 0xB8, 0xD1, 0x8F }; +static const symbol s_5_12[2] = { 0xD0, 0xB0 }; +static const symbol s_5_13[4] = { 0xD0, 0xB5, 0xD0, 0xB2 }; +static const symbol s_5_14[4] = { 0xD0, 0xBE, 0xD0, 0xB2 }; +static const symbol s_5_15[2] = { 0xD0, 0xB5 }; +static const symbol s_5_16[4] = { 0xD1, 0x8C, 0xD0, 0xB5 }; +static const symbol s_5_17[4] = { 0xD0, 0xB8, 0xD0, 0xB5 }; +static const symbol s_5_18[2] = { 0xD0, 0xB8 }; +static const symbol s_5_19[4] = { 0xD0, 0xB5, 0xD0, 0xB8 }; +static const symbol s_5_20[4] = { 0xD0, 0xB8, 0xD0, 0xB8 }; +static const symbol s_5_21[6] = { 0xD1, 0x8F, 0xD0, 0xBC, 0xD0, 0xB8 }; +static const symbol s_5_22[8] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD0, 0xBC, 0xD0, 0xB8 }; +static const symbol s_5_23[6] = { 0xD0, 0xB0, 0xD0, 0xBC, 0xD0, 0xB8 }; +static const symbol s_5_24[2] = { 0xD0, 0xB9 }; +static const symbol s_5_25[4] = { 0xD0, 0xB5, 0xD0, 0xB9 }; +static const symbol s_5_26[6] = { 0xD0, 0xB8, 0xD0, 0xB5, 0xD0, 0xB9 }; +static const symbol s_5_27[4] = { 0xD0, 0xB8, 0xD0, 0xB9 }; +static const symbol s_5_28[4] = { 0xD0, 0xBE, 0xD0, 0xB9 }; +static const symbol s_5_29[4] = { 0xD1, 0x8F, 0xD0, 0xBC }; +static const symbol s_5_30[6] = { 0xD0, 0xB8, 0xD1, 0x8F, 0xD0, 0xBC }; +static const symbol s_5_31[4] = { 0xD0, 0xB0, 0xD0, 0xBC }; +static const symbol s_5_32[4] = { 0xD0, 0xB5, 0xD0, 0xBC }; +static const symbol s_5_33[6] = { 0xD0, 0xB8, 0xD0, 0xB5, 0xD0, 0xBC }; +static const symbol s_5_34[4] = { 0xD0, 0xBE, 0xD0, 0xBC }; +static const symbol s_5_35[2] = { 0xD0, 0xBE }; + +static const struct among a_5[36] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 6, s_5_2, 1, 1, 0}, +/* 3 */ { 4, s_5_3, -1, 1, 0}, +/* 4 */ { 2, s_5_4, -1, 1, 0}, +/* 5 */ { 2, s_5_5, -1, 1, 0}, +/* 6 */ { 2, s_5_6, -1, 1, 0}, +/* 7 */ { 4, s_5_7, 6, 1, 0}, +/* 8 */ { 4, s_5_8, 6, 1, 0}, +/* 9 */ { 2, s_5_9, -1, 1, 0}, +/* 10 */ { 4, s_5_10, 9, 1, 0}, +/* 11 */ { 4, s_5_11, 9, 1, 0}, +/* 12 */ { 2, s_5_12, -1, 1, 0}, +/* 13 */ { 4, s_5_13, -1, 1, 0}, +/* 14 */ { 4, s_5_14, -1, 1, 0}, +/* 15 */ { 2, s_5_15, -1, 1, 0}, +/* 16 */ { 4, s_5_16, 15, 1, 0}, +/* 17 */ { 4, s_5_17, 15, 1, 0}, +/* 18 */ { 2, s_5_18, -1, 1, 0}, +/* 19 */ { 4, s_5_19, 18, 1, 0}, +/* 20 */ { 4, s_5_20, 18, 1, 0}, +/* 21 */ { 6, s_5_21, 18, 1, 0}, +/* 22 */ { 8, s_5_22, 21, 1, 0}, +/* 23 */ { 6, s_5_23, 18, 1, 0}, +/* 24 */ { 2, s_5_24, -1, 1, 0}, +/* 25 */ { 4, s_5_25, 24, 1, 0}, +/* 26 */ { 6, s_5_26, 25, 1, 0}, +/* 27 */ { 4, s_5_27, 24, 1, 0}, +/* 28 */ { 4, s_5_28, 24, 1, 0}, +/* 29 */ { 4, s_5_29, -1, 1, 0}, +/* 30 */ { 6, s_5_30, 29, 1, 0}, +/* 31 */ { 4, s_5_31, -1, 1, 0}, +/* 32 */ { 4, s_5_32, -1, 1, 0}, +/* 33 */ { 6, s_5_33, 32, 1, 0}, +/* 34 */ { 4, s_5_34, -1, 1, 0}, +/* 35 */ { 2, s_5_35, -1, 1, 0} +}; + +static const symbol s_6_0[6] = { 0xD0, 0xBE, 0xD1, 0x81, 0xD1, 0x82 }; +static const symbol s_6_1[8] = { 0xD0, 0xBE, 0xD1, 0x81, 0xD1, 0x82, 0xD1, 0x8C }; + +static const struct among a_6[2] = +{ +/* 0 */ { 6, s_6_0, -1, 1, 0}, +/* 1 */ { 8, s_6_1, -1, 1, 0} +}; + +static const symbol s_7_0[6] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x88 }; +static const symbol s_7_1[2] = { 0xD1, 0x8C }; +static const symbol s_7_2[8] = { 0xD0, 0xB5, 0xD0, 0xB9, 0xD1, 0x88, 0xD0, 0xB5 }; +static const symbol s_7_3[2] = { 0xD0, 0xBD }; + +static const struct among a_7[4] = +{ +/* 0 */ { 6, s_7_0, -1, 1, 0}, +/* 1 */ { 2, s_7_1, -1, 3, 0}, +/* 2 */ { 8, s_7_2, -1, 1, 0}, +/* 3 */ { 2, s_7_3, -1, 2, 0} +}; + +static const unsigned char g_v[] = { 33, 65, 8, 232 }; + +static const symbol s_0[] = { 0xD0, 0xB0 }; +static const symbol s_1[] = { 0xD1, 0x8F }; +static const symbol s_2[] = { 0xD0, 0xB0 }; +static const symbol s_3[] = { 0xD1, 0x8F }; +static const symbol s_4[] = { 0xD0, 0xB0 }; +static const symbol s_5[] = { 0xD1, 0x8F }; +static const symbol s_6[] = { 0xD0, 0xBD }; +static const symbol s_7[] = { 0xD0, 0xBD }; +static const symbol s_8[] = { 0xD0, 0xBD }; +static const symbol s_9[] = { 0xD0, 0xB8 }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c1 = z->c; /* do, line 61 */ + { /* gopast */ /* grouping v, line 62 */ + int ret = out_grouping_U(z, g_v, 1072, 1103, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[0] = z->c; /* setmark pV, line 62 */ + { /* gopast */ /* non v, line 62 */ + int ret = in_grouping_U(z, g_v, 1072, 1103, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* grouping v, line 63 */ + int ret = out_grouping_U(z, g_v, 1072, 1103, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + { /* gopast */ /* non v, line 63 */ + int ret = in_grouping_U(z, g_v, 1072, 1103, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + z->I[1] = z->c; /* setmark p2, line 63 */ + lab0: + z->c = c1; + } + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_perfective_gerund(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 72 */ + among_var = find_among_b(z, a_0, 9); /* substring, line 72 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 72 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 76 */ + if (!(eq_s_b(z, 2, s_0))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_1))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 76 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 83 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjective(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 88 */ + among_var = find_among_b(z, a_1, 26); /* substring, line 88 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 88 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 97 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_adjectival(struct SN_env * z) { + int among_var; + { int ret = r_adjective(z); + if (ret == 0) return 0; /* call adjective, line 102 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 109 */ + z->ket = z->c; /* [, line 110 */ + among_var = find_among_b(z, a_2, 8); /* substring, line 110 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 110 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab0; } + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 115 */ + if (!(eq_s_b(z, 2, s_2))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_3))) { z->c = z->l - m_keep; goto lab0; } + } + lab1: + { int ret = slice_del(z); /* delete, line 115 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 122 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + return 1; +} + +static int r_reflexive(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 129 */ + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 140 && z->p[z->c - 1] != 143)) return 0; + among_var = find_among_b(z, a_3, 2); /* substring, line 129 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 129 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 132 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 137 */ + among_var = find_among_b(z, a_4, 46); /* substring, line 137 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 137 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m1 = z->l - z->c; (void)m1; /* or, line 143 */ + if (!(eq_s_b(z, 2, s_4))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_5))) return 0; + } + lab0: + { int ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_noun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 160 */ + among_var = find_among_b(z, a_5, 36); /* substring, line 160 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 160 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 167 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_derivational(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 176 */ + if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 130 && z->p[z->c - 1] != 140)) return 0; + among_var = find_among_b(z, a_6, 2); /* substring, line 176 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 176 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 176 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_tidy_up(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 184 */ + among_var = find_among_b(z, a_7, 4); /* substring, line 184 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 184 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 188 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 189 */ + if (!(eq_s_b(z, 2, s_6))) return 0; + z->bra = z->c; /* ], line 189 */ + if (!(eq_s_b(z, 2, s_7))) return 0; + { int ret = slice_del(z); /* delete, line 189 */ + if (ret < 0) return ret; + } + break; + case 2: + if (!(eq_s_b(z, 2, s_8))) return 0; + { int ret = slice_del(z); /* delete, line 192 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +extern int russian_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 201 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 201 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 202 */ + + { int mlimit; /* setlimit, line 202 */ + int m2 = z->l - z->c; (void)m2; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 202 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m2; + { int m3 = z->l - z->c; (void)m3; /* do, line 203 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 204 */ + { int ret = r_perfective_gerund(z); + if (ret == 0) goto lab3; /* call perfective_gerund, line 204 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = z->l - m4; + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 205 */ + { int ret = r_reflexive(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call reflexive, line 205 */ + if (ret < 0) return ret; + } + lab4: + ; + } + { int m5 = z->l - z->c; (void)m5; /* or, line 206 */ + { int ret = r_adjectival(z); + if (ret == 0) goto lab6; /* call adjectival, line 206 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m5; + { int ret = r_verb(z); + if (ret == 0) goto lab7; /* call verb, line 206 */ + if (ret < 0) return ret; + } + goto lab5; + lab7: + z->c = z->l - m5; + { int ret = r_noun(z); + if (ret == 0) goto lab1; /* call noun, line 206 */ + if (ret < 0) return ret; + } + } + lab5: + ; + } + lab2: + lab1: + z->c = z->l - m3; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 209 */ + z->ket = z->c; /* [, line 209 */ + if (!(eq_s_b(z, 2, s_9))) { z->c = z->l - m_keep; goto lab8; } + z->bra = z->c; /* ], line 209 */ + { int ret = slice_del(z); /* delete, line 209 */ + if (ret < 0) return ret; + } + lab8: + ; + } + { int m6 = z->l - z->c; (void)m6; /* do, line 212 */ + { int ret = r_derivational(z); + if (ret == 0) goto lab9; /* call derivational, line 212 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m6; + } + { int m7 = z->l - z->c; (void)m7; /* do, line 213 */ + { int ret = r_tidy_up(z); + if (ret == 0) goto lab10; /* call tidy_up, line 213 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m7; + } + z->lb = mlimit; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * russian_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void russian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_russian.h b/src_c/stem_UTF_8_russian.h new file mode 100644 index 0000000..4ef774d --- /dev/null +++ b/src_c/stem_UTF_8_russian.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * russian_UTF_8_create_env(void); +extern void russian_UTF_8_close_env(struct SN_env * z); + +extern int russian_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_spanish.c b/src_c/stem_UTF_8_spanish.c new file mode 100644 index 0000000..9550d67 --- /dev/null +++ b/src_c/stem_UTF_8_spanish.c @@ -0,0 +1,1097 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int spanish_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_y_verb_suffix(struct SN_env * z); +static int r_standard_suffix(struct SN_env * z); +static int r_attached_pronoun(struct SN_env * z); +static int r_R2(struct SN_env * z); +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_UTF_8_create_env(void); +extern void spanish_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_1[2] = { 0xC3, 0xA1 }; +static const symbol s_0_2[2] = { 0xC3, 0xA9 }; +static const symbol s_0_3[2] = { 0xC3, 0xAD }; +static const symbol s_0_4[2] = { 0xC3, 0xB3 }; +static const symbol s_0_5[2] = { 0xC3, 0xBA }; + +static const struct among a_0[6] = +{ +/* 0 */ { 0, 0, -1, 6, 0}, +/* 1 */ { 2, s_0_1, 0, 1, 0}, +/* 2 */ { 2, s_0_2, 0, 2, 0}, +/* 3 */ { 2, s_0_3, 0, 3, 0}, +/* 4 */ { 2, s_0_4, 0, 4, 0}, +/* 5 */ { 2, s_0_5, 0, 5, 0} +}; + +static const symbol s_1_0[2] = { 'l', 'a' }; +static const symbol s_1_1[4] = { 's', 'e', 'l', 'a' }; +static const symbol s_1_2[2] = { 'l', 'e' }; +static const symbol s_1_3[2] = { 'm', 'e' }; +static const symbol s_1_4[2] = { 's', 'e' }; +static const symbol s_1_5[2] = { 'l', 'o' }; +static const symbol s_1_6[4] = { 's', 'e', 'l', 'o' }; +static const symbol s_1_7[3] = { 'l', 'a', 's' }; +static const symbol s_1_8[5] = { 's', 'e', 'l', 'a', 's' }; +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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 4, s_1_1, 0, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 2, s_1_4, -1, -1, 0}, +/* 5 */ { 2, s_1_5, -1, -1, 0}, +/* 6 */ { 4, s_1_6, 5, -1, 0}, +/* 7 */ { 3, s_1_7, -1, -1, 0}, +/* 8 */ { 5, s_1_8, 7, -1, 0}, +/* 9 */ { 3, s_1_9, -1, -1, 0}, +/* 10 */ { 3, s_1_10, -1, -1, 0}, +/* 11 */ { 5, s_1_11, 10, -1, 0}, +/* 12 */ { 3, s_1_12, -1, -1, 0} +}; + +static const symbol s_2_0[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_2_1[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_2_2[5] = { 'y', 'e', 'n', 'd', 'o' }; +static const symbol s_2_3[5] = { 0xC3, 0xA1, 'n', 'd', 'o' }; +static const symbol s_2_4[6] = { 'i', 0xC3, 0xA9, 'n', 'd', 'o' }; +static const symbol s_2_5[2] = { 'a', 'r' }; +static const symbol s_2_6[2] = { 'e', 'r' }; +static const symbol s_2_7[2] = { 'i', 'r' }; +static const symbol s_2_8[3] = { 0xC3, 0xA1, 'r' }; +static const symbol s_2_9[3] = { 0xC3, 0xA9, 'r' }; +static const symbol s_2_10[3] = { 0xC3, 0xAD, 'r' }; + +static const struct among a_2[11] = +{ +/* 0 */ { 4, s_2_0, -1, 6, 0}, +/* 1 */ { 5, s_2_1, -1, 6, 0}, +/* 2 */ { 5, s_2_2, -1, 7, 0}, +/* 3 */ { 5, s_2_3, -1, 2, 0}, +/* 4 */ { 6, s_2_4, -1, 1, 0}, +/* 5 */ { 2, s_2_5, -1, 6, 0}, +/* 6 */ { 2, s_2_6, -1, 6, 0}, +/* 7 */ { 2, s_2_7, -1, 6, 0}, +/* 8 */ { 3, s_2_8, -1, 3, 0}, +/* 9 */ { 3, s_2_9, -1, 4, 0}, +/* 10 */ { 3, s_2_10, -1, 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] = +{ +/* 0 */ { 2, s_3_0, -1, -1, 0}, +/* 1 */ { 2, s_3_1, -1, -1, 0}, +/* 2 */ { 2, s_3_2, -1, -1, 0}, +/* 3 */ { 2, s_3_3, -1, 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] = +{ +/* 0 */ { 4, s_4_0, -1, 1, 0}, +/* 1 */ { 4, s_4_1, -1, 1, 0}, +/* 2 */ { 4, s_4_2, -1, 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] = +{ +/* 0 */ { 2, s_5_0, -1, 1, 0}, +/* 1 */ { 4, s_5_1, -1, 1, 0}, +/* 2 */ { 2, s_5_2, -1, 1, 0} +}; + +static const symbol s_6_0[3] = { 'i', 'c', 'a' }; +static const symbol s_6_1[5] = { 'a', 'n', 'c', 'i', 'a' }; +static const symbol s_6_2[5] = { 'e', 'n', 'c', 'i', 'a' }; +static const symbol s_6_3[5] = { 'a', 'd', 'o', 'r', 'a' }; +static const symbol s_6_4[3] = { 'o', 's', 'a' }; +static const symbol s_6_5[4] = { 'i', 's', 't', 'a' }; +static const symbol s_6_6[3] = { 'i', 'v', 'a' }; +static const symbol s_6_7[4] = { 'a', 'n', 'z', 'a' }; +static const symbol s_6_8[6] = { 'l', 'o', 'g', 0xC3, 0xAD, 'a' }; +static const symbol s_6_9[4] = { 'i', 'd', 'a', 'd' }; +static const symbol s_6_10[4] = { 'a', 'b', 'l', 'e' }; +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[6] = { 'a', 'c', 'i', 0xC3, 0xB3, 'n' }; +static const symbol s_6_16[6] = { 'u', 'c', 'i', 0xC3, 0xB3, '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[7] = { 'l', 'o', 'g', 0xC3, 0xAD, '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] = +{ +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 5, s_6_1, -1, 2, 0}, +/* 2 */ { 5, s_6_2, -1, 5, 0}, +/* 3 */ { 5, s_6_3, -1, 2, 0}, +/* 4 */ { 3, s_6_4, -1, 1, 0}, +/* 5 */ { 4, s_6_5, -1, 1, 0}, +/* 6 */ { 3, s_6_6, -1, 9, 0}, +/* 7 */ { 4, s_6_7, -1, 1, 0}, +/* 8 */ { 6, s_6_8, -1, 3, 0}, +/* 9 */ { 4, s_6_9, -1, 8, 0}, +/* 10 */ { 4, s_6_10, -1, 1, 0}, +/* 11 */ { 4, s_6_11, -1, 1, 0}, +/* 12 */ { 4, s_6_12, -1, 2, 0}, +/* 13 */ { 5, s_6_13, -1, 7, 0}, +/* 14 */ { 6, s_6_14, 13, 6, 0}, +/* 15 */ { 6, s_6_15, -1, 2, 0}, +/* 16 */ { 6, s_6_16, -1, 4, 0}, +/* 17 */ { 3, s_6_17, -1, 1, 0}, +/* 18 */ { 4, s_6_18, -1, 1, 0}, +/* 19 */ { 3, s_6_19, -1, 1, 0}, +/* 20 */ { 7, s_6_20, -1, 1, 0}, +/* 21 */ { 7, s_6_21, -1, 1, 0}, +/* 22 */ { 3, s_6_22, -1, 9, 0}, +/* 23 */ { 4, s_6_23, -1, 2, 0}, +/* 24 */ { 4, s_6_24, -1, 1, 0}, +/* 25 */ { 6, s_6_25, -1, 2, 0}, +/* 26 */ { 6, s_6_26, -1, 5, 0}, +/* 27 */ { 6, s_6_27, -1, 2, 0}, +/* 28 */ { 4, s_6_28, -1, 1, 0}, +/* 29 */ { 5, s_6_29, -1, 1, 0}, +/* 30 */ { 4, s_6_30, -1, 9, 0}, +/* 31 */ { 5, s_6_31, -1, 1, 0}, +/* 32 */ { 7, s_6_32, -1, 3, 0}, +/* 33 */ { 6, s_6_33, -1, 8, 0}, +/* 34 */ { 5, s_6_34, -1, 1, 0}, +/* 35 */ { 5, s_6_35, -1, 1, 0}, +/* 36 */ { 7, s_6_36, -1, 2, 0}, +/* 37 */ { 7, s_6_37, -1, 4, 0}, +/* 38 */ { 6, s_6_38, -1, 2, 0}, +/* 39 */ { 5, s_6_39, -1, 2, 0}, +/* 40 */ { 4, s_6_40, -1, 1, 0}, +/* 41 */ { 5, s_6_41, -1, 1, 0}, +/* 42 */ { 4, s_6_42, -1, 1, 0}, +/* 43 */ { 8, s_6_43, -1, 1, 0}, +/* 44 */ { 8, s_6_44, -1, 1, 0}, +/* 45 */ { 4, s_6_45, -1, 9, 0} +}; + +static const symbol s_7_0[2] = { 'y', 'a' }; +static const symbol s_7_1[2] = { 'y', 'e' }; +static const symbol s_7_2[3] = { 'y', 'a', 'n' }; +static const symbol s_7_3[3] = { 'y', 'e', 'n' }; +static const symbol s_7_4[5] = { 'y', 'e', 'r', 'o', 'n' }; +static const symbol s_7_5[5] = { 'y', 'e', 'n', 'd', 'o' }; +static const symbol s_7_6[2] = { 'y', 'o' }; +static const symbol s_7_7[3] = { 'y', 'a', 's' }; +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[3] = { 'y', 0xC3, 0xB3 }; + +static const struct among a_7[12] = +{ +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 2, s_7_1, -1, 1, 0}, +/* 2 */ { 3, s_7_2, -1, 1, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0}, +/* 4 */ { 5, s_7_4, -1, 1, 0}, +/* 5 */ { 5, s_7_5, -1, 1, 0}, +/* 6 */ { 2, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 3, s_7_8, -1, 1, 0}, +/* 9 */ { 4, s_7_9, -1, 1, 0}, +/* 10 */ { 5, s_7_10, -1, 1, 0}, +/* 11 */ { 3, s_7_11, -1, 1, 0} +}; + +static const symbol s_8_0[3] = { 'a', 'b', 'a' }; +static const symbol s_8_1[3] = { 'a', 'd', 'a' }; +static const symbol s_8_2[3] = { 'i', 'd', 'a' }; +static const symbol s_8_3[3] = { 'a', 'r', 'a' }; +static const symbol s_8_4[4] = { 'i', 'e', 'r', 'a' }; +static const symbol s_8_5[3] = { 0xC3, 0xAD, 'a' }; +static const symbol s_8_6[5] = { 'a', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_8_7[5] = { 'e', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_8_8[5] = { 'i', 'r', 0xC3, 0xAD, 'a' }; +static const symbol s_8_9[2] = { 'a', 'd' }; +static const symbol s_8_10[2] = { 'e', 'd' }; +static const symbol s_8_11[2] = { 'i', 'd' }; +static const symbol s_8_12[3] = { 'a', 's', 'e' }; +static const symbol s_8_13[4] = { 'i', 'e', 's', 'e' }; +static const symbol s_8_14[4] = { 'a', 's', 't', 'e' }; +static const symbol s_8_15[4] = { 'i', 's', 't', 'e' }; +static const symbol s_8_16[2] = { 'a', 'n' }; +static const symbol s_8_17[4] = { 'a', 'b', 'a', 'n' }; +static const symbol s_8_18[4] = { 'a', 'r', 'a', 'n' }; +static const symbol s_8_19[5] = { 'i', 'e', 'r', 'a', 'n' }; +static const symbol s_8_20[4] = { 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_8_21[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_8_22[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_8_23[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 'n' }; +static const symbol s_8_24[2] = { 'e', 'n' }; +static const symbol s_8_25[4] = { 'a', 's', 'e', 'n' }; +static const symbol s_8_26[5] = { 'i', 'e', 's', 'e', 'n' }; +static const symbol s_8_27[4] = { 'a', 'r', 'o', 'n' }; +static const symbol s_8_28[5] = { 'i', 'e', 'r', 'o', 'n' }; +static const symbol s_8_29[5] = { 'a', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_8_30[5] = { 'e', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_8_31[5] = { 'i', 'r', 0xC3, 0xA1, 'n' }; +static const symbol s_8_32[3] = { 'a', 'd', 'o' }; +static const symbol s_8_33[3] = { 'i', 'd', 'o' }; +static const symbol s_8_34[4] = { 'a', 'n', 'd', 'o' }; +static const symbol s_8_35[5] = { 'i', 'e', 'n', 'd', 'o' }; +static const symbol s_8_36[2] = { 'a', 'r' }; +static const symbol s_8_37[2] = { 'e', 'r' }; +static const symbol s_8_38[2] = { 'i', 'r' }; +static const symbol s_8_39[2] = { 'a', 's' }; +static const symbol s_8_40[4] = { 'a', 'b', 'a', 's' }; +static const symbol s_8_41[4] = { 'a', 'd', 'a', 's' }; +static const symbol s_8_42[4] = { 'i', 'd', 'a', 's' }; +static const symbol s_8_43[4] = { 'a', 'r', 'a', 's' }; +static const symbol s_8_44[5] = { 'i', 'e', 'r', 'a', 's' }; +static const symbol s_8_45[4] = { 0xC3, 0xAD, 'a', 's' }; +static const symbol s_8_46[6] = { 'a', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_8_47[6] = { 'e', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_8_48[6] = { 'i', 'r', 0xC3, 0xAD, 'a', 's' }; +static const symbol s_8_49[2] = { 'e', 's' }; +static const symbol s_8_50[4] = { 'a', 's', 'e', 's' }; +static const symbol s_8_51[5] = { 'i', 'e', 's', 'e', 's' }; +static const symbol s_8_52[5] = { 'a', 'b', 'a', 'i', 's' }; +static const symbol s_8_53[5] = { 'a', 'r', 'a', 'i', 's' }; +static const symbol s_8_54[6] = { 'i', 'e', 'r', 'a', 'i', 's' }; +static const symbol s_8_55[5] = { 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_8_56[7] = { 'a', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_8_57[7] = { 'e', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_8_58[7] = { 'i', 'r', 0xC3, 0xAD, 'a', 'i', 's' }; +static const symbol s_8_59[5] = { 'a', 's', 'e', 'i', 's' }; +static const symbol s_8_60[6] = { 'i', 'e', 's', 'e', 'i', 's' }; +static const symbol s_8_61[6] = { 'a', 's', 't', 'e', 'i', 's' }; +static const symbol s_8_62[6] = { 'i', 's', 't', 'e', 'i', 's' }; +static const symbol s_8_63[4] = { 0xC3, 0xA1, 'i', 's' }; +static const symbol s_8_64[4] = { 0xC3, 0xA9, 'i', 's' }; +static const symbol s_8_65[6] = { 'a', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_8_66[6] = { 'e', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_8_67[6] = { 'i', 'r', 0xC3, 0xA9, 'i', 's' }; +static const symbol s_8_68[4] = { 'a', 'd', 'o', 's' }; +static const symbol s_8_69[4] = { 'i', 'd', 'o', 's' }; +static const symbol s_8_70[4] = { 'a', 'm', 'o', 's' }; +static const symbol s_8_71[7] = { 0xC3, 0xA1, 'b', 'a', 'm', 'o', 's' }; +static const symbol s_8_72[7] = { 0xC3, 0xA1, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_8_73[8] = { 'i', 0xC3, 0xA9, 'r', 'a', 'm', 'o', 's' }; +static const symbol s_8_74[6] = { 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_8_75[8] = { 'a', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_8_76[8] = { 'e', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_8_77[8] = { 'i', 'r', 0xC3, 0xAD, 'a', 'm', 'o', 's' }; +static const symbol s_8_78[4] = { 'e', 'm', 'o', 's' }; +static const symbol s_8_79[6] = { 'a', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_80[6] = { 'e', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_81[6] = { 'i', 'r', 'e', 'm', 'o', 's' }; +static const symbol s_8_82[7] = { 0xC3, 0xA1, 's', 'e', 'm', 'o', 's' }; +static const symbol s_8_83[8] = { 'i', 0xC3, 0xA9, 's', 'e', 'm', 'o', 's' }; +static const symbol s_8_84[4] = { 'i', 'm', 'o', 's' }; +static const symbol s_8_85[5] = { 'a', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_8_86[5] = { 'e', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_8_87[5] = { 'i', 'r', 0xC3, 0xA1, 's' }; +static const symbol s_8_88[3] = { 0xC3, 0xAD, 's' }; +static const symbol s_8_89[4] = { 'a', 'r', 0xC3, 0xA1 }; +static const symbol s_8_90[4] = { 'e', 'r', 0xC3, 0xA1 }; +static const symbol s_8_91[4] = { 'i', 'r', 0xC3, 0xA1 }; +static const symbol s_8_92[4] = { 'a', 'r', 0xC3, 0xA9 }; +static const symbol s_8_93[4] = { 'e', 'r', 0xC3, 0xA9 }; +static const symbol s_8_94[4] = { 'i', 'r', 0xC3, 0xA9 }; +static const symbol s_8_95[3] = { 'i', 0xC3, 0xB3 }; + +static const struct among a_8[96] = +{ +/* 0 */ { 3, s_8_0, -1, 2, 0}, +/* 1 */ { 3, s_8_1, -1, 2, 0}, +/* 2 */ { 3, s_8_2, -1, 2, 0}, +/* 3 */ { 3, s_8_3, -1, 2, 0}, +/* 4 */ { 4, s_8_4, -1, 2, 0}, +/* 5 */ { 3, s_8_5, -1, 2, 0}, +/* 6 */ { 5, s_8_6, 5, 2, 0}, +/* 7 */ { 5, s_8_7, 5, 2, 0}, +/* 8 */ { 5, s_8_8, 5, 2, 0}, +/* 9 */ { 2, s_8_9, -1, 2, 0}, +/* 10 */ { 2, s_8_10, -1, 2, 0}, +/* 11 */ { 2, s_8_11, -1, 2, 0}, +/* 12 */ { 3, s_8_12, -1, 2, 0}, +/* 13 */ { 4, s_8_13, -1, 2, 0}, +/* 14 */ { 4, s_8_14, -1, 2, 0}, +/* 15 */ { 4, s_8_15, -1, 2, 0}, +/* 16 */ { 2, s_8_16, -1, 2, 0}, +/* 17 */ { 4, s_8_17, 16, 2, 0}, +/* 18 */ { 4, s_8_18, 16, 2, 0}, +/* 19 */ { 5, s_8_19, 16, 2, 0}, +/* 20 */ { 4, s_8_20, 16, 2, 0}, +/* 21 */ { 6, s_8_21, 20, 2, 0}, +/* 22 */ { 6, s_8_22, 20, 2, 0}, +/* 23 */ { 6, s_8_23, 20, 2, 0}, +/* 24 */ { 2, s_8_24, -1, 1, 0}, +/* 25 */ { 4, s_8_25, 24, 2, 0}, +/* 26 */ { 5, s_8_26, 24, 2, 0}, +/* 27 */ { 4, s_8_27, -1, 2, 0}, +/* 28 */ { 5, s_8_28, -1, 2, 0}, +/* 29 */ { 5, s_8_29, -1, 2, 0}, +/* 30 */ { 5, s_8_30, -1, 2, 0}, +/* 31 */ { 5, s_8_31, -1, 2, 0}, +/* 32 */ { 3, s_8_32, -1, 2, 0}, +/* 33 */ { 3, s_8_33, -1, 2, 0}, +/* 34 */ { 4, s_8_34, -1, 2, 0}, +/* 35 */ { 5, s_8_35, -1, 2, 0}, +/* 36 */ { 2, s_8_36, -1, 2, 0}, +/* 37 */ { 2, s_8_37, -1, 2, 0}, +/* 38 */ { 2, s_8_38, -1, 2, 0}, +/* 39 */ { 2, s_8_39, -1, 2, 0}, +/* 40 */ { 4, s_8_40, 39, 2, 0}, +/* 41 */ { 4, s_8_41, 39, 2, 0}, +/* 42 */ { 4, s_8_42, 39, 2, 0}, +/* 43 */ { 4, s_8_43, 39, 2, 0}, +/* 44 */ { 5, s_8_44, 39, 2, 0}, +/* 45 */ { 4, s_8_45, 39, 2, 0}, +/* 46 */ { 6, s_8_46, 45, 2, 0}, +/* 47 */ { 6, s_8_47, 45, 2, 0}, +/* 48 */ { 6, s_8_48, 45, 2, 0}, +/* 49 */ { 2, s_8_49, -1, 1, 0}, +/* 50 */ { 4, s_8_50, 49, 2, 0}, +/* 51 */ { 5, s_8_51, 49, 2, 0}, +/* 52 */ { 5, s_8_52, -1, 2, 0}, +/* 53 */ { 5, s_8_53, -1, 2, 0}, +/* 54 */ { 6, s_8_54, -1, 2, 0}, +/* 55 */ { 5, s_8_55, -1, 2, 0}, +/* 56 */ { 7, s_8_56, 55, 2, 0}, +/* 57 */ { 7, s_8_57, 55, 2, 0}, +/* 58 */ { 7, s_8_58, 55, 2, 0}, +/* 59 */ { 5, s_8_59, -1, 2, 0}, +/* 60 */ { 6, s_8_60, -1, 2, 0}, +/* 61 */ { 6, s_8_61, -1, 2, 0}, +/* 62 */ { 6, s_8_62, -1, 2, 0}, +/* 63 */ { 4, s_8_63, -1, 2, 0}, +/* 64 */ { 4, s_8_64, -1, 1, 0}, +/* 65 */ { 6, s_8_65, 64, 2, 0}, +/* 66 */ { 6, s_8_66, 64, 2, 0}, +/* 67 */ { 6, s_8_67, 64, 2, 0}, +/* 68 */ { 4, s_8_68, -1, 2, 0}, +/* 69 */ { 4, s_8_69, -1, 2, 0}, +/* 70 */ { 4, s_8_70, -1, 2, 0}, +/* 71 */ { 7, s_8_71, 70, 2, 0}, +/* 72 */ { 7, s_8_72, 70, 2, 0}, +/* 73 */ { 8, s_8_73, 70, 2, 0}, +/* 74 */ { 6, s_8_74, 70, 2, 0}, +/* 75 */ { 8, s_8_75, 74, 2, 0}, +/* 76 */ { 8, s_8_76, 74, 2, 0}, +/* 77 */ { 8, s_8_77, 74, 2, 0}, +/* 78 */ { 4, s_8_78, -1, 1, 0}, +/* 79 */ { 6, s_8_79, 78, 2, 0}, +/* 80 */ { 6, s_8_80, 78, 2, 0}, +/* 81 */ { 6, s_8_81, 78, 2, 0}, +/* 82 */ { 7, s_8_82, 78, 2, 0}, +/* 83 */ { 8, s_8_83, 78, 2, 0}, +/* 84 */ { 4, s_8_84, -1, 2, 0}, +/* 85 */ { 5, s_8_85, -1, 2, 0}, +/* 86 */ { 5, s_8_86, -1, 2, 0}, +/* 87 */ { 5, s_8_87, -1, 2, 0}, +/* 88 */ { 3, s_8_88, -1, 2, 0}, +/* 89 */ { 4, s_8_89, -1, 2, 0}, +/* 90 */ { 4, s_8_90, -1, 2, 0}, +/* 91 */ { 4, s_8_91, -1, 2, 0}, +/* 92 */ { 4, s_8_92, -1, 2, 0}, +/* 93 */ { 4, s_8_93, -1, 2, 0}, +/* 94 */ { 4, s_8_94, -1, 2, 0}, +/* 95 */ { 3, s_8_95, -1, 2, 0} +}; + +static const symbol s_9_0[1] = { 'a' }; +static const symbol s_9_1[1] = { 'e' }; +static const symbol s_9_2[1] = { 'o' }; +static const symbol s_9_3[2] = { 'o', 's' }; +static const symbol s_9_4[2] = { 0xC3, 0xA1 }; +static const symbol s_9_5[2] = { 0xC3, 0xA9 }; +static const symbol s_9_6[2] = { 0xC3, 0xAD }; +static const symbol s_9_7[2] = { 0xC3, 0xB3 }; + +static const struct among a_9[8] = +{ +/* 0 */ { 1, s_9_0, -1, 1, 0}, +/* 1 */ { 1, s_9_1, -1, 2, 0}, +/* 2 */ { 1, s_9_2, -1, 1, 0}, +/* 3 */ { 2, s_9_3, -1, 1, 0}, +/* 4 */ { 2, s_9_4, -1, 1, 0}, +/* 5 */ { 2, s_9_5, -1, 2, 0}, +/* 6 */ { 2, s_9_6, -1, 1, 0}, +/* 7 */ { 2, s_9_7, -1, 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[] = { 'u' }; +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[] = { 'u' }; +static const symbol s_18[] = { 'u' }; +static const symbol s_19[] = { 'g' }; +static const symbol s_20[] = { 'u' }; +static const symbol s_21[] = { 'g' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + z->I[2] = z->l; + { int c1 = z->c; /* do, line 37 */ + { int c2 = z->c; /* or, line 39 */ + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab2; + { int c3 = z->c; /* or, line 38 */ + if (out_grouping_U(z, g_v, 97, 252, 0)) goto lab4; + { /* gopast */ /* grouping v, line 38 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab4; + z->c += ret; + } + goto lab3; + lab4: + z->c = c3; + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab2; + { /* gopast */ /* non v, line 38 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab2; + z->c += ret; + } + } + lab3: + goto lab1; + lab2: + z->c = c2; + if (out_grouping_U(z, g_v, 97, 252, 0)) goto lab0; + { int c4 = z->c; /* or, line 40 */ + if (out_grouping_U(z, g_v, 97, 252, 0)) goto lab6; + { /* gopast */ /* grouping v, line 40 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab6; + z->c += ret; + } + goto lab5; + lab6: + z->c = c4; + if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab0; + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 40 */ + } + } + lab5: + ; + } + lab1: + z->I[0] = z->c; /* setmark pV, line 41 */ + lab0: + z->c = c1; + } + { int c5 = z->c; /* do, line 43 */ + { /* gopast */ /* grouping v, line 44 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 44 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[1] = z->c; /* setmark p1, line 44 */ + { /* gopast */ /* grouping v, line 45 */ + int ret = out_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + { /* gopast */ /* non v, line 45 */ + int ret = in_grouping_U(z, g_v, 97, 252, 1); + if (ret < 0) goto lab7; + z->c += ret; + } + z->I[2] = z->c; /* setmark p2, line 45 */ + lab7: + z->c = c5; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + int among_var; + while(1) { /* repeat, line 49 */ + int c1 = z->c; + z->bra = z->c; /* [, line 50 */ + if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 5 || !((67641858 >> (z->p[z->c + 1] & 0x1f)) & 1)) among_var = 6; else + among_var = find_among(z, a_0, 6); /* substring, line 50 */ + if (!(among_var)) goto lab0; + z->ket = z->c; /* ], line 50 */ + switch(among_var) { + case 0: goto lab0; + case 1: + { int ret = slice_from_s(z, 1, s_0); /* <-, line 51 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 1, s_1); /* <-, line 52 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_2); /* <-, line 53 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_3); /* <-, line 54 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = slice_from_s(z, 1, s_4); /* <-, line 55 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab0; + z->c = ret; /* next, line 57 */ + } + break; + } + continue; + lab0: + z->c = c1; + break; + } + return 1; +} + +static int r_RV(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} + +static int r_R1(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} + +static int r_R2(struct SN_env * z) { + if (!(z->I[2] <= z->c)) return 0; + return 1; +} + +static int r_attached_pronoun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 68 */ + 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; /* substring, line 68 */ + z->bra = z->c; /* ], line 68 */ + 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); /* substring, line 72 */ + if (!(among_var)) return 0; + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 72 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + z->bra = z->c; /* ], line 73 */ + { int ret = slice_from_s(z, 5, s_5); /* <-, line 73 */ + if (ret < 0) return ret; + } + break; + case 2: + z->bra = z->c; /* ], line 74 */ + { int ret = slice_from_s(z, 4, s_6); /* <-, line 74 */ + if (ret < 0) return ret; + } + break; + case 3: + z->bra = z->c; /* ], line 75 */ + { int ret = slice_from_s(z, 2, s_7); /* <-, line 75 */ + if (ret < 0) return ret; + } + break; + case 4: + z->bra = z->c; /* ], line 76 */ + { int ret = slice_from_s(z, 2, s_8); /* <-, line 76 */ + if (ret < 0) return ret; + } + break; + case 5: + z->bra = z->c; /* ], line 77 */ + { int ret = slice_from_s(z, 2, s_9); /* <-, line 77 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = slice_del(z); /* delete, line 81 */ + if (ret < 0) return ret; + } + break; + case 7: + if (!(eq_s_b(z, 1, s_10))) return 0; + { int ret = slice_del(z); /* delete, line 82 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_standard_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 87 */ + 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); /* substring, line 87 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 87 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 99 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 105 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 105 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 106 */ + z->ket = z->c; /* [, line 106 */ + if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 106 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call R2, line 106 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 106 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + case 3: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 111 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 3, s_12); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 115 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 1, s_13); /* <-, line 115 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 119 */ + if (ret < 0) return ret; + } + { int ret = slice_from_s(z, 4, s_14); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 123 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 123 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 124 */ + z->ket = z->c; /* [, line 125 */ + 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 - m_keep; goto lab1; } + among_var = find_among_b(z, a_3, 4); /* substring, line 125 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 125 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 125 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 125 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab1; } + case 1: + z->ket = z->c; /* [, line 126 */ + if (!(eq_s_b(z, 2, s_15))) { z->c = z->l - m_keep; goto lab1; } + z->bra = z->c; /* ], line 126 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab1; } /* call R2, line 126 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 126 */ + if (ret < 0) return ret; + } + break; + } + lab1: + ; + } + break; + case 7: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 135 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 135 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 136 */ + z->ket = z->c; /* [, line 137 */ + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 101) { z->c = z->l - m_keep; goto lab2; } + among_var = find_among_b(z, a_4, 3); /* substring, line 137 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab2; } + z->bra = z->c; /* ], line 137 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab2; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call R2, line 140 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 140 */ + if (ret < 0) return ret; + } + break; + } + lab2: + ; + } + break; + case 8: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 147 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 147 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 148 */ + z->ket = z->c; /* [, line 149 */ + 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 - m_keep; goto lab3; } + among_var = find_among_b(z, a_5, 3); /* substring, line 149 */ + if (!(among_var)) { z->c = z->l - m_keep; goto lab3; } + z->bra = z->c; /* ], line 149 */ + switch(among_var) { + case 0: { z->c = z->l - m_keep; goto lab3; } + case 1: + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab3; } /* call R2, line 152 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 152 */ + if (ret < 0) return ret; + } + break; + } + lab3: + ; + } + break; + case 9: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 159 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 159 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 160 */ + z->ket = z->c; /* [, line 161 */ + if (!(eq_s_b(z, 2, s_16))) { z->c = z->l - m_keep; goto lab4; } + z->bra = z->c; /* ], line 161 */ + { int ret = r_R2(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call R2, line 161 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 161 */ + if (ret < 0) return ret; + } + lab4: + ; + } + break; + } + return 1; +} + +static int r_y_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 168 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 168 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 168 */ + among_var = find_among_b(z, a_7, 12); /* substring, line 168 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 168 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + if (!(eq_s_b(z, 1, s_17))) return 0; + { int ret = slice_del(z); /* delete, line 171 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_verb_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 176 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 176 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 176 */ + among_var = find_among_b(z, a_8, 96); /* substring, line 176 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 176 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 179 */ + if (!(eq_s_b(z, 1, s_18))) { z->c = z->l - m_keep; goto lab0; } + { int m_test = z->l - z->c; /* test, line 179 */ + if (!(eq_s_b(z, 1, s_19))) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + lab0: + ; + } + z->bra = z->c; /* ], line 179 */ + { int ret = slice_del(z); /* delete, line 179 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_del(z); /* delete, line 200 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_residual_suffix(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 205 */ + among_var = find_among_b(z, a_9, 8); /* substring, line 205 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 205 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 208 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 208 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_RV(z); + if (ret == 0) return 0; /* call RV, line 210 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 210 */ + z->ket = z->c; /* [, line 210 */ + if (!(eq_s_b(z, 1, s_20))) { z->c = z->l - m_keep; goto lab0; } + z->bra = z->c; /* ], line 210 */ + { int m_test = z->l - z->c; /* test, line 210 */ + if (!(eq_s_b(z, 1, s_21))) { z->c = z->l - m_keep; goto lab0; } + z->c = z->l - m_test; + } + { int ret = r_RV(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab0; } /* call RV, line 210 */ + if (ret < 0) return ret; + } + { int ret = slice_del(z); /* delete, line 210 */ + if (ret < 0) return ret; + } + lab0: + ; + } + break; + } + return 1; +} + +extern int spanish_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 216 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 216 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 217 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 218 */ + { int ret = r_attached_pronoun(z); + if (ret == 0) goto lab1; /* call attached_pronoun, line 218 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 219 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 219 */ + { int ret = r_standard_suffix(z); + if (ret == 0) goto lab4; /* call standard_suffix, line 219 */ + if (ret < 0) return ret; + } + goto lab3; + lab4: + z->c = z->l - m4; + { int ret = r_y_verb_suffix(z); + if (ret == 0) goto lab5; /* call y_verb_suffix, line 220 */ + if (ret < 0) return ret; + } + goto lab3; + lab5: + z->c = z->l - m4; + { int ret = r_verb_suffix(z); + if (ret == 0) goto lab2; /* call verb_suffix, line 221 */ + if (ret < 0) return ret; + } + } + lab3: + lab2: + z->c = z->l - m3; + } + { int m5 = z->l - z->c; (void)m5; /* do, line 223 */ + { int ret = r_residual_suffix(z); + if (ret == 0) goto lab6; /* call residual_suffix, line 223 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m5; + } + z->c = z->lb; + { int c6 = z->c; /* do, line 225 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab7; /* call postlude, line 225 */ + if (ret < 0) return ret; + } + lab7: + z->c = c6; + } + return 1; +} + +extern struct SN_env * spanish_UTF_8_create_env(void) { return SN_create_env(0, 3, 0); } + +extern void spanish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_spanish.h b/src_c/stem_UTF_8_spanish.h new file mode 100644 index 0000000..10572ec --- /dev/null +++ b/src_c/stem_UTF_8_spanish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * spanish_UTF_8_create_env(void); +extern void spanish_UTF_8_close_env(struct SN_env * z); + +extern int spanish_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_swedish.c b/src_c/stem_UTF_8_swedish.c new file mode 100644 index 0000000..21a2353 --- /dev/null +++ b/src_c/stem_UTF_8_swedish.c @@ -0,0 +1,309 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int swedish_UTF_8_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 * swedish_UTF_8_create_env(void); +extern void swedish_UTF_8_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 struct among a_0[37] = +{ +/* 0 */ { 1, s_0_0, -1, 1, 0}, +/* 1 */ { 4, s_0_1, 0, 1, 0}, +/* 2 */ { 4, s_0_2, 0, 1, 0}, +/* 3 */ { 7, s_0_3, 2, 1, 0}, +/* 4 */ { 4, s_0_4, 0, 1, 0}, +/* 5 */ { 2, s_0_5, -1, 1, 0}, +/* 6 */ { 1, s_0_6, -1, 1, 0}, +/* 7 */ { 3, s_0_7, 6, 1, 0}, +/* 8 */ { 4, s_0_8, 6, 1, 0}, +/* 9 */ { 4, s_0_9, 6, 1, 0}, +/* 10 */ { 3, s_0_10, 6, 1, 0}, +/* 11 */ { 4, s_0_11, 6, 1, 0}, +/* 12 */ { 2, s_0_12, -1, 1, 0}, +/* 13 */ { 5, s_0_13, 12, 1, 0}, +/* 14 */ { 4, s_0_14, 12, 1, 0}, +/* 15 */ { 5, s_0_15, 12, 1, 0}, +/* 16 */ { 3, s_0_16, -1, 1, 0}, +/* 17 */ { 2, s_0_17, -1, 1, 0}, +/* 18 */ { 2, s_0_18, -1, 1, 0}, +/* 19 */ { 5, s_0_19, 18, 1, 0}, +/* 20 */ { 2, s_0_20, -1, 1, 0}, +/* 21 */ { 1, s_0_21, -1, 2, 0}, +/* 22 */ { 2, s_0_22, 21, 1, 0}, +/* 23 */ { 5, s_0_23, 22, 1, 0}, +/* 24 */ { 5, s_0_24, 22, 1, 0}, +/* 25 */ { 5, s_0_25, 22, 1, 0}, +/* 26 */ { 2, s_0_26, 21, 1, 0}, +/* 27 */ { 4, s_0_27, 26, 1, 0}, +/* 28 */ { 5, s_0_28, 26, 1, 0}, +/* 29 */ { 3, s_0_29, 21, 1, 0}, +/* 30 */ { 5, s_0_30, 29, 1, 0}, +/* 31 */ { 6, s_0_31, 29, 1, 0}, +/* 32 */ { 4, s_0_32, 21, 1, 0}, +/* 33 */ { 2, s_0_33, -1, 1, 0}, +/* 34 */ { 5, s_0_34, -1, 1, 0}, +/* 35 */ { 3, s_0_35, -1, 1, 0}, +/* 36 */ { 3, s_0_36, -1, 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] = +{ +/* 0 */ { 2, s_1_0, -1, -1, 0}, +/* 1 */ { 2, s_1_1, -1, -1, 0}, +/* 2 */ { 2, s_1_2, -1, -1, 0}, +/* 3 */ { 2, s_1_3, -1, -1, 0}, +/* 4 */ { 2, s_1_4, -1, -1, 0}, +/* 5 */ { 2, s_1_5, -1, -1, 0}, +/* 6 */ { 2, s_1_6, -1, -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[5] = { 'l', 0xC3, 0xB6, 's', 't' }; + +static const struct among a_2[5] = +{ +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 3, s_2_1, 0, 1, 0}, +/* 2 */ { 3, s_2_2, -1, 1, 0}, +/* 3 */ { 5, s_2_3, -1, 3, 0}, +/* 4 */ { 5, s_2_4, -1, 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 }; + +static const unsigned char g_s_ending[] = { 119, 127, 149 }; + +static const symbol s_0[] = { 'l', 0xC3, 0xB6, 's' }; +static const symbol s_1[] = { 'f', 'u', 'l', 'l' }; + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + { int c_test = z->c; /* test, line 29 */ + { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); + if (ret < 0) return 0; + z->c = ret; /* hop, line 29 */ + } + z->I[1] = z->c; /* setmark x, line 29 */ + z->c = c_test; + } + if (out_grouping_U(z, g_v, 97, 246, 1) < 0) return 0; /* goto */ /* grouping v, line 30 */ + { /* gopast */ /* non v, line 30 */ + int ret = in_grouping_U(z, g_v, 97, 246, 1); + if (ret < 0) return 0; + z->c += ret; + } + z->I[0] = z->c; /* setmark p1, line 30 */ + /* try, line 31 */ + if (!(z->I[0] < z->I[1])) goto lab0; + z->I[0] = z->I[1]; +lab0: + return 1; +} + +static int r_main_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 37 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 37 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 37 */ + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_0, 37); /* substring, line 37 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 37 */ + z->lb = mlimit; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_del(z); /* delete, line 44 */ + if (ret < 0) return ret; + } + break; + case 2: + if (in_grouping_b_U(z, g_s_ending, 98, 121, 0)) return 0; + { int ret = slice_del(z); /* delete, line 46 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_consonant_pair(struct SN_env * z) { + { int mlimit; /* setlimit, line 50 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 50 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* and, line 52 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + if (!(find_among_b(z, a_1, 7))) { z->lb = mlimit; return 0; } /* among, line 51 */ + z->c = z->l - m2; + z->ket = z->c; /* [, line 52 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) { z->lb = mlimit; return 0; } + z->c = ret; /* next, line 52 */ + } + z->bra = z->c; /* ], line 52 */ + { int ret = slice_del(z); /* delete, line 52 */ + if (ret < 0) return ret; + } + } + z->lb = mlimit; + } + return 1; +} + +static int r_other_suffix(struct SN_env * z) { + int among_var; + { int mlimit; /* setlimit, line 55 */ + int m1 = z->l - z->c; (void)m1; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 55 */ + mlimit = z->lb; z->lb = z->c; + z->c = z->l - m1; + z->ket = z->c; /* [, line 56 */ + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; } + among_var = find_among_b(z, a_2, 5); /* substring, line 56 */ + if (!(among_var)) { z->lb = mlimit; return 0; } + z->bra = z->c; /* ], line 56 */ + switch(among_var) { + case 0: { z->lb = mlimit; return 0; } + case 1: + { int ret = slice_del(z); /* delete, line 57 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 4, s_0); /* <-, line 58 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 4, s_1); /* <-, line 59 */ + if (ret < 0) return ret; + } + break; + } + z->lb = mlimit; + } + return 1; +} + +extern int swedish_UTF_8_stem(struct SN_env * z) { + { int c1 = z->c; /* do, line 66 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 66 */ + if (ret < 0) return ret; + } + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 67 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 68 */ + { int ret = r_main_suffix(z); + if (ret == 0) goto lab1; /* call main_suffix, line 68 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 69 */ + { int ret = r_consonant_pair(z); + if (ret == 0) goto lab2; /* call consonant_pair, line 69 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + { int m4 = z->l - z->c; (void)m4; /* do, line 70 */ + { int ret = r_other_suffix(z); + if (ret == 0) goto lab3; /* call other_suffix, line 70 */ + if (ret < 0) return ret; + } + lab3: + z->c = z->l - m4; + } + z->c = z->lb; + return 1; +} + +extern struct SN_env * swedish_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void swedish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_swedish.h b/src_c/stem_UTF_8_swedish.h new file mode 100644 index 0000000..1444ebb --- /dev/null +++ b/src_c/stem_UTF_8_swedish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * swedish_UTF_8_create_env(void); +extern void swedish_UTF_8_close_env(struct SN_env * z); + +extern int swedish_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/src_c/stem_UTF_8_turkish.c b/src_c/stem_UTF_8_turkish.c new file mode 100644 index 0000000..ae3cc76 --- /dev/null +++ b/src_c/stem_UTF_8_turkish.c @@ -0,0 +1,2205 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#include "../runtime/header.h" + +#ifdef __cplusplus +extern "C" { +#endif +extern int turkish_UTF_8_stem(struct SN_env * z); +#ifdef __cplusplus +} +#endif +static int r_stem_suffix_chain_before_ki(struct SN_env * z); +static int r_stem_noun_suffixes(struct SN_env * z); +static int r_stem_nominal_verb_suffixes(struct SN_env * z); +static int r_postlude(struct SN_env * z); +static int r_post_process_last_consonants(struct SN_env * z); +static int r_more_than_one_syllable_word(struct SN_env * z); +static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z); +static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z); +static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z); +static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z); +static int r_mark_ysA(struct SN_env * z); +static int r_mark_ymUs_(struct SN_env * z); +static int r_mark_yken(struct SN_env * z); +static int r_mark_yDU(struct SN_env * z); +static int r_mark_yUz(struct SN_env * z); +static int r_mark_yUm(struct SN_env * z); +static int r_mark_yU(struct SN_env * z); +static int r_mark_ylA(struct SN_env * z); +static int r_mark_yA(struct SN_env * z); +static int r_mark_possessives(struct SN_env * z); +static int r_mark_sUnUz(struct SN_env * z); +static int r_mark_sUn(struct SN_env * z); +static int r_mark_sU(struct SN_env * z); +static int r_mark_nUz(struct SN_env * z); +static int r_mark_nUn(struct SN_env * z); +static int r_mark_nU(struct SN_env * z); +static int r_mark_ndAn(struct SN_env * z); +static int r_mark_ndA(struct SN_env * z); +static int r_mark_ncA(struct SN_env * z); +static int r_mark_nA(struct SN_env * z); +static int r_mark_lArI(struct SN_env * z); +static int r_mark_lAr(struct SN_env * z); +static int r_mark_ki(struct SN_env * z); +static int r_mark_DUr(struct SN_env * z); +static int r_mark_DAn(struct SN_env * z); +static int r_mark_DA(struct SN_env * z); +static int r_mark_cAsInA(struct SN_env * z); +static int r_is_reserved_word(struct SN_env * z); +static int r_check_vowel_harmony(struct SN_env * z); +static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + + +extern struct SN_env * turkish_UTF_8_create_env(void); +extern void turkish_UTF_8_close_env(struct SN_env * z); + + +#ifdef __cplusplus +} +#endif +static const symbol s_0_0[1] = { 'm' }; +static const symbol s_0_1[1] = { 'n' }; +static const symbol s_0_2[3] = { 'm', 'i', 'z' }; +static const symbol s_0_3[3] = { 'n', 'i', 'z' }; +static const symbol s_0_4[3] = { 'm', 'u', 'z' }; +static const symbol s_0_5[3] = { 'n', 'u', 'z' }; +static const symbol s_0_6[4] = { 'm', 0xC4, 0xB1, 'z' }; +static const symbol s_0_7[4] = { 'n', 0xC4, 0xB1, 'z' }; +static const symbol s_0_8[4] = { 'm', 0xC3, 0xBC, 'z' }; +static const symbol s_0_9[4] = { 'n', 0xC3, 0xBC, 'z' }; + +static const struct among a_0[10] = +{ +/* 0 */ { 1, s_0_0, -1, -1, 0}, +/* 1 */ { 1, s_0_1, -1, -1, 0}, +/* 2 */ { 3, s_0_2, -1, -1, 0}, +/* 3 */ { 3, s_0_3, -1, -1, 0}, +/* 4 */ { 3, s_0_4, -1, -1, 0}, +/* 5 */ { 3, s_0_5, -1, -1, 0}, +/* 6 */ { 4, s_0_6, -1, -1, 0}, +/* 7 */ { 4, s_0_7, -1, -1, 0}, +/* 8 */ { 4, s_0_8, -1, -1, 0}, +/* 9 */ { 4, s_0_9, -1, -1, 0} +}; + +static const symbol s_1_0[4] = { 'l', 'e', 'r', 'i' }; +static const symbol s_1_1[5] = { 'l', 'a', 'r', 0xC4, 0xB1 }; + +static const struct among a_1[2] = +{ +/* 0 */ { 4, s_1_0, -1, -1, 0}, +/* 1 */ { 5, s_1_1, -1, -1, 0} +}; + +static const symbol s_2_0[2] = { 'n', 'i' }; +static const symbol s_2_1[2] = { 'n', 'u' }; +static const symbol s_2_2[3] = { 'n', 0xC4, 0xB1 }; +static const symbol s_2_3[3] = { 'n', 0xC3, 0xBC }; + +static const struct among a_2[4] = +{ +/* 0 */ { 2, s_2_0, -1, -1, 0}, +/* 1 */ { 2, s_2_1, -1, -1, 0}, +/* 2 */ { 3, s_2_2, -1, -1, 0}, +/* 3 */ { 3, s_2_3, -1, -1, 0} +}; + +static const symbol s_3_0[2] = { 'i', 'n' }; +static const symbol s_3_1[2] = { 'u', 'n' }; +static const symbol s_3_2[3] = { 0xC4, 0xB1, 'n' }; +static const symbol s_3_3[3] = { 0xC3, 0xBC, 'n' }; + +static const struct among a_3[4] = +{ +/* 0 */ { 2, s_3_0, -1, -1, 0}, +/* 1 */ { 2, s_3_1, -1, -1, 0}, +/* 2 */ { 3, s_3_2, -1, -1, 0}, +/* 3 */ { 3, s_3_3, -1, -1, 0} +}; + +static const symbol s_4_0[1] = { 'a' }; +static const symbol s_4_1[1] = { 'e' }; + +static const struct among a_4[2] = +{ +/* 0 */ { 1, s_4_0, -1, -1, 0}, +/* 1 */ { 1, s_4_1, -1, -1, 0} +}; + +static const symbol s_5_0[2] = { 'n', 'a' }; +static const symbol s_5_1[2] = { 'n', 'e' }; + +static const struct among a_5[2] = +{ +/* 0 */ { 2, s_5_0, -1, -1, 0}, +/* 1 */ { 2, s_5_1, -1, -1, 0} +}; + +static const symbol s_6_0[2] = { 'd', 'a' }; +static const symbol s_6_1[2] = { 't', 'a' }; +static const symbol s_6_2[2] = { 'd', 'e' }; +static const symbol s_6_3[2] = { 't', 'e' }; + +static const struct among a_6[4] = +{ +/* 0 */ { 2, s_6_0, -1, -1, 0}, +/* 1 */ { 2, s_6_1, -1, -1, 0}, +/* 2 */ { 2, s_6_2, -1, -1, 0}, +/* 3 */ { 2, s_6_3, -1, -1, 0} +}; + +static const symbol s_7_0[3] = { 'n', 'd', 'a' }; +static const symbol s_7_1[3] = { 'n', 'd', 'e' }; + +static const struct among a_7[2] = +{ +/* 0 */ { 3, s_7_0, -1, -1, 0}, +/* 1 */ { 3, s_7_1, -1, -1, 0} +}; + +static const symbol s_8_0[3] = { 'd', 'a', 'n' }; +static const symbol s_8_1[3] = { 't', 'a', 'n' }; +static const symbol s_8_2[3] = { 'd', 'e', 'n' }; +static const symbol s_8_3[3] = { 't', 'e', 'n' }; + +static const struct among a_8[4] = +{ +/* 0 */ { 3, s_8_0, -1, -1, 0}, +/* 1 */ { 3, s_8_1, -1, -1, 0}, +/* 2 */ { 3, s_8_2, -1, -1, 0}, +/* 3 */ { 3, s_8_3, -1, -1, 0} +}; + +static const symbol s_9_0[4] = { 'n', 'd', 'a', 'n' }; +static const symbol s_9_1[4] = { 'n', 'd', 'e', 'n' }; + +static const struct among a_9[2] = +{ +/* 0 */ { 4, s_9_0, -1, -1, 0}, +/* 1 */ { 4, s_9_1, -1, -1, 0} +}; + +static const symbol s_10_0[2] = { 'l', 'a' }; +static const symbol s_10_1[2] = { 'l', 'e' }; + +static const struct among a_10[2] = +{ +/* 0 */ { 2, s_10_0, -1, -1, 0}, +/* 1 */ { 2, s_10_1, -1, -1, 0} +}; + +static const symbol s_11_0[2] = { 'c', 'a' }; +static const symbol s_11_1[2] = { 'c', 'e' }; + +static const struct among a_11[2] = +{ +/* 0 */ { 2, s_11_0, -1, -1, 0}, +/* 1 */ { 2, s_11_1, -1, -1, 0} +}; + +static const symbol s_12_0[2] = { 'i', 'm' }; +static const symbol s_12_1[2] = { 'u', 'm' }; +static const symbol s_12_2[3] = { 0xC4, 0xB1, 'm' }; +static const symbol s_12_3[3] = { 0xC3, 0xBC, 'm' }; + +static const struct among a_12[4] = +{ +/* 0 */ { 2, s_12_0, -1, -1, 0}, +/* 1 */ { 2, s_12_1, -1, -1, 0}, +/* 2 */ { 3, s_12_2, -1, -1, 0}, +/* 3 */ { 3, s_12_3, -1, -1, 0} +}; + +static const symbol s_13_0[3] = { 's', 'i', 'n' }; +static const symbol s_13_1[3] = { 's', 'u', 'n' }; +static const symbol s_13_2[4] = { 's', 0xC4, 0xB1, 'n' }; +static const symbol s_13_3[4] = { 's', 0xC3, 0xBC, 'n' }; + +static const struct among a_13[4] = +{ +/* 0 */ { 3, s_13_0, -1, -1, 0}, +/* 1 */ { 3, s_13_1, -1, -1, 0}, +/* 2 */ { 4, s_13_2, -1, -1, 0}, +/* 3 */ { 4, s_13_3, -1, -1, 0} +}; + +static const symbol s_14_0[2] = { 'i', 'z' }; +static const symbol s_14_1[2] = { 'u', 'z' }; +static const symbol s_14_2[3] = { 0xC4, 0xB1, 'z' }; +static const symbol s_14_3[3] = { 0xC3, 0xBC, 'z' }; + +static const struct among a_14[4] = +{ +/* 0 */ { 2, s_14_0, -1, -1, 0}, +/* 1 */ { 2, s_14_1, -1, -1, 0}, +/* 2 */ { 3, s_14_2, -1, -1, 0}, +/* 3 */ { 3, s_14_3, -1, -1, 0} +}; + +static const symbol s_15_0[5] = { 's', 'i', 'n', 'i', 'z' }; +static const symbol s_15_1[5] = { 's', 'u', 'n', 'u', 'z' }; +static const symbol s_15_2[7] = { 's', 0xC4, 0xB1, 'n', 0xC4, 0xB1, 'z' }; +static const symbol s_15_3[7] = { 's', 0xC3, 0xBC, 'n', 0xC3, 0xBC, 'z' }; + +static const struct among a_15[4] = +{ +/* 0 */ { 5, s_15_0, -1, -1, 0}, +/* 1 */ { 5, s_15_1, -1, -1, 0}, +/* 2 */ { 7, s_15_2, -1, -1, 0}, +/* 3 */ { 7, s_15_3, -1, -1, 0} +}; + +static const symbol s_16_0[3] = { 'l', 'a', 'r' }; +static const symbol s_16_1[3] = { 'l', 'e', 'r' }; + +static const struct among a_16[2] = +{ +/* 0 */ { 3, s_16_0, -1, -1, 0}, +/* 1 */ { 3, s_16_1, -1, -1, 0} +}; + +static const symbol s_17_0[3] = { 'n', 'i', 'z' }; +static const symbol s_17_1[3] = { 'n', 'u', 'z' }; +static const symbol s_17_2[4] = { 'n', 0xC4, 0xB1, 'z' }; +static const symbol s_17_3[4] = { 'n', 0xC3, 0xBC, 'z' }; + +static const struct among a_17[4] = +{ +/* 0 */ { 3, s_17_0, -1, -1, 0}, +/* 1 */ { 3, s_17_1, -1, -1, 0}, +/* 2 */ { 4, s_17_2, -1, -1, 0}, +/* 3 */ { 4, s_17_3, -1, -1, 0} +}; + +static const symbol s_18_0[3] = { 'd', 'i', 'r' }; +static const symbol s_18_1[3] = { 't', 'i', 'r' }; +static const symbol s_18_2[3] = { 'd', 'u', 'r' }; +static const symbol s_18_3[3] = { 't', 'u', 'r' }; +static const symbol s_18_4[4] = { 'd', 0xC4, 0xB1, 'r' }; +static const symbol s_18_5[4] = { 't', 0xC4, 0xB1, 'r' }; +static const symbol s_18_6[4] = { 'd', 0xC3, 0xBC, 'r' }; +static const symbol s_18_7[4] = { 't', 0xC3, 0xBC, 'r' }; + +static const struct among a_18[8] = +{ +/* 0 */ { 3, s_18_0, -1, -1, 0}, +/* 1 */ { 3, s_18_1, -1, -1, 0}, +/* 2 */ { 3, s_18_2, -1, -1, 0}, +/* 3 */ { 3, s_18_3, -1, -1, 0}, +/* 4 */ { 4, s_18_4, -1, -1, 0}, +/* 5 */ { 4, s_18_5, -1, -1, 0}, +/* 6 */ { 4, s_18_6, -1, -1, 0}, +/* 7 */ { 4, s_18_7, -1, -1, 0} +}; + +static const symbol s_19_0[7] = { 'c', 'a', 's', 0xC4, 0xB1, 'n', 'a' }; +static const symbol s_19_1[6] = { 'c', 'e', 's', 'i', 'n', 'e' }; + +static const struct among a_19[2] = +{ +/* 0 */ { 7, s_19_0, -1, -1, 0}, +/* 1 */ { 6, s_19_1, -1, -1, 0} +}; + +static const symbol s_20_0[2] = { 'd', 'i' }; +static const symbol s_20_1[2] = { 't', 'i' }; +static const symbol s_20_2[3] = { 'd', 'i', 'k' }; +static const symbol s_20_3[3] = { 't', 'i', 'k' }; +static const symbol s_20_4[3] = { 'd', 'u', 'k' }; +static const symbol s_20_5[3] = { 't', 'u', 'k' }; +static const symbol s_20_6[4] = { 'd', 0xC4, 0xB1, 'k' }; +static const symbol s_20_7[4] = { 't', 0xC4, 0xB1, 'k' }; +static const symbol s_20_8[4] = { 'd', 0xC3, 0xBC, 'k' }; +static const symbol s_20_9[4] = { 't', 0xC3, 0xBC, 'k' }; +static const symbol s_20_10[3] = { 'd', 'i', 'm' }; +static const symbol s_20_11[3] = { 't', 'i', 'm' }; +static const symbol s_20_12[3] = { 'd', 'u', 'm' }; +static const symbol s_20_13[3] = { 't', 'u', 'm' }; +static const symbol s_20_14[4] = { 'd', 0xC4, 0xB1, 'm' }; +static const symbol s_20_15[4] = { 't', 0xC4, 0xB1, 'm' }; +static const symbol s_20_16[4] = { 'd', 0xC3, 0xBC, 'm' }; +static const symbol s_20_17[4] = { 't', 0xC3, 0xBC, 'm' }; +static const symbol s_20_18[3] = { 'd', 'i', 'n' }; +static const symbol s_20_19[3] = { 't', 'i', 'n' }; +static const symbol s_20_20[3] = { 'd', 'u', 'n' }; +static const symbol s_20_21[3] = { 't', 'u', 'n' }; +static const symbol s_20_22[4] = { 'd', 0xC4, 0xB1, 'n' }; +static const symbol s_20_23[4] = { 't', 0xC4, 0xB1, 'n' }; +static const symbol s_20_24[4] = { 'd', 0xC3, 0xBC, 'n' }; +static const symbol s_20_25[4] = { 't', 0xC3, 0xBC, 'n' }; +static const symbol s_20_26[2] = { 'd', 'u' }; +static const symbol s_20_27[2] = { 't', 'u' }; +static const symbol s_20_28[3] = { 'd', 0xC4, 0xB1 }; +static const symbol s_20_29[3] = { 't', 0xC4, 0xB1 }; +static const symbol s_20_30[3] = { 'd', 0xC3, 0xBC }; +static const symbol s_20_31[3] = { 't', 0xC3, 0xBC }; + +static const struct among a_20[32] = +{ +/* 0 */ { 2, s_20_0, -1, -1, 0}, +/* 1 */ { 2, s_20_1, -1, -1, 0}, +/* 2 */ { 3, s_20_2, -1, -1, 0}, +/* 3 */ { 3, s_20_3, -1, -1, 0}, +/* 4 */ { 3, s_20_4, -1, -1, 0}, +/* 5 */ { 3, s_20_5, -1, -1, 0}, +/* 6 */ { 4, s_20_6, -1, -1, 0}, +/* 7 */ { 4, s_20_7, -1, -1, 0}, +/* 8 */ { 4, s_20_8, -1, -1, 0}, +/* 9 */ { 4, s_20_9, -1, -1, 0}, +/* 10 */ { 3, s_20_10, -1, -1, 0}, +/* 11 */ { 3, s_20_11, -1, -1, 0}, +/* 12 */ { 3, s_20_12, -1, -1, 0}, +/* 13 */ { 3, s_20_13, -1, -1, 0}, +/* 14 */ { 4, s_20_14, -1, -1, 0}, +/* 15 */ { 4, s_20_15, -1, -1, 0}, +/* 16 */ { 4, s_20_16, -1, -1, 0}, +/* 17 */ { 4, s_20_17, -1, -1, 0}, +/* 18 */ { 3, s_20_18, -1, -1, 0}, +/* 19 */ { 3, s_20_19, -1, -1, 0}, +/* 20 */ { 3, s_20_20, -1, -1, 0}, +/* 21 */ { 3, s_20_21, -1, -1, 0}, +/* 22 */ { 4, s_20_22, -1, -1, 0}, +/* 23 */ { 4, s_20_23, -1, -1, 0}, +/* 24 */ { 4, s_20_24, -1, -1, 0}, +/* 25 */ { 4, s_20_25, -1, -1, 0}, +/* 26 */ { 2, s_20_26, -1, -1, 0}, +/* 27 */ { 2, s_20_27, -1, -1, 0}, +/* 28 */ { 3, s_20_28, -1, -1, 0}, +/* 29 */ { 3, s_20_29, -1, -1, 0}, +/* 30 */ { 3, s_20_30, -1, -1, 0}, +/* 31 */ { 3, s_20_31, -1, -1, 0} +}; + +static const symbol s_21_0[2] = { 's', 'a' }; +static const symbol s_21_1[2] = { 's', 'e' }; +static const symbol s_21_2[3] = { 's', 'a', 'k' }; +static const symbol s_21_3[3] = { 's', 'e', 'k' }; +static const symbol s_21_4[3] = { 's', 'a', 'm' }; +static const symbol s_21_5[3] = { 's', 'e', 'm' }; +static const symbol s_21_6[3] = { 's', 'a', 'n' }; +static const symbol s_21_7[3] = { 's', 'e', 'n' }; + +static const struct among a_21[8] = +{ +/* 0 */ { 2, s_21_0, -1, -1, 0}, +/* 1 */ { 2, s_21_1, -1, -1, 0}, +/* 2 */ { 3, s_21_2, -1, -1, 0}, +/* 3 */ { 3, s_21_3, -1, -1, 0}, +/* 4 */ { 3, s_21_4, -1, -1, 0}, +/* 5 */ { 3, s_21_5, -1, -1, 0}, +/* 6 */ { 3, s_21_6, -1, -1, 0}, +/* 7 */ { 3, s_21_7, -1, -1, 0} +}; + +static const symbol s_22_0[4] = { 'm', 'i', 0xC5, 0x9F }; +static const symbol s_22_1[4] = { 'm', 'u', 0xC5, 0x9F }; +static const symbol s_22_2[5] = { 'm', 0xC4, 0xB1, 0xC5, 0x9F }; +static const symbol s_22_3[5] = { 'm', 0xC3, 0xBC, 0xC5, 0x9F }; + +static const struct among a_22[4] = +{ +/* 0 */ { 4, s_22_0, -1, -1, 0}, +/* 1 */ { 4, s_22_1, -1, -1, 0}, +/* 2 */ { 5, s_22_2, -1, -1, 0}, +/* 3 */ { 5, s_22_3, -1, -1, 0} +}; + +static const symbol s_23_0[1] = { 'b' }; +static const symbol s_23_1[1] = { 'c' }; +static const symbol s_23_2[1] = { 'd' }; +static const symbol s_23_3[2] = { 0xC4, 0x9F }; + +static const struct among a_23[4] = +{ +/* 0 */ { 1, s_23_0, -1, 1, 0}, +/* 1 */ { 1, s_23_1, -1, 2, 0}, +/* 2 */ { 1, s_23_2, -1, 3, 0}, +/* 3 */ { 2, s_23_3, -1, 4, 0} +}; + +static const unsigned char g_vowel[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 8, 0, 0, 0, 0, 0, 0, 1 }; + +static const unsigned char g_U[] = { 1, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1 }; + +static const unsigned char g_vowel1[] = { 1, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; + +static const unsigned char g_vowel2[] = { 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 }; + +static const unsigned char g_vowel3[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; + +static const unsigned char g_vowel4[] = { 17 }; + +static const unsigned char g_vowel5[] = { 65 }; + +static const unsigned char g_vowel6[] = { 65 }; + +static const symbol s_0[] = { 'a' }; +static const symbol s_1[] = { 'e' }; +static const symbol s_2[] = { 0xC4, 0xB1 }; +static const symbol s_3[] = { 'i' }; +static const symbol s_4[] = { 'o' }; +static const symbol s_5[] = { 0xC3, 0xB6 }; +static const symbol s_6[] = { 'u' }; +static const symbol s_7[] = { 0xC3, 0xBC }; +static const symbol s_8[] = { 'n' }; +static const symbol s_9[] = { 'n' }; +static const symbol s_10[] = { 's' }; +static const symbol s_11[] = { 's' }; +static const symbol s_12[] = { 'y' }; +static const symbol s_13[] = { 'y' }; +static const symbol s_14[] = { 'k', 'i' }; +static const symbol s_15[] = { 'k', 'e', 'n' }; +static const symbol s_16[] = { 'p' }; +static const symbol s_17[] = { 0xC3, 0xA7 }; +static const symbol s_18[] = { 't' }; +static const symbol s_19[] = { 'k' }; +static const symbol s_20[] = { 'd' }; +static const symbol s_21[] = { 'g' }; +static const symbol s_22[] = { 'a' }; +static const symbol s_23[] = { 0xC4, 0xB1 }; +static const symbol s_24[] = { 0xC4, 0xB1 }; +static const symbol s_25[] = { 'e' }; +static const symbol s_26[] = { 'i' }; +static const symbol s_27[] = { 'i' }; +static const symbol s_28[] = { 'o' }; +static const symbol s_29[] = { 'u' }; +static const symbol s_30[] = { 'u' }; +static const symbol s_31[] = { 0xC3, 0xB6 }; +static const symbol s_32[] = { 0xC3, 0xBC }; +static const symbol s_33[] = { 0xC3, 0xBC }; +static const symbol s_34[] = { 'a', 'd' }; +static const symbol s_35[] = { 's', 'o', 'y', 'a', 'd' }; + +static int r_check_vowel_harmony(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 112 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 114 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 116 */ + if (!(eq_s_b(z, 1, s_0))) goto lab1; + if (out_grouping_b_U(z, g_vowel1, 97, 305, 1) < 0) goto lab1; /* goto */ /* grouping vowel1, line 116 */ + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_1))) goto lab2; + if (out_grouping_b_U(z, g_vowel2, 101, 252, 1) < 0) goto lab2; /* goto */ /* grouping vowel2, line 117 */ + goto lab0; + lab2: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_2))) goto lab3; + if (out_grouping_b_U(z, g_vowel3, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel3, line 118 */ + goto lab0; + lab3: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_3))) goto lab4; + if (out_grouping_b_U(z, g_vowel4, 101, 105, 1) < 0) goto lab4; /* goto */ /* grouping vowel4, line 119 */ + goto lab0; + lab4: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_4))) goto lab5; + if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab5; /* goto */ /* grouping vowel5, line 120 */ + goto lab0; + lab5: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_5))) goto lab6; + if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) goto lab6; /* goto */ /* grouping vowel6, line 121 */ + goto lab0; + lab6: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_6))) goto lab7; + if (out_grouping_b_U(z, g_vowel5, 111, 117, 1) < 0) goto lab7; /* goto */ /* grouping vowel5, line 122 */ + goto lab0; + lab7: + z->c = z->l - m1; + if (!(eq_s_b(z, 2, s_7))) return 0; + if (out_grouping_b_U(z, g_vowel6, 246, 252, 1) < 0) return 0; /* goto */ /* grouping vowel6, line 123 */ + } + lab0: + z->c = z->l - m_test; + } + return 1; +} + +static int r_mark_suffix_with_optional_n_consonant(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 134 */ + { int m_test = z->l - z->c; /* test, line 133 */ + if (!(eq_s_b(z, 1, s_8))) goto lab1; + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab1; + z->c = ret; /* next, line 133 */ + } + { int m_test = z->l - z->c; /* test, line 133 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* not, line 135 */ + { int m_test = z->l - z->c; /* test, line 135 */ + if (!(eq_s_b(z, 1, s_9))) goto lab2; + z->c = z->l - m_test; + } + return 0; + lab2: + z->c = z->l - m2; + } + { int m_test = z->l - z->c; /* test, line 135 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 135 */ + } + { int m_test = z->l - z->c; /* test, line 135 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; + z->c = z->l - m_test; + } + z->c = z->l - m_test; + } + } +lab0: + return 1; +} + +static int r_mark_suffix_with_optional_s_consonant(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 145 */ + { int m_test = z->l - z->c; /* test, line 144 */ + if (!(eq_s_b(z, 1, s_10))) goto lab1; + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab1; + z->c = ret; /* next, line 144 */ + } + { int m_test = z->l - z->c; /* test, line 144 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* not, line 146 */ + { int m_test = z->l - z->c; /* test, line 146 */ + if (!(eq_s_b(z, 1, s_11))) goto lab2; + z->c = z->l - m_test; + } + return 0; + lab2: + z->c = z->l - m2; + } + { int m_test = z->l - z->c; /* test, line 146 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 146 */ + } + { int m_test = z->l - z->c; /* test, line 146 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; + z->c = z->l - m_test; + } + z->c = z->l - m_test; + } + } +lab0: + return 1; +} + +static int r_mark_suffix_with_optional_y_consonant(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 155 */ + { int m_test = z->l - z->c; /* test, line 154 */ + if (!(eq_s_b(z, 1, s_12))) goto lab1; + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab1; + z->c = ret; /* next, line 154 */ + } + { int m_test = z->l - z->c; /* test, line 154 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* not, line 156 */ + { int m_test = z->l - z->c; /* test, line 156 */ + if (!(eq_s_b(z, 1, s_13))) goto lab2; + z->c = z->l - m_test; + } + return 0; + lab2: + z->c = z->l - m2; + } + { int m_test = z->l - z->c; /* test, line 156 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 156 */ + } + { int m_test = z->l - z->c; /* test, line 156 */ + if (in_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; + z->c = z->l - m_test; + } + z->c = z->l - m_test; + } + } +lab0: + return 1; +} + +static int r_mark_suffix_with_optional_U_vowel(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 161 */ + { int m_test = z->l - z->c; /* test, line 160 */ + if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab1; + z->c = z->l - m_test; + } + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) goto lab1; + z->c = ret; /* next, line 160 */ + } + { int m_test = z->l - z->c; /* test, line 160 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) goto lab1; + z->c = z->l - m_test; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int m2 = z->l - z->c; (void)m2; /* not, line 162 */ + { int m_test = z->l - z->c; /* test, line 162 */ + if (in_grouping_b_U(z, g_U, 105, 305, 0)) goto lab2; + z->c = z->l - m_test; + } + return 0; + lab2: + z->c = z->l - m2; + } + { int m_test = z->l - z->c; /* test, line 162 */ + { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); + if (ret < 0) return 0; + z->c = ret; /* next, line 162 */ + } + { int m_test = z->l - z->c; /* test, line 162 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 0)) return 0; + z->c = z->l - m_test; + } + z->c = z->l - m_test; + } + } +lab0: + return 1; +} + +static int r_mark_possessives(struct SN_env * z) { + if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((67133440 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + if (!(find_among_b(z, a_0, 10))) return 0; /* among, line 167 */ + { int ret = r_mark_suffix_with_optional_U_vowel(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_U_vowel, line 169 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_sU(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 173 */ + if (ret < 0) return ret; + } + if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0; + { int ret = r_mark_suffix_with_optional_s_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_s_consonant, line 175 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_lArI(struct SN_env * z) { + if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 177)) return 0; + if (!(find_among_b(z, a_1, 2))) return 0; /* among, line 179 */ + return 1; +} + +static int r_mark_yU(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 183 */ + if (ret < 0) return ret; + } + if (in_grouping_b_U(z, g_U, 105, 305, 0)) return 0; + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 185 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_nU(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 189 */ + if (ret < 0) return ret; + } + if (!(find_among_b(z, a_2, 4))) return 0; /* among, line 190 */ + return 1; +} + +static int r_mark_nUn(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 194 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 110) return 0; + if (!(find_among_b(z, a_3, 4))) return 0; /* among, line 195 */ + { int ret = r_mark_suffix_with_optional_n_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_n_consonant, line 196 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_yA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 200 */ + if (ret < 0) return ret; + } + if (z->c <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_4, 2))) return 0; /* among, line 201 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 202 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_nA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 206 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_5, 2))) return 0; /* among, line 207 */ + return 1; +} + +static int r_mark_DA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 211 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_6, 4))) return 0; /* among, line 212 */ + return 1; +} + +static int r_mark_ndA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 216 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_7, 2))) return 0; /* among, line 217 */ + return 1; +} + +static int r_mark_DAn(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 221 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0; + if (!(find_among_b(z, a_8, 4))) return 0; /* among, line 222 */ + return 1; +} + +static int r_mark_ndAn(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 226 */ + if (ret < 0) return ret; + } + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 110) return 0; + if (!(find_among_b(z, a_9, 2))) return 0; /* among, line 227 */ + return 1; +} + +static int r_mark_ylA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 231 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_10, 2))) return 0; /* among, line 232 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 233 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_ki(struct SN_env * z) { + if (!(eq_s_b(z, 2, s_14))) return 0; + return 1; +} + +static int r_mark_ncA(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 241 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_11, 2))) return 0; /* among, line 242 */ + { int ret = r_mark_suffix_with_optional_n_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_n_consonant, line 243 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_yUm(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 247 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 109) return 0; + if (!(find_among_b(z, a_12, 4))) return 0; /* among, line 248 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 249 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_sUn(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 253 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 110) return 0; + if (!(find_among_b(z, a_13, 4))) return 0; /* among, line 254 */ + return 1; +} + +static int r_mark_yUz(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 258 */ + if (ret < 0) return ret; + } + if (z->c - 1 <= z->lb || z->p[z->c - 1] != 122) return 0; + if (!(find_among_b(z, a_14, 4))) return 0; /* among, line 259 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 260 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_sUnUz(struct SN_env * z) { + if (z->c - 4 <= z->lb || z->p[z->c - 1] != 122) return 0; + if (!(find_among_b(z, a_15, 4))) return 0; /* among, line 264 */ + return 1; +} + +static int r_mark_lAr(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 268 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0; + if (!(find_among_b(z, a_16, 2))) return 0; /* among, line 269 */ + return 1; +} + +static int r_mark_nUz(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 273 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 122) return 0; + if (!(find_among_b(z, a_17, 4))) return 0; /* among, line 274 */ + return 1; +} + +static int r_mark_DUr(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 278 */ + if (ret < 0) return ret; + } + if (z->c - 2 <= z->lb || z->p[z->c - 1] != 114) return 0; + if (!(find_among_b(z, a_18, 8))) return 0; /* among, line 279 */ + return 1; +} + +static int r_mark_cAsInA(struct SN_env * z) { + if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 101)) return 0; + if (!(find_among_b(z, a_19, 2))) return 0; /* among, line 283 */ + return 1; +} + +static int r_mark_yDU(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 287 */ + if (ret < 0) return ret; + } + if (!(find_among_b(z, a_20, 32))) return 0; /* among, line 288 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 292 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_ysA(struct SN_env * z) { + if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((26658 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; + if (!(find_among_b(z, a_21, 8))) return 0; /* among, line 297 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 298 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_ymUs_(struct SN_env * z) { + { int ret = r_check_vowel_harmony(z); + if (ret == 0) return 0; /* call check_vowel_harmony, line 302 */ + if (ret < 0) return ret; + } + if (z->c - 3 <= z->lb || z->p[z->c - 1] != 159) return 0; + if (!(find_among_b(z, a_22, 4))) return 0; /* among, line 303 */ + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 304 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_mark_yken(struct SN_env * z) { + if (!(eq_s_b(z, 3, s_15))) return 0; + { int ret = r_mark_suffix_with_optional_y_consonant(z); + if (ret == 0) return 0; /* call mark_suffix_with_optional_y_consonant, line 308 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_stem_nominal_verb_suffixes(struct SN_env * z) { + z->ket = z->c; /* [, line 312 */ + z->B[0] = 1; /* set continue_stemming_noun_suffixes, line 313 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 315 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 314 */ + { int ret = r_mark_ymUs_(z); + if (ret == 0) goto lab3; /* call mark_ymUs_, line 314 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = z->l - m2; + { int ret = r_mark_yDU(z); + if (ret == 0) goto lab4; /* call mark_yDU, line 314 */ + if (ret < 0) return ret; + } + goto lab2; + lab4: + z->c = z->l - m2; + { int ret = r_mark_ysA(z); + if (ret == 0) goto lab5; /* call mark_ysA, line 314 */ + if (ret < 0) return ret; + } + goto lab2; + lab5: + z->c = z->l - m2; + { int ret = r_mark_yken(z); + if (ret == 0) goto lab1; /* call mark_yken, line 314 */ + if (ret < 0) return ret; + } + } + lab2: + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_mark_cAsInA(z); + if (ret == 0) goto lab6; /* call mark_cAsInA, line 316 */ + if (ret < 0) return ret; + } + { int m3 = z->l - z->c; (void)m3; /* or, line 316 */ + { int ret = r_mark_sUnUz(z); + if (ret == 0) goto lab8; /* call mark_sUnUz, line 316 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m3; + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab9; /* call mark_lAr, line 316 */ + if (ret < 0) return ret; + } + goto lab7; + lab9: + z->c = z->l - m3; + { int ret = r_mark_yUm(z); + if (ret == 0) goto lab10; /* call mark_yUm, line 316 */ + if (ret < 0) return ret; + } + goto lab7; + lab10: + z->c = z->l - m3; + { int ret = r_mark_sUn(z); + if (ret == 0) goto lab11; /* call mark_sUn, line 316 */ + if (ret < 0) return ret; + } + goto lab7; + lab11: + z->c = z->l - m3; + { int ret = r_mark_yUz(z); + if (ret == 0) goto lab12; /* call mark_yUz, line 316 */ + if (ret < 0) return ret; + } + goto lab7; + lab12: + z->c = z->l - m3; + } + lab7: + { int ret = r_mark_ymUs_(z); + if (ret == 0) goto lab6; /* call mark_ymUs_, line 316 */ + if (ret < 0) return ret; + } + goto lab0; + lab6: + z->c = z->l - m1; + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab13; /* call mark_lAr, line 319 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 319 */ + { int ret = slice_del(z); /* delete, line 319 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 319 */ + z->ket = z->c; /* [, line 319 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 319 */ + { int ret = r_mark_DUr(z); + if (ret == 0) goto lab16; /* call mark_DUr, line 319 */ + if (ret < 0) return ret; + } + goto lab15; + lab16: + z->c = z->l - m4; + { int ret = r_mark_yDU(z); + if (ret == 0) goto lab17; /* call mark_yDU, line 319 */ + if (ret < 0) return ret; + } + goto lab15; + lab17: + z->c = z->l - m4; + { int ret = r_mark_ysA(z); + if (ret == 0) goto lab18; /* call mark_ysA, line 319 */ + if (ret < 0) return ret; + } + goto lab15; + lab18: + z->c = z->l - m4; + { int ret = r_mark_ymUs_(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call mark_ymUs_, line 319 */ + if (ret < 0) return ret; + } + } + lab15: + lab14: + ; + } + z->B[0] = 0; /* unset continue_stemming_noun_suffixes, line 320 */ + goto lab0; + lab13: + z->c = z->l - m1; + { int ret = r_mark_nUz(z); + if (ret == 0) goto lab19; /* call mark_nUz, line 323 */ + if (ret < 0) return ret; + } + { int m5 = z->l - z->c; (void)m5; /* or, line 323 */ + { int ret = r_mark_yDU(z); + if (ret == 0) goto lab21; /* call mark_yDU, line 323 */ + if (ret < 0) return ret; + } + goto lab20; + lab21: + z->c = z->l - m5; + { int ret = r_mark_ysA(z); + if (ret == 0) goto lab19; /* call mark_ysA, line 323 */ + if (ret < 0) return ret; + } + } + lab20: + goto lab0; + lab19: + z->c = z->l - m1; + { int m6 = z->l - z->c; (void)m6; /* or, line 325 */ + { int ret = r_mark_sUnUz(z); + if (ret == 0) goto lab24; /* call mark_sUnUz, line 325 */ + if (ret < 0) return ret; + } + goto lab23; + lab24: + z->c = z->l - m6; + { int ret = r_mark_yUz(z); + if (ret == 0) goto lab25; /* call mark_yUz, line 325 */ + if (ret < 0) return ret; + } + goto lab23; + lab25: + z->c = z->l - m6; + { int ret = r_mark_sUn(z); + if (ret == 0) goto lab26; /* call mark_sUn, line 325 */ + if (ret < 0) return ret; + } + goto lab23; + lab26: + z->c = z->l - m6; + { int ret = r_mark_yUm(z); + if (ret == 0) goto lab22; /* call mark_yUm, line 325 */ + if (ret < 0) return ret; + } + } + lab23: + z->bra = z->c; /* ], line 325 */ + { int ret = slice_del(z); /* delete, line 325 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 325 */ + z->ket = z->c; /* [, line 325 */ + { int ret = r_mark_ymUs_(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab27; } /* call mark_ymUs_, line 325 */ + if (ret < 0) return ret; + } + lab27: + ; + } + goto lab0; + lab22: + z->c = z->l - m1; + { int ret = r_mark_DUr(z); + if (ret == 0) return 0; /* call mark_DUr, line 327 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 327 */ + { int ret = slice_del(z); /* delete, line 327 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 327 */ + z->ket = z->c; /* [, line 327 */ + { int m7 = z->l - z->c; (void)m7; /* or, line 327 */ + { int ret = r_mark_sUnUz(z); + if (ret == 0) goto lab30; /* call mark_sUnUz, line 327 */ + if (ret < 0) return ret; + } + goto lab29; + lab30: + z->c = z->l - m7; + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab31; /* call mark_lAr, line 327 */ + if (ret < 0) return ret; + } + goto lab29; + lab31: + z->c = z->l - m7; + { int ret = r_mark_yUm(z); + if (ret == 0) goto lab32; /* call mark_yUm, line 327 */ + if (ret < 0) return ret; + } + goto lab29; + lab32: + z->c = z->l - m7; + { int ret = r_mark_sUn(z); + if (ret == 0) goto lab33; /* call mark_sUn, line 327 */ + if (ret < 0) return ret; + } + goto lab29; + lab33: + z->c = z->l - m7; + { int ret = r_mark_yUz(z); + if (ret == 0) goto lab34; /* call mark_yUz, line 327 */ + if (ret < 0) return ret; + } + goto lab29; + lab34: + z->c = z->l - m7; + } + lab29: + { int ret = r_mark_ymUs_(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call mark_ymUs_, line 327 */ + if (ret < 0) return ret; + } + lab28: + ; + } + } +lab0: + z->bra = z->c; /* ], line 328 */ + { int ret = slice_del(z); /* delete, line 328 */ + if (ret < 0) return ret; + } + return 1; +} + +static int r_stem_suffix_chain_before_ki(struct SN_env * z) { + z->ket = z->c; /* [, line 333 */ + { int ret = r_mark_ki(z); + if (ret == 0) return 0; /* call mark_ki, line 334 */ + if (ret < 0) return ret; + } + { int m1 = z->l - z->c; (void)m1; /* or, line 342 */ + { int ret = r_mark_DA(z); + if (ret == 0) goto lab1; /* call mark_DA, line 336 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 336 */ + { int ret = slice_del(z); /* delete, line 336 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 336 */ + z->ket = z->c; /* [, line 336 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 338 */ + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab4; /* call mark_lAr, line 337 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 337 */ + { int ret = slice_del(z); /* delete, line 337 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 337 */ + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab5; } /* call stem_suffix_chain_before_ki, line 337 */ + if (ret < 0) return ret; + } + lab5: + ; + } + goto lab3; + lab4: + z->c = z->l - m2; + { int ret = r_mark_possessives(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call mark_possessives, line 339 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 339 */ + { int ret = slice_del(z); /* delete, line 339 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 339 */ + z->ket = z->c; /* [, line 339 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call mark_lAr, line 339 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 339 */ + { int ret = slice_del(z); /* delete, line 339 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab6; } /* call stem_suffix_chain_before_ki, line 339 */ + if (ret < 0) return ret; + } + lab6: + ; + } + } + lab3: + lab2: + ; + } + goto lab0; + lab1: + z->c = z->l - m1; + { int ret = r_mark_nUn(z); + if (ret == 0) goto lab7; /* call mark_nUn, line 343 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 343 */ + { int ret = slice_del(z); /* delete, line 343 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 343 */ + z->ket = z->c; /* [, line 343 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 345 */ + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab10; /* call mark_lArI, line 344 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 344 */ + { int ret = slice_del(z); /* delete, line 344 */ + if (ret < 0) return ret; + } + goto lab9; + lab10: + z->c = z->l - m3; + z->ket = z->c; /* [, line 346 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 346 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab13; /* call mark_possessives, line 346 */ + if (ret < 0) return ret; + } + goto lab12; + lab13: + z->c = z->l - m4; + { int ret = r_mark_sU(z); + if (ret == 0) goto lab11; /* call mark_sU, line 346 */ + if (ret < 0) return ret; + } + } + lab12: + z->bra = z->c; /* ], line 346 */ + { int ret = slice_del(z); /* delete, line 346 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 346 */ + z->ket = z->c; /* [, line 346 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call mark_lAr, line 346 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 346 */ + { int ret = slice_del(z); /* delete, line 346 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab14; } /* call stem_suffix_chain_before_ki, line 346 */ + if (ret < 0) return ret; + } + lab14: + ; + } + goto lab9; + lab11: + z->c = z->l - m3; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab8; } /* call stem_suffix_chain_before_ki, line 348 */ + if (ret < 0) return ret; + } + } + lab9: + lab8: + ; + } + goto lab0; + lab7: + z->c = z->l - m1; + { int ret = r_mark_ndA(z); + if (ret == 0) return 0; /* call mark_ndA, line 351 */ + if (ret < 0) return ret; + } + { int m5 = z->l - z->c; (void)m5; /* or, line 353 */ + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab16; /* call mark_lArI, line 352 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 352 */ + { int ret = slice_del(z); /* delete, line 352 */ + if (ret < 0) return ret; + } + goto lab15; + lab16: + z->c = z->l - m5; + { int ret = r_mark_sU(z); + if (ret == 0) goto lab17; /* call mark_sU, line 354 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 354 */ + { int ret = slice_del(z); /* delete, line 354 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 354 */ + z->ket = z->c; /* [, line 354 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab18; } /* call mark_lAr, line 354 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 354 */ + { int ret = slice_del(z); /* delete, line 354 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab18; } /* call stem_suffix_chain_before_ki, line 354 */ + if (ret < 0) return ret; + } + lab18: + ; + } + goto lab15; + lab17: + z->c = z->l - m5; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) return 0; /* call stem_suffix_chain_before_ki, line 356 */ + if (ret < 0) return ret; + } + } + lab15: + ; + } +lab0: + return 1; +} + +static int r_stem_noun_suffixes(struct SN_env * z) { + { int m1 = z->l - z->c; (void)m1; /* or, line 363 */ + z->ket = z->c; /* [, line 362 */ + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab1; /* call mark_lAr, line 362 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 362 */ + { int ret = slice_del(z); /* delete, line 362 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 362 */ + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab2; } /* call stem_suffix_chain_before_ki, line 362 */ + if (ret < 0) return ret; + } + lab2: + ; + } + goto lab0; + lab1: + z->c = z->l - m1; + z->ket = z->c; /* [, line 364 */ + { int ret = r_mark_ncA(z); + if (ret == 0) goto lab3; /* call mark_ncA, line 364 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 364 */ + { int ret = slice_del(z); /* delete, line 364 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 365 */ + { int m2 = z->l - z->c; (void)m2; /* or, line 367 */ + z->ket = z->c; /* [, line 366 */ + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab6; /* call mark_lArI, line 366 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 366 */ + { int ret = slice_del(z); /* delete, line 366 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m2; + z->ket = z->c; /* [, line 368 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 368 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab9; /* call mark_possessives, line 368 */ + if (ret < 0) return ret; + } + goto lab8; + lab9: + z->c = z->l - m3; + { int ret = r_mark_sU(z); + if (ret == 0) goto lab7; /* call mark_sU, line 368 */ + if (ret < 0) return ret; + } + } + lab8: + z->bra = z->c; /* ], line 368 */ + { int ret = slice_del(z); /* delete, line 368 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 368 */ + z->ket = z->c; /* [, line 368 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call mark_lAr, line 368 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 368 */ + { int ret = slice_del(z); /* delete, line 368 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab10; } /* call stem_suffix_chain_before_ki, line 368 */ + if (ret < 0) return ret; + } + lab10: + ; + } + goto lab5; + lab7: + z->c = z->l - m2; + z->ket = z->c; /* [, line 370 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call mark_lAr, line 370 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 370 */ + { int ret = slice_del(z); /* delete, line 370 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab4; } /* call stem_suffix_chain_before_ki, line 370 */ + if (ret < 0) return ret; + } + } + lab5: + lab4: + ; + } + goto lab0; + lab3: + z->c = z->l - m1; + z->ket = z->c; /* [, line 374 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 374 */ + { int ret = r_mark_ndA(z); + if (ret == 0) goto lab13; /* call mark_ndA, line 374 */ + if (ret < 0) return ret; + } + goto lab12; + lab13: + z->c = z->l - m4; + { int ret = r_mark_nA(z); + if (ret == 0) goto lab11; /* call mark_nA, line 374 */ + if (ret < 0) return ret; + } + } + lab12: + { int m5 = z->l - z->c; (void)m5; /* or, line 377 */ + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab15; /* call mark_lArI, line 376 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 376 */ + { int ret = slice_del(z); /* delete, line 376 */ + if (ret < 0) return ret; + } + goto lab14; + lab15: + z->c = z->l - m5; + { int ret = r_mark_sU(z); + if (ret == 0) goto lab16; /* call mark_sU, line 378 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 378 */ + { int ret = slice_del(z); /* delete, line 378 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 378 */ + z->ket = z->c; /* [, line 378 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab17; } /* call mark_lAr, line 378 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 378 */ + { int ret = slice_del(z); /* delete, line 378 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab17; } /* call stem_suffix_chain_before_ki, line 378 */ + if (ret < 0) return ret; + } + lab17: + ; + } + goto lab14; + lab16: + z->c = z->l - m5; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) goto lab11; /* call stem_suffix_chain_before_ki, line 380 */ + if (ret < 0) return ret; + } + } + lab14: + goto lab0; + lab11: + z->c = z->l - m1; + z->ket = z->c; /* [, line 384 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 384 */ + { int ret = r_mark_ndAn(z); + if (ret == 0) goto lab20; /* call mark_ndAn, line 384 */ + if (ret < 0) return ret; + } + goto lab19; + lab20: + z->c = z->l - m6; + { int ret = r_mark_nU(z); + if (ret == 0) goto lab18; /* call mark_nU, line 384 */ + if (ret < 0) return ret; + } + } + lab19: + { int m7 = z->l - z->c; (void)m7; /* or, line 384 */ + { int ret = r_mark_sU(z); + if (ret == 0) goto lab22; /* call mark_sU, line 384 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 384 */ + { int ret = slice_del(z); /* delete, line 384 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 384 */ + z->ket = z->c; /* [, line 384 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab23; } /* call mark_lAr, line 384 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 384 */ + { int ret = slice_del(z); /* delete, line 384 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab23; } /* call stem_suffix_chain_before_ki, line 384 */ + if (ret < 0) return ret; + } + lab23: + ; + } + goto lab21; + lab22: + z->c = z->l - m7; + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab18; /* call mark_lArI, line 384 */ + if (ret < 0) return ret; + } + } + lab21: + goto lab0; + lab18: + z->c = z->l - m1; + z->ket = z->c; /* [, line 386 */ + { int ret = r_mark_DAn(z); + if (ret == 0) goto lab24; /* call mark_DAn, line 386 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 386 */ + { int ret = slice_del(z); /* delete, line 386 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 386 */ + z->ket = z->c; /* [, line 386 */ + { int m8 = z->l - z->c; (void)m8; /* or, line 389 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab27; /* call mark_possessives, line 388 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 388 */ + { int ret = slice_del(z); /* delete, line 388 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 388 */ + z->ket = z->c; /* [, line 388 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call mark_lAr, line 388 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 388 */ + { int ret = slice_del(z); /* delete, line 388 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab28; } /* call stem_suffix_chain_before_ki, line 388 */ + if (ret < 0) return ret; + } + lab28: + ; + } + goto lab26; + lab27: + z->c = z->l - m8; + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab29; /* call mark_lAr, line 390 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 390 */ + { int ret = slice_del(z); /* delete, line 390 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 390 */ + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab30; } /* call stem_suffix_chain_before_ki, line 390 */ + if (ret < 0) return ret; + } + lab30: + ; + } + goto lab26; + lab29: + z->c = z->l - m8; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab25; } /* call stem_suffix_chain_before_ki, line 392 */ + if (ret < 0) return ret; + } + } + lab26: + lab25: + ; + } + goto lab0; + lab24: + z->c = z->l - m1; + z->ket = z->c; /* [, line 396 */ + { int m9 = z->l - z->c; (void)m9; /* or, line 396 */ + { int ret = r_mark_nUn(z); + if (ret == 0) goto lab33; /* call mark_nUn, line 396 */ + if (ret < 0) return ret; + } + goto lab32; + lab33: + z->c = z->l - m9; + { int ret = r_mark_ylA(z); + if (ret == 0) goto lab31; /* call mark_ylA, line 396 */ + if (ret < 0) return ret; + } + } + lab32: + z->bra = z->c; /* ], line 396 */ + { int ret = slice_del(z); /* delete, line 396 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 397 */ + { int m10 = z->l - z->c; (void)m10; /* or, line 399 */ + z->ket = z->c; /* [, line 398 */ + { int ret = r_mark_lAr(z); + if (ret == 0) goto lab36; /* call mark_lAr, line 398 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 398 */ + { int ret = slice_del(z); /* delete, line 398 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) goto lab36; /* call stem_suffix_chain_before_ki, line 398 */ + if (ret < 0) return ret; + } + goto lab35; + lab36: + z->c = z->l - m10; + z->ket = z->c; /* [, line 400 */ + { int m11 = z->l - z->c; (void)m11; /* or, line 400 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab39; /* call mark_possessives, line 400 */ + if (ret < 0) return ret; + } + goto lab38; + lab39: + z->c = z->l - m11; + { int ret = r_mark_sU(z); + if (ret == 0) goto lab37; /* call mark_sU, line 400 */ + if (ret < 0) return ret; + } + } + lab38: + z->bra = z->c; /* ], line 400 */ + { int ret = slice_del(z); /* delete, line 400 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 400 */ + z->ket = z->c; /* [, line 400 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab40; } /* call mark_lAr, line 400 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 400 */ + { int ret = slice_del(z); /* delete, line 400 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab40; } /* call stem_suffix_chain_before_ki, line 400 */ + if (ret < 0) return ret; + } + lab40: + ; + } + goto lab35; + lab37: + z->c = z->l - m10; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab34; } /* call stem_suffix_chain_before_ki, line 402 */ + if (ret < 0) return ret; + } + } + lab35: + lab34: + ; + } + goto lab0; + lab31: + z->c = z->l - m1; + z->ket = z->c; /* [, line 406 */ + { int ret = r_mark_lArI(z); + if (ret == 0) goto lab41; /* call mark_lArI, line 406 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 406 */ + { int ret = slice_del(z); /* delete, line 406 */ + if (ret < 0) return ret; + } + goto lab0; + lab41: + z->c = z->l - m1; + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) goto lab42; /* call stem_suffix_chain_before_ki, line 408 */ + if (ret < 0) return ret; + } + goto lab0; + lab42: + z->c = z->l - m1; + z->ket = z->c; /* [, line 410 */ + { int m12 = z->l - z->c; (void)m12; /* or, line 410 */ + { int ret = r_mark_DA(z); + if (ret == 0) goto lab45; /* call mark_DA, line 410 */ + if (ret < 0) return ret; + } + goto lab44; + lab45: + z->c = z->l - m12; + { int ret = r_mark_yU(z); + if (ret == 0) goto lab46; /* call mark_yU, line 410 */ + if (ret < 0) return ret; + } + goto lab44; + lab46: + z->c = z->l - m12; + { int ret = r_mark_yA(z); + if (ret == 0) goto lab43; /* call mark_yA, line 410 */ + if (ret < 0) return ret; + } + } + lab44: + z->bra = z->c; /* ], line 410 */ + { int ret = slice_del(z); /* delete, line 410 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 410 */ + z->ket = z->c; /* [, line 410 */ + { int m13 = z->l - z->c; (void)m13; /* or, line 410 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab49; /* call mark_possessives, line 410 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 410 */ + { int ret = slice_del(z); /* delete, line 410 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 410 */ + z->ket = z->c; /* [, line 410 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab50; } /* call mark_lAr, line 410 */ + if (ret < 0) return ret; + } + lab50: + ; + } + goto lab48; + lab49: + z->c = z->l - m13; + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab47; } /* call mark_lAr, line 410 */ + if (ret < 0) return ret; + } + } + lab48: + z->bra = z->c; /* ], line 410 */ + { int ret = slice_del(z); /* delete, line 410 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 410 */ + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab47; } /* call stem_suffix_chain_before_ki, line 410 */ + if (ret < 0) return ret; + } + lab47: + ; + } + goto lab0; + lab43: + z->c = z->l - m1; + z->ket = z->c; /* [, line 412 */ + { int m14 = z->l - z->c; (void)m14; /* or, line 412 */ + { int ret = r_mark_possessives(z); + if (ret == 0) goto lab52; /* call mark_possessives, line 412 */ + if (ret < 0) return ret; + } + goto lab51; + lab52: + z->c = z->l - m14; + { int ret = r_mark_sU(z); + if (ret == 0) return 0; /* call mark_sU, line 412 */ + if (ret < 0) return ret; + } + } + lab51: + z->bra = z->c; /* ], line 412 */ + { int ret = slice_del(z); /* delete, line 412 */ + if (ret < 0) return ret; + } + { int m_keep = z->l - z->c;/* (void) m_keep;*/ /* try, line 412 */ + z->ket = z->c; /* [, line 412 */ + { int ret = r_mark_lAr(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab53; } /* call mark_lAr, line 412 */ + if (ret < 0) return ret; + } + z->bra = z->c; /* ], line 412 */ + { int ret = slice_del(z); /* delete, line 412 */ + if (ret < 0) return ret; + } + { int ret = r_stem_suffix_chain_before_ki(z); + if (ret == 0) { z->c = z->l - m_keep; goto lab53; } /* call stem_suffix_chain_before_ki, line 412 */ + if (ret < 0) return ret; + } + lab53: + ; + } + } +lab0: + return 1; +} + +static int r_post_process_last_consonants(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 416 */ + among_var = find_among_b(z, a_23, 4); /* substring, line 416 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 416 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = slice_from_s(z, 1, s_16); /* <-, line 417 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = slice_from_s(z, 2, s_17); /* <-, line 418 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret = slice_from_s(z, 1, s_18); /* <-, line 419 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret = slice_from_s(z, 1, s_19); /* <-, line 420 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_append_U_to_stems_ending_with_d_or_g(struct SN_env * z) { + { int m_test = z->l - z->c; /* test, line 431 */ + { int m1 = z->l - z->c; (void)m1; /* or, line 431 */ + if (!(eq_s_b(z, 1, s_20))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m1; + if (!(eq_s_b(z, 1, s_21))) return 0; + } + lab0: + z->c = z->l - m_test; + } + { int m2 = z->l - z->c; (void)m2; /* or, line 433 */ + { int m_test = z->l - z->c; /* test, line 432 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab3; /* goto */ /* grouping vowel, line 432 */ + { int m3 = z->l - z->c; (void)m3; /* or, line 432 */ + if (!(eq_s_b(z, 1, s_22))) goto lab5; + goto lab4; + lab5: + z->c = z->l - m3; + if (!(eq_s_b(z, 2, s_23))) goto lab3; + } + lab4: + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 2, s_24); /* <+, line 432 */ + z->c = c_keep; + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = z->l - m2; + { int m_test = z->l - z->c; /* test, line 434 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab6; /* goto */ /* grouping vowel, line 434 */ + { int m4 = z->l - z->c; (void)m4; /* or, line 434 */ + if (!(eq_s_b(z, 1, s_25))) goto lab8; + goto lab7; + lab8: + z->c = z->l - m4; + if (!(eq_s_b(z, 1, s_26))) goto lab6; + } + lab7: + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_27); /* <+, line 434 */ + z->c = c_keep; + if (ret < 0) return ret; + } + goto lab2; + lab6: + z->c = z->l - m2; + { int m_test = z->l - z->c; /* test, line 436 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) goto lab9; /* goto */ /* grouping vowel, line 436 */ + { int m5 = z->l - z->c; (void)m5; /* or, line 436 */ + if (!(eq_s_b(z, 1, s_28))) goto lab11; + goto lab10; + lab11: + z->c = z->l - m5; + if (!(eq_s_b(z, 1, s_29))) goto lab9; + } + lab10: + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 1, s_30); /* <+, line 436 */ + z->c = c_keep; + if (ret < 0) return ret; + } + goto lab2; + lab9: + z->c = z->l - m2; + { int m_test = z->l - z->c; /* test, line 438 */ + if (out_grouping_b_U(z, g_vowel, 97, 305, 1) < 0) return 0; /* goto */ /* grouping vowel, line 438 */ + { int m6 = z->l - z->c; (void)m6; /* or, line 438 */ + if (!(eq_s_b(z, 2, s_31))) goto lab13; + goto lab12; + lab13: + z->c = z->l - m6; + if (!(eq_s_b(z, 2, s_32))) return 0; + } + lab12: + z->c = z->l - m_test; + } + { int c_keep = z->c; + int ret = insert_s(z, z->c, z->c, 2, s_33); /* <+, line 438 */ + z->c = c_keep; + if (ret < 0) return ret; + } + } +lab2: + return 1; +} + +static int r_more_than_one_syllable_word(struct SN_env * z) { + { int c_test = z->c; /* test, line 446 */ + { int i = 2; + while(1) { /* atleast, line 446 */ + int c1 = z->c; + { /* gopast */ /* grouping vowel, line 446 */ + int ret = out_grouping_U(z, g_vowel, 97, 305, 1); + if (ret < 0) goto lab0; + z->c += ret; + } + i--; + continue; + lab0: + z->c = c1; + break; + } + if (i > 0) return 0; + } + z->c = c_test; + } + return 1; +} + +static int r_is_reserved_word(struct SN_env * z) { + { int c1 = z->c; /* or, line 451 */ + { int c_test = z->c; /* test, line 450 */ + while(1) { /* gopast, line 450 */ + if (!(eq_s(z, 2, s_34))) goto lab2; + break; + lab2: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) goto lab1; + z->c = ret; /* gopast, line 450 */ + } + } + z->I[0] = 2; + if (!(z->I[0] == z->l)) goto lab1; + z->c = c_test; + } + goto lab0; + lab1: + z->c = c1; + { int c_test = z->c; /* test, line 452 */ + while(1) { /* gopast, line 452 */ + if (!(eq_s(z, 5, s_35))) goto lab3; + break; + lab3: + { int ret = skip_utf8(z->p, z->c, 0, z->l, 1); + if (ret < 0) return 0; + z->c = ret; /* gopast, line 452 */ + } + } + z->I[0] = 5; + if (!(z->I[0] == z->l)) return 0; + z->c = c_test; + } + } +lab0: + return 1; +} + +static int r_postlude(struct SN_env * z) { + { int c1 = z->c; /* not, line 456 */ + { int ret = r_is_reserved_word(z); + if (ret == 0) goto lab0; /* call is_reserved_word, line 456 */ + if (ret < 0) return ret; + } + return 0; + lab0: + z->c = c1; + } + z->lb = z->c; z->c = z->l; /* backwards, line 457 */ + + { int m2 = z->l - z->c; (void)m2; /* do, line 458 */ + { int ret = r_append_U_to_stems_ending_with_d_or_g(z); + if (ret == 0) goto lab1; /* call append_U_to_stems_ending_with_d_or_g, line 458 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + { int m3 = z->l - z->c; (void)m3; /* do, line 459 */ + { int ret = r_post_process_last_consonants(z); + if (ret == 0) goto lab2; /* call post_process_last_consonants, line 459 */ + if (ret < 0) return ret; + } + lab2: + z->c = z->l - m3; + } + z->c = z->lb; + return 1; +} + +extern int turkish_UTF_8_stem(struct SN_env * z) { + { int ret = r_more_than_one_syllable_word(z); + if (ret == 0) return 0; /* call more_than_one_syllable_word, line 465 */ + if (ret < 0) return ret; + } + z->lb = z->c; z->c = z->l; /* backwards, line 467 */ + + { int m1 = z->l - z->c; (void)m1; /* do, line 468 */ + { int ret = r_stem_nominal_verb_suffixes(z); + if (ret == 0) goto lab0; /* call stem_nominal_verb_suffixes, line 468 */ + if (ret < 0) return ret; + } + lab0: + z->c = z->l - m1; + } + if (!(z->B[0])) return 0; /* Boolean test continue_stemming_noun_suffixes, line 469 */ + { int m2 = z->l - z->c; (void)m2; /* do, line 470 */ + { int ret = r_stem_noun_suffixes(z); + if (ret == 0) goto lab1; /* call stem_noun_suffixes, line 470 */ + if (ret < 0) return ret; + } + lab1: + z->c = z->l - m2; + } + z->c = z->lb; + { int ret = r_postlude(z); + if (ret == 0) return 0; /* call postlude, line 473 */ + if (ret < 0) return ret; + } + return 1; +} + +extern struct SN_env * turkish_UTF_8_create_env(void) { return SN_create_env(0, 1, 1); } + +extern void turkish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); } + diff --git a/src_c/stem_UTF_8_turkish.h b/src_c/stem_UTF_8_turkish.h new file mode 100644 index 0000000..8173a17 --- /dev/null +++ b/src_c/stem_UTF_8_turkish.h @@ -0,0 +1,16 @@ + +/* This file was generated automatically by the Snowball to ANSI C compiler */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * turkish_UTF_8_create_env(void); +extern void turkish_UTF_8_close_env(struct SN_env * z); + +extern int turkish_UTF_8_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif + diff --git a/stemwords b/stemwords new file mode 100755 index 0000000000000000000000000000000000000000..53a7c551622f41b96d328fc15b22273777433956 GIT binary patch literal 506016 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%0Df@Pgh*m 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