should be it

This commit is contained in:
2025-10-24 19:21:19 -05:00
parent a4b23fc57c
commit f09560c7b1
14047 changed files with 3161551 additions and 1 deletions

View File

@@ -0,0 +1,52 @@
cmake_minimum_required(VERSION 2.8.12...3.29)
project(Snowball)
# cmake_policy(SET CMP0063 NEW)
include_directories(libstemmer runtime src_c)
add_library(
snowball STATIC
libstemmer/libstemmer.c
runtime/utilities.c
runtime/api.c
src_c/stem_UTF_8_arabic.c
src_c/stem_UTF_8_basque.c
src_c/stem_UTF_8_catalan.c
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_german2.c
src_c/stem_UTF_8_greek.c
src_c/stem_UTF_8_hindi.c
src_c/stem_UTF_8_hungarian.c
src_c/stem_UTF_8_indonesian.c
src_c/stem_UTF_8_irish.c
src_c/stem_UTF_8_italian.c
src_c/stem_UTF_8_kraaij_pohlmann.c
src_c/stem_UTF_8_lithuanian.c
src_c/stem_UTF_8_lovins.c
src_c/stem_UTF_8_nepali.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_serbian.c
src_c/stem_UTF_8_spanish.c
src_c/stem_UTF_8_swedish.c
src_c/stem_UTF_8_tamil.c
src_c/stem_UTF_8_turkish.c)
target_include_directories(
snowball PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
install(
TARGETS snowball
EXPORT "${DUCKDB_EXPORT_SET}"
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}")

View File

@@ -0,0 +1,29 @@
Copyright (c) 2001, Dr Martin Porter
Copyright (c) 2004,2005, Richard Boulton
Copyright (c) 2013, Yoshiki Shibukawa
Copyright (c) 2006,2007,2009,2010,2011,2014-2019, Olly Betts
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the Snowball project nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,96 @@
#include <stdlib.h>
#include <string.h>
#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)
{
const 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;
const 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) {
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;
}

View File

@@ -0,0 +1,78 @@
/* 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" (i.e. Latin 1),
* "ISO_8859_2" (i.e. Latin 2) 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

View File

@@ -0,0 +1,182 @@
/* 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: arabic, basque, catalan, danish, dutch,
* english, finnish, french, german, greek, hindi, hungarian, indonesian,
* irish, italian, lithuanian, nepali, norwegian, porter, portuguese,
* romanian, russian, serbian, spanish, swedish, tamil, turkish
*/
#include "../src_c/stem_UTF_8_arabic.h"
#include "../src_c/stem_UTF_8_basque.h"
#include "../src_c/stem_UTF_8_catalan.h"
#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_greek.h"
#include "../src_c/stem_UTF_8_hindi.h"
#include "../src_c/stem_UTF_8_hungarian.h"
#include "../src_c/stem_UTF_8_indonesian.h"
#include "../src_c/stem_UTF_8_irish.h"
#include "../src_c/stem_UTF_8_italian.h"
#include "../src_c/stem_UTF_8_lithuanian.h"
#include "../src_c/stem_UTF_8_nepali.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_serbian.h"
#include "../src_c/stem_UTF_8_spanish.h"
#include "../src_c/stem_UTF_8_swedish.h"
#include "../src_c/stem_UTF_8_tamil.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 const 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 const struct stemmer_modules modules[] = {
{"ar", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"ara", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"arabic", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"baq", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"basque", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"ca", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"cat", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"catalan", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"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},
{"el", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"ell", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_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},
{"eu", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"eus", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_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},
{"ga", ENC_UTF_8, irish_UTF_8_create_env, irish_UTF_8_close_env, irish_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},
{"gle", ENC_UTF_8, irish_UTF_8_create_env, irish_UTF_8_close_env, irish_UTF_8_stem},
{"gre", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"greek", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"hi", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_UTF_8_stem},
{"hin", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_UTF_8_stem},
{"hindi", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_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},
{"id", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"ind", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"indonesian", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"irish", ENC_UTF_8, irish_UTF_8_create_env, irish_UTF_8_close_env, irish_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},
{"lit", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"lithuanian", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"lt", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"ne", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_UTF_8_stem},
{"nep", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_UTF_8_stem},
{"nepali", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_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},
{"serbian", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_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},
{"sr", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_UTF_8_stem},
{"srp", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_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},
{"ta", ENC_UTF_8, tamil_UTF_8_create_env, tamil_UTF_8_close_env, tamil_UTF_8_stem},
{"tam", ENC_UTF_8, tamil_UTF_8_create_env, tamil_UTF_8_close_env, tamil_UTF_8_stem},
{"tamil", ENC_UTF_8, tamil_UTF_8_create_env, tamil_UTF_8_close_env, tamil_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[] = {
"arabic",
"basque",
"catalan",
"danish",
"dutch",
"english",
"finnish",
"french",
"german",
"greek",
"hindi",
"hungarian",
"indonesian",
"irish",
"italian",
"lithuanian",
"nepali",
"norwegian",
"porter",
"portuguese",
"romanian",
"russian",
"serbian",
"spanish",
"swedish",
"tamil",
"turkish",
0
};

View File

@@ -0,0 +1,58 @@
#include <stdlib.h> /* for calloc, free */
#include "header.h"
extern struct SN_env * SN_create_env(int S_size, int I_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;
}
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);
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;
}

View File

@@ -0,0 +1,32 @@
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;
};
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * SN_create_env(int S_size, int I_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);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,59 @@
#include <limits.h>
#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 int len_utf8(const symbol * p);
extern void debug(struct SN_env * z, int number, int line_count);

View File

@@ -0,0 +1,503 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "header.h"
#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, 0);
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 -1 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, b2;
if (c >= l) return 0;
b0 = p[c++];
if (b0 < 0xC0 || c == l) { /* 1100 0000 */
*slot = b0;
return 1;
}
b1 = p[c++] & 0x3F;
if (b0 < 0xE0 || c == l) { /* 1110 0000 */
*slot = (b0 & 0x1F) << 6 | b1;
return 2;
}
b2 = p[c++] & 0x3F;
if (b0 < 0xF0 || c == l) { /* 1111 0000 */
*slot = (b0 & 0xF) << 12 | b1 << 6 | b2;
return 3;
}
*slot = (b0 & 0xE) << 18 | b1 << 12 | b2 << 6 | (p[c] & 0x3F);
return 4;
}
static int get_b_utf8(const symbol * p, int c, int lb, int * slot) {
int a, b;
if (c <= lb) return 0;
b = p[--c];
if (b < 0x80 || c == lb) { /* 1000 0000 */
*slot = b;
return 1;
}
a = b & 0x3F;
b = p[--c];
if (b >= 0xC0 || c == lb) { /* 1100 0000 */
*slot = (b & 0x1F) << 6 | a;
return 2;
}
a |= (b & 0x3F) << 6;
b = p[--c];
if (b >= 0xE0 || c == lb) { /* 1110 0000 */
*slot = (b & 0xF) << 12 | a;
return 3;
}
*slot = (p[--c] & 0xE) << 18 | (b & 0x3F) << 12 | a;
return 4;
}
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);
if (!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);
if (!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);
if (!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_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);
if (!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;
}
/* 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];
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_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 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;
const 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;
const 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;
}
if (s_size) 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) {
return insert_s(z, bra, ket, SIZE(p), p);
}
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;
}
extern int len_utf8(const symbol * p) {
int size = SIZE(p);
int len = 0;
while (size--) {
symbol b = *p++;
if (b >= 0xC0 || b < 0x80) ++len;
}
return len;
}
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * arabic_UTF_8_create_env(void);
extern void arabic_UTF_8_close_env(struct SN_env * z);
extern int arabic_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * basque_UTF_8_create_env(void);
extern void basque_UTF_8_close_env(struct SN_env * z);
extern int basque_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * catalan_UTF_8_create_env(void);
extern void catalan_UTF_8_close_env(struct SN_env * z);
extern int catalan_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,318 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 3, s_0_0, -1, 1, 0},
{ 5, s_0_1, 0, 1, 0},
{ 4, s_0_2, -1, 1, 0},
{ 1, s_0_3, -1, 1, 0},
{ 5, s_0_4, 3, 1, 0},
{ 4, s_0_5, 3, 1, 0},
{ 6, s_0_6, 5, 1, 0},
{ 3, s_0_7, 3, 1, 0},
{ 4, s_0_8, 3, 1, 0},
{ 3, s_0_9, 3, 1, 0},
{ 2, s_0_10, -1, 1, 0},
{ 5, s_0_11, 10, 1, 0},
{ 4, s_0_12, 10, 1, 0},
{ 2, s_0_13, -1, 1, 0},
{ 5, s_0_14, 13, 1, 0},
{ 4, s_0_15, 13, 1, 0},
{ 1, s_0_16, -1, 2, 0},
{ 4, s_0_17, 16, 1, 0},
{ 2, s_0_18, 16, 1, 0},
{ 5, s_0_19, 18, 1, 0},
{ 7, s_0_20, 19, 1, 0},
{ 4, s_0_21, 18, 1, 0},
{ 5, s_0_22, 18, 1, 0},
{ 4, s_0_23, 18, 1, 0},
{ 3, s_0_24, 16, 1, 0},
{ 6, s_0_25, 24, 1, 0},
{ 5, s_0_26, 24, 1, 0},
{ 3, s_0_27, 16, 1, 0},
{ 3, s_0_28, 16, 1, 0},
{ 5, s_0_29, 28, 1, 0},
{ 2, s_0_30, -1, 1, 0},
{ 4, s_0_31, 30, 1, 0}
};
static const symbol s_1_0[2] = { 'g', 'd' };
static const symbol s_1_1[2] = { 'd', 't' };
static const symbol s_1_2[2] = { 'g', 't' };
static const symbol s_1_3[2] = { 'k', 't' };
static const struct among a_1[4] =
{
{ 2, s_1_0, -1, -1, 0},
{ 2, s_1_1, -1, -1, 0},
{ 2, s_1_2, -1, -1, 0},
{ 2, s_1_3, -1, -1, 0}
};
static const 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] =
{
{ 2, s_2_0, -1, 1, 0},
{ 3, s_2_1, 0, 1, 0},
{ 4, s_2_2, 1, 1, 0},
{ 3, s_2_3, -1, 1, 0},
{ 5, s_2_4, -1, 2, 0}
};
static const unsigned char g_c[] = { 119, 223, 119, 1 };
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[1] = z->l;
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0;
{
int ret = in_grouping_U(z, g_v, 97, 248, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
if (!(z->I[1] < z->I[0])) goto lab0;
z->I[1] = z->I[0];
lab0:
return 1;
}
static int r_main_suffix(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 32);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
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);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_consonant_pair(struct SN_env * z) {
{ int m_test1 = z->l - z->c;
{ int mlimit2;
if (z->c < z->I[1]) return 0;
mlimit2 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; }
if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; }
z->bra = z->c;
z->lb = mlimit2;
}
z->c = z->l - m_test1;
}
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
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;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_0))) goto lab0;
z->bra = z->c;
if (!(eq_s_b(z, 2, s_1))) goto lab0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab0:
z->c = z->l - m1;
}
{ int mlimit2;
if (z->c < z->I[1]) return 0;
mlimit2 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; }
among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit2; return 0; }
z->bra = z->c;
z->lb = mlimit2;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
break;
case 2:
{ int ret = slice_from_s(z, 4, s_2);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_undouble(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (in_grouping_b_U(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->S[0] = slice_to(z, z->S[0]);
if (z->S[0] == 0) return -1;
z->lb = mlimit1;
}
if (!(eq_v_b(z, z->S[0]))) return 0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int danish_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_undouble(z);
if (ret < 0) return ret;
}
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); }
extern void danish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 1); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,613 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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, -1, 6, 0},
{ 2, s_0_1, 0, 1, 0},
{ 2, s_0_2, 0, 1, 0},
{ 2, s_0_3, 0, 2, 0},
{ 2, s_0_4, 0, 2, 0},
{ 2, s_0_5, 0, 3, 0},
{ 2, s_0_6, 0, 3, 0},
{ 2, s_0_7, 0, 4, 0},
{ 2, s_0_8, 0, 4, 0},
{ 2, s_0_9, 0, 5, 0},
{ 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, -1, 3, 0},
{ 1, s_1_1, 0, 2, 0},
{ 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] =
{
{ 2, s_2_0, -1, -1, 0},
{ 2, s_2_1, -1, -1, 0},
{ 2, s_2_2, -1, -1, 0}
};
static const symbol s_3_0[3] = { 'e', 'n', 'e' };
static const symbol s_3_1[2] = { 's', 'e' };
static const symbol s_3_2[2] = { 'e', 'n' };
static const symbol s_3_3[5] = { 'h', 'e', 'd', 'e', 'n' };
static const symbol s_3_4[1] = { 's' };
static const struct among a_3[5] =
{
{ 3, s_3_0, -1, 2, 0},
{ 2, s_3_1, -1, 3, 0},
{ 2, s_3_2, -1, 2, 0},
{ 5, s_3_3, 2, 1, 0},
{ 1, s_3_4, -1, 3, 0}
};
static const symbol s_4_0[3] = { 'e', 'n', 'd' };
static const symbol s_4_1[2] = { 'i', 'g' };
static const symbol s_4_2[3] = { 'i', 'n', 'g' };
static const symbol s_4_3[4] = { 'l', 'i', 'j', 'k' };
static const symbol s_4_4[4] = { 'b', 'a', 'a', 'r' };
static const symbol s_4_5[3] = { 'b', 'a', 'r' };
static const struct among a_4[6] =
{
{ 3, s_4_0, -1, 1, 0},
{ 2, s_4_1, -1, 2, 0},
{ 3, s_4_2, -1, 1, 0},
{ 4, s_4_3, -1, 3, 0},
{ 4, s_4_4, -1, 4, 0},
{ 3, s_4_5, -1, 5, 0}
};
static const symbol s_5_0[2] = { 'a', 'a' };
static const symbol s_5_1[2] = { 'e', 'e' };
static const symbol s_5_2[2] = { 'o', 'o' };
static const symbol s_5_3[2] = { 'u', 'u' };
static const struct among a_5[4] =
{
{ 2, s_5_0, -1, -1, 0},
{ 2, s_5_1, -1, -1, 0},
{ 2, s_5_2, -1, -1, 0},
{ 2, s_5_3, -1, -1, 0}
};
static const 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[] = { 'I' };
static const symbol s_7[] = { 'Y' };
static const symbol s_8[] = { 'y' };
static const symbol s_9[] = { 'i' };
static const symbol s_10[] = { 'g', 'e', 'm' };
static const symbol s_11[] = { 'h', 'e', 'i', 'd' };
static const symbol s_12[] = { 'h', 'e', 'i', 'd' };
static const symbol s_13[] = { 'e', 'n' };
static const symbol s_14[] = { 'i', 'g' };
static int r_prelude(struct SN_env * z) {
int among_var;
{ int c_test1 = z->c;
while(1) {
int c2 = z->c;
z->bra = z->c;
if (z->c + 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);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
break;
}
continue;
lab0:
z->c = c2;
break;
}
z->c = c_test1;
}
{ int c3 = z->c;
z->bra = z->c;
if (z->c == z->l || z->p[z->c] != 'y') { z->c = c3; goto lab1; }
z->c++;
z->ket = z->c;
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
lab1:
;
}
while(1) {
int c4 = z->c;
while(1) {
int c5 = z->c;
if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab3;
z->bra = z->c;
{ int c6 = z->c;
if (z->c == z->l || z->p[z->c] != 'i') goto lab5;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 232, 0)) goto lab5;
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = c6;
if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
z->c++;
z->ket = z->c;
{ int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
}
lab4:
z->c = c5;
break;
lab3:
z->c = c5;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab2;
z->c = ret;
}
}
continue;
lab2:
z->c = c4;
break;
}
return 1;
}
static int r_mark_regions(struct SN_env * z) {
z->I[1] = z->l;
z->I[0] = z->l;
{
int ret = out_grouping_U(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
if (!(z->I[1] < 3)) goto lab0;
z->I[1] = 3;
lab0:
{
int ret = out_grouping_U(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 232, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[0] = z->c;
return 1;
}
static int r_postlude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 89)) among_var = 3; else
among_var = find_among(z, a_1, 3);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
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[0] <= z->c)) return 0;
return 1;
}
static int r_undouble(struct SN_env * z) {
{ int m_test1 = z->l - z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1050640 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_2, 3))) return 0;
z->c = z->l - m_test1;
}
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_e_ending(struct SN_env * z) {
z->I[2] = 0;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int m_test1 = z->l - z->c;
if (out_grouping_b_U(z, g_v, 97, 232, 0)) return 0;
z->c = z->l - m_test1;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[2] = 1;
{ int ret = r_undouble(z);
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 ret;
}
{ int m1 = z->l - z->c; (void)m1;
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;
if (!(eq_s_b(z, 3, s_10))) goto lab0;
return 0;
lab0:
z->c = z->l - m2;
}
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int ret = r_undouble(z);
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;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((540704 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
among_var = find_among_b(z, a_3, 5);
if (!(among_var)) goto lab0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
{ int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = r_en_ending(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
if (out_grouping_b_U(z, g_v_j, 97, 232, 0)) goto lab0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab0:
z->c = z->l - m1;
}
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_e_ending(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
z->ket = z->c;
if (!(eq_s_b(z, 4, s_12))) goto lab1;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
{ int m4 = z->l - z->c; (void)m4;
if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab2;
z->c--;
goto lab1;
lab2:
z->c = z->l - m4;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->ket = z->c;
if (!(eq_s_b(z, 2, s_13))) goto lab1;
z->bra = z->c;
{ int ret = r_en_ending(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
lab1:
z->c = z->l - m3;
}
{ int m5 = z->l - z->c; (void)m5;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((264336 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
among_var = find_among_b(z, a_4, 6);
if (!(among_var)) goto lab3;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m6 = z->l - z->c; (void)m6;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_14))) goto lab5;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
{ int m7 = z->l - z->c; (void)m7;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
z->c--;
goto lab5;
lab6:
z->c = z->l - m7;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = z->l - m6;
{ int ret = r_undouble(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
}
lab4:
break;
case 2:
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
{ int m8 = z->l - z->c; (void)m8;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab7;
z->c--;
goto lab3;
lab7:
z->c = z->l - m8;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int ret = r_e_ending(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
if (!(z->I[2])) goto lab3;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab3:
z->c = z->l - m5;
}
{ int m9 = z->l - z->c; (void)m9;
if (out_grouping_b_U(z, g_v_I, 73, 232, 0)) goto lab8;
{ int m_test10 = z->l - z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2129954 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab8;
if (!(find_among_b(z, a_5, 4))) goto lab8;
if (out_grouping_b_U(z, g_v, 97, 232, 0)) goto lab8;
z->c = z->l - m_test10;
}
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) goto lab8;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab8:
z->c = z->l - m9;
}
return 1;
}
extern int dutch_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int c2 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c2;
}
z->lb = z->c; z->c = z->l;
{ int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->lb;
{ int c3 = z->c;
{ int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c3;
}
return 1;
}
extern struct SN_env * dutch_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void dutch_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,722 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 2, s_0_0, -1, 1, 0},
{ 3, s_0_1, -1, 2, 0},
{ 4, s_0_2, -1, 1, 0},
{ 3, s_0_3, -1, 1, 0},
{ 3, s_0_4, -1, 1, 0},
{ 4, s_0_5, -1, 1, 0},
{ 6, s_0_6, -1, 1, 0},
{ 2, s_0_7, -1, 1, 0},
{ 3, s_0_8, -1, 1, 0},
{ 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] =
{
{ 3, s_1_0, -1, -1, 0},
{ 2, s_1_1, -1, -1, 0},
{ 3, s_1_2, -1, -1, 0},
{ 2, s_1_3, -1, -1, 0},
{ 3, s_1_4, 3, -1, 0},
{ 3, s_1_5, 3, -1, 0}
};
static const 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] =
{
{ 4, s_2_0, -1, -1, 0},
{ 3, s_2_1, -1, -1, 0},
{ 4, s_2_2, -1, -1, 0},
{ 3, s_2_3, -1, -1, 0},
{ 4, s_2_4, 3, -1, 0},
{ 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] =
{
{ 3, s_3_0, -1, -1, 0},
{ 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] =
{
{ 3, s_4_0, -1, 3, 0},
{ 3, s_4_1, -1, 3, 0},
{ 3, s_4_2, -1, 3, 0},
{ 2, s_4_3, -1, 2, 0},
{ 2, s_4_4, -1, 1, 0},
{ 2, s_4_5, -1, 4, 0},
{ 2, s_4_6, -1, 6, 0},
{ 3, s_4_7, -1, 5, 0},
{ 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] =
{
{ 2, s_5_0, -1, -1, 0},
{ 2, s_5_1, -1, -1, 0},
{ 2, s_5_2, -1, -1, 0},
{ 2, s_5_3, -1, -1, 0},
{ 2, s_5_4, -1, -1, 0},
{ 4, s_5_5, -1, -1, 0},
{ 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] =
{
{ 1, s_6_0, -1, 8, 0},
{ 3, s_6_1, 0, -1, 0},
{ 2, s_6_2, 0, -1, 0},
{ 3, s_6_3, 0, -1, 0},
{ 2, s_6_4, 0, -1, 0},
{ 3, s_6_5, 4, -1, 0},
{ 3, s_6_6, 4, -1, 0},
{ 3, s_6_7, 4, 2, 0},
{ 3, s_6_8, -1, -1, 0},
{ 3, s_6_9, -1, -1, 0},
{ 3, s_6_10, -1, -1, 0},
{ 1, s_6_11, -1, 7, 0},
{ 3, s_6_12, 11, 1, 0},
{ 3, s_6_13, 11, -1, r_VI},
{ 4, s_6_14, 11, -1, r_LONG},
{ 3, s_6_15, 11, 2, 0},
{ 4, s_6_16, 11, -1, r_VI},
{ 3, s_6_17, 11, 3, 0},
{ 4, s_6_18, 11, -1, r_VI},
{ 3, s_6_19, 11, 4, 0},
{ 4, s_6_20, 11, 5, 0},
{ 4, s_6_21, 11, 6, 0},
{ 2, s_6_22, -1, 8, 0},
{ 4, s_6_23, 22, -1, 0},
{ 3, s_6_24, 22, -1, 0},
{ 4, s_6_25, 22, -1, 0},
{ 3, s_6_26, 22, -1, 0},
{ 4, s_6_27, 26, -1, 0},
{ 4, s_6_28, 26, -1, 0},
{ 4, s_6_29, 26, 2, 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] =
{
{ 3, s_7_0, -1, -1, 0},
{ 3, s_7_1, -1, 1, 0},
{ 4, s_7_2, 1, -1, 0},
{ 3, s_7_3, -1, 1, 0},
{ 4, s_7_4, 3, -1, 0},
{ 3, s_7_5, -1, 1, 0},
{ 4, s_7_6, 5, -1, 0},
{ 3, s_7_7, -1, 1, 0},
{ 4, s_7_8, 7, -1, 0},
{ 4, s_7_9, -1, -1, 0},
{ 4, s_7_10, -1, 1, 0},
{ 5, s_7_11, 10, -1, 0},
{ 4, s_7_12, -1, 1, 0},
{ 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] =
{
{ 1, s_8_0, -1, -1, 0},
{ 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] =
{
{ 3, s_9_0, -1, 1, 0},
{ 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_C[] = { 119, 223, 119, 1 };
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', 's', 'e' };
static const symbol s_1[] = { 'k', 's', 'i' };
static const symbol s_2[] = { 0xC3, 0xA4 };
static const symbol s_3[] = { 0xC3, 0xB6 };
static const symbol s_4[] = { 'i', 'e' };
static const symbol s_5[] = { 'p', 'o' };
static const symbol s_6[] = { 'p', 'o' };
static int r_mark_regions(struct SN_env * z) {
z->I[1] = z->l;
z->I[0] = z->l;
if (out_grouping_U(z, g_V1, 97, 246, 1) < 0) return 0;
{
int ret = in_grouping_U(z, g_V1, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
if (out_grouping_U(z, g_V1, 97, 246, 1) < 0) return 0;
{
int ret = in_grouping_U(z, g_V1, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[0] = z->c;
return 1;
}
static int r_R2(struct SN_env * z) {
if (!(z->I[0] <= z->c)) return 0;
return 1;
}
static int r_particle_etc(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
among_var = find_among_b(z, a_0, 10);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
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 ret;
}
break;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_possessive(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
among_var = find_among_b(z, a_4, 9);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
{ int m2 = z->l - z->c; (void)m2;
if (z->c <= z->lb || z->p[z->c - 1] != 'k') goto lab0;
z->c--;
return 0;
lab0:
z->c = z->l - m2;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->ket = z->c;
if (!(eq_s_b(z, 3, s_0))) return 0;
z->bra = z->c;
{ int ret = slice_from_s(z, 3, s_1);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 4:
if (z->c - 1 <= z->lb || z->p[z->c - 1] != 97) return 0;
if (!(find_among_b(z, a_1, 6))) return 0;
{ int ret = slice_del(z);
if (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;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 6:
if (z->c - 2 <= z->lb || z->p[z->c - 1] != 101) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
{ int ret = slice_del(z);
if (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;
return 1;
}
static int r_VI(struct SN_env * z) {
if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
if (in_grouping_b_U(z, g_V2, 97, 246, 0)) return 0;
return 1;
}
static int r_case_ending(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
among_var = find_among_b(z, a_6, 30);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
if (z->c <= z->lb || z->p[z->c - 1] != 'a') return 0;
z->c--;
break;
case 2:
if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
break;
case 3:
if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
break;
case 4:
if (z->c <= z->lb || z->p[z->c - 1] != 'o') return 0;
z->c--;
break;
case 5:
if (!(eq_s_b(z, 2, s_2))) return 0;
break;
case 6:
if (!(eq_s_b(z, 2, s_3))) return 0;
break;
case 7:
{ int m2 = z->l - z->c; (void)m2;
{ int m3 = z->l - z->c; (void)m3;
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_LONG(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = z->l - m4;
if (!(eq_s_b(z, 2, s_4))) { z->c = z->l - m2; goto lab0; }
}
lab1:
z->c = z->l - m3;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) { z->c = z->l - m2; goto lab0; }
z->c = ret;
}
}
z->bra = z->c;
lab0:
;
}
break;
case 8:
if (in_grouping_b_U(z, g_V1, 97, 246, 0)) return 0;
if (in_grouping_b_U(z, g_C, 98, 122, 0)) return 0;
break;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[2] = 1;
return 1;
}
static int r_other_endings(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c;
among_var = find_among_b(z, a_7, 14);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
{ int m2 = z->l - z->c; (void)m2;
if (!(eq_s_b(z, 2, s_5))) goto lab0;
return 0;
lab0:
z->c = z->l - m2;
}
break;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_i_plural(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 106)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_8, 2))) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_t_plural(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit1; return 0; }
z->c--;
z->bra = z->c;
{ int m_test2 = z->l - z->c;
if (in_grouping_b_U(z, g_V1, 97, 246, 0)) { z->lb = mlimit1; return 0; }
z->c = z->l - m_test2;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
}
{ int mlimit3;
if (z->c < z->I[0]) return 0;
mlimit3 = z->lb; z->lb = z->I[0];
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] != 97) { z->lb = mlimit3; return 0; }
among_var = find_among_b(z, a_9, 2);
if (!(among_var)) { z->lb = mlimit3; return 0; }
z->bra = z->c;
z->lb = mlimit3;
}
switch (among_var) {
case 1:
{ int m4 = z->l - z->c; (void)m4;
if (!(eq_s_b(z, 2, s_6))) goto lab0;
return 0;
lab0:
z->c = z->l - m4;
}
break;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_tidy(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
{ int m2 = z->l - z->c; (void)m2;
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_LONG(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
z->c = z->l - m3;
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) goto lab0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab0:
z->c = z->l - m2;
}
{ int m4 = z->l - z->c; (void)m4;
z->ket = z->c;
if (in_grouping_b_U(z, g_AEI, 97, 228, 0)) goto lab1;
z->bra = z->c;
if (in_grouping_b_U(z, g_C, 98, 122, 0)) goto lab1;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
z->c = z->l - m4;
}
{ int m5 = z->l - z->c; (void)m5;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab2;
z->c--;
z->bra = z->c;
{ int m6 = z->l - z->c; (void)m6;
if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab4;
z->c--;
goto lab3;
lab4:
z->c = z->l - m6;
if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab2;
z->c--;
}
lab3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
z->c = z->l - m5;
}
{ int m7 = z->l - z->c; (void)m7;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'o') goto lab5;
z->c--;
z->bra = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'j') goto lab5;
z->c--;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab5:
z->c = z->l - m7;
}
z->lb = mlimit1;
}
if (in_grouping_b_U(z, g_V1, 97, 246, 1) < 0) return 0;
z->ket = z->c;
if (in_grouping_b_U(z, g_C, 98, 122, 0)) return 0;
z->bra = z->c;
z->S[0] = slice_to(z, z->S[0]);
if (z->S[0] == 0) return -1;
if (!(eq_v_b(z, z->S[0]))) return 0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int finnish_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
z->I[2] = 0;
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_particle_etc(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_possessive(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_case_ending(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_other_endings(z);
if (ret < 0) return ret;
}
z->c = z->l - m5;
}
if (!(z->I[2])) goto lab1;
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_i_plural(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
goto lab0;
lab1:
{ int m7 = z->l - z->c; (void)m7;
{ int ret = r_t_plural(z);
if (ret < 0) return ret;
}
z->c = z->l - m7;
}
lab0:
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_tidy(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * finnish_UTF_8_create_env(void) { return SN_create_env(1, 3); }
extern void finnish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 1); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,500 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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, -1, 5, 0},
{ 1, s_0_1, 0, 2, 0},
{ 1, s_0_2, 0, 1, 0},
{ 2, s_0_3, 0, 3, 0},
{ 2, s_0_4, 0, 4, 0},
{ 2, s_0_5, 0, 2, 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] =
{
{ 1, s_1_0, -1, 2, 0},
{ 2, s_1_1, -1, 1, 0},
{ 2, s_1_2, -1, 2, 0},
{ 3, s_1_3, -1, 1, 0},
{ 2, s_1_4, -1, 1, 0},
{ 1, s_1_5, -1, 3, 0},
{ 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] =
{
{ 2, s_2_0, -1, 1, 0},
{ 2, s_2_1, -1, 1, 0},
{ 2, s_2_2, -1, 2, 0},
{ 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] =
{
{ 2, s_3_0, -1, 1, 0},
{ 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] =
{
{ 3, s_4_0, -1, 1, 0},
{ 2, s_4_1, -1, 2, 0},
{ 3, s_4_2, -1, 1, 0},
{ 4, s_4_3, -1, 3, 0},
{ 4, s_4_4, -1, 2, 0},
{ 2, s_4_5, -1, 2, 0},
{ 4, s_4_6, -1, 3, 0},
{ 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[] = { 'Y' };
static const symbol s_4[] = { 'y' };
static const symbol s_5[] = { 'u' };
static const symbol s_6[] = { 'a' };
static const symbol s_7[] = { 'o' };
static const symbol s_8[] = { 'n', 'i', 's' };
static const symbol s_9[] = { 'i', 'g' };
static const symbol s_10[] = { 'e', 'r' };
static const symbol s_11[] = { 'e', 'n' };
static int r_prelude(struct SN_env * z) {
{ int c_test1 = z->c;
while(1) {
int c2 = z->c;
{ int c3 = z->c;
z->bra = z->c;
if (!(eq_s(z, 2, s_0))) goto lab2;
z->ket = z->c;
{ int ret = slice_from_s(z, 2, s_1);
if (ret < 0) return ret;
}
goto lab1;
lab2:
z->c = c3;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
}
lab1:
continue;
lab0:
z->c = c2;
break;
}
z->c = c_test1;
}
while(1) {
int c4 = z->c;
while(1) {
int c5 = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4;
z->bra = z->c;
{ int c6 = z->c;
if (z->c == z->l || z->p[z->c] != 'u') goto lab6;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab6;
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
goto lab5;
lab6:
z->c = c6;
if (z->c == z->l || z->p[z->c] != 'y') goto lab4;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab4;
{ int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
}
lab5:
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;
}
}
continue;
lab3:
z->c = c4;
break;
}
return 1;
}
static int r_mark_regions(struct SN_env * z) {
z->I[2] = z->l;
z->I[1] = z->l;
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
{
int ret = out_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[2] = z->c;
if (!(z->I[2] < z->I[0])) goto lab0;
z->I[2] = z->I[0];
lab0:
{
int ret = out_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
return 1;
}
static int r_postlude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
among_var = find_among(z, a_0, 6);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_R1(struct SN_env * z) {
if (!(z->I[2] <= 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;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
among_var = find_among_b(z, a_1, 7);
if (!(among_var)) goto lab0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m2 = z->l - z->c; (void)m2;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m2; goto lab1; }
z->c--;
z->bra = z->c;
if (!(eq_s_b(z, 3, s_8))) { z->c = z->l - m2; goto lab1; }
{ int ret = slice_del(z);
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);
if (ret < 0) return ret;
}
break;
}
lab0:
z->c = z->l - m1;
}
{ int m3 = z->l - z->c; (void)m3;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2;
among_var = find_among_b(z, a_2, 4);
if (!(among_var)) goto lab2;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
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;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab2:
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
among_var = find_among_b(z, a_4, 8);
if (!(among_var)) goto lab3;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m5 = z->l - z->c; (void)m5;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_9))) { z->c = z->l - m5; goto lab4; }
z->bra = z->c;
{ int m6 = z->l - z->c; (void)m6;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5;
z->c--;
{ z->c = z->l - m5; goto lab4; }
lab5:
z->c = z->l - m6;
}
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m5; goto lab4; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab4:
;
}
break;
case 2:
{ int m7 = z->l - z->c; (void)m7;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
z->c--;
goto lab3;
lab6:
z->c = z->l - m7;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m8 = z->l - z->c; (void)m8;
z->ket = z->c;
{ int m9 = z->l - z->c; (void)m9;
if (!(eq_s_b(z, 2, s_10))) goto lab9;
goto lab8;
lab9:
z->c = z->l - m9;
if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m8; goto lab7; }
}
lab8:
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) { z->c = z->l - m8; goto lab7; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab7:
;
}
break;
case 4:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m10 = z->l - z->c; (void)m10;
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m10; goto lab10; }
if (!(find_among_b(z, a_3, 2))) { z->c = z->l - m10; goto lab10; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m10; goto lab10; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab10:
;
}
break;
}
lab3:
z->c = z->l - m4;
}
return 1;
}
extern int german_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int c2 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c2;
}
z->lb = z->c; z->c = z->l;
{ int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->lb;
{ int c3 = z->c;
{ int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c3;
}
return 1;
}
extern struct SN_env * german_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void german_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,541 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int german2_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 * german2_UTF_8_create_env(void);
extern void german2_UTF_8_close_env(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static const symbol s_0_1[2] = { 'a', 'e' };
static const symbol s_0_2[2] = { 'o', 'e' };
static const symbol s_0_3[2] = { 'q', 'u' };
static const symbol s_0_4[2] = { 'u', 'e' };
static const symbol s_0_5[2] = { 0xC3, 0x9F };
static const struct among a_0[6] =
{
{ 0, 0, -1, 6, 0},
{ 2, s_0_1, 0, 2, 0},
{ 2, s_0_2, 0, 3, 0},
{ 2, s_0_3, 0, 5, 0},
{ 2, s_0_4, 0, 4, 0},
{ 2, s_0_5, 0, 1, 0}
};
static const symbol s_1_1[1] = { 'U' };
static const symbol s_1_2[1] = { 'Y' };
static const symbol s_1_3[2] = { 0xC3, 0xA4 };
static const symbol s_1_4[2] = { 0xC3, 0xB6 };
static const symbol s_1_5[2] = { 0xC3, 0xBC };
static const struct among a_1[6] =
{
{ 0, 0, -1, 5, 0},
{ 1, s_1_1, 0, 2, 0},
{ 1, s_1_2, 0, 1, 0},
{ 2, s_1_3, 0, 3, 0},
{ 2, s_1_4, 0, 4, 0},
{ 2, s_1_5, 0, 2, 0}
};
static const symbol s_2_0[1] = { 'e' };
static const symbol s_2_1[2] = { 'e', 'm' };
static const symbol s_2_2[2] = { 'e', 'n' };
static const symbol s_2_3[3] = { 'e', 'r', 'n' };
static const symbol s_2_4[2] = { 'e', 'r' };
static const symbol s_2_5[1] = { 's' };
static const symbol s_2_6[2] = { 'e', 's' };
static const struct among a_2[7] =
{
{ 1, s_2_0, -1, 2, 0},
{ 2, s_2_1, -1, 1, 0},
{ 2, s_2_2, -1, 2, 0},
{ 3, s_2_3, -1, 1, 0},
{ 2, s_2_4, -1, 1, 0},
{ 1, s_2_5, -1, 3, 0},
{ 2, s_2_6, 5, 2, 0}
};
static const symbol s_3_0[2] = { 'e', 'n' };
static const symbol s_3_1[2] = { 'e', 'r' };
static const symbol s_3_2[2] = { 's', 't' };
static const symbol s_3_3[3] = { 'e', 's', 't' };
static const struct among a_3[4] =
{
{ 2, s_3_0, -1, 1, 0},
{ 2, s_3_1, -1, 1, 0},
{ 2, s_3_2, -1, 2, 0},
{ 3, s_3_3, 2, 1, 0}
};
static const symbol s_4_0[2] = { 'i', 'g' };
static const symbol s_4_1[4] = { 'l', 'i', 'c', 'h' };
static const struct among a_4[2] =
{
{ 2, s_4_0, -1, 1, 0},
{ 4, s_4_1, -1, 1, 0}
};
static const symbol s_5_0[3] = { 'e', 'n', 'd' };
static const symbol s_5_1[2] = { 'i', 'g' };
static const symbol s_5_2[3] = { 'u', 'n', 'g' };
static const symbol s_5_3[4] = { 'l', 'i', 'c', 'h' };
static const symbol s_5_4[4] = { 'i', 's', 'c', 'h' };
static const symbol s_5_5[2] = { 'i', 'k' };
static const symbol s_5_6[4] = { 'h', 'e', 'i', 't' };
static const symbol s_5_7[4] = { 'k', 'e', 'i', 't' };
static const struct among a_5[8] =
{
{ 3, s_5_0, -1, 1, 0},
{ 2, s_5_1, -1, 2, 0},
{ 3, s_5_2, -1, 1, 0},
{ 4, s_5_3, -1, 3, 0},
{ 4, s_5_4, -1, 2, 0},
{ 2, s_5_5, -1, 2, 0},
{ 4, s_5_6, -1, 3, 0},
{ 4, s_5_7, -1, 4, 0}
};
static const 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[] = { 'U' };
static const symbol s_1[] = { 'Y' };
static const symbol s_2[] = { 's', 's' };
static const symbol s_3[] = { 0xC3, 0xA4 };
static const symbol s_4[] = { 0xC3, 0xB6 };
static const symbol s_5[] = { 0xC3, 0xBC };
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[] = { 'n', 'i', 's' };
static const symbol s_11[] = { 'i', 'g' };
static const symbol s_12[] = { 'e', 'r' };
static const symbol s_13[] = { 'e', 'n' };
static int r_prelude(struct SN_env * z) {
int among_var;
{ int c_test1 = z->c;
while(1) {
int c2 = z->c;
while(1) {
int c3 = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab1;
z->bra = z->c;
{ int c4 = z->c;
if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab3;
{ int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
goto lab2;
lab3:
z->c = c4;
if (z->c == z->l || z->p[z->c] != 'y') goto lab1;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 252, 0)) goto lab1;
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
}
lab2:
z->c = c3;
break;
lab1:
z->c = c3;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
}
continue;
lab0:
z->c = c2;
break;
}
z->c = c_test1;
}
while(1) {
int c5 = z->c;
z->bra = z->c;
among_var = find_among(z, a_0, 6);
if (!(among_var)) goto lab4;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 2, s_2);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 2, s_3);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 2, s_4);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 2, s_5);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 2);
if (ret < 0) goto lab4;
z->c = ret;
}
break;
case 6:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab4;
z->c = ret;
}
break;
}
continue;
lab4:
z->c = c5;
break;
}
return 1;
}
static int r_mark_regions(struct SN_env * z) {
z->I[2] = z->l;
z->I[1] = z->l;
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
{
int ret = out_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[2] = z->c;
if (!(z->I[2] < z->I[0])) goto lab0;
z->I[2] = z->I[0];
lab0:
{
int ret = out_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 252, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
return 1;
}
static int r_postlude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
among_var = find_among(z, a_1, 6);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0;
z->c = ret;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_R1(struct SN_env * z) {
if (!(z->I[2] <= 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;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((811040 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab0;
among_var = find_among_b(z, a_2, 7);
if (!(among_var)) goto lab0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m2 = z->l - z->c; (void)m2;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m2; goto lab1; }
z->c--;
z->bra = z->c;
if (!(eq_s_b(z, 3, s_10))) { z->c = z->l - m2; goto lab1; }
{ int ret = slice_del(z);
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);
if (ret < 0) return ret;
}
break;
}
lab0:
z->c = z->l - m1;
}
{ int m3 = z->l - z->c; (void)m3;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1327104 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab2;
among_var = find_among_b(z, a_3, 4);
if (!(among_var)) goto lab2;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
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;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab2:
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1051024 >> (z->p[z->c - 1] & 0x1f)) & 1)) goto lab3;
among_var = find_among_b(z, a_5, 8);
if (!(among_var)) goto lab3;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m5 = z->l - z->c; (void)m5;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m5; goto lab4; }
z->bra = z->c;
{ int m6 = z->l - z->c; (void)m6;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab5;
z->c--;
{ z->c = z->l - m5; goto lab4; }
lab5:
z->c = z->l - m6;
}
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m5; goto lab4; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab4:
;
}
break;
case 2:
{ int m7 = z->l - z->c; (void)m7;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') goto lab6;
z->c--;
goto lab3;
lab6:
z->c = z->l - m7;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m8 = z->l - z->c; (void)m8;
z->ket = z->c;
{ int m9 = z->l - z->c; (void)m9;
if (!(eq_s_b(z, 2, s_12))) goto lab9;
goto lab8;
lab9:
z->c = z->l - m9;
if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m8; goto lab7; }
}
lab8:
z->bra = z->c;
{ int ret = r_R1(z);
if (ret == 0) { z->c = z->l - m8; goto lab7; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab7:
;
}
break;
case 4:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m10 = z->l - z->c; (void)m10;
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 103 && z->p[z->c - 1] != 104)) { z->c = z->l - m10; goto lab10; }
if (!(find_among_b(z, a_4, 2))) { z->c = z->l - m10; goto lab10; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m10; goto lab10; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab10:
;
}
break;
}
lab3:
z->c = z->l - m4;
}
return 1;
}
extern int german2_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int c2 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c2;
}
z->lb = z->c; z->c = z->l;
{ int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->lb;
{ int c3 = z->c;
{ int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c3;
}
return 1;
}
extern struct SN_env * german2_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void german2_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * german2_UTF_8_create_env(void);
extern void german2_UTF_8_close_env(struct SN_env * z);
extern int german2_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * greek_UTF_8_create_env(void);
extern void greek_UTF_8_close_env(struct SN_env * z);
extern int greek_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,332 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
static int r_CONSONANT(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif
extern int hindi_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * hindi_UTF_8_create_env(void);
extern void hindi_UTF_8_close_env(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static const symbol s_0_0[3] = { 0xE0, 0xA5, 0x80 };
static const symbol s_0_1[12] = { 0xE0, 0xA5, 0x82, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_2[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_3[12] = { 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_4[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_5[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_6[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_7[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_8[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_9[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_10[9] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_11[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_12[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_13[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_14[9] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_15[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_16[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x80 };
static const symbol s_0_17[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 };
static const symbol s_0_18[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 };
static const symbol s_0_19[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 };
static const symbol s_0_20[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80 };
static const symbol s_0_21[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x80 };
static const symbol s_0_22[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x80 };
static const symbol s_0_23[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x81 };
static const symbol s_0_24[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 };
static const symbol s_0_25[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 };
static const symbol s_0_26[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 };
static const symbol s_0_27[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 };
static const symbol s_0_28[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x81 };
static const symbol s_0_29[3] = { 0xE0, 0xA5, 0x81 };
static const symbol s_0_30[6] = { 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 };
static const symbol s_0_31[9] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 };
static const symbol s_0_32[12] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 };
static const symbol s_0_33[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 };
static const symbol s_0_34[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x80, 0xE0, 0xA4, 0x82 };
static const symbol s_0_35[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 };
static const symbol s_0_36[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 };
static const symbol s_0_37[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x82 };
static const symbol s_0_38[6] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82 };
static const symbol s_0_39[6] = { 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 };
static const symbol s_0_40[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 };
static const symbol s_0_41[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x88, 0xE0, 0xA4, 0x82 };
static const symbol s_0_42[6] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 };
static const symbol s_0_43[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 };
static const symbol s_0_44[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 };
static const symbol s_0_45[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 };
static const symbol s_0_46[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x82 };
static const symbol s_0_47[6] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_48[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_49[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_50[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_51[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_52[12] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_53[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_54[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_55[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82 };
static const symbol s_0_56[6] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_57[9] = { 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_58[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_59[9] = { 0xE0, 0xA4, 0x89, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_60[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_61[12] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_62[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_63[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_64[15] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x82 };
static const symbol s_0_65[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 };
static const symbol s_0_66[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 };
static const symbol s_0_67[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 };
static const symbol s_0_68[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 };
static const symbol s_0_69[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x82 };
static const symbol s_0_70[3] = { 0xE0, 0xA5, 0x82 };
static const symbol s_0_71[3] = { 0xE0, 0xA4, 0x85 };
static const symbol s_0_72[3] = { 0xE0, 0xA4, 0x86 };
static const symbol s_0_73[3] = { 0xE0, 0xA4, 0x87 };
static const symbol s_0_74[3] = { 0xE0, 0xA5, 0x87 };
static const symbol s_0_75[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_76[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_77[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_78[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_79[9] = { 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_80[9] = { 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_81[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_82[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x87 };
static const symbol s_0_83[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 };
static const symbol s_0_84[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 };
static const symbol s_0_85[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 };
static const symbol s_0_86[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x87 };
static const symbol s_0_87[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 };
static const symbol s_0_88[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 };
static const symbol s_0_89[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 };
static const symbol s_0_90[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 };
static const symbol s_0_91[3] = { 0xE0, 0xA4, 0x88 };
static const symbol s_0_92[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x88 };
static const symbol s_0_93[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x88 };
static const symbol s_0_94[3] = { 0xE0, 0xA4, 0x89 };
static const symbol s_0_95[3] = { 0xE0, 0xA4, 0x8A };
static const symbol s_0_96[3] = { 0xE0, 0xA5, 0x8B };
static const symbol s_0_97[3] = { 0xE0, 0xA5, 0x8D };
static const symbol s_0_98[3] = { 0xE0, 0xA4, 0x8F };
static const symbol s_0_99[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F };
static const symbol s_0_100[6] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F };
static const symbol s_0_101[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F };
static const symbol s_0_102[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F };
static const symbol s_0_103[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F };
static const symbol s_0_104[6] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F };
static const symbol s_0_105[3] = { 0xE0, 0xA4, 0x93 };
static const symbol s_0_106[6] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x93 };
static const symbol s_0_107[6] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x93 };
static const symbol s_0_108[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 };
static const symbol s_0_109[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 };
static const symbol s_0_110[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 };
static const symbol s_0_111[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xB0 };
static const symbol s_0_112[3] = { 0xE0, 0xA4, 0xBE };
static const symbol s_0_113[12] = { 0xE0, 0xA5, 0x82, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_114[12] = { 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_115[15] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_116[15] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8A, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_117[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_118[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_119[12] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_120[12] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBE };
static const symbol s_0_121[6] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE };
static const symbol s_0_122[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE };
static const symbol s_0_123[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE };
static const symbol s_0_124[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA4, 0xE0, 0xA4, 0xBE };
static const symbol s_0_125[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE };
static const symbol s_0_126[9] = { 0xE0, 0xA4, 0x85, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE };
static const symbol s_0_127[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE };
static const symbol s_0_128[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBE };
static const symbol s_0_129[9] = { 0xE0, 0xA4, 0x86, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE };
static const symbol s_0_130[9] = { 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBE };
static const symbol s_0_131[3] = { 0xE0, 0xA4, 0xBF };
static const struct among a_0[132] =
{
{ 3, s_0_0, -1, -1, 0},
{ 12, s_0_1, 0, -1, 0},
{ 12, s_0_2, 0, -1, 0},
{ 12, s_0_3, 0, -1, 0},
{ 15, s_0_4, 3, -1, 0},
{ 15, s_0_5, 3, -1, 0},
{ 12, s_0_6, 0, -1, 0},
{ 15, s_0_7, 6, -1, 0},
{ 15, s_0_8, 6, -1, 0},
{ 9, s_0_9, 0, -1, 0},
{ 9, s_0_10, 0, -1, 0},
{ 9, s_0_11, 0, -1, 0},
{ 12, s_0_12, 11, -1, 0},
{ 12, s_0_13, 11, -1, 0},
{ 9, s_0_14, 0, -1, 0},
{ 12, s_0_15, 14, -1, 0},
{ 12, s_0_16, 14, -1, 0},
{ 6, s_0_17, 0, -1, r_CONSONANT},
{ 9, s_0_18, 17, -1, 0},
{ 9, s_0_19, 17, -1, 0},
{ 9, s_0_20, 17, -1, 0},
{ 6, s_0_21, 0, -1, r_CONSONANT},
{ 9, s_0_22, 21, -1, 0},
{ 6, s_0_23, -1, -1, 0},
{ 6, s_0_24, -1, -1, 0},
{ 12, s_0_25, 24, -1, 0},
{ 15, s_0_26, 25, -1, 0},
{ 15, s_0_27, 25, -1, 0},
{ 12, s_0_28, 24, -1, 0},
{ 3, s_0_29, -1, -1, 0},
{ 6, s_0_30, -1, -1, 0},
{ 9, s_0_31, 30, -1, r_CONSONANT},
{ 12, s_0_32, 31, -1, 0},
{ 12, s_0_33, 31, -1, 0},
{ 12, s_0_34, 31, -1, 0},
{ 6, s_0_35, -1, -1, 0},
{ 9, s_0_36, 35, -1, 0},
{ 9, s_0_37, 35, -1, 0},
{ 6, s_0_38, -1, -1, 0},
{ 6, s_0_39, -1, -1, 0},
{ 9, s_0_40, 39, -1, 0},
{ 9, s_0_41, 39, -1, 0},
{ 6, s_0_42, -1, -1, 0},
{ 12, s_0_43, 42, -1, 0},
{ 15, s_0_44, 43, -1, 0},
{ 15, s_0_45, 43, -1, 0},
{ 12, s_0_46, 42, -1, 0},
{ 6, s_0_47, -1, -1, 0},
{ 9, s_0_48, 47, -1, 0},
{ 9, s_0_49, 47, -1, 0},
{ 9, s_0_50, 47, -1, 0},
{ 9, s_0_51, 47, -1, 0},
{ 12, s_0_52, 51, -1, r_CONSONANT},
{ 15, s_0_53, 52, -1, 0},
{ 12, s_0_54, 51, -1, r_CONSONANT},
{ 15, s_0_55, 54, -1, 0},
{ 6, s_0_56, -1, -1, 0},
{ 9, s_0_57, 56, -1, 0},
{ 9, s_0_58, 56, -1, 0},
{ 9, s_0_59, 56, -1, 0},
{ 9, s_0_60, 56, -1, 0},
{ 12, s_0_61, 60, -1, r_CONSONANT},
{ 15, s_0_62, 61, -1, 0},
{ 12, s_0_63, 60, -1, r_CONSONANT},
{ 15, s_0_64, 63, -1, 0},
{ 6, s_0_65, -1, -1, 0},
{ 12, s_0_66, 65, -1, 0},
{ 15, s_0_67, 66, -1, 0},
{ 15, s_0_68, 66, -1, 0},
{ 12, s_0_69, 65, -1, 0},
{ 3, s_0_70, -1, -1, 0},
{ 3, s_0_71, -1, -1, 0},
{ 3, s_0_72, -1, -1, 0},
{ 3, s_0_73, -1, -1, 0},
{ 3, s_0_74, -1, -1, 0},
{ 12, s_0_75, 74, -1, 0},
{ 12, s_0_76, 74, -1, 0},
{ 15, s_0_77, 76, -1, 0},
{ 15, s_0_78, 76, -1, 0},
{ 9, s_0_79, 74, -1, 0},
{ 9, s_0_80, 74, -1, 0},
{ 12, s_0_81, 80, -1, 0},
{ 12, s_0_82, 80, -1, 0},
{ 6, s_0_83, 74, -1, r_CONSONANT},
{ 9, s_0_84, 83, -1, 0},
{ 9, s_0_85, 83, -1, 0},
{ 9, s_0_86, 83, -1, 0},
{ 6, s_0_87, 74, -1, r_CONSONANT},
{ 9, s_0_88, 87, -1, 0},
{ 9, s_0_89, 87, -1, 0},
{ 9, s_0_90, 87, -1, 0},
{ 3, s_0_91, -1, -1, 0},
{ 6, s_0_92, 91, -1, 0},
{ 6, s_0_93, 91, -1, 0},
{ 3, s_0_94, -1, -1, 0},
{ 3, s_0_95, -1, -1, 0},
{ 3, s_0_96, -1, -1, 0},
{ 3, s_0_97, -1, -1, 0},
{ 3, s_0_98, -1, -1, 0},
{ 6, s_0_99, 98, -1, 0},
{ 6, s_0_100, 98, -1, 0},
{ 9, s_0_101, 100, -1, 0},
{ 9, s_0_102, 100, -1, 0},
{ 6, s_0_103, 98, -1, 0},
{ 6, s_0_104, 98, -1, 0},
{ 3, s_0_105, -1, -1, 0},
{ 6, s_0_106, 105, -1, 0},
{ 6, s_0_107, 105, -1, 0},
{ 6, s_0_108, -1, -1, r_CONSONANT},
{ 9, s_0_109, 108, -1, 0},
{ 9, s_0_110, 108, -1, 0},
{ 9, s_0_111, 108, -1, 0},
{ 3, s_0_112, -1, -1, 0},
{ 12, s_0_113, 112, -1, 0},
{ 12, s_0_114, 112, -1, 0},
{ 15, s_0_115, 114, -1, 0},
{ 15, s_0_116, 114, -1, 0},
{ 9, s_0_117, 112, -1, 0},
{ 9, s_0_118, 112, -1, 0},
{ 12, s_0_119, 118, -1, 0},
{ 12, s_0_120, 118, -1, 0},
{ 6, s_0_121, 112, -1, r_CONSONANT},
{ 9, s_0_122, 121, -1, 0},
{ 9, s_0_123, 121, -1, 0},
{ 9, s_0_124, 121, -1, 0},
{ 6, s_0_125, 112, -1, r_CONSONANT},
{ 9, s_0_126, 125, -1, 0},
{ 9, s_0_127, 125, -1, 0},
{ 9, s_0_128, 125, -1, 0},
{ 9, s_0_129, 112, -1, 0},
{ 9, s_0_130, 112, -1, 0},
{ 3, s_0_131, -1, -1, 0}
};
static const unsigned char g_consonant[] = { 255, 255, 255, 255, 159, 0, 0, 0, 248, 7 };
static int r_CONSONANT(struct SN_env * z) {
if (in_grouping_b_U(z, g_consonant, 2325, 2399, 0)) return 0;
return 1;
}
extern int hindi_UTF_8_stem(struct SN_env * z) {
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
z->lb = z->c; z->c = z->l;
{ int mlimit2;
if (z->c < z->I[0]) return 0;
mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c;
if (!(find_among_b(z, a_0, 132))) { z->lb = mlimit2; return 0; }
z->bra = z->c;
z->lb = mlimit2;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * hindi_UTF_8_create_env(void) { return SN_create_env(0, 1); }
extern void hindi_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * hindi_UTF_8_create_env(void);
extern void hindi_UTF_8_close_env(struct SN_env * z);
extern int hindi_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,868 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 2, s_0_0, -1, -1, 0},
{ 3, s_0_1, -1, -1, 0},
{ 2, s_0_2, -1, -1, 0},
{ 2, s_0_3, -1, -1, 0},
{ 2, s_0_4, -1, -1, 0},
{ 2, s_0_5, -1, -1, 0},
{ 2, s_0_6, -1, -1, 0},
{ 2, s_0_7, -1, -1, 0}
};
static const symbol s_1_0[2] = { 0xC3, 0xA1 };
static const symbol s_1_1[2] = { 0xC3, 0xA9 };
static const struct among a_1[2] =
{
{ 2, s_1_0, -1, 1, 0},
{ 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] =
{
{ 2, s_2_0, -1, -1, 0},
{ 2, s_2_1, -1, -1, 0},
{ 2, s_2_2, -1, -1, 0},
{ 2, s_2_3, -1, -1, 0},
{ 2, s_2_4, -1, -1, 0},
{ 2, s_2_5, -1, -1, 0},
{ 2, s_2_6, -1, -1, 0},
{ 2, s_2_7, -1, -1, 0},
{ 2, s_2_8, -1, -1, 0},
{ 2, s_2_9, -1, -1, 0},
{ 2, s_2_10, -1, -1, 0},
{ 2, s_2_11, -1, -1, 0},
{ 3, s_2_12, -1, -1, 0},
{ 2, s_2_13, -1, -1, 0},
{ 3, s_2_14, -1, -1, 0},
{ 2, s_2_15, -1, -1, 0},
{ 2, s_2_16, -1, -1, 0},
{ 3, s_2_17, -1, -1, 0},
{ 3, s_2_18, -1, -1, 0},
{ 3, s_2_19, -1, -1, 0},
{ 3, s_2_20, -1, -1, 0},
{ 3, s_2_21, -1, -1, 0},
{ 2, s_2_22, -1, -1, 0}
};
static const symbol s_3_0[2] = { 'a', 'l' };
static const symbol s_3_1[2] = { 'e', 'l' };
static const struct among a_3[2] =
{
{ 2, s_3_0, -1, 1, 0},
{ 2, s_3_1, -1, 1, 0}
};
static const symbol s_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] = { 'b', 0xC5, 0x91, 'l' };
static const symbol s_4_11[4] = { 'r', 0xC5, 0x91, 'l' };
static const symbol s_4_12[4] = { 't', 0xC5, 0x91, 'l' };
static const symbol s_4_13[4] = { 'n', 0xC3, 0xA1, 'l' };
static const symbol s_4_14[4] = { 'n', 0xC3, 0xA9, 'l' };
static const symbol s_4_15[4] = { 'b', 0xC3, 0xB3, 'l' };
static const symbol s_4_16[4] = { 'r', 0xC3, 0xB3, 'l' };
static const symbol s_4_17[4] = { 't', 0xC3, 0xB3, '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] =
{
{ 2, s_4_0, -1, -1, 0},
{ 2, s_4_1, -1, -1, 0},
{ 2, s_4_2, -1, -1, 0},
{ 2, s_4_3, -1, -1, 0},
{ 2, s_4_4, -1, -1, 0},
{ 3, s_4_5, -1, -1, 0},
{ 3, s_4_6, -1, -1, 0},
{ 3, s_4_7, -1, -1, 0},
{ 3, s_4_8, -1, -1, 0},
{ 2, s_4_9, -1, -1, 0},
{ 4, s_4_10, -1, -1, 0},
{ 4, s_4_11, -1, -1, 0},
{ 4, s_4_12, -1, -1, 0},
{ 4, s_4_13, -1, -1, 0},
{ 4, s_4_14, -1, -1, 0},
{ 4, s_4_15, -1, -1, 0},
{ 4, s_4_16, -1, -1, 0},
{ 4, s_4_17, -1, -1, 0},
{ 3, s_4_18, -1, -1, 0},
{ 1, s_4_19, -1, -1, 0},
{ 2, s_4_20, 19, -1, 0},
{ 3, s_4_21, 20, -1, 0},
{ 2, s_4_22, 19, -1, 0},
{ 3, s_4_23, 22, -1, 0},
{ 7, s_4_24, 22, -1, 0},
{ 2, s_4_25, 19, -1, 0},
{ 3, s_4_26, 19, -1, 0},
{ 5, s_4_27, -1, -1, 0},
{ 3, s_4_28, -1, -1, 0},
{ 1, s_4_29, -1, -1, 0},
{ 2, s_4_30, 29, -1, 0},
{ 2, s_4_31, 29, -1, 0},
{ 5, s_4_32, 29, -1, 0},
{ 7, s_4_33, 32, -1, 0},
{ 7, s_4_34, 32, -1, 0},
{ 7, s_4_35, 32, -1, 0},
{ 2, s_4_36, 29, -1, 0},
{ 4, s_4_37, 29, -1, 0},
{ 3, s_4_38, 29, -1, 0},
{ 3, s_4_39, -1, -1, 0},
{ 3, s_4_40, -1, -1, 0},
{ 4, s_4_41, -1, -1, 0},
{ 3, s_4_42, -1, -1, 0},
{ 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] =
{
{ 3, s_5_0, -1, 2, 0},
{ 3, s_5_1, -1, 1, 0},
{ 8, s_5_2, -1, 2, 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] =
{
{ 4, s_6_0, -1, 1, 0},
{ 5, s_6_1, 0, 1, 0},
{ 6, s_6_2, 0, 2, 0},
{ 5, s_6_3, -1, 1, 0},
{ 6, s_6_4, 3, 1, 0},
{ 7, s_6_5, 3, 3, 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] =
{
{ 2, s_7_0, -1, 1, 0},
{ 2, s_7_1, -1, 1, 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] =
{
{ 1, s_8_0, -1, 3, 0},
{ 2, s_8_1, 0, 3, 0},
{ 2, s_8_2, 0, 3, 0},
{ 2, s_8_3, 0, 3, 0},
{ 3, s_8_4, 0, 1, 0},
{ 3, s_8_5, 0, 2, 0},
{ 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] =
{
{ 3, s_9_0, -1, 1, 0},
{ 5, s_9_1, 0, 3, 0},
{ 5, s_9_2, 0, 2, 0},
{ 2, s_9_3, -1, 1, 0},
{ 3, s_9_4, 3, 1, 0},
{ 4, s_9_5, 4, 1, 0},
{ 4, s_9_6, 4, 1, 0},
{ 4, s_9_7, 4, 1, 0},
{ 5, s_9_8, 4, 3, 0},
{ 5, s_9_9, 4, 2, 0},
{ 5, s_9_10, 4, 1, 0},
{ 4, s_9_11, 3, 2, 0}
};
static const symbol s_10_0[1] = { 'a' };
static const symbol s_10_1[2] = { 'j', 'a' };
static const symbol s_10_2[1] = { 'd' };
static const symbol s_10_3[2] = { 'a', 'd' };
static const symbol s_10_4[2] = { 'e', 'd' };
static const symbol s_10_5[2] = { 'o', 'd' };
static const symbol s_10_6[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] =
{
{ 1, s_10_0, -1, 1, 0},
{ 2, s_10_1, 0, 1, 0},
{ 1, s_10_2, -1, 1, 0},
{ 2, s_10_3, 2, 1, 0},
{ 2, s_10_4, 2, 1, 0},
{ 2, s_10_5, 2, 1, 0},
{ 3, s_10_6, 2, 2, 0},
{ 3, s_10_7, 2, 3, 0},
{ 3, s_10_8, 2, 1, 0},
{ 1, s_10_9, -1, 1, 0},
{ 2, s_10_10, 9, 1, 0},
{ 2, s_10_11, -1, 1, 0},
{ 3, s_10_12, 11, 1, 0},
{ 4, s_10_13, 11, 2, 0},
{ 4, s_10_14, 11, 3, 0},
{ 4, s_10_15, 11, 1, 0},
{ 2, s_10_16, -1, 1, 0},
{ 3, s_10_17, 16, 1, 0},
{ 5, s_10_18, 17, 2, 0},
{ 3, s_10_19, -1, 1, 0},
{ 4, s_10_20, 19, 1, 0},
{ 6, s_10_21, 20, 3, 0},
{ 1, s_10_22, -1, 1, 0},
{ 2, s_10_23, 22, 1, 0},
{ 2, s_10_24, 22, 1, 0},
{ 2, s_10_25, 22, 1, 0},
{ 3, s_10_26, 22, 2, 0},
{ 3, s_10_27, 22, 3, 0},
{ 1, s_10_28, -1, 1, 0},
{ 2, s_10_29, -1, 2, 0},
{ 2, s_10_30, -1, 3, 0}
};
static const symbol s_11_0[2] = { 'i', 'd' };
static const symbol s_11_1[3] = { 'a', 'i', 'd' };
static const symbol s_11_2[4] = { 'j', 'a', 'i', 'd' };
static const symbol s_11_3[3] = { 'e', 'i', 'd' };
static const symbol s_11_4[4] = { 'j', 'e', 'i', 'd' };
static const symbol s_11_5[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] =
{
{ 2, s_11_0, -1, 1, 0},
{ 3, s_11_1, 0, 1, 0},
{ 4, s_11_2, 1, 1, 0},
{ 3, s_11_3, 0, 1, 0},
{ 4, s_11_4, 3, 1, 0},
{ 4, s_11_5, 0, 2, 0},
{ 4, s_11_6, 0, 3, 0},
{ 1, s_11_7, -1, 1, 0},
{ 2, s_11_8, 7, 1, 0},
{ 3, s_11_9, 8, 1, 0},
{ 2, s_11_10, 7, 1, 0},
{ 3, s_11_11, 10, 1, 0},
{ 3, s_11_12, 7, 2, 0},
{ 3, s_11_13, 7, 3, 0},
{ 4, s_11_14, -1, 1, 0},
{ 5, s_11_15, 14, 1, 0},
{ 6, s_11_16, 15, 1, 0},
{ 6, s_11_17, 14, 3, 0},
{ 2, s_11_18, -1, 1, 0},
{ 3, s_11_19, 18, 1, 0},
{ 4, s_11_20, 19, 1, 0},
{ 3, s_11_21, 18, 1, 0},
{ 4, s_11_22, 21, 1, 0},
{ 4, s_11_23, 18, 2, 0},
{ 4, s_11_24, 18, 3, 0},
{ 3, s_11_25, -1, 1, 0},
{ 4, s_11_26, 25, 1, 0},
{ 5, s_11_27, 26, 1, 0},
{ 4, s_11_28, 25, 1, 0},
{ 5, s_11_29, 28, 1, 0},
{ 5, s_11_30, 25, 2, 0},
{ 5, s_11_31, 25, 3, 0},
{ 5, s_11_32, -1, 1, 0},
{ 6, s_11_33, 32, 1, 0},
{ 6, s_11_34, -1, 2, 0},
{ 2, s_11_35, -1, 1, 0},
{ 3, s_11_36, 35, 1, 0},
{ 4, s_11_37, 36, 1, 0},
{ 3, s_11_38, 35, 1, 0},
{ 4, s_11_39, 38, 1, 0},
{ 4, s_11_40, 35, 2, 0},
{ 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, 36, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 };
static const symbol s_0[] = { 'a' };
static const symbol s_1[] = { 'e' };
static const symbol s_2[] = { 'e' };
static const symbol s_3[] = { 'a' };
static const symbol s_4[] = { 'a' };
static const symbol s_5[] = { 'e' };
static const symbol s_6[] = { 'a' };
static const symbol s_7[] = { 'e' };
static const symbol s_8[] = { 'e' };
static const symbol s_9[] = { 'a' };
static const symbol s_10[] = { 'a' };
static const symbol s_11[] = { 'e' };
static const symbol s_12[] = { 'a' };
static const symbol s_13[] = { 'e' };
static int r_mark_regions(struct SN_env * z) {
z->I[0] = z->l;
{ int c1 = z->c;
if (in_grouping_U(z, g_v, 97, 369, 0)) goto lab1;
if (in_grouping_U(z, g_v, 97, 369, 1) < 0) goto lab1;
{ int c2 = z->c;
if (z->c + 1 >= z->l || z->p[z->c + 1] >> 5 != 3 || !((101187584 >> (z->p[z->c + 1] & 0x1f)) & 1)) goto lab3;
if (!(find_among(z, a_0, 8))) goto lab3;
goto lab2;
lab3:
z->c = c2;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab1;
z->c = ret;
}
}
lab2:
z->I[0] = z->c;
goto lab0;
lab1:
z->c = c1;
if (out_grouping_U(z, g_v, 97, 369, 0)) return 0;
{
int ret = out_grouping_U(z, g_v, 97, 369, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[0] = z->c;
}
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;
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);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_double(struct SN_env * z) {
{ int m_test1 = z->l - z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((106790108 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_2, 23))) return 0;
z->c = z->l - m_test1;
}
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;
}
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, z->l, - 1);
if (ret < 0) return 0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_instrum(struct SN_env * z) {
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] != 108) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = r_double(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
static int r_case(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_4, 44))) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int ret = r_v_ending(z);
if (ret <= 0) return ret;
}
return 1;
}
static int r_case_special(struct SN_env * z) {
int among_var;
z->ket = z->c;
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);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_case_other(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 3 <= z->lb || z->p[z->c - 1] != 108) return 0;
among_var = find_among_b(z, a_6, 6);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_factive(struct SN_env * z) {
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 161 && z->p[z->c - 1] != 169)) return 0;
if (!(find_among_b(z, a_7, 2))) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = r_double(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int ret = r_undouble(z);
if (ret <= 0) return ret;
}
return 1;
}
static int r_plural(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 107) return 0;
among_var = find_among_b(z, a_8, 7);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_owned(struct SN_env * z) {
int among_var;
z->ket = z->c;
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);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_sing_owner(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_10, 31);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_11);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_plur_owner(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((10768 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_11, 42);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_12);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_13);
if (ret < 0) return ret;
}
break;
}
return 1;
}
extern int hungarian_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_instrum(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_case(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_case_special(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_case_other(z);
if (ret < 0) return ret;
}
z->c = z->l - m5;
}
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_factive(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
{ int m7 = z->l - z->c; (void)m7;
{ int ret = r_owned(z);
if (ret < 0) return ret;
}
z->c = z->l - m7;
}
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_sing_owner(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
}
{ int m9 = z->l - z->c; (void)m9;
{ int ret = r_plur_owner(z);
if (ret < 0) return ret;
}
z->c = z->l - m9;
}
{ int m10 = z->l - z->c; (void)m10;
{ int ret = r_plural(z);
if (ret < 0) return ret;
}
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); }
extern void hungarian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,407 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int indonesian_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static int r_VOWEL(struct SN_env * z);
static int r_SUFFIX_I_OK(struct SN_env * z);
static int r_SUFFIX_AN_OK(struct SN_env * z);
static int r_SUFFIX_KAN_OK(struct SN_env * z);
static int r_KER(struct SN_env * z);
static int r_remove_suffix(struct SN_env * z);
static int r_remove_second_order_prefix(struct SN_env * z);
static int r_remove_first_order_prefix(struct SN_env * z);
static int r_remove_possessive_pronoun(struct SN_env * z);
static int r_remove_particle(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * indonesian_UTF_8_create_env(void);
extern void indonesian_UTF_8_close_env(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static const symbol s_0_0[3] = { 'k', 'a', 'h' };
static const symbol s_0_1[3] = { 'l', 'a', 'h' };
static const symbol s_0_2[3] = { 'p', 'u', 'n' };
static const struct among a_0[3] =
{
{ 3, s_0_0, -1, 1, 0},
{ 3, s_0_1, -1, 1, 0},
{ 3, s_0_2, -1, 1, 0}
};
static const symbol s_1_0[3] = { 'n', 'y', 'a' };
static const symbol s_1_1[2] = { 'k', 'u' };
static const symbol s_1_2[2] = { 'm', 'u' };
static const struct among a_1[3] =
{
{ 3, s_1_0, -1, 1, 0},
{ 2, s_1_1, -1, 1, 0},
{ 2, s_1_2, -1, 1, 0}
};
static const symbol s_2_0[1] = { 'i' };
static const symbol s_2_1[2] = { 'a', 'n' };
static const symbol s_2_2[3] = { 'k', 'a', 'n' };
static const struct among a_2[3] =
{
{ 1, s_2_0, -1, 1, r_SUFFIX_I_OK},
{ 2, s_2_1, -1, 1, r_SUFFIX_AN_OK},
{ 3, s_2_2, 1, 1, r_SUFFIX_KAN_OK}
};
static const symbol s_3_0[2] = { 'd', 'i' };
static const symbol s_3_1[2] = { 'k', 'e' };
static const symbol s_3_2[2] = { 'm', 'e' };
static const symbol s_3_3[3] = { 'm', 'e', 'm' };
static const symbol s_3_4[3] = { 'm', 'e', 'n' };
static const symbol s_3_5[4] = { 'm', 'e', 'n', 'g' };
static const symbol s_3_6[4] = { 'm', 'e', 'n', 'y' };
static const symbol s_3_7[3] = { 'p', 'e', 'm' };
static const symbol s_3_8[3] = { 'p', 'e', 'n' };
static const symbol s_3_9[4] = { 'p', 'e', 'n', 'g' };
static const symbol s_3_10[4] = { 'p', 'e', 'n', 'y' };
static const symbol s_3_11[3] = { 't', 'e', 'r' };
static const struct among a_3[12] =
{
{ 2, s_3_0, -1, 1, 0},
{ 2, s_3_1, -1, 2, 0},
{ 2, s_3_2, -1, 1, 0},
{ 3, s_3_3, 2, 5, 0},
{ 3, s_3_4, 2, 1, 0},
{ 4, s_3_5, 4, 1, 0},
{ 4, s_3_6, 4, 3, r_VOWEL},
{ 3, s_3_7, -1, 6, 0},
{ 3, s_3_8, -1, 2, 0},
{ 4, s_3_9, 8, 2, 0},
{ 4, s_3_10, 8, 4, r_VOWEL},
{ 3, s_3_11, -1, 1, 0}
};
static const symbol s_4_0[2] = { 'b', 'e' };
static const symbol s_4_1[7] = { 'b', 'e', 'l', 'a', 'j', 'a', 'r' };
static const symbol s_4_2[3] = { 'b', 'e', 'r' };
static const symbol s_4_3[2] = { 'p', 'e' };
static const symbol s_4_4[7] = { 'p', 'e', 'l', 'a', 'j', 'a', 'r' };
static const symbol s_4_5[3] = { 'p', 'e', 'r' };
static const struct among a_4[6] =
{
{ 2, s_4_0, -1, 3, r_KER},
{ 7, s_4_1, 0, 4, 0},
{ 3, s_4_2, 0, 3, 0},
{ 2, s_4_3, -1, 1, 0},
{ 7, s_4_4, 3, 2, 0},
{ 3, s_4_5, 3, 1, 0}
};
static const unsigned char g_vowel[] = { 17, 65, 16 };
static const symbol s_0[] = { 'e', 'r' };
static const symbol s_1[] = { 's' };
static const symbol s_2[] = { 's' };
static const symbol s_3[] = { 'p' };
static const symbol s_4[] = { 'p' };
static const symbol s_5[] = { 'a', 'j', 'a', 'r' };
static const symbol s_6[] = { 'a', 'j', 'a', 'r' };
static int r_remove_particle(struct SN_env * z) {
z->ket = z->c;
if (z->c - 2 <= z->lb || (z->p[z->c - 1] != 104 && z->p[z->c - 1] != 110)) return 0;
if (!(find_among_b(z, a_0, 3))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[1] -= 1;
return 1;
}
static int r_remove_possessive_pronoun(struct SN_env * z) {
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 97 && z->p[z->c - 1] != 117)) return 0;
if (!(find_among_b(z, a_1, 3))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[1] -= 1;
return 1;
}
static int r_SUFFIX_KAN_OK(struct SN_env * z) {
if (!(z->I[0] != 3)) return 0;
if (!(z->I[0] != 2)) return 0;
return 1;
}
static int r_SUFFIX_AN_OK(struct SN_env * z) {
if (!(z->I[0] != 1)) return 0;
return 1;
}
static int r_SUFFIX_I_OK(struct SN_env * z) {
if (!(z->I[0] <= 2)) return 0;
{ int m1 = z->l - z->c; (void)m1;
if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab0;
z->c--;
return 0;
lab0:
z->c = z->l - m1;
}
return 1;
}
static int r_remove_suffix(struct SN_env * z) {
z->ket = z->c;
if (z->c <= z->lb || (z->p[z->c - 1] != 105 && z->p[z->c - 1] != 110)) return 0;
if (!(find_among_b(z, a_2, 3))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[1] -= 1;
return 1;
}
static int r_VOWEL(struct SN_env * z) {
if (in_grouping_U(z, g_vowel, 97, 117, 0)) return 0;
return 1;
}
static int r_KER(struct SN_env * z) {
if (out_grouping_U(z, g_vowel, 97, 117, 0)) return 0;
if (!(eq_s(z, 2, s_0))) return 0;
return 1;
}
static int r_remove_first_order_prefix(struct SN_env * z) {
int among_var;
z->bra = z->c;
if (z->c + 1 >= z->l || (z->p[z->c + 1] != 105 && z->p[z->c + 1] != 101)) return 0;
among_var = find_among(z, a_3, 12);
if (!(among_var)) return 0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[0] = 1;
z->I[1] -= 1;
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[0] = 3;
z->I[1] -= 1;
break;
case 3:
z->I[0] = 1;
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
z->I[1] -= 1;
break;
case 4:
z->I[0] = 3;
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
z->I[1] -= 1;
break;
case 5:
z->I[0] = 1;
z->I[1] -= 1;
{ int c1 = z->c;
{ int c2 = z->c;
if (in_grouping_U(z, g_vowel, 97, 117, 0)) goto lab1;
z->c = c2;
{ int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
}
goto lab0;
lab1:
z->c = c1;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab0:
break;
case 6:
z->I[0] = 3;
z->I[1] -= 1;
{ int c3 = z->c;
{ int c4 = z->c;
if (in_grouping_U(z, g_vowel, 97, 117, 0)) goto lab3;
z->c = c4;
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
}
goto lab2;
lab3:
z->c = c3;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab2:
break;
}
return 1;
}
static int r_remove_second_order_prefix(struct SN_env * z) {
int among_var;
z->bra = z->c;
if (z->c + 1 >= z->l || z->p[z->c + 1] != 101) return 0;
among_var = find_among(z, a_4, 6);
if (!(among_var)) return 0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[0] = 2;
z->I[1] -= 1;
break;
case 2:
{ int ret = slice_from_s(z, 4, s_5);
if (ret < 0) return ret;
}
z->I[1] -= 1;
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->I[0] = 4;
z->I[1] -= 1;
break;
case 4:
{ int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
z->I[0] = 4;
z->I[1] -= 1;
break;
}
return 1;
}
extern int indonesian_UTF_8_stem(struct SN_env * z) {
z->I[1] = 0;
{ int c1 = z->c;
while(1) {
int c2 = z->c;
{
int ret = out_grouping_U(z, g_vowel, 97, 117, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
z->I[1] += 1;
continue;
lab1:
z->c = c2;
break;
}
z->c = c1;
}
if (!(z->I[1] > 2)) return 0;
z->I[0] = 0;
z->lb = z->c; z->c = z->l;
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_remove_particle(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
if (!(z->I[1] > 2)) return 0;
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_remove_possessive_pronoun(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
z->c = z->lb;
if (!(z->I[1] > 2)) return 0;
{ int c5 = z->c;
{ int c_test6 = z->c;
{ int ret = r_remove_first_order_prefix(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
{ int c7 = z->c;
{ int c_test8 = z->c;
if (!(z->I[1] > 2)) goto lab4;
z->lb = z->c; z->c = z->l;
{ int ret = r_remove_suffix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
z->c = z->lb;
z->c = c_test8;
}
if (!(z->I[1] > 2)) goto lab4;
{ int ret = r_remove_second_order_prefix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
lab4:
z->c = c7;
}
z->c = c_test6;
}
goto lab2;
lab3:
z->c = c5;
{ int c9 = z->c;
{ int ret = r_remove_second_order_prefix(z);
if (ret < 0) return ret;
}
z->c = c9;
}
{ int c10 = z->c;
if (!(z->I[1] > 2)) goto lab5;
z->lb = z->c; z->c = z->l;
{ int ret = r_remove_suffix(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
z->c = z->lb;
lab5:
z->c = c10;
}
}
lab2:
return 1;
}
extern struct SN_env * indonesian_UTF_8_create_env(void) { return SN_create_env(0, 2); }
extern void indonesian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * indonesian_UTF_8_create_env(void);
extern void indonesian_UTF_8_close_env(struct SN_env * z);
extern int indonesian_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,479 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int irish_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static int r_verb_sfx(struct SN_env * z);
static int r_deriv(struct SN_env * z);
static int r_noun_sfx(struct SN_env * z);
static int r_mark_regions(struct SN_env * z);
static int r_initial_morph(struct SN_env * z);
static int r_RV(struct SN_env * z);
static int r_R2(struct SN_env * z);
static int r_R1(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * irish_UTF_8_create_env(void);
extern void irish_UTF_8_close_env(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static const symbol s_0_0[2] = { 'b', '\'' };
static const symbol s_0_1[2] = { 'b', 'h' };
static const symbol s_0_2[3] = { 'b', 'h', 'f' };
static const symbol s_0_3[2] = { 'b', 'p' };
static const symbol s_0_4[2] = { 'c', 'h' };
static const symbol s_0_5[2] = { 'd', '\'' };
static const symbol s_0_6[4] = { 'd', '\'', 'f', 'h' };
static const symbol s_0_7[2] = { 'd', 'h' };
static const symbol s_0_8[2] = { 'd', 't' };
static const symbol s_0_9[2] = { 'f', 'h' };
static const symbol s_0_10[2] = { 'g', 'c' };
static const symbol s_0_11[2] = { 'g', 'h' };
static const symbol s_0_12[2] = { 'h', '-' };
static const symbol s_0_13[2] = { 'm', '\'' };
static const symbol s_0_14[2] = { 'm', 'b' };
static const symbol s_0_15[2] = { 'm', 'h' };
static const symbol s_0_16[2] = { 'n', '-' };
static const symbol s_0_17[2] = { 'n', 'd' };
static const symbol s_0_18[2] = { 'n', 'g' };
static const symbol s_0_19[2] = { 'p', 'h' };
static const symbol s_0_20[2] = { 's', 'h' };
static const symbol s_0_21[2] = { 't', '-' };
static const symbol s_0_22[2] = { 't', 'h' };
static const symbol s_0_23[2] = { 't', 's' };
static const struct among a_0[24] =
{
{ 2, s_0_0, -1, 1, 0},
{ 2, s_0_1, -1, 4, 0},
{ 3, s_0_2, 1, 2, 0},
{ 2, s_0_3, -1, 8, 0},
{ 2, s_0_4, -1, 5, 0},
{ 2, s_0_5, -1, 1, 0},
{ 4, s_0_6, 5, 2, 0},
{ 2, s_0_7, -1, 6, 0},
{ 2, s_0_8, -1, 9, 0},
{ 2, s_0_9, -1, 2, 0},
{ 2, s_0_10, -1, 5, 0},
{ 2, s_0_11, -1, 7, 0},
{ 2, s_0_12, -1, 1, 0},
{ 2, s_0_13, -1, 1, 0},
{ 2, s_0_14, -1, 4, 0},
{ 2, s_0_15, -1, 10, 0},
{ 2, s_0_16, -1, 1, 0},
{ 2, s_0_17, -1, 6, 0},
{ 2, s_0_18, -1, 7, 0},
{ 2, s_0_19, -1, 8, 0},
{ 2, s_0_20, -1, 3, 0},
{ 2, s_0_21, -1, 1, 0},
{ 2, s_0_22, -1, 9, 0},
{ 2, s_0_23, -1, 3, 0}
};
static const symbol s_1_0[7] = { 0xC3, 0xAD, 'o', 'c', 'h', 't', 'a' };
static const symbol s_1_1[8] = { 'a', 0xC3, 0xAD, 'o', 'c', 'h', 't', 'a' };
static const symbol s_1_2[3] = { 'i', 'r', 'e' };
static const symbol s_1_3[4] = { 'a', 'i', 'r', 'e' };
static const symbol s_1_4[3] = { 'a', 'b', 'h' };
static const symbol s_1_5[4] = { 'e', 'a', 'b', 'h' };
static const symbol s_1_6[3] = { 'i', 'b', 'h' };
static const symbol s_1_7[4] = { 'a', 'i', 'b', 'h' };
static const symbol s_1_8[3] = { 'a', 'm', 'h' };
static const symbol s_1_9[4] = { 'e', 'a', 'm', 'h' };
static const symbol s_1_10[3] = { 'i', 'm', 'h' };
static const symbol s_1_11[4] = { 'a', 'i', 'm', 'h' };
static const symbol s_1_12[6] = { 0xC3, 0xAD, 'o', 'c', 'h', 't' };
static const symbol s_1_13[7] = { 'a', 0xC3, 0xAD, 'o', 'c', 'h', 't' };
static const symbol s_1_14[4] = { 'i', 'r', 0xC3, 0xAD };
static const symbol s_1_15[5] = { 'a', 'i', 'r', 0xC3, 0xAD };
static const struct among a_1[16] =
{
{ 7, s_1_0, -1, 1, 0},
{ 8, s_1_1, 0, 1, 0},
{ 3, s_1_2, -1, 2, 0},
{ 4, s_1_3, 2, 2, 0},
{ 3, s_1_4, -1, 1, 0},
{ 4, s_1_5, 4, 1, 0},
{ 3, s_1_6, -1, 1, 0},
{ 4, s_1_7, 6, 1, 0},
{ 3, s_1_8, -1, 1, 0},
{ 4, s_1_9, 8, 1, 0},
{ 3, s_1_10, -1, 1, 0},
{ 4, s_1_11, 10, 1, 0},
{ 6, s_1_12, -1, 1, 0},
{ 7, s_1_13, 12, 1, 0},
{ 4, s_1_14, -1, 2, 0},
{ 5, s_1_15, 14, 2, 0}
};
static const symbol s_2_0[9] = { 0xC3, 0xB3, 'i', 'd', 'e', 'a', 'c', 'h', 'a' };
static const symbol s_2_1[7] = { 'p', 'a', 't', 'a', 'c', 'h', 'a' };
static const symbol s_2_2[5] = { 'a', 'c', 'h', 't', 'a' };
static const symbol s_2_3[8] = { 'a', 'r', 'c', 'a', 'c', 'h', 't', 'a' };
static const symbol s_2_4[6] = { 'e', 'a', 'c', 'h', 't', 'a' };
static const symbol s_2_5[12] = { 'g', 'r', 'a', 'f', 'a', 0xC3, 0xAD, 'o', 'c', 'h', 't', 'a' };
static const symbol s_2_6[5] = { 'p', 'a', 'i', 't', 'e' };
static const symbol s_2_7[3] = { 'a', 'c', 'h' };
static const symbol s_2_8[4] = { 'e', 'a', 'c', 'h' };
static const symbol s_2_9[8] = { 0xC3, 0xB3, 'i', 'd', 'e', 'a', 'c', 'h' };
static const symbol s_2_10[7] = { 'g', 'i', 'n', 'e', 'a', 'c', 'h' };
static const symbol s_2_11[6] = { 'p', 'a', 't', 'a', 'c', 'h' };
static const symbol s_2_12[10] = { 'g', 'r', 'a', 'f', 'a', 0xC3, 0xAD, 'o', 'c', 'h' };
static const symbol s_2_13[7] = { 'p', 'a', 't', 'a', 'i', 'g', 'h' };
static const symbol s_2_14[7] = { 0xC3, 0xB3, 'i', 'd', 'i', 'g', 'h' };
static const symbol s_2_15[8] = { 'a', 'c', 'h', 't', 0xC3, 0xBA, 'i', 'l' };
static const symbol s_2_16[9] = { 'e', 'a', 'c', 'h', 't', 0xC3, 0xBA, 'i', 'l' };
static const symbol s_2_17[6] = { 'g', 'i', 'n', 'e', 'a', 's' };
static const symbol s_2_18[5] = { 'g', 'i', 'n', 'i', 's' };
static const symbol s_2_19[4] = { 'a', 'c', 'h', 't' };
static const symbol s_2_20[7] = { 'a', 'r', 'c', 'a', 'c', 'h', 't' };
static const symbol s_2_21[5] = { 'e', 'a', 'c', 'h', 't' };
static const symbol s_2_22[11] = { 'g', 'r', 'a', 'f', 'a', 0xC3, 0xAD, 'o', 'c', 'h', 't' };
static const symbol s_2_23[10] = { 'a', 'r', 'c', 'a', 'c', 'h', 't', 'a', 0xC3, 0xAD };
static const symbol s_2_24[14] = { 'g', 'r', 'a', 'f', 'a', 0xC3, 0xAD, 'o', 'c', 'h', 't', 'a', 0xC3, 0xAD };
static const struct among a_2[25] =
{
{ 9, s_2_0, -1, 6, 0},
{ 7, s_2_1, -1, 5, 0},
{ 5, s_2_2, -1, 1, 0},
{ 8, s_2_3, 2, 2, 0},
{ 6, s_2_4, 2, 1, 0},
{ 12, s_2_5, -1, 4, 0},
{ 5, s_2_6, -1, 5, 0},
{ 3, s_2_7, -1, 1, 0},
{ 4, s_2_8, 7, 1, 0},
{ 8, s_2_9, 8, 6, 0},
{ 7, s_2_10, 8, 3, 0},
{ 6, s_2_11, 7, 5, 0},
{ 10, s_2_12, -1, 4, 0},
{ 7, s_2_13, -1, 5, 0},
{ 7, s_2_14, -1, 6, 0},
{ 8, s_2_15, -1, 1, 0},
{ 9, s_2_16, 15, 1, 0},
{ 6, s_2_17, -1, 3, 0},
{ 5, s_2_18, -1, 3, 0},
{ 4, s_2_19, -1, 1, 0},
{ 7, s_2_20, 19, 2, 0},
{ 5, s_2_21, 19, 1, 0},
{ 11, s_2_22, -1, 4, 0},
{ 10, s_2_23, -1, 2, 0},
{ 14, s_2_24, -1, 4, 0}
};
static const symbol s_3_0[4] = { 'i', 'm', 'i', 'd' };
static const symbol s_3_1[5] = { 'a', 'i', 'm', 'i', 'd' };
static const symbol s_3_2[5] = { 0xC3, 0xAD, 'm', 'i', 'd' };
static const symbol s_3_3[6] = { 'a', 0xC3, 0xAD, 'm', 'i', 'd' };
static const symbol s_3_4[3] = { 'a', 'd', 'h' };
static const symbol s_3_5[4] = { 'e', 'a', 'd', 'h' };
static const symbol s_3_6[5] = { 'f', 'a', 'i', 'd', 'h' };
static const symbol s_3_7[4] = { 'f', 'i', 'd', 'h' };
static const symbol s_3_8[4] = { 0xC3, 0xA1, 'i', 'l' };
static const symbol s_3_9[3] = { 'a', 'i', 'n' };
static const symbol s_3_10[4] = { 't', 'e', 'a', 'r' };
static const symbol s_3_11[3] = { 't', 'a', 'r' };
static const struct among a_3[12] =
{
{ 4, s_3_0, -1, 1, 0},
{ 5, s_3_1, 0, 1, 0},
{ 5, s_3_2, -1, 1, 0},
{ 6, s_3_3, 2, 1, 0},
{ 3, s_3_4, -1, 2, 0},
{ 4, s_3_5, 4, 2, 0},
{ 5, s_3_6, -1, 1, 0},
{ 4, s_3_7, -1, 1, 0},
{ 4, s_3_8, -1, 2, 0},
{ 3, s_3_9, -1, 2, 0},
{ 4, s_3_10, -1, 2, 0},
{ 3, s_3_11, -1, 2, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 2 };
static const symbol s_0[] = { 'f' };
static const symbol s_1[] = { 's' };
static const symbol s_2[] = { 'b' };
static const symbol s_3[] = { 'c' };
static const symbol s_4[] = { 'd' };
static const symbol s_5[] = { 'g' };
static const symbol s_6[] = { 'p' };
static const symbol s_7[] = { 't' };
static const symbol s_8[] = { 'm' };
static const symbol s_9[] = { 'a', 'r', 'c' };
static const symbol s_10[] = { 'g', 'i', 'n' };
static const symbol s_11[] = { 'g', 'r', 'a', 'f' };
static const symbol s_12[] = { 'p', 'a', 'i', 't', 'e' };
static const symbol s_13[] = { 0xC3, 0xB3, 'i', 'd' };
static int r_mark_regions(struct SN_env * z) {
z->I[2] = z->l;
z->I[1] = z->l;
z->I[0] = z->l;
{ int c1 = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
z->I[2] = z->c;
lab0:
z->c = c1;
}
{ int c2 = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
z->I[1] = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab1;
z->c += ret;
}
z->I[0] = z->c;
lab1:
z->c = c2;
}
return 1;
}
static int r_initial_morph(struct SN_env * z) {
int among_var;
z->bra = z->c;
among_var = find_among(z, a_0, 24);
if (!(among_var)) return 0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 1, s_3);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 7:
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 8:
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 9:
{ int ret = slice_from_s(z, 1, s_7);
if (ret < 0) return ret;
}
break;
case 10:
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_RV(struct SN_env * z) {
if (!(z->I[2] <= 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[0] <= z->c)) return 0;
return 1;
}
static int r_noun_sfx(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_1, 16);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_deriv(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_2, 25);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 3, s_9);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 3, s_10);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 5, s_12);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 4, s_13);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_verb_sfx(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((282896 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_3, 12);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
extern int irish_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_initial_morph(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_noun_sfx(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_deriv(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_verb_sfx(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * irish_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void irish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * irish_UTF_8_create_env(void);
extern void irish_UTF_8_close_env(struct SN_env * z);
extern int irish_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * kraaij_pohlmann_UTF_8_create_env(void);
extern void kraaij_pohlmann_UTF_8_close_env(struct SN_env * z);
extern int kraaij_pohlmann_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,837 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
static int r_fix_conflicts(struct SN_env * z);
static int r_fix_gd(struct SN_env * z);
static int r_fix_chdz(struct SN_env * z);
static int r_step1(struct SN_env * z);
static int r_R1(struct SN_env * z);
static int r_step2(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif
extern int lithuanian_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * lithuanian_UTF_8_create_env(void);
extern void lithuanian_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[2] = { 'i', 'a' };
static const symbol s_0_2[4] = { 'e', 'r', 'i', 'a' };
static const symbol s_0_3[4] = { 'o', 's', 'n', 'a' };
static const symbol s_0_4[5] = { 'i', 'o', 's', 'n', 'a' };
static const symbol s_0_5[5] = { 'u', 'o', 's', 'n', 'a' };
static const symbol s_0_6[6] = { 'i', 'u', 'o', 's', 'n', 'a' };
static const symbol s_0_7[4] = { 'y', 's', 'n', 'a' };
static const symbol s_0_8[5] = { 0xC4, 0x97, 's', 'n', 'a' };
static const symbol s_0_9[1] = { 'e' };
static const symbol s_0_10[2] = { 'i', 'e' };
static const symbol s_0_11[4] = { 'e', 'n', 'i', 'e' };
static const symbol s_0_12[4] = { 'e', 'r', 'i', 'e' };
static const symbol s_0_13[3] = { 'o', 'j', 'e' };
static const symbol s_0_14[4] = { 'i', 'o', 'j', 'e' };
static const symbol s_0_15[3] = { 'u', 'j', 'e' };
static const symbol s_0_16[4] = { 'i', 'u', 'j', 'e' };
static const symbol s_0_17[3] = { 'y', 'j', 'e' };
static const symbol s_0_18[5] = { 'e', 'n', 'y', 'j', 'e' };
static const symbol s_0_19[5] = { 'e', 'r', 'y', 'j', 'e' };
static const symbol s_0_20[4] = { 0xC4, 0x97, 'j', 'e' };
static const symbol s_0_21[3] = { 'a', 'm', 'e' };
static const symbol s_0_22[4] = { 'i', 'a', 'm', 'e' };
static const symbol s_0_23[4] = { 's', 'i', 'm', 'e' };
static const symbol s_0_24[3] = { 'o', 'm', 'e' };
static const symbol s_0_25[4] = { 0xC4, 0x97, 'm', 'e' };
static const symbol s_0_26[7] = { 't', 'u', 'm', 0xC4, 0x97, 'm', 'e' };
static const symbol s_0_27[3] = { 'o', 's', 'e' };
static const symbol s_0_28[4] = { 'i', 'o', 's', 'e' };
static const symbol s_0_29[4] = { 'u', 'o', 's', 'e' };
static const symbol s_0_30[5] = { 'i', 'u', 'o', 's', 'e' };
static const symbol s_0_31[3] = { 'y', 's', 'e' };
static const symbol s_0_32[5] = { 'e', 'n', 'y', 's', 'e' };
static const symbol s_0_33[5] = { 'e', 'r', 'y', 's', 'e' };
static const symbol s_0_34[4] = { 0xC4, 0x97, 's', 'e' };
static const symbol s_0_35[3] = { 'a', 't', 'e' };
static const symbol s_0_36[4] = { 'i', 'a', 't', 'e' };
static const symbol s_0_37[3] = { 'i', 't', 'e' };
static const symbol s_0_38[4] = { 'k', 'i', 't', 'e' };
static const symbol s_0_39[4] = { 's', 'i', 't', 'e' };
static const symbol s_0_40[3] = { 'o', 't', 'e' };
static const symbol s_0_41[4] = { 't', 'u', 't', 'e' };
static const symbol s_0_42[4] = { 0xC4, 0x97, 't', 'e' };
static const symbol s_0_43[7] = { 't', 'u', 'm', 0xC4, 0x97, 't', 'e' };
static const symbol s_0_44[1] = { 'i' };
static const symbol s_0_45[2] = { 'a', 'i' };
static const symbol s_0_46[3] = { 'i', 'a', 'i' };
static const symbol s_0_47[5] = { 'e', 'r', 'i', 'a', 'i' };
static const symbol s_0_48[2] = { 'e', 'i' };
static const symbol s_0_49[5] = { 't', 'u', 'm', 'e', 'i' };
static const symbol s_0_50[2] = { 'k', 'i' };
static const symbol s_0_51[3] = { 'i', 'm', 'i' };
static const symbol s_0_52[5] = { 'e', 'r', 'i', 'm', 'i' };
static const symbol s_0_53[3] = { 'u', 'm', 'i' };
static const symbol s_0_54[4] = { 'i', 'u', 'm', 'i' };
static const symbol s_0_55[2] = { 's', 'i' };
static const symbol s_0_56[3] = { 'a', 's', 'i' };
static const symbol s_0_57[4] = { 'i', 'a', 's', 'i' };
static const symbol s_0_58[3] = { 'e', 's', 'i' };
static const symbol s_0_59[4] = { 'i', 'e', 's', 'i' };
static const symbol s_0_60[5] = { 's', 'i', 'e', 's', 'i' };
static const symbol s_0_61[3] = { 'i', 's', 'i' };
static const symbol s_0_62[4] = { 'a', 'i', 's', 'i' };
static const symbol s_0_63[4] = { 'e', 'i', 's', 'i' };
static const symbol s_0_64[7] = { 't', 'u', 'm', 'e', 'i', 's', 'i' };
static const symbol s_0_65[4] = { 'u', 'i', 's', 'i' };
static const symbol s_0_66[3] = { 'o', 's', 'i' };
static const symbol s_0_67[6] = { 0xC4, 0x97, 'j', 'o', 's', 'i' };
static const symbol s_0_68[4] = { 'u', 'o', 's', 'i' };
static const symbol s_0_69[5] = { 'i', 'u', 'o', 's', 'i' };
static const symbol s_0_70[6] = { 's', 'i', 'u', 'o', 's', 'i' };
static const symbol s_0_71[3] = { 'u', 's', 'i' };
static const symbol s_0_72[4] = { 'a', 'u', 's', 'i' };
static const symbol s_0_73[7] = { 0xC4, 0x8D, 'i', 'a', 'u', 's', 'i' };
static const symbol s_0_74[4] = { 0xC4, 0x85, 's', 'i' };
static const symbol s_0_75[4] = { 0xC4, 0x97, 's', 'i' };
static const symbol s_0_76[4] = { 0xC5, 0xB3, 's', 'i' };
static const symbol s_0_77[5] = { 't', 0xC5, 0xB3, 's', 'i' };
static const symbol s_0_78[2] = { 't', 'i' };
static const symbol s_0_79[4] = { 'e', 'n', 't', 'i' };
static const symbol s_0_80[4] = { 'i', 'n', 't', 'i' };
static const symbol s_0_81[3] = { 'o', 't', 'i' };
static const symbol s_0_82[4] = { 'i', 'o', 't', 'i' };
static const symbol s_0_83[4] = { 'u', 'o', 't', 'i' };
static const symbol s_0_84[5] = { 'i', 'u', 'o', 't', 'i' };
static const symbol s_0_85[4] = { 'a', 'u', 't', 'i' };
static const symbol s_0_86[5] = { 'i', 'a', 'u', 't', 'i' };
static const symbol s_0_87[3] = { 'y', 't', 'i' };
static const symbol s_0_88[4] = { 0xC4, 0x97, 't', 'i' };
static const symbol s_0_89[7] = { 't', 'e', 'l', 0xC4, 0x97, 't', 'i' };
static const symbol s_0_90[6] = { 'i', 'n', 0xC4, 0x97, 't', 'i' };
static const symbol s_0_91[7] = { 't', 'e', 'r', 0xC4, 0x97, 't', 'i' };
static const symbol s_0_92[2] = { 'u', 'i' };
static const symbol s_0_93[3] = { 'i', 'u', 'i' };
static const symbol s_0_94[5] = { 'e', 'n', 'i', 'u', 'i' };
static const symbol s_0_95[2] = { 'o', 'j' };
static const symbol s_0_96[3] = { 0xC4, 0x97, 'j' };
static const symbol s_0_97[1] = { 'k' };
static const symbol s_0_98[2] = { 'a', 'm' };
static const symbol s_0_99[3] = { 'i', 'a', 'm' };
static const symbol s_0_100[3] = { 'i', 'e', 'm' };
static const symbol s_0_101[2] = { 'i', 'm' };
static const symbol s_0_102[3] = { 's', 'i', 'm' };
static const symbol s_0_103[2] = { 'o', 'm' };
static const symbol s_0_104[3] = { 't', 'u', 'm' };
static const symbol s_0_105[3] = { 0xC4, 0x97, 'm' };
static const symbol s_0_106[6] = { 't', 'u', 'm', 0xC4, 0x97, 'm' };
static const symbol s_0_107[2] = { 'a', 'n' };
static const symbol s_0_108[2] = { 'o', 'n' };
static const symbol s_0_109[3] = { 'i', 'o', 'n' };
static const symbol s_0_110[2] = { 'u', 'n' };
static const symbol s_0_111[3] = { 'i', 'u', 'n' };
static const symbol s_0_112[3] = { 0xC4, 0x97, 'n' };
static const symbol s_0_113[1] = { 'o' };
static const symbol s_0_114[2] = { 'i', 'o' };
static const symbol s_0_115[4] = { 'e', 'n', 'i', 'o' };
static const symbol s_0_116[4] = { 0xC4, 0x97, 'j', 'o' };
static const symbol s_0_117[2] = { 'u', 'o' };
static const symbol s_0_118[1] = { 's' };
static const symbol s_0_119[2] = { 'a', 's' };
static const symbol s_0_120[3] = { 'i', 'a', 's' };
static const symbol s_0_121[2] = { 'e', 's' };
static const symbol s_0_122[3] = { 'i', 'e', 's' };
static const symbol s_0_123[2] = { 'i', 's' };
static const symbol s_0_124[3] = { 'a', 'i', 's' };
static const symbol s_0_125[4] = { 'i', 'a', 'i', 's' };
static const symbol s_0_126[6] = { 't', 'u', 'm', 'e', 'i', 's' };
static const symbol s_0_127[4] = { 'i', 'm', 'i', 's' };
static const symbol s_0_128[6] = { 'e', 'n', 'i', 'm', 'i', 's' };
static const symbol s_0_129[4] = { 'o', 'm', 'i', 's' };
static const symbol s_0_130[5] = { 'i', 'o', 'm', 'i', 's' };
static const symbol s_0_131[4] = { 'u', 'm', 'i', 's' };
static const symbol s_0_132[5] = { 0xC4, 0x97, 'm', 'i', 's' };
static const symbol s_0_133[4] = { 'e', 'n', 'i', 's' };
static const symbol s_0_134[4] = { 'a', 's', 'i', 's' };
static const symbol s_0_135[4] = { 'y', 's', 'i', 's' };
static const symbol s_0_136[3] = { 'a', 'm', 's' };
static const symbol s_0_137[4] = { 'i', 'a', 'm', 's' };
static const symbol s_0_138[4] = { 'i', 'e', 'm', 's' };
static const symbol s_0_139[3] = { 'i', 'm', 's' };
static const symbol s_0_140[5] = { 'e', 'n', 'i', 'm', 's' };
static const symbol s_0_141[5] = { 'e', 'r', 'i', 'm', 's' };
static const symbol s_0_142[3] = { 'o', 'm', 's' };
static const symbol s_0_143[4] = { 'i', 'o', 'm', 's' };
static const symbol s_0_144[3] = { 'u', 'm', 's' };
static const symbol s_0_145[4] = { 0xC4, 0x97, 'm', 's' };
static const symbol s_0_146[3] = { 'e', 'n', 's' };
static const symbol s_0_147[2] = { 'o', 's' };
static const symbol s_0_148[3] = { 'i', 'o', 's' };
static const symbol s_0_149[3] = { 'u', 'o', 's' };
static const symbol s_0_150[4] = { 'i', 'u', 'o', 's' };
static const symbol s_0_151[3] = { 'e', 'r', 's' };
static const symbol s_0_152[2] = { 'u', 's' };
static const symbol s_0_153[3] = { 'a', 'u', 's' };
static const symbol s_0_154[4] = { 'i', 'a', 'u', 's' };
static const symbol s_0_155[3] = { 'i', 'u', 's' };
static const symbol s_0_156[2] = { 'y', 's' };
static const symbol s_0_157[4] = { 'e', 'n', 'y', 's' };
static const symbol s_0_158[4] = { 'e', 'r', 'y', 's' };
static const symbol s_0_159[3] = { 0xC4, 0x85, 's' };
static const symbol s_0_160[4] = { 'i', 0xC4, 0x85, 's' };
static const symbol s_0_161[3] = { 0xC4, 0x97, 's' };
static const symbol s_0_162[5] = { 'a', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_163[6] = { 'i', 'a', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_164[5] = { 'i', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_165[6] = { 'k', 'i', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_166[6] = { 's', 'i', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_167[5] = { 'o', 'm', 0xC4, 0x97, 's' };
static const symbol s_0_168[6] = { 0xC4, 0x97, 'm', 0xC4, 0x97, 's' };
static const symbol s_0_169[9] = { 't', 'u', 'm', 0xC4, 0x97, 'm', 0xC4, 0x97, 's' };
static const symbol s_0_170[5] = { 'a', 't', 0xC4, 0x97, 's' };
static const symbol s_0_171[6] = { 'i', 'a', 't', 0xC4, 0x97, 's' };
static const symbol s_0_172[6] = { 's', 'i', 't', 0xC4, 0x97, 's' };
static const symbol s_0_173[5] = { 'o', 't', 0xC4, 0x97, 's' };
static const symbol s_0_174[6] = { 0xC4, 0x97, 't', 0xC4, 0x97, 's' };
static const symbol s_0_175[9] = { 't', 'u', 'm', 0xC4, 0x97, 't', 0xC4, 0x97, 's' };
static const symbol s_0_176[3] = { 0xC5, 0xAB, 's' };
static const symbol s_0_177[3] = { 0xC4, 0xAF, 's' };
static const symbol s_0_178[4] = { 't', 0xC5, 0xB3, 's' };
static const symbol s_0_179[2] = { 'a', 't' };
static const symbol s_0_180[3] = { 'i', 'a', 't' };
static const symbol s_0_181[2] = { 'i', 't' };
static const symbol s_0_182[3] = { 's', 'i', 't' };
static const symbol s_0_183[2] = { 'o', 't' };
static const symbol s_0_184[3] = { 0xC4, 0x97, 't' };
static const symbol s_0_185[6] = { 't', 'u', 'm', 0xC4, 0x97, 't' };
static const symbol s_0_186[1] = { 'u' };
static const symbol s_0_187[2] = { 'a', 'u' };
static const symbol s_0_188[3] = { 'i', 'a', 'u' };
static const symbol s_0_189[5] = { 0xC4, 0x8D, 'i', 'a', 'u' };
static const symbol s_0_190[2] = { 'i', 'u' };
static const symbol s_0_191[4] = { 'e', 'n', 'i', 'u' };
static const symbol s_0_192[3] = { 's', 'i', 'u' };
static const symbol s_0_193[1] = { 'y' };
static const symbol s_0_194[2] = { 0xC4, 0x85 };
static const symbol s_0_195[3] = { 'i', 0xC4, 0x85 };
static const symbol s_0_196[2] = { 0xC4, 0x97 };
static const symbol s_0_197[2] = { 0xC4, 0x99 };
static const symbol s_0_198[2] = { 0xC4, 0xAF };
static const symbol s_0_199[4] = { 'e', 'n', 0xC4, 0xAF };
static const symbol s_0_200[4] = { 'e', 'r', 0xC4, 0xAF };
static const symbol s_0_201[2] = { 0xC5, 0xB3 };
static const symbol s_0_202[3] = { 'i', 0xC5, 0xB3 };
static const symbol s_0_203[4] = { 'e', 'r', 0xC5, 0xB3 };
static const struct among a_0[204] =
{
{ 1, s_0_0, -1, -1, 0},
{ 2, s_0_1, 0, -1, 0},
{ 4, s_0_2, 1, -1, 0},
{ 4, s_0_3, 0, -1, 0},
{ 5, s_0_4, 3, -1, 0},
{ 5, s_0_5, 3, -1, 0},
{ 6, s_0_6, 5, -1, 0},
{ 4, s_0_7, 0, -1, 0},
{ 5, s_0_8, 0, -1, 0},
{ 1, s_0_9, -1, -1, 0},
{ 2, s_0_10, 9, -1, 0},
{ 4, s_0_11, 10, -1, 0},
{ 4, s_0_12, 10, -1, 0},
{ 3, s_0_13, 9, -1, 0},
{ 4, s_0_14, 13, -1, 0},
{ 3, s_0_15, 9, -1, 0},
{ 4, s_0_16, 15, -1, 0},
{ 3, s_0_17, 9, -1, 0},
{ 5, s_0_18, 17, -1, 0},
{ 5, s_0_19, 17, -1, 0},
{ 4, s_0_20, 9, -1, 0},
{ 3, s_0_21, 9, -1, 0},
{ 4, s_0_22, 21, -1, 0},
{ 4, s_0_23, 9, -1, 0},
{ 3, s_0_24, 9, -1, 0},
{ 4, s_0_25, 9, -1, 0},
{ 7, s_0_26, 25, -1, 0},
{ 3, s_0_27, 9, -1, 0},
{ 4, s_0_28, 27, -1, 0},
{ 4, s_0_29, 27, -1, 0},
{ 5, s_0_30, 29, -1, 0},
{ 3, s_0_31, 9, -1, 0},
{ 5, s_0_32, 31, -1, 0},
{ 5, s_0_33, 31, -1, 0},
{ 4, s_0_34, 9, -1, 0},
{ 3, s_0_35, 9, -1, 0},
{ 4, s_0_36, 35, -1, 0},
{ 3, s_0_37, 9, -1, 0},
{ 4, s_0_38, 37, -1, 0},
{ 4, s_0_39, 37, -1, 0},
{ 3, s_0_40, 9, -1, 0},
{ 4, s_0_41, 9, -1, 0},
{ 4, s_0_42, 9, -1, 0},
{ 7, s_0_43, 42, -1, 0},
{ 1, s_0_44, -1, -1, 0},
{ 2, s_0_45, 44, -1, 0},
{ 3, s_0_46, 45, -1, 0},
{ 5, s_0_47, 46, -1, 0},
{ 2, s_0_48, 44, -1, 0},
{ 5, s_0_49, 48, -1, 0},
{ 2, s_0_50, 44, -1, 0},
{ 3, s_0_51, 44, -1, 0},
{ 5, s_0_52, 51, -1, 0},
{ 3, s_0_53, 44, -1, 0},
{ 4, s_0_54, 53, -1, 0},
{ 2, s_0_55, 44, -1, 0},
{ 3, s_0_56, 55, -1, 0},
{ 4, s_0_57, 56, -1, 0},
{ 3, s_0_58, 55, -1, 0},
{ 4, s_0_59, 58, -1, 0},
{ 5, s_0_60, 59, -1, 0},
{ 3, s_0_61, 55, -1, 0},
{ 4, s_0_62, 61, -1, 0},
{ 4, s_0_63, 61, -1, 0},
{ 7, s_0_64, 63, -1, 0},
{ 4, s_0_65, 61, -1, 0},
{ 3, s_0_66, 55, -1, 0},
{ 6, s_0_67, 66, -1, 0},
{ 4, s_0_68, 66, -1, 0},
{ 5, s_0_69, 68, -1, 0},
{ 6, s_0_70, 69, -1, 0},
{ 3, s_0_71, 55, -1, 0},
{ 4, s_0_72, 71, -1, 0},
{ 7, s_0_73, 72, -1, 0},
{ 4, s_0_74, 55, -1, 0},
{ 4, s_0_75, 55, -1, 0},
{ 4, s_0_76, 55, -1, 0},
{ 5, s_0_77, 76, -1, 0},
{ 2, s_0_78, 44, -1, 0},
{ 4, s_0_79, 78, -1, 0},
{ 4, s_0_80, 78, -1, 0},
{ 3, s_0_81, 78, -1, 0},
{ 4, s_0_82, 81, -1, 0},
{ 4, s_0_83, 81, -1, 0},
{ 5, s_0_84, 83, -1, 0},
{ 4, s_0_85, 78, -1, 0},
{ 5, s_0_86, 85, -1, 0},
{ 3, s_0_87, 78, -1, 0},
{ 4, s_0_88, 78, -1, 0},
{ 7, s_0_89, 88, -1, 0},
{ 6, s_0_90, 88, -1, 0},
{ 7, s_0_91, 88, -1, 0},
{ 2, s_0_92, 44, -1, 0},
{ 3, s_0_93, 92, -1, 0},
{ 5, s_0_94, 93, -1, 0},
{ 2, s_0_95, -1, -1, 0},
{ 3, s_0_96, -1, -1, 0},
{ 1, s_0_97, -1, -1, 0},
{ 2, s_0_98, -1, -1, 0},
{ 3, s_0_99, 98, -1, 0},
{ 3, s_0_100, -1, -1, 0},
{ 2, s_0_101, -1, -1, 0},
{ 3, s_0_102, 101, -1, 0},
{ 2, s_0_103, -1, -1, 0},
{ 3, s_0_104, -1, -1, 0},
{ 3, s_0_105, -1, -1, 0},
{ 6, s_0_106, 105, -1, 0},
{ 2, s_0_107, -1, -1, 0},
{ 2, s_0_108, -1, -1, 0},
{ 3, s_0_109, 108, -1, 0},
{ 2, s_0_110, -1, -1, 0},
{ 3, s_0_111, 110, -1, 0},
{ 3, s_0_112, -1, -1, 0},
{ 1, s_0_113, -1, -1, 0},
{ 2, s_0_114, 113, -1, 0},
{ 4, s_0_115, 114, -1, 0},
{ 4, s_0_116, 113, -1, 0},
{ 2, s_0_117, 113, -1, 0},
{ 1, s_0_118, -1, -1, 0},
{ 2, s_0_119, 118, -1, 0},
{ 3, s_0_120, 119, -1, 0},
{ 2, s_0_121, 118, -1, 0},
{ 3, s_0_122, 121, -1, 0},
{ 2, s_0_123, 118, -1, 0},
{ 3, s_0_124, 123, -1, 0},
{ 4, s_0_125, 124, -1, 0},
{ 6, s_0_126, 123, -1, 0},
{ 4, s_0_127, 123, -1, 0},
{ 6, s_0_128, 127, -1, 0},
{ 4, s_0_129, 123, -1, 0},
{ 5, s_0_130, 129, -1, 0},
{ 4, s_0_131, 123, -1, 0},
{ 5, s_0_132, 123, -1, 0},
{ 4, s_0_133, 123, -1, 0},
{ 4, s_0_134, 123, -1, 0},
{ 4, s_0_135, 123, -1, 0},
{ 3, s_0_136, 118, -1, 0},
{ 4, s_0_137, 136, -1, 0},
{ 4, s_0_138, 118, -1, 0},
{ 3, s_0_139, 118, -1, 0},
{ 5, s_0_140, 139, -1, 0},
{ 5, s_0_141, 139, -1, 0},
{ 3, s_0_142, 118, -1, 0},
{ 4, s_0_143, 142, -1, 0},
{ 3, s_0_144, 118, -1, 0},
{ 4, s_0_145, 118, -1, 0},
{ 3, s_0_146, 118, -1, 0},
{ 2, s_0_147, 118, -1, 0},
{ 3, s_0_148, 147, -1, 0},
{ 3, s_0_149, 147, -1, 0},
{ 4, s_0_150, 149, -1, 0},
{ 3, s_0_151, 118, -1, 0},
{ 2, s_0_152, 118, -1, 0},
{ 3, s_0_153, 152, -1, 0},
{ 4, s_0_154, 153, -1, 0},
{ 3, s_0_155, 152, -1, 0},
{ 2, s_0_156, 118, -1, 0},
{ 4, s_0_157, 156, -1, 0},
{ 4, s_0_158, 156, -1, 0},
{ 3, s_0_159, 118, -1, 0},
{ 4, s_0_160, 159, -1, 0},
{ 3, s_0_161, 118, -1, 0},
{ 5, s_0_162, 161, -1, 0},
{ 6, s_0_163, 162, -1, 0},
{ 5, s_0_164, 161, -1, 0},
{ 6, s_0_165, 164, -1, 0},
{ 6, s_0_166, 164, -1, 0},
{ 5, s_0_167, 161, -1, 0},
{ 6, s_0_168, 161, -1, 0},
{ 9, s_0_169, 168, -1, 0},
{ 5, s_0_170, 161, -1, 0},
{ 6, s_0_171, 170, -1, 0},
{ 6, s_0_172, 161, -1, 0},
{ 5, s_0_173, 161, -1, 0},
{ 6, s_0_174, 161, -1, 0},
{ 9, s_0_175, 174, -1, 0},
{ 3, s_0_176, 118, -1, 0},
{ 3, s_0_177, 118, -1, 0},
{ 4, s_0_178, 118, -1, 0},
{ 2, s_0_179, -1, -1, 0},
{ 3, s_0_180, 179, -1, 0},
{ 2, s_0_181, -1, -1, 0},
{ 3, s_0_182, 181, -1, 0},
{ 2, s_0_183, -1, -1, 0},
{ 3, s_0_184, -1, -1, 0},
{ 6, s_0_185, 184, -1, 0},
{ 1, s_0_186, -1, -1, 0},
{ 2, s_0_187, 186, -1, 0},
{ 3, s_0_188, 187, -1, 0},
{ 5, s_0_189, 188, -1, 0},
{ 2, s_0_190, 186, -1, 0},
{ 4, s_0_191, 190, -1, 0},
{ 3, s_0_192, 190, -1, 0},
{ 1, s_0_193, -1, -1, 0},
{ 2, s_0_194, -1, -1, 0},
{ 3, s_0_195, 194, -1, 0},
{ 2, s_0_196, -1, -1, 0},
{ 2, s_0_197, -1, -1, 0},
{ 2, s_0_198, -1, -1, 0},
{ 4, s_0_199, 198, -1, 0},
{ 4, s_0_200, 198, -1, 0},
{ 2, s_0_201, -1, -1, 0},
{ 3, s_0_202, 201, -1, 0},
{ 4, s_0_203, 201, -1, 0}
};
static const symbol s_1_0[3] = { 'i', 'n', 'g' };
static const symbol s_1_1[2] = { 'a', 'j' };
static const symbol s_1_2[3] = { 'i', 'a', 'j' };
static const symbol s_1_3[3] = { 'i', 'e', 'j' };
static const symbol s_1_4[2] = { 'o', 'j' };
static const symbol s_1_5[3] = { 'i', 'o', 'j' };
static const symbol s_1_6[3] = { 'u', 'o', 'j' };
static const symbol s_1_7[4] = { 'i', 'u', 'o', 'j' };
static const symbol s_1_8[3] = { 'a', 'u', 'j' };
static const symbol s_1_9[3] = { 0xC4, 0x85, 'j' };
static const symbol s_1_10[4] = { 'i', 0xC4, 0x85, 'j' };
static const symbol s_1_11[3] = { 0xC4, 0x97, 'j' };
static const symbol s_1_12[3] = { 0xC5, 0xB3, 'j' };
static const symbol s_1_13[4] = { 'i', 0xC5, 0xB3, 'j' };
static const symbol s_1_14[2] = { 'o', 'k' };
static const symbol s_1_15[3] = { 'i', 'o', 'k' };
static const symbol s_1_16[3] = { 'i', 'u', 'k' };
static const symbol s_1_17[5] = { 'u', 'l', 'i', 'u', 'k' };
static const symbol s_1_18[6] = { 'u', 0xC4, 0x8D, 'i', 'u', 'k' };
static const symbol s_1_19[4] = { 'i', 0xC5, 0xA1, 'k' };
static const symbol s_1_20[3] = { 'i', 'u', 'l' };
static const symbol s_1_21[2] = { 'y', 'l' };
static const symbol s_1_22[3] = { 0xC4, 0x97, 'l' };
static const symbol s_1_23[2] = { 'a', 'm' };
static const symbol s_1_24[3] = { 'd', 'a', 'm' };
static const symbol s_1_25[3] = { 'j', 'a', 'm' };
static const symbol s_1_26[4] = { 'z', 'g', 'a', 'n' };
static const symbol s_1_27[3] = { 'a', 'i', 'n' };
static const symbol s_1_28[3] = { 'e', 's', 'n' };
static const symbol s_1_29[2] = { 'o', 'p' };
static const symbol s_1_30[3] = { 'i', 'o', 'p' };
static const symbol s_1_31[3] = { 'i', 'a', 's' };
static const symbol s_1_32[3] = { 'i', 'e', 's' };
static const symbol s_1_33[3] = { 'a', 'i', 's' };
static const symbol s_1_34[4] = { 'i', 'a', 'i', 's' };
static const symbol s_1_35[2] = { 'o', 's' };
static const symbol s_1_36[3] = { 'i', 'o', 's' };
static const symbol s_1_37[3] = { 'u', 'o', 's' };
static const symbol s_1_38[4] = { 'i', 'u', 'o', 's' };
static const symbol s_1_39[3] = { 'a', 'u', 's' };
static const symbol s_1_40[4] = { 'i', 'a', 'u', 's' };
static const symbol s_1_41[3] = { 0xC4, 0x85, 's' };
static const symbol s_1_42[4] = { 'i', 0xC4, 0x85, 's' };
static const symbol s_1_43[3] = { 0xC4, 0x99, 's' };
static const symbol s_1_44[7] = { 'u', 't', 0xC4, 0x97, 'a', 'i', 't' };
static const symbol s_1_45[3] = { 'a', 'n', 't' };
static const symbol s_1_46[4] = { 'i', 'a', 'n', 't' };
static const symbol s_1_47[5] = { 's', 'i', 'a', 'n', 't' };
static const symbol s_1_48[3] = { 'i', 'n', 't' };
static const symbol s_1_49[2] = { 'o', 't' };
static const symbol s_1_50[3] = { 'u', 'o', 't' };
static const symbol s_1_51[4] = { 'i', 'u', 'o', 't' };
static const symbol s_1_52[2] = { 'y', 't' };
static const symbol s_1_53[3] = { 0xC4, 0x97, 't' };
static const symbol s_1_54[5] = { 'y', 'k', 0xC5, 0xA1, 't' };
static const symbol s_1_55[3] = { 'i', 'a', 'u' };
static const symbol s_1_56[3] = { 'd', 'a', 'v' };
static const symbol s_1_57[2] = { 's', 'v' };
static const symbol s_1_58[3] = { 0xC5, 0xA1, 'v' };
static const symbol s_1_59[6] = { 'y', 'k', 0xC5, 0xA1, 0xC4, 0x8D };
static const symbol s_1_60[2] = { 0xC4, 0x99 };
static const symbol s_1_61[5] = { 0xC4, 0x97, 'j', 0xC4, 0x99 };
static const struct among a_1[62] =
{
{ 3, s_1_0, -1, -1, 0},
{ 2, s_1_1, -1, -1, 0},
{ 3, s_1_2, 1, -1, 0},
{ 3, s_1_3, -1, -1, 0},
{ 2, s_1_4, -1, -1, 0},
{ 3, s_1_5, 4, -1, 0},
{ 3, s_1_6, 4, -1, 0},
{ 4, s_1_7, 6, -1, 0},
{ 3, s_1_8, -1, -1, 0},
{ 3, s_1_9, -1, -1, 0},
{ 4, s_1_10, 9, -1, 0},
{ 3, s_1_11, -1, -1, 0},
{ 3, s_1_12, -1, -1, 0},
{ 4, s_1_13, 12, -1, 0},
{ 2, s_1_14, -1, -1, 0},
{ 3, s_1_15, 14, -1, 0},
{ 3, s_1_16, -1, -1, 0},
{ 5, s_1_17, 16, -1, 0},
{ 6, s_1_18, 16, -1, 0},
{ 4, s_1_19, -1, -1, 0},
{ 3, s_1_20, -1, -1, 0},
{ 2, s_1_21, -1, -1, 0},
{ 3, s_1_22, -1, -1, 0},
{ 2, s_1_23, -1, -1, 0},
{ 3, s_1_24, 23, -1, 0},
{ 3, s_1_25, 23, -1, 0},
{ 4, s_1_26, -1, -1, 0},
{ 3, s_1_27, -1, -1, 0},
{ 3, s_1_28, -1, -1, 0},
{ 2, s_1_29, -1, -1, 0},
{ 3, s_1_30, 29, -1, 0},
{ 3, s_1_31, -1, -1, 0},
{ 3, s_1_32, -1, -1, 0},
{ 3, s_1_33, -1, -1, 0},
{ 4, s_1_34, 33, -1, 0},
{ 2, s_1_35, -1, -1, 0},
{ 3, s_1_36, 35, -1, 0},
{ 3, s_1_37, 35, -1, 0},
{ 4, s_1_38, 37, -1, 0},
{ 3, s_1_39, -1, -1, 0},
{ 4, s_1_40, 39, -1, 0},
{ 3, s_1_41, -1, -1, 0},
{ 4, s_1_42, 41, -1, 0},
{ 3, s_1_43, -1, -1, 0},
{ 7, s_1_44, -1, -1, 0},
{ 3, s_1_45, -1, -1, 0},
{ 4, s_1_46, 45, -1, 0},
{ 5, s_1_47, 46, -1, 0},
{ 3, s_1_48, -1, -1, 0},
{ 2, s_1_49, -1, -1, 0},
{ 3, s_1_50, 49, -1, 0},
{ 4, s_1_51, 50, -1, 0},
{ 2, s_1_52, -1, -1, 0},
{ 3, s_1_53, -1, -1, 0},
{ 5, s_1_54, -1, -1, 0},
{ 3, s_1_55, -1, -1, 0},
{ 3, s_1_56, -1, -1, 0},
{ 2, s_1_57, -1, -1, 0},
{ 3, s_1_58, -1, -1, 0},
{ 6, s_1_59, -1, -1, 0},
{ 2, s_1_60, -1, -1, 0},
{ 5, s_1_61, 60, -1, 0}
};
static const symbol s_2_0[5] = { 'o', 'j', 'i', 'm', 'e' };
static const symbol s_2_1[6] = { 0xC4, 0x97, 'j', 'i', 'm', 'e' };
static const symbol s_2_2[5] = { 'a', 'v', 'i', 'm', 'e' };
static const symbol s_2_3[5] = { 'o', 'k', 'a', 't', 'e' };
static const symbol s_2_4[4] = { 'a', 'i', 't', 'e' };
static const symbol s_2_5[4] = { 'u', 'o', 't', 'e' };
static const symbol s_2_6[5] = { 'a', 's', 'i', 'u', 's' };
static const symbol s_2_7[7] = { 'o', 'k', 'a', 't', 0xC4, 0x97, 's' };
static const symbol s_2_8[6] = { 'a', 'i', 't', 0xC4, 0x97, 's' };
static const symbol s_2_9[6] = { 'u', 'o', 't', 0xC4, 0x97, 's' };
static const symbol s_2_10[4] = { 'e', 's', 'i', 'u' };
static const struct among a_2[11] =
{
{ 5, s_2_0, -1, 7, 0},
{ 6, s_2_1, -1, 3, 0},
{ 5, s_2_2, -1, 6, 0},
{ 5, s_2_3, -1, 8, 0},
{ 4, s_2_4, -1, 1, 0},
{ 4, s_2_5, -1, 2, 0},
{ 5, s_2_6, -1, 5, 0},
{ 7, s_2_7, -1, 8, 0},
{ 6, s_2_8, -1, 1, 0},
{ 6, s_2_9, -1, 2, 0},
{ 4, s_2_10, -1, 4, 0}
};
static const symbol s_3_0[2] = { 0xC4, 0x8D };
static const symbol s_3_1[3] = { 'd', 0xC5, 0xBE };
static const struct among a_3[2] =
{
{ 2, s_3_0, -1, 1, 0},
{ 3, s_3_1, -1, 2, 0}
};
static const symbol s_4_0[2] = { 'g', 'd' };
static const struct among a_4[1] =
{
{ 2, s_4_0, -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, 0, 0, 0, 0, 16, 0, 64, 1, 0, 64, 0, 0, 0, 0, 0, 0, 0, 4, 4 };
static const symbol s_0[] = { 'a', 'i', 't', 0xC4, 0x97 };
static const symbol s_1[] = { 'u', 'o', 't', 0xC4, 0x97 };
static const symbol s_2[] = { 0xC4, 0x97, 'j', 'i', 'm', 'a', 's' };
static const symbol s_3[] = { 'e', 's', 'y', 's' };
static const symbol s_4[] = { 'a', 's', 'y', 's' };
static const symbol s_5[] = { 'a', 'v', 'i', 'm', 'a', 's' };
static const symbol s_6[] = { 'o', 'j', 'i', 'm', 'a', 's' };
static const symbol s_7[] = { 'o', 'k', 'a', 't', 0xC4, 0x97 };
static const symbol s_8[] = { 't' };
static const symbol s_9[] = { 'd' };
static const symbol s_10[] = { 'g' };
static int r_R1(struct SN_env * z) {
if (!(z->I[0] <= z->c)) return 0;
return 1;
}
static int r_step1(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c;
if (!(find_among_b(z, a_0, 204))) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_step2(struct SN_env * z) {
while(1) {
int m1 = z->l - z->c; (void)m1;
{ int mlimit2;
if (z->c < z->I[0]) goto lab0;
mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c;
if (!(find_among_b(z, a_1, 62))) { z->lb = mlimit2; goto lab0; }
z->bra = z->c;
z->lb = mlimit2;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
continue;
lab0:
z->c = z->l - m1;
break;
}
return 1;
}
static int r_fix_conflicts(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 3 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((2621472 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_2, 11);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 5, s_0);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 5, s_1);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 7, s_2);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 4, s_3);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 4, s_4);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 6, s_5);
if (ret < 0) return ret;
}
break;
case 7:
{ int ret = slice_from_s(z, 6, s_6);
if (ret < 0) return ret;
}
break;
case 8:
{ int ret = slice_from_s(z, 6, s_7);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_fix_chdz(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 141 && z->p[z->c - 1] != 190)) return 0;
among_var = find_among_b(z, a_3, 2);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_9);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_fix_gd(struct SN_env * z) {
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] != 100) return 0;
if (!(find_among_b(z, a_4, 1))) return 0;
z->bra = z->c;
{ int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
return 1;
}
extern int lithuanian_UTF_8_stem(struct SN_env * z) {
z->I[0] = z->l;
{ int c1 = z->c;
{ int c2 = z->c;
{ int c_test3 = z->c;
if (z->c == z->l || z->p[z->c] != 'a') { z->c = c2; goto lab1; }
z->c++;
z->c = c_test3;
}
if (!(len_utf8(z->p) > 6)) { z->c = c2; goto lab1; }
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 1);
if (ret < 0) { z->c = c2; goto lab1; }
z->c = ret;
}
lab1:
;
}
{
int ret = out_grouping_U(z, g_v, 97, 371, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 371, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
z->I[0] = z->c;
lab0:
z->c = c1;
}
z->lb = z->c; z->c = z->l;
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_fix_conflicts(z);
if (ret < 0) return ret;
}
z->c = z->l - m4;
}
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_step1(z);
if (ret < 0) return ret;
}
z->c = z->l - m5;
}
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_fix_chdz(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
{ int m7 = z->l - z->c; (void)m7;
{ int ret = r_step2(z);
if (ret < 0) return ret;
}
z->c = z->l - m7;
}
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_fix_chdz(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
}
{ int m9 = z->l - z->c; (void)m9;
{ int ret = r_fix_gd(z);
if (ret < 0) return ret;
}
z->c = z->l - m9;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * lithuanian_UTF_8_create_env(void) { return SN_create_env(0, 1); }
extern void lithuanian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * lithuanian_UTF_8_create_env(void);
extern void lithuanian_UTF_8_close_env(struct SN_env * z);
extern int lithuanian_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * lovins_UTF_8_create_env(void);
extern void lovins_UTF_8_close_env(struct SN_env * z);
extern int lovins_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,421 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#include "../runtime/header.h"
#ifdef __cplusplus
extern "C" {
#endif
extern int nepali_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static int r_remove_category_3(struct SN_env * z);
static int r_remove_category_2(struct SN_env * z);
static int r_check_category_2(struct SN_env * z);
static int r_remove_category_1(struct SN_env * z);
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * nepali_UTF_8_create_env(void);
extern void nepali_UTF_8_close_env(struct SN_env * z);
#ifdef __cplusplus
}
#endif
static const symbol s_0_0[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x80 };
static const symbol s_0_1[9] = { 0xE0, 0xA4, 0xB2, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x87 };
static const symbol s_0_2[6] = { 0xE0, 0xA4, 0xB2, 0xE0, 0xA5, 0x87 };
static const symbol s_0_3[9] = { 0xE0, 0xA4, 0xB2, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0x88 };
static const symbol s_0_4[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x88 };
static const symbol s_0_5[12] = { 0xE0, 0xA4, 0xB8, 0xE0, 0xA4, 0x81, 0xE0, 0xA4, 0x97, 0xE0, 0xA5, 0x88 };
static const symbol s_0_6[6] = { 0xE0, 0xA4, 0xAE, 0xE0, 0xA5, 0x88 };
static const symbol s_0_7[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_0_8[9] = { 0xE0, 0xA4, 0xB8, 0xE0, 0xA4, 0x81, 0xE0, 0xA4, 0x97 };
static const symbol s_0_9[9] = { 0xE0, 0xA4, 0xB8, 0xE0, 0xA4, 0x82, 0xE0, 0xA4, 0x97 };
static const symbol s_0_10[18] = { 0xE0, 0xA4, 0xAE, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xB0, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xA4 };
static const symbol s_0_11[6] = { 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xA4 };
static const symbol s_0_12[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_0_13[6] = { 0xE0, 0xA4, 0xAE, 0xE0, 0xA4, 0xBE };
static const symbol s_0_14[18] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xB5, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBE };
static const symbol s_0_15[6] = { 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBF };
static const symbol s_0_16[9] = { 0xE0, 0xA4, 0xAA, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xBF };
static const struct among a_0[17] =
{
{ 6, s_0_0, -1, 2, 0},
{ 9, s_0_1, -1, 1, 0},
{ 6, s_0_2, -1, 1, 0},
{ 9, s_0_3, -1, 1, 0},
{ 6, s_0_4, -1, 2, 0},
{ 12, s_0_5, -1, 1, 0},
{ 6, s_0_6, -1, 1, 0},
{ 6, s_0_7, -1, 2, 0},
{ 9, s_0_8, -1, 1, 0},
{ 9, s_0_9, -1, 1, 0},
{ 18, s_0_10, -1, 1, 0},
{ 6, s_0_11, -1, 1, 0},
{ 6, s_0_12, -1, 2, 0},
{ 6, s_0_13, -1, 1, 0},
{ 18, s_0_14, -1, 1, 0},
{ 6, s_0_15, -1, 2, 0},
{ 9, s_0_16, -1, 1, 0}
};
static const symbol s_1_0[3] = { 0xE0, 0xA4, 0x81 };
static const symbol s_1_1[3] = { 0xE0, 0xA4, 0x82 };
static const symbol s_1_2[3] = { 0xE0, 0xA5, 0x88 };
static const struct among a_1[3] =
{
{ 3, s_1_0, -1, -1, 0},
{ 3, s_1_1, -1, -1, 0},
{ 3, s_1_2, -1, -1, 0}
};
static const symbol s_2_0[3] = { 0xE0, 0xA4, 0x81 };
static const symbol s_2_1[3] = { 0xE0, 0xA4, 0x82 };
static const symbol s_2_2[3] = { 0xE0, 0xA5, 0x88 };
static const struct among a_2[3] =
{
{ 3, s_2_0, -1, 1, 0},
{ 3, s_2_1, -1, 1, 0},
{ 3, s_2_2, -1, 2, 0}
};
static const symbol s_3_0[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x80 };
static const symbol s_3_1[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x80 };
static const symbol s_3_2[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x80 };
static const symbol s_3_3[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x80 };
static const symbol s_3_4[12] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x96, 0xE0, 0xA5, 0x80 };
static const symbol s_3_5[6] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA5, 0x80 };
static const symbol s_3_6[6] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x80 };
static const symbol s_3_7[6] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x81 };
static const symbol s_3_8[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x81 };
static const symbol s_3_9[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x81 };
static const symbol s_3_10[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x81 };
static const symbol s_3_11[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x81 };
static const symbol s_3_12[9] = { 0xE0, 0xA4, 0xB9, 0xE0, 0xA4, 0xB0, 0xE0, 0xA5, 0x81 };
static const symbol s_3_13[9] = { 0xE0, 0xA4, 0xB9, 0xE0, 0xA4, 0xB0, 0xE0, 0xA5, 0x82 };
static const symbol s_3_14[6] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x87 };
static const symbol s_3_15[6] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA5, 0x87 };
static const symbol s_3_16[6] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87 };
static const symbol s_3_17[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x88 };
static const symbol s_3_18[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x88 };
static const symbol s_3_19[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x88 };
static const symbol s_3_20[6] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x88 };
static const symbol s_3_21[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x88 };
static const symbol s_3_22[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x88 };
static const symbol s_3_23[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_3_24[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_3_25[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_3_26[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_3_27[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA5, 0x8B };
static const symbol s_3_28[6] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x8B };
static const symbol s_3_29[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x8B };
static const symbol s_3_30[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x8B };
static const symbol s_3_31[6] = { 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_32[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_33[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_34[9] = { 0xE0, 0xA4, 0xAD, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_35[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_36[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_37[12] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8B };
static const symbol s_3_38[6] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_39[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_40[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_41[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_42[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_43[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_3_44[6] = { 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8C };
static const symbol s_3_45[12] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8C };
static const symbol s_3_46[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8C };
static const symbol s_3_47[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8C };
static const symbol s_3_48[9] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_49[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_50[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_51[15] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_52[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_53[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_54[12] = { 0xE0, 0xA4, 0xB2, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_55[12] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_56[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_57[9] = { 0xE0, 0xA4, 0xAA, 0xE0, 0xA4, 0xB0, 0xE0, 0xA5, 0x8D };
static const symbol s_3_58[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_59[15] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_60[12] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_61[12] = { 0xE0, 0xA4, 0xB9, 0xE0, 0xA5, 0x8B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_62[9] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_63[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_64[12] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_65[15] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_66[12] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_67[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x9B, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_68[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_69[12] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xB8, 0xE0, 0xA5, 0x8D };
static const symbol s_3_70[9] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F };
static const symbol s_3_71[3] = { 0xE0, 0xA4, 0x9B };
static const symbol s_3_72[6] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x9B };
static const symbol s_3_73[6] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B };
static const symbol s_3_74[9] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B };
static const symbol s_3_75[15] = { 0xE0, 0xA4, 0xB9, 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x9B };
static const symbol s_3_76[15] = { 0xE0, 0xA4, 0xB9, 0xE0, 0xA5, 0x81, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0x9B };
static const symbol s_3_77[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0x9B };
static const symbol s_3_78[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0x9B };
static const symbol s_3_79[6] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x9B };
static const symbol s_3_80[6] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x9B };
static const symbol s_3_81[9] = { 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_3_82[12] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_3_83[9] = { 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_3_84[12] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_3_85[12] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0x8F, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBE };
static const symbol s_3_86[6] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA4, 0xBE };
static const symbol s_3_87[9] = { 0xE0, 0xA4, 0x87, 0xE0, 0xA4, 0xA6, 0xE0, 0xA4, 0xBE };
static const symbol s_3_88[9] = { 0xE0, 0xA4, 0xBF, 0xE0, 0xA4, 0xA6, 0xE0, 0xA4, 0xBE };
static const symbol s_3_89[12] = { 0xE0, 0xA4, 0xA6, 0xE0, 0xA5, 0x87, 0xE0, 0xA4, 0x96, 0xE0, 0xA4, 0xBF };
static const symbol s_3_90[12] = { 0xE0, 0xA4, 0xAE, 0xE0, 0xA4, 0xBE, 0xE0, 0xA4, 0xA5, 0xE0, 0xA4, 0xBF };
static const struct among a_3[91] =
{
{ 9, s_3_0, -1, 1, 0},
{ 9, s_3_1, -1, 1, 0},
{ 12, s_3_2, 1, 1, 0},
{ 12, s_3_3, 1, 1, 0},
{ 12, s_3_4, -1, 1, 0},
{ 6, s_3_5, -1, 1, 0},
{ 6, s_3_6, -1, 1, 0},
{ 6, s_3_7, -1, 1, 0},
{ 9, s_3_8, 7, 1, 0},
{ 12, s_3_9, 8, 1, 0},
{ 9, s_3_10, 7, 1, 0},
{ 6, s_3_11, -1, 1, 0},
{ 9, s_3_12, -1, 1, 0},
{ 9, s_3_13, -1, 1, 0},
{ 6, s_3_14, -1, 1, 0},
{ 6, s_3_15, -1, 1, 0},
{ 6, s_3_16, -1, 1, 0},
{ 9, s_3_17, -1, 1, 0},
{ 12, s_3_18, 17, 1, 0},
{ 9, s_3_19, -1, 1, 0},
{ 6, s_3_20, -1, 1, 0},
{ 9, s_3_21, 20, 1, 0},
{ 9, s_3_22, 20, 1, 0},
{ 9, s_3_23, -1, 1, 0},
{ 12, s_3_24, 23, 1, 0},
{ 9, s_3_25, -1, 1, 0},
{ 12, s_3_26, 25, 1, 0},
{ 12, s_3_27, 25, 1, 0},
{ 6, s_3_28, -1, 1, 0},
{ 9, s_3_29, 28, 1, 0},
{ 9, s_3_30, 28, 1, 0},
{ 6, s_3_31, -1, 1, 0},
{ 9, s_3_32, 31, 1, 0},
{ 12, s_3_33, 31, 1, 0},
{ 9, s_3_34, 31, 1, 0},
{ 9, s_3_35, 31, 1, 0},
{ 12, s_3_36, 35, 1, 0},
{ 12, s_3_37, 35, 1, 0},
{ 6, s_3_38, -1, 1, 0},
{ 9, s_3_39, 38, 1, 0},
{ 9, s_3_40, 38, 1, 0},
{ 12, s_3_41, 40, 1, 0},
{ 9, s_3_42, 38, 1, 0},
{ 9, s_3_43, 38, 1, 0},
{ 6, s_3_44, -1, 1, 0},
{ 12, s_3_45, 44, 1, 0},
{ 12, s_3_46, 44, 1, 0},
{ 12, s_3_47, 44, 1, 0},
{ 9, s_3_48, -1, 1, 0},
{ 12, s_3_49, 48, 1, 0},
{ 12, s_3_50, 48, 1, 0},
{ 15, s_3_51, 50, 1, 0},
{ 12, s_3_52, 48, 1, 0},
{ 12, s_3_53, 48, 1, 0},
{ 12, s_3_54, -1, 1, 0},
{ 12, s_3_55, -1, 1, 0},
{ 12, s_3_56, -1, 1, 0},
{ 9, s_3_57, -1, 1, 0},
{ 9, s_3_58, -1, 1, 0},
{ 15, s_3_59, 58, 1, 0},
{ 12, s_3_60, -1, 1, 0},
{ 12, s_3_61, -1, 1, 0},
{ 9, s_3_62, -1, 1, 0},
{ 12, s_3_63, 62, 1, 0},
{ 12, s_3_64, 62, 1, 0},
{ 15, s_3_65, 64, 1, 0},
{ 12, s_3_66, 62, 1, 0},
{ 12, s_3_67, 62, 1, 0},
{ 9, s_3_68, -1, 1, 0},
{ 12, s_3_69, 68, 1, 0},
{ 9, s_3_70, -1, 1, 0},
{ 3, s_3_71, -1, 1, 0},
{ 6, s_3_72, 71, 1, 0},
{ 6, s_3_73, 71, 1, 0},
{ 9, s_3_74, 73, 1, 0},
{ 15, s_3_75, 74, 1, 0},
{ 15, s_3_76, 71, 1, 0},
{ 12, s_3_77, 71, 1, 0},
{ 12, s_3_78, 71, 1, 0},
{ 6, s_3_79, 71, 1, 0},
{ 6, s_3_80, 71, 1, 0},
{ 9, s_3_81, -1, 1, 0},
{ 12, s_3_82, 81, 1, 0},
{ 9, s_3_83, -1, 1, 0},
{ 12, s_3_84, 83, 1, 0},
{ 12, s_3_85, 83, 1, 0},
{ 6, s_3_86, -1, 1, 0},
{ 9, s_3_87, 86, 1, 0},
{ 9, s_3_88, 86, 1, 0},
{ 12, s_3_89, -1, 1, 0},
{ 12, s_3_90, -1, 1, 0}
};
static const symbol s_0[] = { 0xE0, 0xA4, 0x8F };
static const symbol s_1[] = { 0xE0, 0xA5, 0x87 };
static const symbol s_2[] = { 0xE0, 0xA4, 0xAF, 0xE0, 0xA5, 0x8C };
static const symbol s_3[] = { 0xE0, 0xA4, 0x9B, 0xE0, 0xA5, 0x8C };
static const symbol s_4[] = { 0xE0, 0xA4, 0xA8, 0xE0, 0xA5, 0x8C };
static const symbol s_5[] = { 0xE0, 0xA4, 0xA5, 0xE0, 0xA5, 0x87 };
static const symbol s_6[] = { 0xE0, 0xA4, 0xA4, 0xE0, 0xA5, 0x8D, 0xE0, 0xA4, 0xB0 };
static int r_remove_category_1(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_0, 17);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int m1 = z->l - z->c; (void)m1;
{ int m2 = z->l - z->c; (void)m2;
if (!(eq_s_b(z, 3, s_0))) goto lab3;
goto lab2;
lab3:
z->c = z->l - m2;
if (!(eq_s_b(z, 3, s_1))) goto lab1;
}
lab2:
goto lab0;
lab1:
z->c = z->l - m1;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
}
lab0:
break;
}
return 1;
}
static int r_check_category_2(struct SN_env * z) {
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 4 || !((262 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
if (!(find_among_b(z, a_1, 3))) return 0;
z->bra = z->c;
return 1;
}
static int r_remove_category_2(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 4 || !((262 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_2, 3);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int m1 = z->l - z->c; (void)m1;
if (!(eq_s_b(z, 6, s_2))) goto lab1;
goto lab0;
lab1:
z->c = z->l - m1;
if (!(eq_s_b(z, 6, s_3))) goto lab2;
goto lab0;
lab2:
z->c = z->l - m1;
if (!(eq_s_b(z, 6, s_4))) goto lab3;
goto lab0;
lab3:
z->c = z->l - m1;
if (!(eq_s_b(z, 6, s_5))) return 0;
}
lab0:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
if (!(eq_s_b(z, 9, s_6))) return 0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_remove_category_3(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_3, 91))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int nepali_UTF_8_stem(struct SN_env * z) {
z->lb = z->c; z->c = z->l;
{ int m1 = z->l - z->c; (void)m1;
{ int ret = r_remove_category_1(z);
if (ret < 0) return ret;
}
z->c = z->l - m1;
}
{ int m2 = z->l - z->c; (void)m2;
while(1) {
int m3 = z->l - z->c; (void)m3;
{ int m4 = z->l - z->c; (void)m4;
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_check_category_2(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
z->c = z->l - m5;
{ int ret = r_remove_category_2(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
}
lab2:
z->c = z->l - m4;
}
{ int ret = r_remove_category_3(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
continue;
lab1:
z->c = z->l - m3;
break;
}
z->c = z->l - m2;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * nepali_UTF_8_create_env(void) { return SN_create_env(0, 0); }
extern void nepali_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * nepali_UTF_8_create_env(void);
extern void nepali_UTF_8_close_env(struct SN_env * z);
extern int nepali_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,276 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 1, s_0_0, -1, 1, 0},
{ 1, s_0_1, -1, 1, 0},
{ 3, s_0_2, 1, 1, 0},
{ 4, s_0_3, 1, 1, 0},
{ 4, s_0_4, 1, 1, 0},
{ 3, s_0_5, 1, 1, 0},
{ 3, s_0_6, 1, 1, 0},
{ 6, s_0_7, 6, 1, 0},
{ 4, s_0_8, 1, 3, 0},
{ 2, s_0_9, -1, 1, 0},
{ 5, s_0_10, 9, 1, 0},
{ 2, s_0_11, -1, 1, 0},
{ 2, s_0_12, -1, 1, 0},
{ 5, s_0_13, 12, 1, 0},
{ 1, s_0_14, -1, 2, 0},
{ 2, s_0_15, 14, 1, 0},
{ 2, s_0_16, 14, 1, 0},
{ 4, s_0_17, 16, 1, 0},
{ 5, s_0_18, 16, 1, 0},
{ 4, s_0_19, 16, 1, 0},
{ 7, s_0_20, 19, 1, 0},
{ 3, s_0_21, 14, 1, 0},
{ 6, s_0_22, 21, 1, 0},
{ 3, s_0_23, 14, 1, 0},
{ 3, s_0_24, 14, 1, 0},
{ 2, s_0_25, -1, 1, 0},
{ 3, s_0_26, 25, 1, 0},
{ 3, s_0_27, -1, 3, 0},
{ 3, s_0_28, -1, 1, 0}
};
static const symbol s_1_0[2] = { 'd', 't' };
static const symbol s_1_1[2] = { 'v', 't' };
static const struct among a_1[2] =
{
{ 2, s_1_0, -1, -1, 0},
{ 2, s_1_1, -1, -1, 0}
};
static const symbol s_2_0[3] = { 'l', 'e', 'g' };
static const symbol s_2_1[4] = { 'e', 'l', 'e', 'g' };
static const symbol s_2_2[2] = { 'i', 'g' };
static const symbol s_2_3[3] = { 'e', 'i', 'g' };
static const symbol s_2_4[3] = { 'l', 'i', 'g' };
static const symbol s_2_5[4] = { 'e', 'l', 'i', 'g' };
static const symbol s_2_6[3] = { 'e', 'l', 's' };
static const symbol s_2_7[3] = { 'l', 'o', 'v' };
static const symbol s_2_8[4] = { 'e', 'l', 'o', 'v' };
static const symbol s_2_9[4] = { 's', 'l', 'o', 'v' };
static const symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
static const struct among a_2[11] =
{
{ 3, s_2_0, -1, 1, 0},
{ 4, s_2_1, 0, 1, 0},
{ 2, s_2_2, -1, 1, 0},
{ 3, s_2_3, 2, 1, 0},
{ 3, s_2_4, 2, 1, 0},
{ 4, s_2_5, 4, 1, 0},
{ 3, s_2_6, -1, 1, 0},
{ 3, s_2_7, -1, 1, 0},
{ 4, s_2_8, 7, 1, 0},
{ 4, s_2_9, 7, 1, 0},
{ 7, s_2_10, 9, 1, 0}
};
static const 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[] = { 'e', 'r' };
static int r_mark_regions(struct SN_env * z) {
z->I[1] = z->l;
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0;
{
int ret = in_grouping_U(z, g_v, 97, 248, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
if (!(z->I[1] < z->I[0])) goto lab0;
z->I[1] = z->I[0];
lab0:
return 1;
}
static int r_main_suffix(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 29);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int m2 = z->l - z->c; (void)m2;
if (in_grouping_b_U(z, g_s_ending, 98, 122, 0)) goto lab1;
goto lab0;
lab1:
z->c = z->l - m2;
if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0;
z->c--;
if (out_grouping_b_U(z, g_v, 97, 248, 0)) return 0;
}
lab0:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_consonant_pair(struct SN_env * z) {
{ int m_test1 = z->l - z->c;
{ int mlimit2;
if (z->c < z->I[1]) return 0;
mlimit2 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit2; return 0; }
if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit2; return 0; }
z->bra = z->c;
z->lb = mlimit2;
}
z->c = z->l - m_test1;
}
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_other_suffix(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_2, 11))) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int norwegian_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
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); }
extern void norwegian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,723 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 1, s_0_0, -1, 3, 0},
{ 3, s_0_1, 0, 2, 0},
{ 4, s_0_2, 0, 1, 0},
{ 2, s_0_3, 0, -1, 0}
};
static const 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, -1, 3, 0},
{ 2, s_1_1, 0, 2, 0},
{ 2, s_1_2, 0, 2, 0},
{ 2, s_1_3, 0, 2, 0},
{ 2, s_1_4, 0, 2, 0},
{ 2, s_1_5, 0, 1, 0},
{ 2, s_1_6, 0, 2, 0},
{ 2, s_1_7, 0, 2, 0},
{ 2, s_1_8, 0, 2, 0},
{ 2, s_1_9, 0, 2, 0},
{ 2, s_1_10, 0, 1, 0},
{ 2, s_1_11, 0, 2, 0},
{ 2, s_1_12, 0, 1, 0}
};
static const symbol s_2_0[2] = { 'e', 'd' };
static const symbol s_2_1[3] = { 'e', 'e', 'd' };
static const symbol s_2_2[3] = { 'i', 'n', 'g' };
static const struct among a_2[3] =
{
{ 2, s_2_0, -1, 2, 0},
{ 3, s_2_1, 0, 1, 0},
{ 3, s_2_2, -1, 2, 0}
};
static const 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] =
{
{ 4, s_3_0, -1, 3, 0},
{ 4, s_3_1, -1, 2, 0},
{ 4, s_3_2, -1, 4, 0},
{ 3, s_3_3, -1, 6, 0},
{ 4, s_3_4, -1, 9, 0},
{ 5, s_3_5, -1, 11, 0},
{ 5, s_3_6, -1, 5, 0},
{ 5, s_3_7, -1, 9, 0},
{ 6, s_3_8, -1, 13, 0},
{ 5, s_3_9, -1, 12, 0},
{ 6, s_3_10, -1, 1, 0},
{ 7, s_3_11, 10, 8, 0},
{ 5, s_3_12, -1, 9, 0},
{ 5, s_3_13, -1, 8, 0},
{ 7, s_3_14, 13, 7, 0},
{ 4, s_3_15, -1, 7, 0},
{ 4, s_3_16, -1, 8, 0},
{ 7, s_3_17, -1, 12, 0},
{ 7, s_3_18, -1, 10, 0},
{ 7, s_3_19, -1, 11, 0}
};
static const 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] =
{
{ 5, s_4_0, -1, 2, 0},
{ 5, s_4_1, -1, 3, 0},
{ 5, s_4_2, -1, 1, 0},
{ 5, s_4_3, -1, 2, 0},
{ 4, s_4_4, -1, 2, 0},
{ 3, s_4_5, -1, 3, 0},
{ 4, s_4_6, -1, 3, 0}
};
static const 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] =
{
{ 2, s_5_0, -1, 1, 0},
{ 4, s_5_1, -1, 1, 0},
{ 4, s_5_2, -1, 1, 0},
{ 4, s_5_3, -1, 1, 0},
{ 4, s_5_4, -1, 1, 0},
{ 3, s_5_5, -1, 1, 0},
{ 3, s_5_6, -1, 1, 0},
{ 3, s_5_7, -1, 1, 0},
{ 3, s_5_8, -1, 1, 0},
{ 2, s_5_9, -1, 1, 0},
{ 3, s_5_10, -1, 1, 0},
{ 3, s_5_11, -1, 2, 0},
{ 2, s_5_12, -1, 1, 0},
{ 3, s_5_13, -1, 1, 0},
{ 3, s_5_14, -1, 1, 0},
{ 3, s_5_15, -1, 1, 0},
{ 4, s_5_16, 15, 1, 0},
{ 5, s_5_17, 16, 1, 0},
{ 2, s_5_18, -1, 1, 0}
};
static const unsigned char g_v[] = { 17, 65, 16, 1 };
static const unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
static const symbol s_0[] = { 's', 's' };
static const symbol s_1[] = { 'i' };
static const symbol s_2[] = { 'e', 'e' };
static const symbol s_3[] = { 'e' };
static const symbol s_4[] = { 'e' };
static const symbol s_5[] = { 'i' };
static const symbol s_6[] = { 't', 'i', 'o', 'n' };
static const symbol s_7[] = { 'e', 'n', 'c', 'e' };
static const symbol s_8[] = { 'a', 'n', 'c', 'e' };
static const symbol s_9[] = { 'a', 'b', 'l', 'e' };
static const symbol s_10[] = { 'e', 'n', 't' };
static const symbol s_11[] = { 'e' };
static const symbol s_12[] = { 'i', 'z', 'e' };
static const symbol s_13[] = { 'a', 't', 'e' };
static const symbol s_14[] = { 'a', 'l' };
static const symbol s_15[] = { 'f', 'u', 'l' };
static const symbol s_16[] = { 'o', 'u', 's' };
static const symbol s_17[] = { 'i', 'v', 'e' };
static const symbol s_18[] = { 'b', 'l', 'e' };
static const symbol s_19[] = { 'a', 'l' };
static const symbol s_20[] = { 'i', 'c' };
static const symbol s_21[] = { 'Y' };
static const symbol s_22[] = { 'Y' };
static const symbol s_23[] = { 'y' };
static int r_shortv(struct SN_env * z) {
if (out_grouping_b_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[1] <= z->c)) return 0;
return 1;
}
static int r_R2(struct SN_env * z) {
if (!(z->I[0] <= z->c)) return 0;
return 1;
}
static int r_Step_1a(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 115) return 0;
among_var = find_among_b(z, a_0, 4);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_1);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_Step_1b(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 103)) return 0;
among_var = find_among_b(z, a_2, 3);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_from_s(z, 2, s_2);
if (ret < 0) return ret;
}
break;
case 2:
{ int m_test1 = z->l - z->c;
{
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_test1;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m_test2 = z->l - z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68514004 >> (z->p[z->c - 1] & 0x1f)) & 1)) among_var = 3; else
among_var = find_among_b(z, a_1, 13);
if (!(among_var)) return 0;
z->c = z->l - m_test2;
}
switch (among_var) {
case 1:
{ int ret;
{ int saved_c = z->c;
ret = insert_s(z, z->c, z->c, 1, s_3);
z->c = saved_c;
}
if (ret < 0) return ret;
}
break;
case 2:
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0;
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
if (z->c != z->I[1]) return 0;
{ int m_test3 = z->l - z->c;
{ int ret = r_shortv(z);
if (ret <= 0) return ret;
}
z->c = z->l - m_test3;
}
{ int ret;
{ int saved_c = z->c;
ret = insert_s(z, z->c, z->c, 1, s_4);
z->c = saved_c;
}
if (ret < 0) return ret;
}
break;
}
break;
}
return 1;
}
static int r_Step_1c(struct SN_env * z) {
z->ket = z->c;
{ int m1 = z->l - z->c; (void)m1;
if (z->c <= z->lb || z->p[z->c - 1] != 'y') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
if (z->c <= z->lb || z->p[z->c - 1] != 'Y') return 0;
z->c--;
}
lab0:
z->bra = z->c;
{
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_5);
if (ret < 0) return ret;
}
return 1;
}
static int r_Step_2(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((815616 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_3, 20);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 4, s_7);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 4, s_8);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 4, s_9);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 3, s_10);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 1, s_11);
if (ret < 0) return ret;
}
break;
case 7:
{ int ret = slice_from_s(z, 3, s_12);
if (ret < 0) return ret;
}
break;
case 8:
{ int ret = slice_from_s(z, 3, s_13);
if (ret < 0) return ret;
}
break;
case 9:
{ int ret = slice_from_s(z, 2, s_14);
if (ret < 0) return ret;
}
break;
case 10:
{ int ret = slice_from_s(z, 3, s_15);
if (ret < 0) return ret;
}
break;
case 11:
{ int ret = slice_from_s(z, 3, s_16);
if (ret < 0) return ret;
}
break;
case 12:
{ int ret = slice_from_s(z, 3, s_17);
if (ret < 0) return ret;
}
break;
case 13:
{ int ret = slice_from_s(z, 3, s_18);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_Step_3(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((528928 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_4, 7);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 2, s_19);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 2, s_20);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_Step_4(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((3961384 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_5, 19);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int m1 = z->l - z->c; (void)m1;
if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab1;
z->c--;
goto lab0;
lab1:
z->c = z->l - m1;
if (z->c <= z->lb || z->p[z->c - 1] != 't') return 0;
z->c--;
}
lab0:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_Step_5a(struct SN_env * z) {
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
z->bra = z->c;
{ int m1 = z->l - z->c; (void)m1;
{ int ret = r_R2(z);
if (ret == 0) goto lab1;
if (ret < 0) return ret;
}
goto lab0;
lab1:
z->c = z->l - m1;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_shortv(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
return 0;
lab2:
z->c = z->l - m2;
}
}
lab0:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_Step_5b(struct SN_env * z) {
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
if (z->c <= z->lb || z->p[z->c - 1] != 'l') return 0;
z->c--;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int porter_UTF_8_stem(struct SN_env * z) {
z->I[2] = 0;
{ int c1 = z->c;
z->bra = z->c;
if (z->c == z->l || z->p[z->c] != 'y') goto lab0;
z->c++;
z->ket = z->c;
{ int ret = slice_from_s(z, 1, s_21);
if (ret < 0) return ret;
}
z->I[2] = 1;
lab0:
z->c = c1;
}
{ int c2 = z->c;
while(1) {
int c3 = z->c;
while(1) {
int c4 = z->c;
if (in_grouping_U(z, g_v, 97, 121, 0)) goto lab3;
z->bra = z->c;
if (z->c == z->l || z->p[z->c] != 'y') goto lab3;
z->c++;
z->ket = z->c;
z->c = c4;
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;
}
}
{ int ret = slice_from_s(z, 1, s_22);
if (ret < 0) return ret;
}
z->I[2] = 1;
continue;
lab2:
z->c = c3;
break;
}
z->c = c2;
}
z->I[1] = z->l;
z->I[0] = z->l;
{ int c5 = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
z->I[1] = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 121, 1);
if (ret < 0) goto lab4;
z->c += ret;
}
z->I[0] = z->c;
lab4:
z->c = c5;
}
z->lb = z->c; z->c = z->l;
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_Step_1a(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
{ int m7 = z->l - z->c; (void)m7;
{ int ret = r_Step_1b(z);
if (ret < 0) return ret;
}
z->c = z->l - m7;
}
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_Step_1c(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
}
{ int m9 = z->l - z->c; (void)m9;
{ int ret = r_Step_2(z);
if (ret < 0) return ret;
}
z->c = z->l - m9;
}
{ int m10 = z->l - z->c; (void)m10;
{ int ret = r_Step_3(z);
if (ret < 0) return ret;
}
z->c = z->l - m10;
}
{ int m11 = z->l - z->c; (void)m11;
{ int ret = r_Step_4(z);
if (ret < 0) return ret;
}
z->c = z->l - m11;
}
{ int m12 = z->l - z->c; (void)m12;
{ int ret = r_Step_5a(z);
if (ret < 0) return ret;
}
z->c = z->l - m12;
}
{ int m13 = z->l - z->c; (void)m13;
{ int ret = r_Step_5b(z);
if (ret < 0) return ret;
}
z->c = z->l - m13;
}
z->c = z->lb;
{ int c14 = z->c;
if (!(z->I[2])) goto lab5;
while(1) {
int c15 = z->c;
while(1) {
int c16 = z->c;
z->bra = z->c;
if (z->c == z->l || z->p[z->c] != 'Y') goto lab7;
z->c++;
z->ket = z->c;
z->c = c16;
break;
lab7:
z->c = c16;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab6;
z->c = ret;
}
}
{ int ret = slice_from_s(z, 1, s_23);
if (ret < 0) return ret;
}
continue;
lab6:
z->c = c15;
break;
}
lab5:
z->c = c14;
}
return 1;
}
extern struct SN_env * porter_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void porter_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,967 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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, -1, 3, 0},
{ 2, s_0_1, 0, 1, 0},
{ 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, -1, 3, 0},
{ 2, s_1_1, 0, 1, 0},
{ 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] =
{
{ 2, s_2_0, -1, -1, 0},
{ 2, s_2_1, -1, -1, 0},
{ 2, s_2_2, -1, -1, 0},
{ 2, s_2_3, -1, 1, 0}
};
static const 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] =
{
{ 4, s_3_0, -1, 1, 0},
{ 4, s_3_1, -1, 1, 0},
{ 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] =
{
{ 2, s_4_0, -1, 1, 0},
{ 4, s_4_1, -1, 1, 0},
{ 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[5] = { 'l', 'o', 'g', 'i', 'a' };
static const symbol s_5_4[3] = { 'i', 'r', 'a' };
static const symbol s_5_5[5] = { 'a', 'd', 'o', 'r', 'a' };
static const symbol s_5_6[3] = { 'o', 's', 'a' };
static const symbol s_5_7[4] = { 'i', 's', 't', 'a' };
static const symbol s_5_8[3] = { 'i', 'v', 'a' };
static const symbol s_5_9[3] = { 'e', 'z', '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[3] = { 'i', 'c', 'o' };
static const symbol s_5_17[4] = { 'i', 's', 'm', 'o' };
static const symbol s_5_18[3] = { 'o', 's', 'o' };
static const symbol s_5_19[6] = { 'a', 'm', 'e', 'n', 't', 'o' };
static const symbol s_5_20[6] = { 'i', 'm', 'e', 'n', 't', 'o' };
static const symbol s_5_21[3] = { 'i', 'v', 'o' };
static const symbol s_5_22[6] = { 'a', 0xC3, 0xA7, 'a', '~', 'o' };
static const symbol s_5_23[6] = { 'u', 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[6] = { 'l', 'o', 'g', 'i', 'a', 's' };
static const symbol s_5_28[4] = { 'i', 'r', 'a', 's' };
static const symbol s_5_29[6] = { 'a', 'd', 'o', 'r', 'a', 's' };
static const symbol s_5_30[4] = { 'o', 's', 'a', 's' };
static const symbol s_5_31[5] = { 'i', 's', 't', 'a', 's' };
static const symbol s_5_32[4] = { 'i', 'v', 'a', 's' };
static const symbol s_5_33[4] = { 'e', 'z', 'a', 's' };
static const symbol s_5_34[6] = { 'i', 'd', 'a', 'd', 'e', 's' };
static const symbol s_5_35[6] = { 'a', 'd', 'o', 'r', 'e', 's' };
static const symbol s_5_36[5] = { 'a', 'n', 't', 'e', 's' };
static const symbol s_5_37[7] = { 'a', 0xC3, 0xA7, 'o', '~', 'e', 's' };
static const symbol s_5_38[7] = { 'u', 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] =
{
{ 3, s_5_0, -1, 1, 0},
{ 6, s_5_1, -1, 1, 0},
{ 6, s_5_2, -1, 4, 0},
{ 5, s_5_3, -1, 2, 0},
{ 3, s_5_4, -1, 9, 0},
{ 5, s_5_5, -1, 1, 0},
{ 3, s_5_6, -1, 1, 0},
{ 4, s_5_7, -1, 1, 0},
{ 3, s_5_8, -1, 8, 0},
{ 3, s_5_9, -1, 1, 0},
{ 5, s_5_10, -1, 7, 0},
{ 4, s_5_11, -1, 1, 0},
{ 5, s_5_12, -1, 6, 0},
{ 6, s_5_13, 12, 5, 0},
{ 5, s_5_14, -1, 1, 0},
{ 5, s_5_15, -1, 1, 0},
{ 3, s_5_16, -1, 1, 0},
{ 4, s_5_17, -1, 1, 0},
{ 3, s_5_18, -1, 1, 0},
{ 6, s_5_19, -1, 1, 0},
{ 6, s_5_20, -1, 1, 0},
{ 3, s_5_21, -1, 8, 0},
{ 6, s_5_22, -1, 1, 0},
{ 6, s_5_23, -1, 3, 0},
{ 4, s_5_24, -1, 1, 0},
{ 4, s_5_25, -1, 1, 0},
{ 7, s_5_26, -1, 4, 0},
{ 6, s_5_27, -1, 2, 0},
{ 4, s_5_28, -1, 9, 0},
{ 6, s_5_29, -1, 1, 0},
{ 4, s_5_30, -1, 1, 0},
{ 5, s_5_31, -1, 1, 0},
{ 4, s_5_32, -1, 8, 0},
{ 4, s_5_33, -1, 1, 0},
{ 6, s_5_34, -1, 7, 0},
{ 6, s_5_35, -1, 1, 0},
{ 5, s_5_36, -1, 1, 0},
{ 7, s_5_37, -1, 1, 0},
{ 7, s_5_38, -1, 3, 0},
{ 4, s_5_39, -1, 1, 0},
{ 5, s_5_40, -1, 1, 0},
{ 4, s_5_41, -1, 1, 0},
{ 7, s_5_42, -1, 1, 0},
{ 7, s_5_43, -1, 1, 0},
{ 4, s_5_44, -1, 8, 0}
};
static const 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] =
{
{ 3, s_6_0, -1, 1, 0},
{ 3, s_6_1, -1, 1, 0},
{ 2, s_6_2, -1, 1, 0},
{ 4, s_6_3, 2, 1, 0},
{ 4, s_6_4, 2, 1, 0},
{ 4, s_6_5, 2, 1, 0},
{ 3, s_6_6, -1, 1, 0},
{ 3, s_6_7, -1, 1, 0},
{ 3, s_6_8, -1, 1, 0},
{ 3, s_6_9, -1, 1, 0},
{ 4, s_6_10, -1, 1, 0},
{ 4, s_6_11, -1, 1, 0},
{ 4, s_6_12, -1, 1, 0},
{ 4, s_6_13, -1, 1, 0},
{ 4, s_6_14, -1, 1, 0},
{ 4, s_6_15, -1, 1, 0},
{ 2, s_6_16, -1, 1, 0},
{ 4, s_6_17, 16, 1, 0},
{ 4, s_6_18, 16, 1, 0},
{ 4, s_6_19, 16, 1, 0},
{ 2, s_6_20, -1, 1, 0},
{ 3, s_6_21, 20, 1, 0},
{ 5, s_6_22, 21, 1, 0},
{ 5, s_6_23, 21, 1, 0},
{ 5, s_6_24, 21, 1, 0},
{ 4, s_6_25, 20, 1, 0},
{ 4, s_6_26, 20, 1, 0},
{ 4, s_6_27, 20, 1, 0},
{ 4, s_6_28, 20, 1, 0},
{ 2, s_6_29, -1, 1, 0},
{ 4, s_6_30, 29, 1, 0},
{ 4, s_6_31, 29, 1, 0},
{ 4, s_6_32, 29, 1, 0},
{ 5, s_6_33, 29, 1, 0},
{ 5, s_6_34, 29, 1, 0},
{ 5, s_6_35, 29, 1, 0},
{ 3, s_6_36, -1, 1, 0},
{ 3, s_6_37, -1, 1, 0},
{ 4, s_6_38, -1, 1, 0},
{ 4, s_6_39, -1, 1, 0},
{ 4, s_6_40, -1, 1, 0},
{ 5, s_6_41, -1, 1, 0},
{ 5, s_6_42, -1, 1, 0},
{ 5, s_6_43, -1, 1, 0},
{ 2, s_6_44, -1, 1, 0},
{ 2, s_6_45, -1, 1, 0},
{ 2, s_6_46, -1, 1, 0},
{ 2, s_6_47, -1, 1, 0},
{ 4, s_6_48, 47, 1, 0},
{ 4, s_6_49, 47, 1, 0},
{ 3, s_6_50, 47, 1, 0},
{ 5, s_6_51, 50, 1, 0},
{ 5, s_6_52, 50, 1, 0},
{ 5, s_6_53, 50, 1, 0},
{ 4, s_6_54, 47, 1, 0},
{ 4, s_6_55, 47, 1, 0},
{ 4, s_6_56, 47, 1, 0},
{ 4, s_6_57, 47, 1, 0},
{ 2, s_6_58, -1, 1, 0},
{ 5, s_6_59, 58, 1, 0},
{ 5, s_6_60, 58, 1, 0},
{ 5, s_6_61, 58, 1, 0},
{ 4, s_6_62, 58, 1, 0},
{ 4, s_6_63, 58, 1, 0},
{ 4, s_6_64, 58, 1, 0},
{ 5, s_6_65, 58, 1, 0},
{ 5, s_6_66, 58, 1, 0},
{ 5, s_6_67, 58, 1, 0},
{ 5, s_6_68, 58, 1, 0},
{ 5, s_6_69, 58, 1, 0},
{ 5, s_6_70, 58, 1, 0},
{ 2, s_6_71, -1, 1, 0},
{ 3, s_6_72, 71, 1, 0},
{ 3, s_6_73, 71, 1, 0},
{ 5, s_6_74, 73, 1, 0},
{ 5, s_6_75, 73, 1, 0},
{ 5, s_6_76, 73, 1, 0},
{ 6, s_6_77, 73, 1, 0},
{ 6, s_6_78, 73, 1, 0},
{ 6, s_6_79, 73, 1, 0},
{ 7, s_6_80, 73, 1, 0},
{ 7, s_6_81, 73, 1, 0},
{ 7, s_6_82, 73, 1, 0},
{ 6, s_6_83, 73, 1, 0},
{ 5, s_6_84, 73, 1, 0},
{ 7, s_6_85, 84, 1, 0},
{ 7, s_6_86, 84, 1, 0},
{ 7, s_6_87, 84, 1, 0},
{ 4, s_6_88, -1, 1, 0},
{ 4, s_6_89, -1, 1, 0},
{ 4, s_6_90, -1, 1, 0},
{ 7, s_6_91, 90, 1, 0},
{ 7, s_6_92, 90, 1, 0},
{ 7, s_6_93, 90, 1, 0},
{ 7, s_6_94, 90, 1, 0},
{ 6, s_6_95, 90, 1, 0},
{ 8, s_6_96, 95, 1, 0},
{ 8, s_6_97, 95, 1, 0},
{ 8, s_6_98, 95, 1, 0},
{ 4, s_6_99, -1, 1, 0},
{ 6, s_6_100, 99, 1, 0},
{ 6, s_6_101, 99, 1, 0},
{ 6, s_6_102, 99, 1, 0},
{ 8, s_6_103, 99, 1, 0},
{ 8, s_6_104, 99, 1, 0},
{ 8, s_6_105, 99, 1, 0},
{ 4, s_6_106, -1, 1, 0},
{ 5, s_6_107, -1, 1, 0},
{ 5, s_6_108, -1, 1, 0},
{ 5, s_6_109, -1, 1, 0},
{ 5, s_6_110, -1, 1, 0},
{ 5, s_6_111, -1, 1, 0},
{ 5, s_6_112, -1, 1, 0},
{ 5, s_6_113, -1, 1, 0},
{ 2, s_6_114, -1, 1, 0},
{ 2, s_6_115, -1, 1, 0},
{ 2, s_6_116, -1, 1, 0},
{ 4, s_6_117, -1, 1, 0},
{ 4, s_6_118, -1, 1, 0},
{ 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] =
{
{ 1, s_7_0, -1, 1, 0},
{ 1, s_7_1, -1, 1, 0},
{ 1, s_7_2, -1, 1, 0},
{ 2, s_7_3, -1, 1, 0},
{ 2, s_7_4, -1, 1, 0},
{ 2, s_7_5, -1, 1, 0},
{ 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] =
{
{ 1, s_8_0, -1, 1, 0},
{ 2, s_8_1, -1, 2, 0},
{ 2, s_8_2, -1, 1, 0},
{ 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[] = { 'i', 'r' };
static const symbol s_10[] = { 'c' };
static int r_prelude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
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);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 2, s_0);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 2, s_1);
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;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_mark_regions(struct SN_env * z) {
z->I[2] = z->l;
z->I[1] = z->l;
z->I[0] = z->l;
{ int c1 = z->c;
{ int c2 = z->c;
if (in_grouping_U(z, g_v, 97, 250, 0)) goto lab2;
{ int c3 = z->c;
if (out_grouping_U(z, g_v, 97, 250, 0)) goto lab4;
{
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;
{
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;
if (out_grouping_U(z, g_v, 97, 250, 0)) goto lab6;
{
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;
}
}
lab5:
;
}
lab1:
z->I[2] = z->c;
lab0:
z->c = c1;
}
{ int c5 = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
z->I[1] = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 250, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
static int r_postlude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
if (z->c + 1 >= z->l || z->p[z->c + 1] != 126) among_var = 3; else
among_var = find_among(z, a_1, 3);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 2, s_2);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 2, s_3);
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;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_RV(struct SN_env * z) {
if (!(z->I[2] <= 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[0] <= z->c)) return 0;
return 1;
}
static int r_standard_suffix(struct SN_env * z) {
int among_var;
z->ket = z->c;
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((823330 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0;
among_var = find_among_b(z, a_5, 45);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_from_s(z, 3, s_4);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_from_s(z, 4, s_6);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m1 = z->l - z->c; (void)m1;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718616 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m1; goto lab0; }
among_var = find_among_b(z, a_2, 4);
if (!(among_var)) { z->c = z->l - m1; goto lab0; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
switch (among_var) {
case 1:
z->ket = z->c;
if (!(eq_s_b(z, 2, s_7))) { z->c = z->l - m1; goto lab0; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m1; goto lab0; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab0:
;
}
break;
case 6:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m2 = z->l - z->c; (void)m2;
z->ket = z->c;
if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 101 && z->p[z->c - 1] != 108)) { z->c = z->l - m2; goto lab1; }
if (!(find_among_b(z, a_3, 3))) { z->c = z->l - m2; goto lab1; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m2; goto lab1; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab1:
;
}
break;
case 7:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m3 = z->l - z->c; (void)m3;
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m3; goto lab2; }
if (!(find_among_b(z, a_4, 3))) { z->c = z->l - m3; goto lab2; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m3; goto lab2; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab2:
;
}
break;
case 8:
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
{ int m4 = z->l - z->c; (void)m4;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m4; goto lab3; }
z->bra = z->c;
{ int ret = r_R2(z);
if (ret == 0) { z->c = z->l - m4; goto lab3; }
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab3:
;
}
break;
case 9:
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
if (z->c <= z->lb || z->p[z->c - 1] != 'e') return 0;
z->c--;
{ int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_verb_suffix(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[2]) return 0;
mlimit1 = z->lb; z->lb = z->I[2];
z->ket = z->c;
if (!(find_among_b(z, a_6, 120))) { z->lb = mlimit1; return 0; }
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->lb = mlimit1;
}
return 1;
}
static int r_residual_suffix(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_7, 7))) return 0;
z->bra = z->c;
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_residual_form(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_8, 4);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->ket = z->c;
{ int m1 = z->l - z->c; (void)m1;
if (z->c <= z->lb || z->p[z->c - 1] != 'u') goto lab1;
z->c--;
z->bra = z->c;
{ int m_test2 = z->l - z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'g') goto lab1;
z->c--;
z->c = z->l - m_test2;
}
goto lab0;
lab1:
z->c = z->l - m1;
if (z->c <= z->lb || z->p[z->c - 1] != 'i') return 0;
z->c--;
z->bra = z->c;
{ int m_test3 = z->l - z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'c') return 0;
z->c--;
z->c = z->l - m_test3;
}
}
lab0:
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_10);
if (ret < 0) return ret;
}
break;
}
return 1;
}
extern int portuguese_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int m3 = z->l - z->c; (void)m3;
{ int m4 = z->l - z->c; (void)m4;
{ int m5 = z->l - z->c; (void)m5;
{ int ret = r_standard_suffix(z);
if (ret == 0) goto lab4;
if (ret < 0) return ret;
}
goto lab3;
lab4:
z->c = z->l - m5;
{ int ret = r_verb_suffix(z);
if (ret == 0) goto lab2;
if (ret < 0) return ret;
}
}
lab3:
z->c = z->l - m4;
{ int m6 = z->l - z->c; (void)m6;
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'i') goto lab5;
z->c--;
z->bra = z->c;
{ int m_test7 = z->l - z->c;
if (z->c <= z->lb || z->p[z->c - 1] != 'c') goto lab5;
z->c--;
z->c = z->l - m_test7;
}
{ int ret = r_RV(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab5:
z->c = z->l - m6;
}
}
goto lab1;
lab2:
z->c = z->l - m3;
{ int ret = r_residual_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
}
lab1:
lab0:
z->c = z->l - m2;
}
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_residual_form(z);
if (ret < 0) return ret;
}
z->c = z->l - m8;
}
z->c = z->lb;
{ int c9 = z->c;
{ int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c9;
}
return 1;
}
extern struct SN_env * portuguese_UTF_8_create_env(void) { return SN_create_env(0, 3); }
extern void portuguese_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,971 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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, -1, 3, 0},
{ 1, s_0_1, 0, 1, 0},
{ 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] =
{
{ 2, s_1_0, -1, 3, 0},
{ 5, s_1_1, -1, 7, 0},
{ 3, s_1_2, -1, 2, 0},
{ 3, s_1_3, -1, 4, 0},
{ 5, s_1_4, -1, 7, 0},
{ 3, s_1_5, -1, 3, 0},
{ 3, s_1_6, -1, 5, 0},
{ 4, s_1_7, 6, 4, 0},
{ 3, s_1_8, -1, 4, 0},
{ 4, s_1_9, -1, 6, 0},
{ 2, s_1_10, -1, 4, 0},
{ 4, s_1_11, -1, 1, 0},
{ 2, s_1_12, -1, 1, 0},
{ 4, s_1_13, -1, 3, 0},
{ 4, s_1_14, -1, 4, 0},
{ 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] =
{
{ 5, s_2_0, -1, 4, 0},
{ 5, s_2_1, -1, 4, 0},
{ 5, s_2_2, -1, 5, 0},
{ 5, s_2_3, -1, 6, 0},
{ 5, s_2_4, -1, 4, 0},
{ 7, s_2_5, -1, 5, 0},
{ 7, s_2_6, -1, 6, 0},
{ 6, s_2_7, -1, 5, 0},
{ 6, s_2_8, -1, 6, 0},
{ 7, s_2_9, -1, 5, 0},
{ 7, s_2_10, -1, 4, 0},
{ 9, s_2_11, -1, 1, 0},
{ 9, s_2_12, -1, 2, 0},
{ 7, s_2_13, -1, 3, 0},
{ 5, s_2_14, -1, 4, 0},
{ 5, s_2_15, -1, 5, 0},
{ 5, s_2_16, -1, 6, 0},
{ 5, s_2_17, -1, 4, 0},
{ 5, s_2_18, -1, 5, 0},
{ 7, s_2_19, 18, 4, 0},
{ 5, s_2_20, -1, 6, 0},
{ 6, s_2_21, -1, 5, 0},
{ 7, s_2_22, -1, 4, 0},
{ 9, s_2_23, -1, 1, 0},
{ 7, s_2_24, -1, 3, 0},
{ 5, s_2_25, -1, 4, 0},
{ 5, s_2_26, -1, 5, 0},
{ 5, s_2_27, -1, 6, 0},
{ 7, s_2_28, -1, 4, 0},
{ 9, s_2_29, -1, 1, 0},
{ 7, s_2_30, -1, 3, 0},
{ 9, s_2_31, -1, 4, 0},
{ 11, s_2_32, -1, 1, 0},
{ 9, s_2_33, -1, 3, 0},
{ 4, s_2_34, -1, 4, 0},
{ 4, s_2_35, -1, 5, 0},
{ 6, s_2_36, 35, 4, 0},
{ 4, s_2_37, -1, 6, 0},
{ 5, s_2_38, -1, 5, 0},
{ 4, s_2_39, -1, 4, 0},
{ 4, s_2_40, -1, 5, 0},
{ 4, s_2_41, -1, 6, 0},
{ 6, s_2_42, -1, 4, 0},
{ 6, s_2_43, -1, 4, 0},
{ 6, s_2_44, -1, 5, 0},
{ 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] =
{
{ 3, s_3_0, -1, 1, 0},
{ 5, s_3_1, -1, 1, 0},
{ 5, s_3_2, -1, 1, 0},
{ 4, s_3_3, -1, 1, 0},
{ 3, s_3_4, -1, 1, 0},
{ 3, s_3_5, -1, 1, 0},
{ 4, s_3_6, -1, 1, 0},
{ 4, s_3_7, -1, 3, 0},
{ 3, s_3_8, -1, 1, 0},
{ 3, s_3_9, -1, 1, 0},
{ 2, s_3_10, -1, 1, 0},
{ 3, s_3_11, -1, 1, 0},
{ 5, s_3_12, -1, 1, 0},
{ 5, s_3_13, -1, 1, 0},
{ 4, s_3_14, -1, 3, 0},
{ 4, s_3_15, -1, 2, 0},
{ 4, s_3_16, -1, 1, 0},
{ 3, s_3_17, -1, 1, 0},
{ 5, s_3_18, 17, 1, 0},
{ 3, s_3_19, -1, 1, 0},
{ 4, s_3_20, -1, 1, 0},
{ 4, s_3_21, -1, 3, 0},
{ 3, s_3_22, -1, 1, 0},
{ 3, s_3_23, -1, 1, 0},
{ 3, s_3_24, -1, 1, 0},
{ 5, s_3_25, -1, 1, 0},
{ 5, s_3_26, -1, 1, 0},
{ 4, s_3_27, -1, 2, 0},
{ 5, s_3_28, -1, 1, 0},
{ 3, s_3_29, -1, 1, 0},
{ 3, s_3_30, -1, 1, 0},
{ 5, s_3_31, 30, 1, 0},
{ 3, s_3_32, -1, 1, 0},
{ 4, s_3_33, -1, 1, 0},
{ 4, s_3_34, -1, 3, 0},
{ 3, s_3_35, -1, 1, 0},
{ 5, s_3_36, -1, 3, 0},
{ 3, s_3_37, -1, 1, 0},
{ 5, s_3_38, -1, 1, 0},
{ 4, s_3_39, -1, 1, 0},
{ 7, s_3_40, -1, 1, 0},
{ 4, s_3_41, -1, 1, 0},
{ 4, s_3_42, -1, 1, 0},
{ 3, s_3_43, -1, 3, 0},
{ 4, s_3_44, -1, 1, 0},
{ 2, s_3_45, -1, 1, 0},
{ 2, s_3_46, -1, 1, 0},
{ 2, s_3_47, -1, 1, 0},
{ 3, s_3_48, -1, 1, 0},
{ 3, s_3_49, -1, 3, 0},
{ 2, s_3_50, -1, 1, 0},
{ 2, s_3_51, -1, 1, 0},
{ 4, s_3_52, -1, 1, 0},
{ 6, s_3_53, -1, 1, 0},
{ 6, s_3_54, -1, 1, 0},
{ 5, s_3_55, -1, 1, 0},
{ 4, s_3_56, -1, 1, 0},
{ 4, s_3_57, -1, 1, 0},
{ 5, s_3_58, -1, 1, 0},
{ 5, s_3_59, -1, 3, 0},
{ 4, s_3_60, -1, 1, 0},
{ 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] =
{
{ 2, s_4_0, -1, 1, 0},
{ 2, s_4_1, -1, 1, 0},
{ 3, s_4_2, -1, 1, 0},
{ 4, s_4_3, -1, 1, 0},
{ 3, s_4_4, -1, 1, 0},
{ 4, s_4_5, -1, 1, 0},
{ 3, s_4_6, -1, 1, 0},
{ 3, s_4_7, -1, 1, 0},
{ 3, s_4_8, -1, 1, 0},
{ 4, s_4_9, -1, 1, 0},
{ 2, s_4_10, -1, 2, 0},
{ 3, s_4_11, 10, 1, 0},
{ 4, s_4_12, 10, 2, 0},
{ 3, s_4_13, 10, 1, 0},
{ 3, s_4_14, 10, 1, 0},
{ 4, s_4_15, 10, 1, 0},
{ 5, s_4_16, -1, 1, 0},
{ 6, s_4_17, -1, 1, 0},
{ 3, s_4_18, -1, 1, 0},
{ 2, s_4_19, -1, 1, 0},
{ 3, s_4_20, 19, 1, 0},
{ 3, s_4_21, 19, 1, 0},
{ 3, s_4_22, -1, 2, 0},
{ 5, s_4_23, -1, 1, 0},
{ 6, s_4_24, -1, 1, 0},
{ 2, s_4_25, -1, 1, 0},
{ 3, s_4_26, -1, 1, 0},
{ 4, s_4_27, -1, 1, 0},
{ 5, s_4_28, -1, 2, 0},
{ 6, s_4_29, 28, 1, 0},
{ 7, s_4_30, 28, 2, 0},
{ 6, s_4_31, 28, 1, 0},
{ 6, s_4_32, 28, 1, 0},
{ 7, s_4_33, 28, 1, 0},
{ 4, s_4_34, -1, 1, 0},
{ 4, s_4_35, -1, 1, 0},
{ 5, s_4_36, -1, 1, 0},
{ 3, s_4_37, -1, 1, 0},
{ 4, s_4_38, -1, 2, 0},
{ 5, s_4_39, 38, 1, 0},
{ 5, s_4_40, 38, 1, 0},
{ 4, s_4_41, -1, 2, 0},
{ 4, s_4_42, -1, 2, 0},
{ 7, s_4_43, -1, 1, 0},
{ 8, s_4_44, -1, 2, 0},
{ 9, s_4_45, 44, 1, 0},
{ 10, s_4_46, 44, 2, 0},
{ 9, s_4_47, 44, 1, 0},
{ 9, s_4_48, 44, 1, 0},
{ 10, s_4_49, 44, 1, 0},
{ 7, s_4_50, -1, 1, 0},
{ 7, s_4_51, -1, 1, 0},
{ 8, s_4_52, -1, 1, 0},
{ 5, s_4_53, -1, 2, 0},
{ 2, s_4_54, -1, 1, 0},
{ 3, s_4_55, 54, 1, 0},
{ 3, s_4_56, 54, 1, 0},
{ 2, s_4_57, -1, 2, 0},
{ 4, s_4_58, 57, 1, 0},
{ 5, s_4_59, 57, 2, 0},
{ 4, s_4_60, 57, 1, 0},
{ 4, s_4_61, 57, 1, 0},
{ 5, s_4_62, 57, 1, 0},
{ 2, s_4_63, -1, 2, 0},
{ 3, s_4_64, -1, 2, 0},
{ 5, s_4_65, 64, 1, 0},
{ 6, s_4_66, 64, 2, 0},
{ 7, s_4_67, 66, 1, 0},
{ 8, s_4_68, 66, 2, 0},
{ 7, s_4_69, 66, 1, 0},
{ 7, s_4_70, 66, 1, 0},
{ 8, s_4_71, 66, 1, 0},
{ 5, s_4_72, 64, 1, 0},
{ 5, s_4_73, 64, 1, 0},
{ 6, s_4_74, 64, 1, 0},
{ 3, s_4_75, -1, 2, 0},
{ 2, s_4_76, -1, 1, 0},
{ 3, s_4_77, 76, 1, 0},
{ 3, s_4_78, 76, 1, 0},
{ 4, s_4_79, -1, 1, 0},
{ 5, s_4_80, -1, 1, 0},
{ 2, s_4_81, -1, 1, 0},
{ 6, s_4_82, -1, 1, 0},
{ 4, s_4_83, -1, 1, 0},
{ 5, s_4_84, -1, 2, 0},
{ 6, s_4_85, 84, 1, 0},
{ 7, s_4_86, 84, 2, 0},
{ 6, s_4_87, 84, 1, 0},
{ 6, s_4_88, 84, 1, 0},
{ 7, s_4_89, 84, 1, 0},
{ 4, s_4_90, -1, 1, 0},
{ 4, s_4_91, -1, 1, 0},
{ 5, s_4_92, -1, 1, 0},
{ 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] =
{
{ 1, s_5_0, -1, 1, 0},
{ 1, s_5_1, -1, 1, 0},
{ 2, s_5_2, 1, 1, 0},
{ 1, s_5_3, -1, 1, 0},
{ 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[] = { 'I' };
static const symbol s_2[] = { 'i' };
static const symbol s_3[] = { 'u' };
static const symbol s_4[] = { 'a' };
static const symbol s_5[] = { 'e' };
static const symbol s_6[] = { 'i' };
static const symbol s_7[] = { 'a', 'b' };
static const symbol s_8[] = { 'i' };
static const symbol s_9[] = { 'a', 't' };
static const symbol s_10[] = { 'a', 0xC5, 0xA3, 'i' };
static const symbol s_11[] = { 'a', 'b', 'i', 'l' };
static const symbol s_12[] = { 'i', 'b', 'i', 'l' };
static const symbol s_13[] = { 'i', 'v' };
static const symbol s_14[] = { 'i', 'c' };
static const symbol s_15[] = { 'a', 't' };
static const symbol s_16[] = { 'i', 't' };
static const symbol s_17[] = { 0xC5, 0xA3 };
static const symbol s_18[] = { 't' };
static const symbol s_19[] = { 'i', 's', 't' };
static int r_prelude(struct SN_env * z) {
while(1) {
int c1 = z->c;
while(1) {
int c2 = z->c;
if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab1;
z->bra = z->c;
{ int c3 = z->c;
if (z->c == z->l || z->p[z->c] != 'u') goto lab3;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab3;
{ int ret = slice_from_s(z, 1, s_0);
if (ret < 0) return ret;
}
goto lab2;
lab3:
z->c = c3;
if (z->c == z->l || z->p[z->c] != 'i') goto lab1;
z->c++;
z->ket = z->c;
if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab1;
{ int ret = slice_from_s(z, 1, s_1);
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;
}
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_mark_regions(struct SN_env * z) {
z->I[2] = z->l;
z->I[1] = z->l;
z->I[0] = z->l;
{ int c1 = z->c;
{ int c2 = z->c;
if (in_grouping_U(z, g_v, 97, 259, 0)) goto lab2;
{ int c3 = z->c;
if (out_grouping_U(z, g_v, 97, 259, 0)) goto lab4;
{
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;
{
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;
if (out_grouping_U(z, g_v, 97, 259, 0)) goto lab6;
{
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;
}
}
lab5:
;
}
lab1:
z->I[2] = z->c;
lab0:
z->c = c1;
}
{ int c5 = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 259, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 259, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
z->I[1] = z->c;
{
int ret = out_grouping_U(z, g_v, 97, 259, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 97, 259, 1);
if (ret < 0) goto lab7;
z->c += ret;
}
z->I[0] = z->c;
lab7:
z->c = c5;
}
return 1;
}
static int r_postlude(struct SN_env * z) {
int among_var;
while(1) {
int c1 = z->c;
z->bra = z->c;
if (z->c >= z->l || (z->p[z->c + 0] != 73 && z->p[z->c + 0] != 85)) among_var = 3; else
among_var = find_among(z, a_0, 3);
if (!(among_var)) goto lab0;
z->ket = z->c;
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 1, s_2);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_3);
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;
}
break;
}
continue;
lab0:
z->c = c1;
break;
}
return 1;
}
static int r_RV(struct SN_env * z) {
if (!(z->I[2] <= 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[0] <= z->c)) return 0;
return 1;
}
static int r_step_0(struct SN_env * z) {
int among_var;
z->ket = z->c;
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);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 1, s_4);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 1, s_5);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 1, s_6);
if (ret < 0) return ret;
}
break;
case 5:
{ int m1 = z->l - z->c; (void)m1;
if (!(eq_s_b(z, 2, s_7))) goto lab0;
return 0;
lab0:
z->c = z->l - m1;
}
{ int ret = slice_from_s(z, 1, s_8);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 2, s_9);
if (ret < 0) return ret;
}
break;
case 7:
{ int ret = slice_from_s(z, 4, s_10);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_combo_suffix(struct SN_env * z) {
int among_var;
{ int m_test1 = z->l - z->c;
z->ket = z->c;
among_var = find_among_b(z, a_2, 46);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R1(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_from_s(z, 4, s_11);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 4, s_12);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 2, s_13);
if (ret < 0) return ret;
}
break;
case 4:
{ int ret = slice_from_s(z, 2, s_14);
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 2, s_15);
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_from_s(z, 2, s_16);
if (ret < 0) return ret;
}
break;
}
z->I[3] = 1;
z->c = z->l - m_test1;
}
return 1;
}
static int r_standard_suffix(struct SN_env * z) {
int among_var;
z->I[3] = 0;
while(1) {
int m1 = z->l - z->c; (void)m1;
{ int ret = r_combo_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
continue;
lab0:
z->c = z->l - m1;
break;
}
z->ket = z->c;
among_var = find_among_b(z, a_3, 62);
if (!(among_var)) return 0;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
if (!(eq_s_b(z, 2, s_17))) return 0;
z->bra = z->c;
{ int ret = slice_from_s(z, 1, s_18);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 3, s_19);
if (ret < 0) return ret;
}
break;
}
z->I[3] = 1;
return 1;
}
static int r_verb_suffix(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[2]) return 0;
mlimit1 = z->lb; z->lb = z->I[2];
z->ket = z->c;
among_var = find_among_b(z, a_4, 94);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
switch (among_var) {
case 1:
{ int m2 = z->l - z->c; (void)m2;
if (out_grouping_b_U(z, g_v, 97, 259, 0)) goto lab1;
goto lab0;
lab1:
z->c = z->l - m2;
if (z->c <= z->lb || z->p[z->c - 1] != 'u') { z->lb = mlimit1; return 0; }
z->c--;
}
lab0:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
z->lb = mlimit1;
}
return 1;
}
static int r_vowel_suffix(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_5, 5))) return 0;
z->bra = z->c;
{ int ret = r_RV(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
extern int romanian_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_prelude(z);
if (ret < 0) return ret;
}
z->c = c1;
}
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_step_0(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_standard_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int m5 = z->l - z->c; (void)m5;
if (!(z->I[3])) goto lab2;
goto lab1;
lab2:
z->c = z->l - m5;
{ int ret = r_verb_suffix(z);
if (ret == 0) goto lab0;
if (ret < 0) return ret;
}
}
lab1:
lab0:
z->c = z->l - m4;
}
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_vowel_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m6;
}
z->c = z->lb;
{ int c7 = z->c;
{ int ret = r_postlude(z);
if (ret < 0) return ret;
}
z->c = c7;
}
return 1;
}
extern struct SN_env * romanian_UTF_8_create_env(void) { return SN_create_env(0, 4); }
extern void romanian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,678 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 10, s_0_0, -1, 1, 0},
{ 12, s_0_1, 0, 2, 0},
{ 12, s_0_2, 0, 2, 0},
{ 2, s_0_3, -1, 1, 0},
{ 4, s_0_4, 3, 2, 0},
{ 4, s_0_5, 3, 2, 0},
{ 6, s_0_6, -1, 1, 0},
{ 8, s_0_7, 6, 2, 0},
{ 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] =
{
{ 6, s_1_0, -1, 1, 0},
{ 6, s_1_1, -1, 1, 0},
{ 4, s_1_2, -1, 1, 0},
{ 4, s_1_3, -1, 1, 0},
{ 4, s_1_4, -1, 1, 0},
{ 4, s_1_5, -1, 1, 0},
{ 4, s_1_6, -1, 1, 0},
{ 4, s_1_7, -1, 1, 0},
{ 4, s_1_8, -1, 1, 0},
{ 4, s_1_9, -1, 1, 0},
{ 4, s_1_10, -1, 1, 0},
{ 4, s_1_11, -1, 1, 0},
{ 4, s_1_12, -1, 1, 0},
{ 4, s_1_13, -1, 1, 0},
{ 6, s_1_14, -1, 1, 0},
{ 6, s_1_15, -1, 1, 0},
{ 4, s_1_16, -1, 1, 0},
{ 4, s_1_17, -1, 1, 0},
{ 4, s_1_18, -1, 1, 0},
{ 4, s_1_19, -1, 1, 0},
{ 4, s_1_20, -1, 1, 0},
{ 4, s_1_21, -1, 1, 0},
{ 4, s_1_22, -1, 1, 0},
{ 4, s_1_23, -1, 1, 0},
{ 6, s_1_24, -1, 1, 0},
{ 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] =
{
{ 4, s_2_0, -1, 1, 0},
{ 6, s_2_1, 0, 2, 0},
{ 6, s_2_2, 0, 2, 0},
{ 2, s_2_3, -1, 1, 0},
{ 4, s_2_4, 3, 1, 0},
{ 6, s_2_5, 4, 2, 0},
{ 4, s_2_6, -1, 1, 0},
{ 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] =
{
{ 4, s_3_0, -1, 1, 0},
{ 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] =
{
{ 4, s_4_0, -1, 2, 0},
{ 4, s_4_1, -1, 1, 0},
{ 6, s_4_2, 1, 2, 0},
{ 4, s_4_3, -1, 2, 0},
{ 4, s_4_4, -1, 1, 0},
{ 6, s_4_5, 4, 2, 0},
{ 4, s_4_6, -1, 2, 0},
{ 4, s_4_7, -1, 1, 0},
{ 6, s_4_8, 7, 2, 0},
{ 4, s_4_9, -1, 1, 0},
{ 6, s_4_10, 9, 2, 0},
{ 6, s_4_11, 9, 2, 0},
{ 6, s_4_12, -1, 1, 0},
{ 6, s_4_13, -1, 2, 0},
{ 2, s_4_14, -1, 2, 0},
{ 4, s_4_15, 14, 2, 0},
{ 4, s_4_16, -1, 1, 0},
{ 6, s_4_17, 16, 2, 0},
{ 6, s_4_18, 16, 2, 0},
{ 4, s_4_19, -1, 1, 0},
{ 6, s_4_20, 19, 2, 0},
{ 6, s_4_21, -1, 1, 0},
{ 6, s_4_22, -1, 2, 0},
{ 6, s_4_23, -1, 1, 0},
{ 8, s_4_24, 23, 2, 0},
{ 8, s_4_25, 23, 2, 0},
{ 4, s_4_26, -1, 1, 0},
{ 6, s_4_27, 26, 2, 0},
{ 6, s_4_28, 26, 2, 0},
{ 2, s_4_29, -1, 1, 0},
{ 4, s_4_30, 29, 2, 0},
{ 4, s_4_31, 29, 2, 0},
{ 2, s_4_32, -1, 1, 0},
{ 4, s_4_33, 32, 2, 0},
{ 4, s_4_34, 32, 2, 0},
{ 4, s_4_35, -1, 2, 0},
{ 4, s_4_36, -1, 1, 0},
{ 4, s_4_37, -1, 2, 0},
{ 2, s_4_38, -1, 1, 0},
{ 4, s_4_39, 38, 2, 0},
{ 4, s_4_40, -1, 1, 0},
{ 6, s_4_41, 40, 2, 0},
{ 6, s_4_42, 40, 2, 0},
{ 4, s_4_43, -1, 1, 0},
{ 6, s_4_44, 43, 2, 0},
{ 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] =
{
{ 2, s_5_0, -1, 1, 0},
{ 4, s_5_1, -1, 1, 0},
{ 6, s_5_2, 1, 1, 0},
{ 4, s_5_3, -1, 1, 0},
{ 2, s_5_4, -1, 1, 0},
{ 2, s_5_5, -1, 1, 0},
{ 2, s_5_6, -1, 1, 0},
{ 4, s_5_7, 6, 1, 0},
{ 4, s_5_8, 6, 1, 0},
{ 2, s_5_9, -1, 1, 0},
{ 4, s_5_10, 9, 1, 0},
{ 4, s_5_11, 9, 1, 0},
{ 2, s_5_12, -1, 1, 0},
{ 4, s_5_13, -1, 1, 0},
{ 4, s_5_14, -1, 1, 0},
{ 2, s_5_15, -1, 1, 0},
{ 4, s_5_16, 15, 1, 0},
{ 4, s_5_17, 15, 1, 0},
{ 2, s_5_18, -1, 1, 0},
{ 4, s_5_19, 18, 1, 0},
{ 4, s_5_20, 18, 1, 0},
{ 6, s_5_21, 18, 1, 0},
{ 8, s_5_22, 21, 1, 0},
{ 6, s_5_23, 18, 1, 0},
{ 2, s_5_24, -1, 1, 0},
{ 4, s_5_25, 24, 1, 0},
{ 6, s_5_26, 25, 1, 0},
{ 4, s_5_27, 24, 1, 0},
{ 4, s_5_28, 24, 1, 0},
{ 4, s_5_29, -1, 1, 0},
{ 6, s_5_30, 29, 1, 0},
{ 4, s_5_31, -1, 1, 0},
{ 4, s_5_32, -1, 1, 0},
{ 6, s_5_33, 32, 1, 0},
{ 4, s_5_34, -1, 1, 0},
{ 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] =
{
{ 6, s_6_0, -1, 1, 0},
{ 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] =
{
{ 6, s_7_0, -1, 1, 0},
{ 2, s_7_1, -1, 3, 0},
{ 8, s_7_2, -1, 1, 0},
{ 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[] = { 0xD1, 0x91 };
static const symbol s_10[] = { 0xD0, 0xB5 };
static const symbol s_11[] = { 0xD0, 0xB8 };
static int r_mark_regions(struct SN_env * z) {
z->I[1] = z->l;
z->I[0] = z->l;
{ int c1 = z->c;
{
int ret = out_grouping_U(z, g_v, 1072, 1103, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
z->I[1] = z->c;
{
int ret = in_grouping_U(z, g_v, 1072, 1103, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
{
int ret = out_grouping_U(z, g_v, 1072, 1103, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
{
int ret = in_grouping_U(z, g_v, 1072, 1103, 1);
if (ret < 0) goto lab0;
z->c += ret;
}
z->I[0] = z->c;
lab0:
z->c = c1;
}
return 1;
}
static int r_R2(struct SN_env * z) {
if (!(z->I[0] <= z->c)) return 0;
return 1;
}
static int r_perfective_gerund(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_0, 9);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int m1 = z->l - z->c; (void)m1;
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);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_adjective(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_1, 26))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_adjectival(struct SN_env * z) {
int among_var;
{ int ret = r_adjective(z);
if (ret <= 0) return ret;
}
{ int m1 = z->l - z->c; (void)m1;
z->ket = z->c;
among_var = find_among_b(z, a_2, 8);
if (!(among_var)) { z->c = z->l - m1; goto lab0; }
z->bra = z->c;
switch (among_var) {
case 1:
{ int m2 = z->l - z->c; (void)m2;
if (!(eq_s_b(z, 2, s_2))) goto lab2;
goto lab1;
lab2:
z->c = z->l - m2;
if (!(eq_s_b(z, 2, s_3))) { z->c = z->l - m1; goto lab0; }
}
lab1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
lab0:
;
}
return 1;
}
static int r_reflexive(struct SN_env * z) {
z->ket = z->c;
if (z->c - 3 <= z->lb || (z->p[z->c - 1] != 140 && z->p[z->c - 1] != 143)) return 0;
if (!(find_among_b(z, a_3, 2))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_verb(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_4, 46);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int m1 = z->l - z->c; (void)m1;
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);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_noun(struct SN_env * z) {
z->ket = z->c;
if (!(find_among_b(z, a_5, 36))) return 0;
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_derivational(struct SN_env * z) {
z->ket = z->c;
if (z->c - 5 <= z->lb || (z->p[z->c - 1] != 130 && z->p[z->c - 1] != 140)) return 0;
if (!(find_among_b(z, a_6, 2))) return 0;
z->bra = z->c;
{ int ret = r_R2(z);
if (ret <= 0) return ret;
}
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
return 1;
}
static int r_tidy_up(struct SN_env * z) {
int among_var;
z->ket = z->c;
among_var = find_among_b(z, a_7, 4);
if (!(among_var)) return 0;
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
z->ket = z->c;
if (!(eq_s_b(z, 2, s_6))) return 0;
z->bra = z->c;
if (!(eq_s_b(z, 2, s_7))) return 0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
if (!(eq_s_b(z, 2, s_8))) return 0;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
}
return 1;
}
extern int russian_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
while(1) {
int c2 = z->c;
while(1) {
int c3 = z->c;
z->bra = z->c;
if (!(eq_s(z, 2, s_9))) goto lab2;
z->ket = z->c;
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;
}
}
{ int ret = slice_from_s(z, 2, s_10);
if (ret < 0) return ret;
}
continue;
lab1:
z->c = c2;
break;
}
z->c = c1;
}
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->lb = z->c; z->c = z->l;
{ int mlimit4;
if (z->c < z->I[1]) return 0;
mlimit4 = z->lb; z->lb = z->I[1];
{ int m5 = z->l - z->c; (void)m5;
{ int m6 = z->l - z->c; (void)m6;
{ int ret = r_perfective_gerund(z);
if (ret == 0) goto lab5;
if (ret < 0) return ret;
}
goto lab4;
lab5:
z->c = z->l - m6;
{ int m7 = z->l - z->c; (void)m7;
{ int ret = r_reflexive(z);
if (ret == 0) { z->c = z->l - m7; goto lab6; }
if (ret < 0) return ret;
}
lab6:
;
}
{ int m8 = z->l - z->c; (void)m8;
{ int ret = r_adjectival(z);
if (ret == 0) goto lab8;
if (ret < 0) return ret;
}
goto lab7;
lab8:
z->c = z->l - m8;
{ int ret = r_verb(z);
if (ret == 0) goto lab9;
if (ret < 0) return ret;
}
goto lab7;
lab9:
z->c = z->l - m8;
{ int ret = r_noun(z);
if (ret == 0) goto lab3;
if (ret < 0) return ret;
}
}
lab7:
;
}
lab4:
lab3:
z->c = z->l - m5;
}
{ int m9 = z->l - z->c; (void)m9;
z->ket = z->c;
if (!(eq_s_b(z, 2, s_11))) { z->c = z->l - m9; goto lab10; }
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
lab10:
;
}
{ int m10 = z->l - z->c; (void)m10;
{ int ret = r_derivational(z);
if (ret < 0) return ret;
}
z->c = z->l - m10;
}
{ int m11 = z->l - z->c; (void)m11;
{ int ret = r_tidy_up(z);
if (ret < 0) return ret;
}
z->c = z->l - m11;
}
z->lb = mlimit4;
}
z->c = z->lb;
return 1;
}
extern struct SN_env * russian_UTF_8_create_env(void) { return SN_create_env(0, 2); }
extern void russian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * serbian_UTF_8_create_env(void);
extern void serbian_UTF_8_close_env(struct SN_env * z);
extern int serbian_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

View File

@@ -0,0 +1,292 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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] =
{
{ 1, s_0_0, -1, 1, 0},
{ 4, s_0_1, 0, 1, 0},
{ 4, s_0_2, 0, 1, 0},
{ 7, s_0_3, 2, 1, 0},
{ 4, s_0_4, 0, 1, 0},
{ 2, s_0_5, -1, 1, 0},
{ 1, s_0_6, -1, 1, 0},
{ 3, s_0_7, 6, 1, 0},
{ 4, s_0_8, 6, 1, 0},
{ 4, s_0_9, 6, 1, 0},
{ 3, s_0_10, 6, 1, 0},
{ 4, s_0_11, 6, 1, 0},
{ 2, s_0_12, -1, 1, 0},
{ 5, s_0_13, 12, 1, 0},
{ 4, s_0_14, 12, 1, 0},
{ 5, s_0_15, 12, 1, 0},
{ 3, s_0_16, -1, 1, 0},
{ 2, s_0_17, -1, 1, 0},
{ 2, s_0_18, -1, 1, 0},
{ 5, s_0_19, 18, 1, 0},
{ 2, s_0_20, -1, 1, 0},
{ 1, s_0_21, -1, 2, 0},
{ 2, s_0_22, 21, 1, 0},
{ 5, s_0_23, 22, 1, 0},
{ 5, s_0_24, 22, 1, 0},
{ 5, s_0_25, 22, 1, 0},
{ 2, s_0_26, 21, 1, 0},
{ 4, s_0_27, 26, 1, 0},
{ 5, s_0_28, 26, 1, 0},
{ 3, s_0_29, 21, 1, 0},
{ 5, s_0_30, 29, 1, 0},
{ 6, s_0_31, 29, 1, 0},
{ 4, s_0_32, 21, 1, 0},
{ 2, s_0_33, -1, 1, 0},
{ 5, s_0_34, -1, 1, 0},
{ 3, s_0_35, -1, 1, 0},
{ 3, s_0_36, -1, 1, 0}
};
static const symbol s_1_0[2] = { 'd', 'd' };
static const symbol s_1_1[2] = { 'g', 'd' };
static const symbol s_1_2[2] = { 'n', 'n' };
static const symbol s_1_3[2] = { 'd', 't' };
static const symbol s_1_4[2] = { 'g', 't' };
static const symbol s_1_5[2] = { 'k', 't' };
static const symbol s_1_6[2] = { 't', 't' };
static const struct among a_1[7] =
{
{ 2, s_1_0, -1, -1, 0},
{ 2, s_1_1, -1, -1, 0},
{ 2, s_1_2, -1, -1, 0},
{ 2, s_1_3, -1, -1, 0},
{ 2, s_1_4, -1, -1, 0},
{ 2, s_1_5, -1, -1, 0},
{ 2, s_1_6, -1, -1, 0}
};
static const symbol s_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] =
{
{ 2, s_2_0, -1, 1, 0},
{ 3, s_2_1, 0, 1, 0},
{ 3, s_2_2, -1, 1, 0},
{ 5, s_2_3, -1, 3, 0},
{ 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[1] = z->l;
{ int c_test1 = z->c;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
if (ret < 0) return 0;
z->c = ret;
}
z->I[0] = z->c;
z->c = c_test1;
}
if (out_grouping_U(z, g_v, 97, 246, 1) < 0) return 0;
{
int ret = in_grouping_U(z, g_v, 97, 246, 1);
if (ret < 0) return 0;
z->c += ret;
}
z->I[1] = z->c;
if (!(z->I[1] < z->I[0])) goto lab0;
z->I[1] = z->I[0];
lab0:
return 1;
}
static int r_main_suffix(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851442 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_0, 37);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
z->lb = mlimit1;
}
switch (among_var) {
case 1:
{ int ret = slice_del(z);
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);
if (ret < 0) return ret;
}
break;
}
return 1;
}
static int r_consonant_pair(struct SN_env * z) {
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
{ int m2 = z->l - z->c; (void)m2;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1064976 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
if (!(find_among_b(z, a_1, 7))) { z->lb = mlimit1; return 0; }
z->c = z->l - m2;
z->ket = z->c;
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) { z->lb = mlimit1; return 0; }
z->c = ret;
}
z->bra = z->c;
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
}
z->lb = mlimit1;
}
return 1;
}
static int r_other_suffix(struct SN_env * z) {
int among_var;
{ int mlimit1;
if (z->c < z->I[1]) return 0;
mlimit1 = z->lb; z->lb = z->I[1];
z->ket = z->c;
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c;
switch (among_var) {
case 1:
{ int ret = slice_del(z);
if (ret < 0) return ret;
}
break;
case 2:
{ int ret = slice_from_s(z, 4, s_0);
if (ret < 0) return ret;
}
break;
case 3:
{ int ret = slice_from_s(z, 4, s_1);
if (ret < 0) return ret;
}
break;
}
z->lb = mlimit1;
}
return 1;
}
extern int swedish_UTF_8_stem(struct SN_env * z) {
{ int c1 = z->c;
{ int ret = r_mark_regions(z);
if (ret < 0) return ret;
}
z->c = c1;
}
z->lb = z->c; z->c = z->l;
{ int m2 = z->l - z->c; (void)m2;
{ int ret = r_main_suffix(z);
if (ret < 0) return ret;
}
z->c = z->l - m2;
}
{ int m3 = z->l - z->c; (void)m3;
{ int ret = r_consonant_pair(z);
if (ret < 0) return ret;
}
z->c = z->l - m3;
}
{ int m4 = z->l - z->c; (void)m4;
{ int ret = r_other_suffix(z);
if (ret < 0) return ret;
}
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); }
extern void swedish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * tamil_UTF_8_create_env(void);
extern void tamil_UTF_8_close_env(struct SN_env * z);
extern int tamil_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
/* Generated by Snowball 2.0.0 - https://snowballstem.org/ */
#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