From b4d107a777db5c55ebae6e7f4463f4ff42bf91f2 Mon Sep 17 00:00:00 2001 From: Teodor Sigaev Date: Thu, 15 Sep 2005 11:56:58 +0000 Subject: [PATCH] Update Snowball. I have to update it because of old version doesn't available on Snowball's site and new version of stemmers can't be compiled with old interface. --- contrib/tsearch2/dict_snowball.c | 8 +- contrib/tsearch2/gendict/README.gendict | 11 +- contrib/tsearch2/gendict/config.sh | 13 +- contrib/tsearch2/snowball/api.c | 128 +- contrib/tsearch2/snowball/api.h | 27 +- contrib/tsearch2/snowball/english_stem.c | 2135 +++++++++++----------- contrib/tsearch2/snowball/english_stem.h | 15 +- contrib/tsearch2/snowball/header.h | 69 +- contrib/tsearch2/snowball/russian_stem.c | 1321 +++++++------ contrib/tsearch2/snowball/russian_stem.h | 15 +- contrib/tsearch2/snowball/utilities.c | 786 ++++---- 11 files changed, 2223 insertions(+), 2305 deletions(-) diff --git a/contrib/tsearch2/dict_snowball.c b/contrib/tsearch2/dict_snowball.c index ddb9cd169e..8a16e78ef0 100644 --- a/contrib/tsearch2/dict_snowball.c +++ b/contrib/tsearch2/dict_snowball.c @@ -49,7 +49,7 @@ snb_en_init(PG_FUNCTION_ARGS) PG_FREE_IF_COPY(in, 0); } - d->z = english_create_env(); + d->z = english_ISO_8859_1_create_env(); if (!d->z) { freestoplist(&(d->stoplist)); @@ -57,7 +57,7 @@ snb_en_init(PG_FUNCTION_ARGS) (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); } - d->stem = english_stem; + d->stem = english_ISO_8859_1_stem; PG_RETURN_POINTER(d); } @@ -83,7 +83,7 @@ snb_ru_init(PG_FUNCTION_ARGS) PG_FREE_IF_COPY(in, 0); } - d->z = russian_create_env(); + d->z = russian_KOI8_R_create_env(); if (!d->z) { freestoplist(&(d->stoplist)); @@ -91,7 +91,7 @@ snb_ru_init(PG_FUNCTION_ARGS) (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); } - d->stem = russian_stem; + d->stem = russian_KOI8_R_stem; PG_RETURN_POINTER(d); } diff --git a/contrib/tsearch2/gendict/README.gendict b/contrib/tsearch2/gendict/README.gendict index e91f1b75a3..e5bd010b03 100644 --- a/contrib/tsearch2/gendict/README.gendict +++ b/contrib/tsearch2/gendict/README.gendict @@ -50,7 +50,7 @@ Example 1: 2. Create template files for Portuguese - ./config.sh -n pt -s -p portuguese -v -C'Snowball stemmer for Portuguese' + ./config.sh -n pt -s -p portuguese_ISO_8859_1 -v -C'Snowball stemmer for Portuguese' Note, that argument for -p option should be *the same* as name of stemming function in stem.c (without _stem) @@ -81,9 +81,10 @@ Example 1: Here is what I have in pg_ts_dict table psql -d testdict -c "select * from pg_ts_dict where dict_name='pt';" - dict_name | dict_init | dict_initoption | dict_lexize | dict_comment - -----------+-----------+-----------------+-------------+--------------------------------- - pt | 7177806 | | 7159330 | Snowball stemmer for Portuguese + dict_name | dict_init | dict_initoption | dict_lexize | dict_comment + -----------+--------------------+-----------------+---------------------------------------+--------------------------------- + pt | dinit_pt(internal) | | snb_lexize(internal,internal,integer) | Snowball stemmer for Portuguese + (1 row) @@ -127,4 +128,4 @@ Example 2: you may edit them to create actual dictionary. Please, check Tsearch2 home page (http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/) - for additional information about "Gendict tutorial" and dictionaries. \ No newline at end of file + for additional information about "Gendict tutorial" and dictionaries. diff --git a/contrib/tsearch2/gendict/config.sh b/contrib/tsearch2/gendict/config.sh index 26bb5421f7..2dc71fb73e 100755 --- a/contrib/tsearch2/gendict/config.sh +++ b/contrib/tsearch2/gendict/config.sh @@ -131,9 +131,16 @@ fi if [ ${#cfile} -ne 0 ] || [ ${#hfile} -ne 0 ] ; then [ $verbose = "yes" ] && echo -n 'Copy source and header files... ' if [ ${#cfile} -ne 0 ] ; then - if ! cp $cfile ../../$dir ; then - echo "Cant cp all or one of files: $cfile" - exit 1 + if [ $stemmode = "yes" ] ; then + for cfn in $cfile + do + sed s#../runtime/## < $cfn > ../../$dir/$cfn + done + else + if ! cp $cfile ../../$dir ; then + echo "Can't cp all or one of files: $cfile" + exit 1 + fi fi fi if [ ${#hfile} -ne 0 ] ; then diff --git a/contrib/tsearch2/snowball/api.c b/contrib/tsearch2/snowball/api.c index b475e7d5db..9dd5a3b8fa 100644 --- a/contrib/tsearch2/snowball/api.c +++ b/contrib/tsearch2/snowball/api.c @@ -1,89 +1,69 @@ -#include +#include /* for calloc, free */ #include "header.h" -struct SN_env * -SN_create_env(int S_size, int I_size, int B_size) +extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size) { - struct SN_env *z = (struct SN_env *) calloc(1, sizeof(struct SN_env)); - struct SN_env *z2 = z; + 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; - if (!z) - return z; + for (i = 0; i < S_size; i++) + { + z->S[i] = create_s(); + if (z->S[i] == NULL) goto error; + } + z->S_size = S_size; + } - z->p = create_s(); - if (!z->p) - z = NULL; + if (I_size) + { + z->I = (int *) calloc(I_size, sizeof(int)); + if (z->I == NULL) goto error; + z->I_size = I_size; + } - if (z && S_size) - { - if ((z->S = (symbol * *) calloc(S_size, sizeof(symbol *)))) - { - int i; + if (B_size) + { + z->B = (symbol *) calloc(B_size, sizeof(symbol)); + if (z->B == NULL) goto error; + z->B_size = B_size; + } - for (i = 0; i < S_size; i++) - { - if (!(z->S[i] = create_s())) - { - z = NULL; - break; - } - } - z2->S_size = i; - } - else - z = NULL; - } - - if (z && I_size) - { - z->I = (int *) calloc(I_size, sizeof(int)); - if (z->I) - z->I_size = I_size; - else - z = NULL; - } - - if (z && B_size) - { - z->B = (symbol *) calloc(B_size, sizeof(symbol)); - if (z->B) - z->B_size = B_size; - else - z = NULL; - } - - if (!z) - SN_close_env(z2); - - return z; + return z; +error: + SN_close_env(z); + return NULL; } -void -SN_close_env(struct SN_env * z) +extern void SN_close_env(struct SN_env * z) { - if (z->S && z->S_size) - { - { - int i; - - for (i = 0; i < z->S_size; i++) - lose_s(z->S[i]); - } - free(z->S); - } - if (z->I_size) - free(z->I); - if (z->B_size) - free(z->B); - if (z->p) - lose_s(z->p); - free(z); + if (z == NULL) return; + if (z->S_size) + { + int i; + for (i = 0; i < z->S_size; i++) + { + lose_s(z->S[i]); + } + free(z->S); + } + if (z->I_size) free(z->I); + if (z->B_size) free(z->B); + if (z->p) lose_s(z->p); + free(z); } -void -SN_set_current(struct SN_env * z, int size, const symbol * s) +extern int SN_set_current(struct SN_env * z, int size, const symbol * s) { - replace_s(z, 0, z->l, size, s); - z->c = 0; + int err = replace_s(z, 0, z->l, size, s, NULL); + z->c = 0; + return err; } + diff --git a/contrib/tsearch2/snowball/api.h b/contrib/tsearch2/snowball/api.h index b17346934d..adc2282e32 100644 --- a/contrib/tsearch2/snowball/api.h +++ b/contrib/tsearch2/snowball/api.h @@ -11,24 +11,17 @@ typedef unsigned char symbol; */ -struct SN_env -{ - symbol *p; - int c; - int a; - int l; - int lb; - int bra; - int ket; - int S_size; - int I_size; - int B_size; - symbol **S; - int *I; - symbol *B; +struct SN_env { + symbol * p; + int c; int a; int l; int lb; int bra; int ket; + int S_size; int I_size; int B_size; + symbol * * S; + int * I; + symbol * B; }; -extern struct SN_env *SN_create_env(int S_size, int I_size, int B_size); +extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size); extern void SN_close_env(struct SN_env * z); -extern void SN_set_current(struct SN_env * z, int size, const symbol * s); +extern int SN_set_current(struct SN_env * z, int size, const symbol * s); + diff --git a/contrib/tsearch2/snowball/english_stem.c b/contrib/tsearch2/snowball/english_stem.c index 5ddc72cf52..54eb25f86f 100644 --- a/contrib/tsearch2/snowball/english_stem.c +++ b/contrib/tsearch2/snowball/english_stem.c @@ -3,1105 +3,1154 @@ #include "header.h" -extern int english_stem(struct SN_env * z); -static int r_exception2(struct SN_env * z); -static int r_exception1(struct SN_env * z); -static int r_Step_5(struct SN_env * z); -static int r_Step_4(struct SN_env * z); -static int r_Step_3(struct SN_env * z); -static int r_Step_2(struct SN_env * z); -static int r_Step_1c(struct SN_env * z); -static int r_Step_1b(struct SN_env * z); -static int r_Step_1a(struct SN_env * z); -static int r_R2(struct SN_env * z); -static int r_R1(struct SN_env * z); -static int r_shortv(struct SN_env * z); -static int r_mark_regions(struct SN_env * z); -static int r_postlude(struct SN_env * z); -static int r_prelude(struct SN_env * z); +extern int english_ISO_8859_1_stem(struct SN_env * z); +static int r_exception2(struct SN_env * z); +static int r_exception1(struct SN_env * z); +static int r_Step_5(struct SN_env * z); +static int r_Step_4(struct SN_env * z); +static int r_Step_3(struct SN_env * z); +static int r_Step_2(struct SN_env * z); +static int r_Step_1c(struct SN_env * z); +static int r_Step_1b(struct SN_env * z); +static int r_Step_1a(struct SN_env * z); +static int r_R2(struct SN_env * z); +static int r_R1(struct SN_env * z); +static int r_shortv(struct SN_env * z); +static int r_mark_regions(struct SN_env * z); +static int r_postlude(struct SN_env * z); +static int r_prelude(struct SN_env * z); -extern struct SN_env *english_create_env(void); -extern void english_close_env(struct SN_env * z); +extern struct SN_env * english_ISO_8859_1_create_env(void); +extern void english_ISO_8859_1_close_env(struct SN_env * z); -static symbol s_0_0[5] = {'g', 'e', 'n', 'e', 'r'}; +static symbol s_0_0[6] = { 'c', 'o', 'm', 'm', 'u', 'n' }; +static symbol s_0_1[5] = { 'g', 'e', 'n', 'e', 'r' }; -static struct among a_0[1] = +static struct among a_0[2] = { - /* 0 */ {5, s_0_0, -1, -1, 0} +/* 0 */ { 6, s_0_0, -1, -1, 0}, +/* 1 */ { 5, s_0_1, -1, -1, 0} }; -static symbol s_1_0[3] = {'i', 'e', 'd'}; -static symbol s_1_1[1] = {'s'}; -static symbol s_1_2[3] = {'i', 'e', 's'}; -static symbol s_1_3[4] = {'s', 's', 'e', 's'}; -static symbol s_1_4[2] = {'s', 's'}; -static symbol s_1_5[2] = {'u', 's'}; +static symbol s_1_0[1] = { '\'' }; +static symbol s_1_1[3] = { '\'', 's', '\'' }; +static symbol s_1_2[2] = { '\'', 's' }; -static struct among a_1[6] = +static struct among a_1[3] = { - /* 0 */ {3, s_1_0, -1, 2, 0}, - /* 1 */ {1, s_1_1, -1, 3, 0}, - /* 2 */ {3, s_1_2, 1, 2, 0}, - /* 3 */ {4, s_1_3, 1, 1, 0}, - /* 4 */ {2, s_1_4, 1, -1, 0}, - /* 5 */ {2, s_1_5, 1, -1, 0} +/* 0 */ { 1, s_1_0, -1, 1, 0}, +/* 1 */ { 3, s_1_1, 0, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 1, 0} }; -static symbol s_2_1[2] = {'b', 'b'}; -static symbol s_2_2[2] = {'d', 'd'}; -static symbol s_2_3[2] = {'f', 'f'}; -static symbol s_2_4[2] = {'g', 'g'}; -static symbol s_2_5[2] = {'b', 'l'}; -static symbol s_2_6[2] = {'m', 'm'}; -static symbol s_2_7[2] = {'n', 'n'}; -static symbol s_2_8[2] = {'p', 'p'}; -static symbol s_2_9[2] = {'r', 'r'}; -static symbol s_2_10[2] = {'a', 't'}; -static symbol s_2_11[2] = {'t', 't'}; -static symbol s_2_12[2] = {'i', 'z'}; +static symbol s_2_0[3] = { 'i', 'e', 'd' }; +static symbol s_2_1[1] = { 's' }; +static symbol s_2_2[3] = { 'i', 'e', 's' }; +static symbol s_2_3[4] = { 's', 's', 'e', 's' }; +static symbol s_2_4[2] = { 's', 's' }; +static symbol s_2_5[2] = { 'u', 's' }; -static struct among a_2[13] = +static struct among a_2[6] = { - /* 0 */ {0, 0, -1, 3, 0}, - /* 1 */ {2, s_2_1, 0, 2, 0}, - /* 2 */ {2, s_2_2, 0, 2, 0}, - /* 3 */ {2, s_2_3, 0, 2, 0}, - /* 4 */ {2, s_2_4, 0, 2, 0}, - /* 5 */ {2, s_2_5, 0, 1, 0}, - /* 6 */ {2, s_2_6, 0, 2, 0}, - /* 7 */ {2, s_2_7, 0, 2, 0}, - /* 8 */ {2, s_2_8, 0, 2, 0}, - /* 9 */ {2, s_2_9, 0, 2, 0}, - /* 10 */ {2, s_2_10, 0, 1, 0}, - /* 11 */ {2, s_2_11, 0, 2, 0}, - /* 12 */ {2, s_2_12, 0, 1, 0} +/* 0 */ { 3, s_2_0, -1, 2, 0}, +/* 1 */ { 1, s_2_1, -1, 3, 0}, +/* 2 */ { 3, s_2_2, 1, 2, 0}, +/* 3 */ { 4, s_2_3, 1, 1, 0}, +/* 4 */ { 2, s_2_4, 1, -1, 0}, +/* 5 */ { 2, s_2_5, 1, -1, 0} }; -static symbol s_3_0[2] = {'e', 'd'}; -static symbol s_3_1[3] = {'e', 'e', 'd'}; -static symbol s_3_2[3] = {'i', 'n', 'g'}; -static symbol s_3_3[4] = {'e', 'd', 'l', 'y'}; -static symbol s_3_4[5] = {'e', 'e', 'd', 'l', 'y'}; -static symbol s_3_5[5] = {'i', 'n', 'g', 'l', 'y'}; +static symbol s_3_1[2] = { 'b', 'b' }; +static symbol s_3_2[2] = { 'd', 'd' }; +static symbol s_3_3[2] = { 'f', 'f' }; +static symbol s_3_4[2] = { 'g', 'g' }; +static symbol s_3_5[2] = { 'b', 'l' }; +static symbol s_3_6[2] = { 'm', 'm' }; +static symbol s_3_7[2] = { 'n', 'n' }; +static symbol s_3_8[2] = { 'p', 'p' }; +static symbol s_3_9[2] = { 'r', 'r' }; +static symbol s_3_10[2] = { 'a', 't' }; +static symbol s_3_11[2] = { 't', 't' }; +static symbol s_3_12[2] = { 'i', 'z' }; -static struct among a_3[6] = +static struct among a_3[13] = { - /* 0 */ {2, s_3_0, -1, 2, 0}, - /* 1 */ {3, s_3_1, 0, 1, 0}, - /* 2 */ {3, s_3_2, -1, 2, 0}, - /* 3 */ {4, s_3_3, -1, 2, 0}, - /* 4 */ {5, s_3_4, 3, 1, 0}, - /* 5 */ {5, s_3_5, -1, 2, 0} +/* 0 */ { 0, 0, -1, 3, 0}, +/* 1 */ { 2, s_3_1, 0, 2, 0}, +/* 2 */ { 2, s_3_2, 0, 2, 0}, +/* 3 */ { 2, s_3_3, 0, 2, 0}, +/* 4 */ { 2, s_3_4, 0, 2, 0}, +/* 5 */ { 2, s_3_5, 0, 1, 0}, +/* 6 */ { 2, s_3_6, 0, 2, 0}, +/* 7 */ { 2, s_3_7, 0, 2, 0}, +/* 8 */ { 2, s_3_8, 0, 2, 0}, +/* 9 */ { 2, s_3_9, 0, 2, 0}, +/* 10 */ { 2, s_3_10, 0, 1, 0}, +/* 11 */ { 2, s_3_11, 0, 2, 0}, +/* 12 */ { 2, s_3_12, 0, 1, 0} }; -static symbol s_4_0[4] = {'a', 'n', 'c', 'i'}; -static symbol s_4_1[4] = {'e', 'n', 'c', 'i'}; -static symbol s_4_2[3] = {'o', 'g', 'i'}; -static symbol s_4_3[2] = {'l', 'i'}; -static symbol s_4_4[3] = {'b', 'l', 'i'}; -static symbol s_4_5[4] = {'a', 'b', 'l', 'i'}; -static symbol s_4_6[4] = {'a', 'l', 'l', 'i'}; -static symbol s_4_7[5] = {'f', 'u', 'l', 'l', 'i'}; -static symbol s_4_8[6] = {'l', 'e', 's', 's', 'l', 'i'}; -static symbol s_4_9[5] = {'o', 'u', 's', 'l', 'i'}; -static symbol s_4_10[5] = {'e', 'n', 't', 'l', 'i'}; -static symbol s_4_11[5] = {'a', 'l', 'i', 't', 'i'}; -static symbol s_4_12[6] = {'b', 'i', 'l', 'i', 't', 'i'}; -static symbol s_4_13[5] = {'i', 'v', 'i', 't', 'i'}; -static symbol s_4_14[6] = {'t', 'i', 'o', 'n', 'a', 'l'}; -static symbol s_4_15[7] = {'a', 't', 'i', 'o', 'n', 'a', 'l'}; -static symbol s_4_16[5] = {'a', 'l', 'i', 's', 'm'}; -static symbol s_4_17[5] = {'a', 't', 'i', 'o', 'n'}; -static symbol s_4_18[7] = {'i', 'z', 'a', 't', 'i', 'o', 'n'}; -static symbol s_4_19[4] = {'i', 'z', 'e', 'r'}; -static symbol s_4_20[4] = {'a', 't', 'o', 'r'}; -static symbol s_4_21[7] = {'i', 'v', 'e', 'n', 'e', 's', 's'}; -static symbol s_4_22[7] = {'f', 'u', 'l', 'n', 'e', 's', 's'}; -static symbol s_4_23[7] = {'o', 'u', 's', 'n', 'e', 's', 's'}; +static symbol s_4_0[2] = { 'e', 'd' }; +static symbol s_4_1[3] = { 'e', 'e', 'd' }; +static symbol s_4_2[3] = { 'i', 'n', 'g' }; +static symbol s_4_3[4] = { 'e', 'd', 'l', 'y' }; +static symbol s_4_4[5] = { 'e', 'e', 'd', 'l', 'y' }; +static symbol s_4_5[5] = { 'i', 'n', 'g', 'l', 'y' }; -static struct among a_4[24] = +static struct among a_4[6] = { - /* 0 */ {4, s_4_0, -1, 3, 0}, - /* 1 */ {4, s_4_1, -1, 2, 0}, - /* 2 */ {3, s_4_2, -1, 13, 0}, - /* 3 */ {2, s_4_3, -1, 16, 0}, - /* 4 */ {3, s_4_4, 3, 12, 0}, - /* 5 */ {4, s_4_5, 4, 4, 0}, - /* 6 */ {4, s_4_6, 3, 8, 0}, - /* 7 */ {5, s_4_7, 3, 14, 0}, - /* 8 */ {6, s_4_8, 3, 15, 0}, - /* 9 */ {5, s_4_9, 3, 10, 0}, - /* 10 */ {5, s_4_10, 3, 5, 0}, - /* 11 */ {5, s_4_11, -1, 8, 0}, - /* 12 */ {6, s_4_12, -1, 12, 0}, - /* 13 */ {5, s_4_13, -1, 11, 0}, - /* 14 */ {6, s_4_14, -1, 1, 0}, - /* 15 */ {7, s_4_15, 14, 7, 0}, - /* 16 */ {5, s_4_16, -1, 8, 0}, - /* 17 */ {5, s_4_17, -1, 7, 0}, - /* 18 */ {7, s_4_18, 17, 6, 0}, - /* 19 */ {4, s_4_19, -1, 6, 0}, - /* 20 */ {4, s_4_20, -1, 7, 0}, - /* 21 */ {7, s_4_21, -1, 11, 0}, - /* 22 */ {7, s_4_22, -1, 9, 0}, - /* 23 */ {7, s_4_23, -1, 10, 0} +/* 0 */ { 2, s_4_0, -1, 2, 0}, +/* 1 */ { 3, s_4_1, 0, 1, 0}, +/* 2 */ { 3, s_4_2, -1, 2, 0}, +/* 3 */ { 4, s_4_3, -1, 2, 0}, +/* 4 */ { 5, s_4_4, 3, 1, 0}, +/* 5 */ { 5, s_4_5, -1, 2, 0} }; -static symbol s_5_0[5] = {'i', 'c', 'a', 't', 'e'}; -static symbol s_5_1[5] = {'a', 't', 'i', 'v', 'e'}; -static symbol s_5_2[5] = {'a', 'l', 'i', 'z', 'e'}; -static symbol s_5_3[5] = {'i', 'c', 'i', 't', 'i'}; -static symbol s_5_4[4] = {'i', 'c', 'a', 'l'}; -static symbol s_5_5[6] = {'t', 'i', 'o', 'n', 'a', 'l'}; -static symbol s_5_6[7] = {'a', 't', 'i', 'o', 'n', 'a', 'l'}; -static symbol s_5_7[3] = {'f', 'u', 'l'}; -static symbol s_5_8[4] = {'n', 'e', 's', 's'}; +static symbol s_5_0[4] = { 'a', 'n', 'c', 'i' }; +static symbol s_5_1[4] = { 'e', 'n', 'c', 'i' }; +static symbol s_5_2[3] = { 'o', 'g', 'i' }; +static symbol s_5_3[2] = { 'l', 'i' }; +static symbol s_5_4[3] = { 'b', 'l', 'i' }; +static symbol s_5_5[4] = { 'a', 'b', 'l', 'i' }; +static symbol s_5_6[4] = { 'a', 'l', 'l', 'i' }; +static symbol s_5_7[5] = { 'f', 'u', 'l', 'l', 'i' }; +static symbol s_5_8[6] = { 'l', 'e', 's', 's', 'l', 'i' }; +static symbol s_5_9[5] = { 'o', 'u', 's', 'l', 'i' }; +static symbol s_5_10[5] = { 'e', 'n', 't', 'l', 'i' }; +static symbol s_5_11[5] = { 'a', 'l', 'i', 't', 'i' }; +static symbol s_5_12[6] = { 'b', 'i', 'l', 'i', 't', 'i' }; +static symbol s_5_13[5] = { 'i', 'v', 'i', 't', 'i' }; +static symbol s_5_14[6] = { 't', 'i', 'o', 'n', 'a', 'l' }; +static symbol s_5_15[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' }; +static symbol s_5_16[5] = { 'a', 'l', 'i', 's', 'm' }; +static symbol s_5_17[5] = { 'a', 't', 'i', 'o', 'n' }; +static symbol s_5_18[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' }; +static symbol s_5_19[4] = { 'i', 'z', 'e', 'r' }; +static symbol s_5_20[4] = { 'a', 't', 'o', 'r' }; +static symbol s_5_21[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' }; +static symbol s_5_22[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' }; +static symbol s_5_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' }; -static struct among a_5[9] = +static struct among a_5[24] = { - /* 0 */ {5, s_5_0, -1, 4, 0}, - /* 1 */ {5, s_5_1, -1, 6, 0}, - /* 2 */ {5, s_5_2, -1, 3, 0}, - /* 3 */ {5, s_5_3, -1, 4, 0}, - /* 4 */ {4, s_5_4, -1, 4, 0}, - /* 5 */ {6, s_5_5, -1, 1, 0}, - /* 6 */ {7, s_5_6, 5, 2, 0}, - /* 7 */ {3, s_5_7, -1, 5, 0}, - /* 8 */ {4, s_5_8, -1, 5, 0} +/* 0 */ { 4, s_5_0, -1, 3, 0}, +/* 1 */ { 4, s_5_1, -1, 2, 0}, +/* 2 */ { 3, s_5_2, -1, 13, 0}, +/* 3 */ { 2, s_5_3, -1, 16, 0}, +/* 4 */ { 3, s_5_4, 3, 12, 0}, +/* 5 */ { 4, s_5_5, 4, 4, 0}, +/* 6 */ { 4, s_5_6, 3, 8, 0}, +/* 7 */ { 5, s_5_7, 3, 14, 0}, +/* 8 */ { 6, s_5_8, 3, 15, 0}, +/* 9 */ { 5, s_5_9, 3, 10, 0}, +/* 10 */ { 5, s_5_10, 3, 5, 0}, +/* 11 */ { 5, s_5_11, -1, 8, 0}, +/* 12 */ { 6, s_5_12, -1, 12, 0}, +/* 13 */ { 5, s_5_13, -1, 11, 0}, +/* 14 */ { 6, s_5_14, -1, 1, 0}, +/* 15 */ { 7, s_5_15, 14, 7, 0}, +/* 16 */ { 5, s_5_16, -1, 8, 0}, +/* 17 */ { 5, s_5_17, -1, 7, 0}, +/* 18 */ { 7, s_5_18, 17, 6, 0}, +/* 19 */ { 4, s_5_19, -1, 6, 0}, +/* 20 */ { 4, s_5_20, -1, 7, 0}, +/* 21 */ { 7, s_5_21, -1, 11, 0}, +/* 22 */ { 7, s_5_22, -1, 9, 0}, +/* 23 */ { 7, s_5_23, -1, 10, 0} }; -static symbol s_6_0[2] = {'i', 'c'}; -static symbol s_6_1[4] = {'a', 'n', 'c', 'e'}; -static symbol s_6_2[4] = {'e', 'n', 'c', 'e'}; -static symbol s_6_3[4] = {'a', 'b', 'l', 'e'}; -static symbol s_6_4[4] = {'i', 'b', 'l', 'e'}; -static symbol s_6_5[3] = {'a', 't', 'e'}; -static symbol s_6_6[3] = {'i', 'v', 'e'}; -static symbol s_6_7[3] = {'i', 'z', 'e'}; -static symbol s_6_8[3] = {'i', 't', 'i'}; -static symbol s_6_9[2] = {'a', 'l'}; -static symbol s_6_10[3] = {'i', 's', 'm'}; -static symbol s_6_11[3] = {'i', 'o', 'n'}; -static symbol s_6_12[2] = {'e', 'r'}; -static symbol s_6_13[3] = {'o', 'u', 's'}; -static symbol s_6_14[3] = {'a', 'n', 't'}; -static symbol s_6_15[3] = {'e', 'n', 't'}; -static symbol s_6_16[4] = {'m', 'e', 'n', 't'}; -static symbol s_6_17[5] = {'e', 'm', 'e', 'n', 't'}; +static symbol s_6_0[5] = { 'i', 'c', 'a', 't', 'e' }; +static symbol s_6_1[5] = { 'a', 't', 'i', 'v', 'e' }; +static symbol s_6_2[5] = { 'a', 'l', 'i', 'z', 'e' }; +static symbol s_6_3[5] = { 'i', 'c', 'i', 't', 'i' }; +static symbol s_6_4[4] = { 'i', 'c', 'a', 'l' }; +static symbol s_6_5[6] = { 't', 'i', 'o', 'n', 'a', 'l' }; +static symbol s_6_6[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' }; +static symbol s_6_7[3] = { 'f', 'u', 'l' }; +static symbol s_6_8[4] = { 'n', 'e', 's', 's' }; -static struct among a_6[18] = +static struct among a_6[9] = { - /* 0 */ {2, s_6_0, -1, 1, 0}, - /* 1 */ {4, s_6_1, -1, 1, 0}, - /* 2 */ {4, s_6_2, -1, 1, 0}, - /* 3 */ {4, s_6_3, -1, 1, 0}, - /* 4 */ {4, s_6_4, -1, 1, 0}, - /* 5 */ {3, s_6_5, -1, 1, 0}, - /* 6 */ {3, s_6_6, -1, 1, 0}, - /* 7 */ {3, s_6_7, -1, 1, 0}, - /* 8 */ {3, s_6_8, -1, 1, 0}, - /* 9 */ {2, s_6_9, -1, 1, 0}, - /* 10 */ {3, s_6_10, -1, 1, 0}, - /* 11 */ {3, s_6_11, -1, 2, 0}, - /* 12 */ {2, s_6_12, -1, 1, 0}, - /* 13 */ {3, s_6_13, -1, 1, 0}, - /* 14 */ {3, s_6_14, -1, 1, 0}, - /* 15 */ {3, s_6_15, -1, 1, 0}, - /* 16 */ {4, s_6_16, 15, 1, 0}, - /* 17 */ {5, s_6_17, 16, 1, 0} +/* 0 */ { 5, s_6_0, -1, 4, 0}, +/* 1 */ { 5, s_6_1, -1, 6, 0}, +/* 2 */ { 5, s_6_2, -1, 3, 0}, +/* 3 */ { 5, s_6_3, -1, 4, 0}, +/* 4 */ { 4, s_6_4, -1, 4, 0}, +/* 5 */ { 6, s_6_5, -1, 1, 0}, +/* 6 */ { 7, s_6_6, 5, 2, 0}, +/* 7 */ { 3, s_6_7, -1, 5, 0}, +/* 8 */ { 4, s_6_8, -1, 5, 0} }; -static symbol s_7_0[1] = {'e'}; -static symbol s_7_1[1] = {'l'}; +static symbol s_7_0[2] = { 'i', 'c' }; +static symbol s_7_1[4] = { 'a', 'n', 'c', 'e' }; +static symbol s_7_2[4] = { 'e', 'n', 'c', 'e' }; +static symbol s_7_3[4] = { 'a', 'b', 'l', 'e' }; +static symbol s_7_4[4] = { 'i', 'b', 'l', 'e' }; +static symbol s_7_5[3] = { 'a', 't', 'e' }; +static symbol s_7_6[3] = { 'i', 'v', 'e' }; +static symbol s_7_7[3] = { 'i', 'z', 'e' }; +static symbol s_7_8[3] = { 'i', 't', 'i' }; +static symbol s_7_9[2] = { 'a', 'l' }; +static symbol s_7_10[3] = { 'i', 's', 'm' }; +static symbol s_7_11[3] = { 'i', 'o', 'n' }; +static symbol s_7_12[2] = { 'e', 'r' }; +static symbol s_7_13[3] = { 'o', 'u', 's' }; +static symbol s_7_14[3] = { 'a', 'n', 't' }; +static symbol s_7_15[3] = { 'e', 'n', 't' }; +static symbol s_7_16[4] = { 'm', 'e', 'n', 't' }; +static symbol s_7_17[5] = { 'e', 'm', 'e', 'n', 't' }; -static struct among a_7[2] = +static struct among a_7[18] = { - /* 0 */ {1, s_7_0, -1, 1, 0}, - /* 1 */ {1, s_7_1, -1, 2, 0} +/* 0 */ { 2, s_7_0, -1, 1, 0}, +/* 1 */ { 4, s_7_1, -1, 1, 0}, +/* 2 */ { 4, s_7_2, -1, 1, 0}, +/* 3 */ { 4, s_7_3, -1, 1, 0}, +/* 4 */ { 4, s_7_4, -1, 1, 0}, +/* 5 */ { 3, s_7_5, -1, 1, 0}, +/* 6 */ { 3, s_7_6, -1, 1, 0}, +/* 7 */ { 3, s_7_7, -1, 1, 0}, +/* 8 */ { 3, s_7_8, -1, 1, 0}, +/* 9 */ { 2, s_7_9, -1, 1, 0}, +/* 10 */ { 3, s_7_10, -1, 1, 0}, +/* 11 */ { 3, s_7_11, -1, 2, 0}, +/* 12 */ { 2, s_7_12, -1, 1, 0}, +/* 13 */ { 3, s_7_13, -1, 1, 0}, +/* 14 */ { 3, s_7_14, -1, 1, 0}, +/* 15 */ { 3, s_7_15, -1, 1, 0}, +/* 16 */ { 4, s_7_16, 15, 1, 0}, +/* 17 */ { 5, s_7_17, 16, 1, 0} }; -static symbol s_8_0[7] = {'s', 'u', 'c', 'c', 'e', 'e', 'd'}; -static symbol s_8_1[7] = {'p', 'r', 'o', 'c', 'e', 'e', 'd'}; -static symbol s_8_2[6] = {'e', 'x', 'c', 'e', 'e', 'd'}; -static symbol s_8_3[7] = {'c', 'a', 'n', 'n', 'i', 'n', 'g'}; -static symbol s_8_4[6] = {'i', 'n', 'n', 'i', 'n', 'g'}; -static symbol s_8_5[7] = {'e', 'a', 'r', 'r', 'i', 'n', 'g'}; -static symbol s_8_6[7] = {'h', 'e', 'r', 'r', 'i', 'n', 'g'}; -static symbol s_8_7[6] = {'o', 'u', 't', 'i', 'n', 'g'}; +static symbol s_8_0[1] = { 'e' }; +static symbol s_8_1[1] = { 'l' }; -static struct among a_8[8] = +static struct among a_8[2] = { - /* 0 */ {7, s_8_0, -1, -1, 0}, - /* 1 */ {7, s_8_1, -1, -1, 0}, - /* 2 */ {6, s_8_2, -1, -1, 0}, - /* 3 */ {7, s_8_3, -1, -1, 0}, - /* 4 */ {6, s_8_4, -1, -1, 0}, - /* 5 */ {7, s_8_5, -1, -1, 0}, - /* 6 */ {7, s_8_6, -1, -1, 0}, - /* 7 */ {6, s_8_7, -1, -1, 0} +/* 0 */ { 1, s_8_0, -1, 1, 0}, +/* 1 */ { 1, s_8_1, -1, 2, 0} }; -static symbol s_9_0[5] = {'a', 'n', 'd', 'e', 's'}; -static symbol s_9_1[5] = {'a', 't', 'l', 'a', 's'}; -static symbol s_9_2[4] = {'b', 'i', 'a', 's'}; -static symbol s_9_3[6] = {'c', 'o', 's', 'm', 'o', 's'}; -static symbol s_9_4[5] = {'d', 'y', 'i', 'n', 'g'}; -static symbol s_9_5[5] = {'e', 'a', 'r', 'l', 'y'}; -static symbol s_9_6[6] = {'g', 'e', 'n', 't', 'l', 'y'}; -static symbol s_9_7[4] = {'h', 'o', 'w', 'e'}; -static symbol s_9_8[4] = {'i', 'd', 'l', 'y'}; -static symbol s_9_9[5] = {'l', 'y', 'i', 'n', 'g'}; -static symbol s_9_10[4] = {'n', 'e', 'w', 's'}; -static symbol s_9_11[4] = {'o', 'n', 'l', 'y'}; -static symbol s_9_12[6] = {'s', 'i', 'n', 'g', 'l', 'y'}; -static symbol s_9_13[5] = {'s', 'k', 'i', 'e', 's'}; -static symbol s_9_14[4] = {'s', 'k', 'i', 's'}; -static symbol s_9_15[3] = {'s', 'k', 'y'}; -static symbol s_9_16[5] = {'t', 'y', 'i', 'n', 'g'}; -static symbol s_9_17[4] = {'u', 'g', 'l', 'y'}; +static symbol s_9_0[7] = { 's', 'u', 'c', 'c', 'e', 'e', 'd' }; +static symbol s_9_1[7] = { 'p', 'r', 'o', 'c', 'e', 'e', 'd' }; +static symbol s_9_2[6] = { 'e', 'x', 'c', 'e', 'e', 'd' }; +static symbol s_9_3[7] = { 'c', 'a', 'n', 'n', 'i', 'n', 'g' }; +static symbol s_9_4[6] = { 'i', 'n', 'n', 'i', 'n', 'g' }; +static symbol s_9_5[7] = { 'e', 'a', 'r', 'r', 'i', 'n', 'g' }; +static symbol s_9_6[7] = { 'h', 'e', 'r', 'r', 'i', 'n', 'g' }; +static symbol s_9_7[6] = { 'o', 'u', 't', 'i', 'n', 'g' }; -static struct among a_9[18] = +static struct among a_9[8] = { - /* 0 */ {5, s_9_0, -1, -1, 0}, - /* 1 */ {5, s_9_1, -1, -1, 0}, - /* 2 */ {4, s_9_2, -1, -1, 0}, - /* 3 */ {6, s_9_3, -1, -1, 0}, - /* 4 */ {5, s_9_4, -1, 3, 0}, - /* 5 */ {5, s_9_5, -1, 9, 0}, - /* 6 */ {6, s_9_6, -1, 7, 0}, - /* 7 */ {4, s_9_7, -1, -1, 0}, - /* 8 */ {4, s_9_8, -1, 6, 0}, - /* 9 */ {5, s_9_9, -1, 4, 0}, - /* 10 */ {4, s_9_10, -1, -1, 0}, - /* 11 */ {4, s_9_11, -1, 10, 0}, - /* 12 */ {6, s_9_12, -1, 11, 0}, - /* 13 */ {5, s_9_13, -1, 2, 0}, - /* 14 */ {4, s_9_14, -1, 1, 0}, - /* 15 */ {3, s_9_15, -1, -1, 0}, - /* 16 */ {5, s_9_16, -1, 5, 0}, - /* 17 */ {4, s_9_17, -1, 8, 0} +/* 0 */ { 7, s_9_0, -1, -1, 0}, +/* 1 */ { 7, s_9_1, -1, -1, 0}, +/* 2 */ { 6, s_9_2, -1, -1, 0}, +/* 3 */ { 7, s_9_3, -1, -1, 0}, +/* 4 */ { 6, s_9_4, -1, -1, 0}, +/* 5 */ { 7, s_9_5, -1, -1, 0}, +/* 6 */ { 7, s_9_6, -1, -1, 0}, +/* 7 */ { 6, s_9_7, -1, -1, 0} }; -static unsigned char g_v[] = {17, 65, 16, 1}; +static symbol s_10_0[5] = { 'a', 'n', 'd', 'e', 's' }; +static symbol s_10_1[5] = { 'a', 't', 'l', 'a', 's' }; +static symbol s_10_2[4] = { 'b', 'i', 'a', 's' }; +static symbol s_10_3[6] = { 'c', 'o', 's', 'm', 'o', 's' }; +static symbol s_10_4[5] = { 'd', 'y', 'i', 'n', 'g' }; +static symbol s_10_5[5] = { 'e', 'a', 'r', 'l', 'y' }; +static symbol s_10_6[6] = { 'g', 'e', 'n', 't', 'l', 'y' }; +static symbol s_10_7[4] = { 'h', 'o', 'w', 'e' }; +static symbol s_10_8[4] = { 'i', 'd', 'l', 'y' }; +static symbol s_10_9[5] = { 'l', 'y', 'i', 'n', 'g' }; +static symbol s_10_10[4] = { 'n', 'e', 'w', 's' }; +static symbol s_10_11[4] = { 'o', 'n', 'l', 'y' }; +static symbol s_10_12[6] = { 's', 'i', 'n', 'g', 'l', 'y' }; +static symbol s_10_13[5] = { 's', 'k', 'i', 'e', 's' }; +static symbol s_10_14[4] = { 's', 'k', 'i', 's' }; +static symbol s_10_15[3] = { 's', 'k', 'y' }; +static symbol s_10_16[5] = { 't', 'y', 'i', 'n', 'g' }; +static symbol s_10_17[4] = { 'u', 'g', 'l', 'y' }; -static unsigned char g_v_WXY[] = {1, 17, 65, 208, 1}; - -static unsigned char g_valid_LI[] = {55, 141, 2}; - -static symbol s_0[] = {'y'}; -static symbol s_1[] = {'Y'}; -static symbol s_2[] = {'y'}; -static symbol s_3[] = {'Y'}; -static symbol s_4[] = {'s', 's'}; -static symbol s_5[] = {'i', 'e'}; -static symbol s_6[] = {'i'}; -static symbol s_7[] = {'e', 'e'}; -static symbol s_8[] = {'e'}; -static symbol s_9[] = {'e'}; -static symbol s_10[] = {'y'}; -static symbol s_11[] = {'Y'}; -static symbol s_12[] = {'i'}; -static symbol s_13[] = {'t', 'i', 'o', 'n'}; -static symbol s_14[] = {'e', 'n', 'c', 'e'}; -static symbol s_15[] = {'a', 'n', 'c', 'e'}; -static symbol s_16[] = {'a', 'b', 'l', 'e'}; -static symbol s_17[] = {'e', 'n', 't'}; -static symbol s_18[] = {'i', 'z', 'e'}; -static symbol s_19[] = {'a', 't', 'e'}; -static symbol s_20[] = {'a', 'l'}; -static symbol s_21[] = {'f', 'u', 'l'}; -static symbol s_22[] = {'o', 'u', 's'}; -static symbol s_23[] = {'i', 'v', 'e'}; -static symbol s_24[] = {'b', 'l', 'e'}; -static symbol s_25[] = {'l'}; -static symbol s_26[] = {'o', 'g'}; -static symbol s_27[] = {'f', 'u', 'l'}; -static symbol s_28[] = {'l', 'e', 's', 's'}; -static symbol s_29[] = {'t', 'i', 'o', 'n'}; -static symbol s_30[] = {'a', 't', 'e'}; -static symbol s_31[] = {'a', 'l'}; -static symbol s_32[] = {'i', 'c'}; -static symbol s_33[] = {'s'}; -static symbol s_34[] = {'t'}; -static symbol s_35[] = {'l'}; -static symbol s_36[] = {'s', 'k', 'i'}; -static symbol s_37[] = {'s', 'k', 'y'}; -static symbol s_38[] = {'d', 'i', 'e'}; -static symbol s_39[] = {'l', 'i', 'e'}; -static symbol s_40[] = {'t', 'i', 'e'}; -static symbol s_41[] = {'i', 'd', 'l'}; -static symbol s_42[] = {'g', 'e', 'n', 't', 'l'}; -static symbol s_43[] = {'u', 'g', 'l', 'i'}; -static symbol s_44[] = {'e', 'a', 'r', 'l', 'i'}; -static symbol s_45[] = {'o', 'n', 'l', 'i'}; -static symbol s_46[] = {'s', 'i', 'n', 'g', 'l'}; -static symbol s_47[] = {'Y'}; -static symbol s_48[] = {'y'}; - -static int -r_prelude(struct SN_env * z) +static struct among a_10[18] = { - z->B[0] = 0; /* unset Y_found, line 24 */ - { - int c = z->c; /* do, line 25 */ +/* 0 */ { 5, s_10_0, -1, -1, 0}, +/* 1 */ { 5, s_10_1, -1, -1, 0}, +/* 2 */ { 4, s_10_2, -1, -1, 0}, +/* 3 */ { 6, s_10_3, -1, -1, 0}, +/* 4 */ { 5, s_10_4, -1, 3, 0}, +/* 5 */ { 5, s_10_5, -1, 9, 0}, +/* 6 */ { 6, s_10_6, -1, 7, 0}, +/* 7 */ { 4, s_10_7, -1, -1, 0}, +/* 8 */ { 4, s_10_8, -1, 6, 0}, +/* 9 */ { 5, s_10_9, -1, 4, 0}, +/* 10 */ { 4, s_10_10, -1, -1, 0}, +/* 11 */ { 4, s_10_11, -1, 10, 0}, +/* 12 */ { 6, s_10_12, -1, 11, 0}, +/* 13 */ { 5, s_10_13, -1, 2, 0}, +/* 14 */ { 4, s_10_14, -1, 1, 0}, +/* 15 */ { 3, s_10_15, -1, -1, 0}, +/* 16 */ { 5, s_10_16, -1, 5, 0}, +/* 17 */ { 4, s_10_17, -1, 8, 0} +}; - z->bra = z->c; /* [, line 25 */ - if (!(eq_s(z, 1, s_0))) - goto lab0; - z->ket = z->c; /* ], line 25 */ - if (!(in_grouping(z, g_v, 97, 121))) - goto lab0; - slice_from_s(z, 1, s_1); /* <-, line 25 */ - z->B[0] = 1; /* set Y_found, line 25 */ +static unsigned char g_v[] = { 17, 65, 16, 1 }; + +static unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 }; + +static unsigned char g_valid_LI[] = { 55, 141, 2 }; + +static symbol s_0[] = { '\'' }; +static symbol s_1[] = { 'y' }; +static symbol s_2[] = { 'Y' }; +static symbol s_3[] = { 'y' }; +static symbol s_4[] = { 'Y' }; +static symbol s_5[] = { 's', 's' }; +static symbol s_6[] = { 'i', 'e' }; +static symbol s_7[] = { 'i' }; +static symbol s_8[] = { 'e', 'e' }; +static symbol s_9[] = { 'e' }; +static symbol s_10[] = { 'e' }; +static symbol s_11[] = { 'y' }; +static symbol s_12[] = { 'Y' }; +static symbol s_13[] = { 'i' }; +static symbol s_14[] = { 't', 'i', 'o', 'n' }; +static symbol s_15[] = { 'e', 'n', 'c', 'e' }; +static symbol s_16[] = { 'a', 'n', 'c', 'e' }; +static symbol s_17[] = { 'a', 'b', 'l', 'e' }; +static symbol s_18[] = { 'e', 'n', 't' }; +static symbol s_19[] = { 'i', 'z', 'e' }; +static symbol s_20[] = { 'a', 't', 'e' }; +static symbol s_21[] = { 'a', 'l' }; +static symbol s_22[] = { 'f', 'u', 'l' }; +static symbol s_23[] = { 'o', 'u', 's' }; +static symbol s_24[] = { 'i', 'v', 'e' }; +static symbol s_25[] = { 'b', 'l', 'e' }; +static symbol s_26[] = { 'l' }; +static symbol s_27[] = { 'o', 'g' }; +static symbol s_28[] = { 'f', 'u', 'l' }; +static symbol s_29[] = { 'l', 'e', 's', 's' }; +static symbol s_30[] = { 't', 'i', 'o', 'n' }; +static symbol s_31[] = { 'a', 't', 'e' }; +static symbol s_32[] = { 'a', 'l' }; +static symbol s_33[] = { 'i', 'c' }; +static symbol s_34[] = { 's' }; +static symbol s_35[] = { 't' }; +static symbol s_36[] = { 'l' }; +static symbol s_37[] = { 's', 'k', 'i' }; +static symbol s_38[] = { 's', 'k', 'y' }; +static symbol s_39[] = { 'd', 'i', 'e' }; +static symbol s_40[] = { 'l', 'i', 'e' }; +static symbol s_41[] = { 't', 'i', 'e' }; +static symbol s_42[] = { 'i', 'd', 'l' }; +static symbol s_43[] = { 'g', 'e', 'n', 't', 'l' }; +static symbol s_44[] = { 'u', 'g', 'l', 'i' }; +static symbol s_45[] = { 'e', 'a', 'r', 'l', 'i' }; +static symbol s_46[] = { 'o', 'n', 'l', 'i' }; +static symbol s_47[] = { 's', 'i', 'n', 'g', 'l' }; +static symbol s_48[] = { 'Y' }; +static symbol s_49[] = { 'y' }; + +static int r_prelude(struct SN_env * z) { + z->B[0] = 0; /* unset Y_found, line 26 */ + { int c = z->c; /* do, line 27 */ + z->bra = z->c; /* [, line 27 */ + if (!(eq_s(z, 1, s_0))) goto lab0; + z->ket = z->c; /* ], line 27 */ + { int ret; + ret = slice_del(z); /* delete, line 27 */ + if (ret < 0) return ret; + } + lab0: + z->c = c; + } + { int c = z->c; /* do, line 28 */ + z->bra = z->c; /* [, line 28 */ + if (!(eq_s(z, 1, s_1))) goto lab1; + z->ket = z->c; /* ], line 28 */ + if (!(in_grouping(z, g_v, 97, 121))) goto lab1; + { int ret; + ret = slice_from_s(z, 1, s_2); /* <-, line 28 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 28 */ + lab1: + z->c = c; + } + { int c = z->c; /* do, line 29 */ + while(1) { /* repeat, line 29 */ + int c = z->c; + while(1) { /* goto, line 29 */ + int c = z->c; + if (!(in_grouping(z, g_v, 97, 121))) goto lab4; + z->bra = z->c; /* [, line 29 */ + if (!(eq_s(z, 1, s_3))) goto lab4; + z->ket = z->c; /* ], line 29 */ + z->c = c; + break; + lab4: + z->c = c; + if (z->c >= z->l) goto lab3; + z->c++; /* goto, line 29 */ + } + { int ret; + ret = slice_from_s(z, 1, s_4); /* <-, line 29 */ + if (ret < 0) return ret; + } + z->B[0] = 1; /* set Y_found, line 29 */ + continue; + lab3: + z->c = c; + break; + } + z->c = c; + } + return 1; +} + +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c = z->c; /* do, line 35 */ + { int c = z->c; /* or, line 40 */ + if (!(find_among(z, a_0, 2))) goto lab2; /* among, line 36 */ + goto lab1; + lab2: + z->c = c; + while(1) { /* gopast, line 40 */ + if (!(in_grouping(z, g_v, 97, 121))) goto lab3; + break; + lab3: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 40 */ + } + while(1) { /* gopast, line 40 */ + if (!(out_grouping(z, g_v, 97, 121))) goto lab4; + break; + lab4: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 40 */ + } + } + lab1: + z->I[0] = z->c; /* setmark p1, line 41 */ + while(1) { /* gopast, line 42 */ + if (!(in_grouping(z, g_v, 97, 121))) goto lab5; + break; + lab5: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 42 */ + } + while(1) { /* gopast, line 42 */ + if (!(out_grouping(z, g_v, 97, 121))) goto lab6; + break; + lab6: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 42 */ + } + z->I[1] = z->c; /* setmark p2, line 42 */ + lab0: + z->c = c; + } + return 1; +} + +static int r_shortv(struct SN_env * z) { + { int m = z->l - z->c; (void) m; /* or, line 50 */ + if (!(out_grouping_b(z, g_v_WXY, 89, 121))) goto lab1; + if (!(in_grouping_b(z, g_v, 97, 121))) goto lab1; + if (!(out_grouping_b(z, g_v, 97, 121))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m; + if (!(out_grouping_b(z, g_v, 97, 121))) return 0; + if (!(in_grouping_b(z, g_v, 97, 121))) return 0; + if (z->c > z->lb) return 0; /* atlimit, line 51 */ + } lab0: - z->c = c; - } - { - int c = z->c; /* do, line 26 */ - - while (1) - { /* repeat, line 26 */ - int c = z->c; - - while (1) - { /* goto, line 26 */ - int c = z->c; - - if (!(in_grouping(z, g_v, 97, 121))) - goto lab3; - z->bra = z->c; /* [, line 26 */ - if (!(eq_s(z, 1, s_2))) - goto lab3; - z->ket = z->c; /* ], line 26 */ - z->c = c; - break; - lab3: - z->c = c; - if (z->c >= z->l) - goto lab2; - z->c++; - } - slice_from_s(z, 1, s_3); /* <-, line 26 */ - z->B[0] = 1; /* set Y_found, line 26 */ - continue; - lab2: - z->c = c; - break; - } - z->c = c; - } - return 1; + return 1; } -static int -r_mark_regions(struct SN_env * z) -{ - z->I[0] = z->l; - z->I[1] = z->l; - { - int c = z->c; /* do, line 32 */ +static int r_R1(struct SN_env * z) { + if (!(z->I[0] <= z->c)) return 0; + return 1; +} - { - int c = z->c; /* or, line 36 */ +static int r_R2(struct SN_env * z) { + if (!(z->I[1] <= z->c)) return 0; + return 1; +} - if (!(find_among(z, a_0, 1))) - goto lab2; /* among, line 33 */ - goto lab1; - lab2: - z->c = c; - while (1) - { /* gopast, line 36 */ - if (!(in_grouping(z, g_v, 97, 121))) - goto lab3; - break; - lab3: - if (z->c >= z->l) - goto lab0; - z->c++; - } - while (1) - { /* gopast, line 36 */ - if (!(out_grouping(z, g_v, 97, 121))) - goto lab4; - break; - lab4: - if (z->c >= z->l) - goto lab0; - z->c++; - } - } -lab1: - z->I[0] = z->c; /* setmark p1, line 37 */ - while (1) - { /* gopast, line 38 */ - if (!(in_grouping(z, g_v, 97, 121))) - goto lab5; - break; - lab5: - if (z->c >= z->l) - goto lab0; - z->c++; - } - while (1) - { /* gopast, line 38 */ - if (!(out_grouping(z, g_v, 97, 121))) - goto lab6; - break; - lab6: - if (z->c >= z->l) - goto lab0; - z->c++; - } - z->I[1] = z->c; /* setmark p2, line 38 */ +static int r_Step_1a(struct SN_env * z) { + int among_var; + { int m = z->l - z->c; (void) m; /* try, line 58 */ + z->ket = z->c; /* [, line 59 */ + among_var = find_among_b(z, a_1, 3); /* substring, line 59 */ + if (!(among_var)) { z->c = z->l - m; goto lab0; } + z->bra = z->c; /* ], line 59 */ + switch(among_var) { + case 0: { z->c = z->l - m; goto lab0; } + case 1: + { int ret; + ret = slice_del(z); /* delete, line 61 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + z->ket = z->c; /* [, line 64 */ + among_var = find_among_b(z, a_2, 6); /* substring, line 64 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 64 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_from_s(z, 2, s_5); /* <-, line 65 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m = z->l - z->c; (void) m; /* or, line 67 */ + if (z->c <= z->lb) goto lab2; + z->c--; /* next, line 67 */ + if (z->c > z->lb) goto lab2; /* atlimit, line 67 */ + { int ret; + ret = slice_from_s(z, 2, s_6); /* <-, line 67 */ + if (ret < 0) return ret; + } + goto lab1; + lab2: + z->c = z->l - m; + { int ret; + ret = slice_from_s(z, 1, s_7); /* <-, line 67 */ + if (ret < 0) return ret; + } + } + lab1: + break; + case 3: + if (z->c <= z->lb) return 0; + z->c--; /* next, line 68 */ + while(1) { /* gopast, line 68 */ + if (!(in_grouping_b(z, g_v, 97, 121))) goto lab3; + break; + lab3: + if (z->c <= z->lb) return 0; + z->c--; /* gopast, line 68 */ + } + { int ret; + ret = slice_del(z); /* delete, line 68 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_1b(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 74 */ + among_var = find_among_b(z, a_4, 6); /* substring, line 74 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 74 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 76 */ + if (ret < 0) return ret; + } + { int ret; + ret = slice_from_s(z, 2, s_8); /* <-, line 76 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m_test = z->l - z->c; /* test, line 79 */ + while(1) { /* gopast, line 79 */ + if (!(in_grouping_b(z, g_v, 97, 121))) goto lab0; + break; + lab0: + if (z->c <= z->lb) return 0; + z->c--; /* gopast, line 79 */ + } + z->c = z->l - m_test; + } + { int ret; + ret = slice_del(z); /* delete, line 79 */ + if (ret < 0) return ret; + } + { int m_test = z->l - z->c; /* test, line 80 */ + among_var = find_among_b(z, a_3, 13); /* substring, line 80 */ + if (!(among_var)) return 0; + z->c = z->l - m_test; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + { int c = z->c; + ret = insert_s(z, z->c, z->c, 1, s_9); /* <+, line 82 */ + z->c = c; + } + if (ret < 0) return ret; + } + break; + case 2: + z->ket = z->c; /* [, line 85 */ + if (z->c <= z->lb) return 0; + z->c--; /* next, line 85 */ + z->bra = z->c; /* ], line 85 */ + { int ret; + ret = slice_del(z); /* delete, line 85 */ + if (ret < 0) return ret; + } + break; + case 3: + if (z->c != z->I[0]) return 0; /* atmark, line 86 */ + { int m_test = z->l - z->c; /* test, line 86 */ + { int ret = r_shortv(z); + if (ret == 0) return 0; /* call shortv, line 86 */ + if (ret < 0) return ret; + } + z->c = z->l - m_test; + } + { int ret; + { int c = z->c; + ret = insert_s(z, z->c, z->c, 1, s_10); /* <+, line 86 */ + z->c = c; + } + if (ret < 0) return ret; + } + break; + } + break; + } + return 1; +} + +static int r_Step_1c(struct SN_env * z) { + z->ket = z->c; /* [, line 93 */ + { int m = z->l - z->c; (void) m; /* or, line 93 */ + if (!(eq_s_b(z, 1, s_11))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m; + if (!(eq_s_b(z, 1, s_12))) return 0; + } lab0: - z->c = c; - } - return 1; + z->bra = z->c; /* ], line 93 */ + if (!(out_grouping_b(z, g_v, 97, 121))) return 0; + { int m = z->l - z->c; (void) m; /* not, line 94 */ + if (z->c > z->lb) goto lab2; /* atlimit, line 94 */ + return 0; + lab2: + z->c = z->l - m; + } + { int ret; + ret = slice_from_s(z, 1, s_13); /* <-, line 95 */ + if (ret < 0) return ret; + } + return 1; } -static int -r_shortv(struct SN_env * z) -{ - { - int m = z->l - z->c; /* or, line 46 */ +static int r_Step_2(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 99 */ + among_var = find_among_b(z, a_5, 24); /* substring, line 99 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 99 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 99 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_from_s(z, 4, s_14); /* <-, line 100 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_from_s(z, 4, s_15); /* <-, line 101 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret; + ret = slice_from_s(z, 4, s_16); /* <-, line 102 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret; + ret = slice_from_s(z, 4, s_17); /* <-, line 103 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret; + ret = slice_from_s(z, 3, s_18); /* <-, line 104 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret; + ret = slice_from_s(z, 3, s_19); /* <-, line 106 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret; + ret = slice_from_s(z, 3, s_20); /* <-, line 108 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret; + ret = slice_from_s(z, 2, s_21); /* <-, line 110 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret; + ret = slice_from_s(z, 3, s_22); /* <-, line 111 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret; + ret = slice_from_s(z, 3, s_23); /* <-, line 113 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret; + ret = slice_from_s(z, 3, s_24); /* <-, line 115 */ + if (ret < 0) return ret; + } + break; + case 12: + { int ret; + ret = slice_from_s(z, 3, s_25); /* <-, line 117 */ + if (ret < 0) return ret; + } + break; + case 13: + if (!(eq_s_b(z, 1, s_26))) return 0; + { int ret; + ret = slice_from_s(z, 2, s_27); /* <-, line 118 */ + if (ret < 0) return ret; + } + break; + case 14: + { int ret; + ret = slice_from_s(z, 3, s_28); /* <-, line 119 */ + if (ret < 0) return ret; + } + break; + case 15: + { int ret; + ret = slice_from_s(z, 4, s_29); /* <-, line 120 */ + if (ret < 0) return ret; + } + break; + case 16: + if (!(in_grouping_b(z, g_valid_LI, 99, 116))) return 0; + { int ret; + ret = slice_del(z); /* delete, line 121 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} - if (!(out_grouping_b(z, g_v_WXY, 89, 121))) - goto lab1; - if (!(in_grouping_b(z, g_v, 97, 121))) - goto lab1; - if (!(out_grouping_b(z, g_v, 97, 121))) - goto lab1; - goto lab0; -lab1: - z->c = z->l - m; - if (!(out_grouping_b(z, g_v, 97, 121))) - return 0; - if (!(in_grouping_b(z, g_v, 97, 121))) - return 0; - if (z->c > z->lb) - return 0; /* atlimit, line 47 */ - } +static int r_Step_3(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 126 */ + among_var = find_among_b(z, a_6, 9); /* substring, line 126 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 126 */ + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 126 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_from_s(z, 4, s_30); /* <-, line 127 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_from_s(z, 3, s_31); /* <-, line 128 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret; + ret = slice_from_s(z, 2, s_32); /* <-, line 129 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret; + ret = slice_from_s(z, 2, s_33); /* <-, line 131 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret; + ret = slice_del(z); /* delete, line 133 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 135 */ + if (ret < 0) return ret; + } + { int ret; + ret = slice_del(z); /* delete, line 135 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_4(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 140 */ + among_var = find_among_b(z, a_7, 18); /* substring, line 140 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 140 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 140 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 143 */ + if (ret < 0) return ret; + } + break; + case 2: + { int m = z->l - z->c; (void) m; /* or, line 144 */ + if (!(eq_s_b(z, 1, s_34))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m; + if (!(eq_s_b(z, 1, s_35))) return 0; + } + lab0: + { int ret; + ret = slice_del(z); /* delete, line 144 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_Step_5(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 149 */ + among_var = find_among_b(z, a_8, 2); /* substring, line 149 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 149 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m = z->l - z->c; (void) m; /* or, line 150 */ + { int ret = r_R2(z); + if (ret == 0) goto lab1; /* call R2, line 150 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = z->l - m; + { int ret = r_R1(z); + if (ret == 0) return 0; /* call R1, line 150 */ + if (ret < 0) return ret; + } + { int m = z->l - z->c; (void) m; /* not, line 150 */ + { int ret = r_shortv(z); + if (ret == 0) goto lab2; /* call shortv, line 150 */ + if (ret < 0) return ret; + } + return 0; + lab2: + z->c = z->l - m; + } + } + lab0: + { int ret; + ret = slice_del(z); /* delete, line 150 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 151 */ + if (ret < 0) return ret; + } + if (!(eq_s_b(z, 1, s_36))) return 0; + { int ret; + ret = slice_del(z); /* delete, line 151 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_exception2(struct SN_env * z) { + z->ket = z->c; /* [, line 157 */ + if (!(find_among_b(z, a_9, 8))) return 0; /* substring, line 157 */ + z->bra = z->c; /* ], line 157 */ + if (z->c > z->lb) return 0; /* atlimit, line 157 */ + return 1; +} + +static int r_exception1(struct SN_env * z) { + int among_var; + z->bra = z->c; /* [, line 169 */ + among_var = find_among(z, a_10, 18); /* substring, line 169 */ + if (!(among_var)) return 0; + z->ket = z->c; /* ], line 169 */ + if (z->c < z->l) return 0; /* atlimit, line 169 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_from_s(z, 3, s_37); /* <-, line 173 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_from_s(z, 3, s_38); /* <-, line 174 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret; + ret = slice_from_s(z, 3, s_39); /* <-, line 175 */ + if (ret < 0) return ret; + } + break; + case 4: + { int ret; + ret = slice_from_s(z, 3, s_40); /* <-, line 176 */ + if (ret < 0) return ret; + } + break; + case 5: + { int ret; + ret = slice_from_s(z, 3, s_41); /* <-, line 177 */ + if (ret < 0) return ret; + } + break; + case 6: + { int ret; + ret = slice_from_s(z, 3, s_42); /* <-, line 181 */ + if (ret < 0) return ret; + } + break; + case 7: + { int ret; + ret = slice_from_s(z, 5, s_43); /* <-, line 182 */ + if (ret < 0) return ret; + } + break; + case 8: + { int ret; + ret = slice_from_s(z, 4, s_44); /* <-, line 183 */ + if (ret < 0) return ret; + } + break; + case 9: + { int ret; + ret = slice_from_s(z, 5, s_45); /* <-, line 184 */ + if (ret < 0) return ret; + } + break; + case 10: + { int ret; + ret = slice_from_s(z, 4, s_46); /* <-, line 185 */ + if (ret < 0) return ret; + } + break; + case 11: + { int ret; + ret = slice_from_s(z, 5, s_47); /* <-, line 186 */ + if (ret < 0) return ret; + } + break; + } + return 1; +} + +static int r_postlude(struct SN_env * z) { + if (!(z->B[0])) return 0; /* Boolean test Y_found, line 202 */ + while(1) { /* repeat, line 202 */ + int c = z->c; + while(1) { /* goto, line 202 */ + int c = z->c; + z->bra = z->c; /* [, line 202 */ + if (!(eq_s(z, 1, s_48))) goto lab1; + z->ket = z->c; /* ], line 202 */ + z->c = c; + break; + lab1: + z->c = c; + if (z->c >= z->l) goto lab0; + z->c++; /* goto, line 202 */ + } + { int ret; + ret = slice_from_s(z, 1, s_49); /* <-, line 202 */ + if (ret < 0) return ret; + } + continue; + lab0: + z->c = c; + break; + } + return 1; +} + +extern int english_ISO_8859_1_stem(struct SN_env * z) { + { int c = z->c; /* or, line 206 */ + { int ret = r_exception1(z); + if (ret == 0) goto lab1; /* call exception1, line 206 */ + if (ret < 0) return ret; + } + goto lab0; + lab1: + z->c = c; + { int c = z->c; /* not, line 207 */ + { int c = z->c + 3; + if (0 > c || c > z->l) goto lab3; + z->c = c; /* hop, line 207 */ + } + goto lab2; + lab3: + z->c = c; + } + goto lab0; + lab2: + z->c = c; + { int c = z->c; /* do, line 208 */ + { int ret = r_prelude(z); + if (ret == 0) goto lab4; /* call prelude, line 208 */ + if (ret < 0) return ret; + } + lab4: + z->c = c; + } + { int c = z->c; /* do, line 209 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab5; /* call mark_regions, line 209 */ + if (ret < 0) return ret; + } + lab5: + z->c = c; + } + z->lb = z->c; z->c = z->l; /* backwards, line 210 */ + + { int m = z->l - z->c; (void) m; /* do, line 212 */ + { int ret = r_Step_1a(z); + if (ret == 0) goto lab6; /* call Step_1a, line 212 */ + if (ret < 0) return ret; + } + lab6: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* or, line 214 */ + { int ret = r_exception2(z); + if (ret == 0) goto lab8; /* call exception2, line 214 */ + if (ret < 0) return ret; + } + goto lab7; + lab8: + z->c = z->l - m; + { int m = z->l - z->c; (void) m; /* do, line 216 */ + { int ret = r_Step_1b(z); + if (ret == 0) goto lab9; /* call Step_1b, line 216 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 217 */ + { int ret = r_Step_1c(z); + if (ret == 0) goto lab10; /* call Step_1c, line 217 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 219 */ + { int ret = r_Step_2(z); + if (ret == 0) goto lab11; /* call Step_2, line 219 */ + if (ret < 0) return ret; + } + lab11: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 220 */ + { int ret = r_Step_3(z); + if (ret == 0) goto lab12; /* call Step_3, line 220 */ + if (ret < 0) return ret; + } + lab12: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 221 */ + { int ret = r_Step_4(z); + if (ret == 0) goto lab13; /* call Step_4, line 221 */ + if (ret < 0) return ret; + } + lab13: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 223 */ + { int ret = r_Step_5(z); + if (ret == 0) goto lab14; /* call Step_5, line 223 */ + if (ret < 0) return ret; + } + lab14: + z->c = z->l - m; + } + } + lab7: + z->c = z->lb; + { int c = z->c; /* do, line 226 */ + { int ret = r_postlude(z); + if (ret == 0) goto lab15; /* call postlude, line 226 */ + if (ret < 0) return ret; + } + lab15: + z->c = c; + } + } lab0: - return 1; + return 1; } -static int -r_R1(struct SN_env * z) -{ - if (!(z->I[0] <= z->c)) - return 0; - return 1; -} +extern struct SN_env * english_ISO_8859_1_create_env(void) { return SN_create_env(0, 2, 1); } -static int -r_R2(struct SN_env * z) -{ - if (!(z->I[1] <= z->c)) - return 0; - return 1; -} +extern void english_ISO_8859_1_close_env(struct SN_env * z) { SN_close_env(z); } -static int -r_Step_1a(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 54 */ - among_var = find_among_b(z, a_1, 6); /* substring, line 54 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 54 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_from_s(z, 2, s_4); /* <-, line 55 */ - break; - case 2: - { - int m = z->l - z->c; /* or, line 57 */ - - if (z->c <= z->lb) - goto lab1; - z->c--; /* next, line 57 */ - if (z->c > z->lb) - goto lab1; /* atlimit, line 57 */ - slice_from_s(z, 2, s_5); /* <-, line 57 */ - goto lab0; - lab1: - z->c = z->l - m; - slice_from_s(z, 1, s_6); /* <-, line 57 */ - } - lab0: - break; - case 3: - if (z->c <= z->lb) - return 0; - z->c--; /* next, line 58 */ - while (1) - { /* gopast, line 58 */ - if (!(in_grouping_b(z, g_v, 97, 121))) - goto lab2; - break; - lab2: - if (z->c <= z->lb) - return 0; - z->c--; - } - slice_del(z); /* delete, line 58 */ - break; - } - return 1; -} - -static int -r_Step_1b(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 64 */ - among_var = find_among_b(z, a_3, 6); /* substring, line 64 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 64 */ - switch (among_var) - { - case 0: - return 0; - case 1: - if (!r_R1(z)) - return 0; /* call R1, line 66 */ - slice_from_s(z, 2, s_7); /* <-, line 66 */ - break; - case 2: - { - int m_test = z->l - z->c; /* test, line 69 */ - - while (1) - { /* gopast, line 69 */ - if (!(in_grouping_b(z, g_v, 97, 121))) - goto lab0; - break; - lab0: - if (z->c <= z->lb) - return 0; - z->c--; - } - z->c = z->l - m_test; - } - slice_del(z); /* delete, line 69 */ - { - int m_test = z->l - z->c; /* test, line 70 */ - - among_var = find_among_b(z, a_2, 13); /* substring, line 70 */ - if (!(among_var)) - return 0; - z->c = z->l - m_test; - } - switch (among_var) - { - case 0: - return 0; - case 1: - { - int c = z->c; - - insert_s(z, z->c, z->c, 1, s_8); /* <+, line 72 */ - z->c = c; - } - break; - case 2: - z->ket = z->c; /* [, line 75 */ - if (z->c <= z->lb) - return 0; - z->c--; /* next, line 75 */ - z->bra = z->c; /* ], line 75 */ - slice_del(z); /* delete, line 75 */ - break; - case 3: - if (z->c != z->I[0]) - return 0; /* atmark, line 76 */ - { - int m_test = z->l - z->c; /* test, line 76 */ - - if (!r_shortv(z)) - return 0; /* call shortv, line 76 */ - z->c = z->l - m_test; - } - { - int c = z->c; - - insert_s(z, z->c, z->c, 1, s_9); /* <+, line 76 */ - z->c = c; - } - break; - } - break; - } - return 1; -} - -static int -r_Step_1c(struct SN_env * z) -{ - z->ket = z->c; /* [, line 83 */ - { - int m = z->l - z->c; /* or, line 83 */ - - if (!(eq_s_b(z, 1, s_10))) - goto lab1; - goto lab0; -lab1: - z->c = z->l - m; - if (!(eq_s_b(z, 1, s_11))) - return 0; - } -lab0: - z->bra = z->c; /* ], line 83 */ - if (!(out_grouping_b(z, g_v, 97, 121))) - return 0; - { - int m = z->l - z->c; /* not, line 84 */ - - if (z->c > z->lb) - goto lab2; /* atlimit, line 84 */ - return 0; -lab2: - z->c = z->l - m; - } - slice_from_s(z, 1, s_12); /* <-, line 85 */ - return 1; -} - -static int -r_Step_2(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 89 */ - among_var = find_among_b(z, a_4, 24); /* substring, line 89 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 89 */ - if (!r_R1(z)) - return 0; /* call R1, line 89 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_from_s(z, 4, s_13); /* <-, line 90 */ - break; - case 2: - slice_from_s(z, 4, s_14); /* <-, line 91 */ - break; - case 3: - slice_from_s(z, 4, s_15); /* <-, line 92 */ - break; - case 4: - slice_from_s(z, 4, s_16); /* <-, line 93 */ - break; - case 5: - slice_from_s(z, 3, s_17); /* <-, line 94 */ - break; - case 6: - slice_from_s(z, 3, s_18); /* <-, line 96 */ - break; - case 7: - slice_from_s(z, 3, s_19); /* <-, line 98 */ - break; - case 8: - slice_from_s(z, 2, s_20); /* <-, line 100 */ - break; - case 9: - slice_from_s(z, 3, s_21); /* <-, line 101 */ - break; - case 10: - slice_from_s(z, 3, s_22); /* <-, line 103 */ - break; - case 11: - slice_from_s(z, 3, s_23); /* <-, line 105 */ - break; - case 12: - slice_from_s(z, 3, s_24); /* <-, line 107 */ - break; - case 13: - if (!(eq_s_b(z, 1, s_25))) - return 0; - slice_from_s(z, 2, s_26); /* <-, line 108 */ - break; - case 14: - slice_from_s(z, 3, s_27); /* <-, line 109 */ - break; - case 15: - slice_from_s(z, 4, s_28); /* <-, line 110 */ - break; - case 16: - if (!(in_grouping_b(z, g_valid_LI, 99, 116))) - return 0; - slice_del(z); /* delete, line 111 */ - break; - } - return 1; -} - -static int -r_Step_3(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 116 */ - among_var = find_among_b(z, a_5, 9); /* substring, line 116 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 116 */ - if (!r_R1(z)) - return 0; /* call R1, line 116 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_from_s(z, 4, s_29); /* <-, line 117 */ - break; - case 2: - slice_from_s(z, 3, s_30); /* <-, line 118 */ - break; - case 3: - slice_from_s(z, 2, s_31); /* <-, line 119 */ - break; - case 4: - slice_from_s(z, 2, s_32); /* <-, line 121 */ - break; - case 5: - slice_del(z); /* delete, line 123 */ - break; - case 6: - if (!r_R2(z)) - return 0; /* call R2, line 125 */ - slice_del(z); /* delete, line 125 */ - break; - } - return 1; -} - -static int -r_Step_4(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 130 */ - among_var = find_among_b(z, a_6, 18); /* substring, line 130 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 130 */ - if (!r_R2(z)) - return 0; /* call R2, line 130 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 133 */ - break; - case 2: - { - int m = z->l - z->c; /* or, line 134 */ - - if (!(eq_s_b(z, 1, s_33))) - goto lab1; - goto lab0; - lab1: - z->c = z->l - m; - if (!(eq_s_b(z, 1, s_34))) - return 0; - } - lab0: - slice_del(z); /* delete, line 134 */ - break; - } - return 1; -} - -static int -r_Step_5(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 139 */ - among_var = find_among_b(z, a_7, 2); /* substring, line 139 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 139 */ - switch (among_var) - { - case 0: - return 0; - case 1: - { - int m = z->l - z->c; /* or, line 140 */ - - if (!r_R2(z)) - goto lab1; /* call R2, line 140 */ - goto lab0; - lab1: - z->c = z->l - m; - if (!r_R1(z)) - return 0; /* call R1, line 140 */ - { - int m = z->l - z->c; /* not, line 140 */ - - if (!r_shortv(z)) - goto lab2; /* call shortv, line 140 */ - return 0; - lab2: - z->c = z->l - m; - } - } - lab0: - slice_del(z); /* delete, line 140 */ - break; - case 2: - if (!r_R2(z)) - return 0; /* call R2, line 141 */ - if (!(eq_s_b(z, 1, s_35))) - return 0; - slice_del(z); /* delete, line 141 */ - break; - } - return 1; -} - -static int -r_exception2(struct SN_env * z) -{ - z->ket = z->c; /* [, line 147 */ - if (!(find_among_b(z, a_8, 8))) - return 0; /* substring, line 147 */ - z->bra = z->c; /* ], line 147 */ - if (z->c > z->lb) - return 0; /* atlimit, line 147 */ - return 1; -} - -static int -r_exception1(struct SN_env * z) -{ - int among_var; - - z->bra = z->c; /* [, line 159 */ - among_var = find_among(z, a_9, 18); /* substring, line 159 */ - if (!(among_var)) - return 0; - z->ket = z->c; /* ], line 159 */ - if (z->c < z->l) - return 0; /* atlimit, line 159 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_from_s(z, 3, s_36); /* <-, line 163 */ - break; - case 2: - slice_from_s(z, 3, s_37); /* <-, line 164 */ - break; - case 3: - slice_from_s(z, 3, s_38); /* <-, line 165 */ - break; - case 4: - slice_from_s(z, 3, s_39); /* <-, line 166 */ - break; - case 5: - slice_from_s(z, 3, s_40); /* <-, line 167 */ - break; - case 6: - slice_from_s(z, 3, s_41); /* <-, line 171 */ - break; - case 7: - slice_from_s(z, 5, s_42); /* <-, line 172 */ - break; - case 8: - slice_from_s(z, 4, s_43); /* <-, line 173 */ - break; - case 9: - slice_from_s(z, 5, s_44); /* <-, line 174 */ - break; - case 10: - slice_from_s(z, 4, s_45); /* <-, line 175 */ - break; - case 11: - slice_from_s(z, 5, s_46); /* <-, line 176 */ - break; - } - return 1; -} - -static int -r_postlude(struct SN_env * z) -{ - if (!(z->B[0])) - return 0; /* Boolean test Y_found, line 192 */ - while (1) - { /* repeat, line 192 */ - int c = z->c; - - while (1) - { /* goto, line 192 */ - int c = z->c; - - z->bra = z->c; /* [, line 192 */ - if (!(eq_s(z, 1, s_47))) - goto lab1; - z->ket = z->c; /* ], line 192 */ - z->c = c; - break; - lab1: - z->c = c; - if (z->c >= z->l) - goto lab0; - z->c++; - } - slice_from_s(z, 1, s_48); /* <-, line 192 */ - continue; -lab0: - z->c = c; - break; - } - return 1; -} - -extern int -english_stem(struct SN_env * z) -{ - { - int c = z->c; /* or, line 196 */ - - if (!r_exception1(z)) - goto lab1; /* call exception1, line 196 */ - goto lab0; -lab1: - z->c = c; - { - int c_test = z->c; /* test, line 198 */ - - { - int c = z->c + 3; - - if (0 > c || c > z->l) - return 0; - z->c = c; /* hop, line 198 */ - } - z->c = c_test; - } - { - int c = z->c; /* do, line 199 */ - - if (!r_prelude(z)) - goto lab2; /* call prelude, line 199 */ - lab2: - z->c = c; - } - { - int c = z->c; /* do, line 200 */ - - if (!r_mark_regions(z)) - goto lab3; /* call mark_regions, line 200 */ - lab3: - z->c = c; - } - z->lb = z->c; - z->c = z->l; /* backwards, line 201 */ - - { - int m = z->l - z->c; /* do, line 203 */ - - if (!r_Step_1a(z)) - goto lab4; /* call Step_1a, line 203 */ - lab4: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* or, line 205 */ - - if (!r_exception2(z)) - goto lab6; /* call exception2, line 205 */ - goto lab5; - lab6: - z->c = z->l - m; - { - int m = z->l - z->c; /* do, line 207 */ - - if (!r_Step_1b(z)) - goto lab7; /* call Step_1b, line 207 */ - lab7: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 208 */ - - if (!r_Step_1c(z)) - goto lab8; /* call Step_1c, line 208 */ - lab8: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 210 */ - - if (!r_Step_2(z)) - goto lab9; /* call Step_2, line 210 */ - lab9: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 211 */ - - if (!r_Step_3(z)) - goto lab10; /* call Step_3, line 211 */ - lab10: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 212 */ - - if (!r_Step_4(z)) - goto lab11; /* call Step_4, line 212 */ - lab11: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 214 */ - - if (!r_Step_5(z)) - goto lab12; /* call Step_5, line 214 */ - lab12: - z->c = z->l - m; - } - } -lab5: - z->c = z->lb; - { - int c = z->c; /* do, line 217 */ - - if (!r_postlude(z)) - goto lab13; /* call postlude, line 217 */ - lab13: - z->c = c; - } - } -lab0: - return 1; -} - -extern struct SN_env * -english_create_env(void) -{ - return SN_create_env(0, 2, 1); -} - -extern void -english_close_env(struct SN_env * z) -{ - SN_close_env(z); -} diff --git a/contrib/tsearch2/snowball/english_stem.h b/contrib/tsearch2/snowball/english_stem.h index 7a52f9cde1..e685dcf7ef 100644 --- a/contrib/tsearch2/snowball/english_stem.h +++ b/contrib/tsearch2/snowball/english_stem.h @@ -1,7 +1,16 @@ /* This file was generated automatically by the Snowball to ANSI C compiler */ -extern struct SN_env *english_create_env(void); -extern void english_close_env(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * english_ISO_8859_1_create_env(void); +extern void english_ISO_8859_1_close_env(struct SN_env * z); + +extern int english_ISO_8859_1_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif -extern int english_stem(struct SN_env * z); diff --git a/contrib/tsearch2/snowball/header.h b/contrib/tsearch2/snowball/header.h index 4d4f127d6a..c0721d6fd3 100644 --- a/contrib/tsearch2/snowball/header.h +++ b/contrib/tsearch2/snowball/header.h @@ -1,51 +1,58 @@ + +#include + #include "api.h" +#define MAXINT INT_MAX +#define MININT INT_MIN + #define HEAD 2*sizeof(int) -#define SIZE(p) ((int *)(p))[-1] +#define 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 */ - symbol *s; /* search string */ - int substring_i; /* index to longest matching substring */ - int result; /* result of the lookup */ - int (*function) (struct SN_env *); +{ int s_size; /* number of chars in string */ + 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 symbol * create_s(void); extern void lose_s(symbol * p); -extern int in_grouping(struct SN_env * z, unsigned char *s, int min, int max); -extern int in_grouping_b(struct SN_env * z, unsigned char *s, int min, int max); -extern int out_grouping(struct SN_env * z, unsigned char *s, int min, int max); -extern int out_grouping_b(struct SN_env * z, unsigned char *s, int min, int max); +extern int skip_utf8(const symbol * p, int c, int lb, int l, int n); -extern int in_range(struct SN_env * z, int min, int max); -extern int in_range_b(struct SN_env * z, int min, int max); -extern int out_range(struct SN_env * z, int min, int max); -extern int out_range_b(struct SN_env * z, int min, int max); +extern int in_grouping_U(struct SN_env * z, unsigned char * s, int min, int max); +extern int in_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max); +extern int out_grouping_U(struct SN_env * z, unsigned char * s, int min, int max); +extern int out_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max); -extern int eq_s(struct SN_env * z, int s_size, symbol * s); -extern int eq_s_b(struct SN_env * z, int s_size, symbol * s); -extern int eq_v(struct SN_env * z, symbol * p); -extern int eq_v_b(struct SN_env * z, symbol * p); +extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max); +extern int in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max); +extern int out_grouping(struct SN_env * z, unsigned char * s, int min, int max); +extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max); -extern int find_among(struct SN_env * z, struct among * v, int v_size); -extern int find_among_b(struct SN_env * z, struct among * v, int v_size); +extern int eq_s(struct SN_env * z, int s_size, symbol * s); +extern int eq_s_b(struct SN_env * z, int s_size, symbol * s); +extern int eq_v(struct SN_env * z, symbol * p); +extern int eq_v_b(struct SN_env * z, symbol * p); -extern symbol *increase_size(symbol * p, int n); -extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s); -extern void slice_from_s(struct SN_env * z, int s_size, symbol * s); -extern void slice_from_v(struct SN_env * z, symbol * p); -extern void slice_del(struct SN_env * z); +extern int find_among(struct SN_env * z, struct among * v, int v_size); +extern int find_among_b(struct SN_env * z, struct among * v, int v_size); -extern void insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s); -extern void insert_v(struct SN_env * z, int bra, int ket, symbol * p); +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, symbol * s); +extern int slice_from_v(struct SN_env * z, symbol * p); +extern int slice_del(struct SN_env * z); -extern symbol *slice_to(struct SN_env * z, symbol * p); -extern symbol *assign_to(struct SN_env * z, symbol * p); +extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s); +extern int insert_v(struct SN_env * z, int bra, int ket, symbol * p); + +extern symbol * slice_to(struct SN_env * z, symbol * p); +extern symbol * assign_to(struct SN_env * z, symbol * p); extern void debug(struct SN_env * z, int number, int line_count); + diff --git a/contrib/tsearch2/snowball/russian_stem.c b/contrib/tsearch2/snowball/russian_stem.c index bbbddd8d82..b9b453da86 100644 --- a/contrib/tsearch2/snowball/russian_stem.c +++ b/contrib/tsearch2/snowball/russian_stem.c @@ -3,764 +3,699 @@ #include "header.h" -extern int russian_stem(struct SN_env * z); -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); +extern int russian_KOI8_R_stem(struct SN_env * z); +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); -extern struct SN_env *russian_create_env(void); -extern void russian_close_env(struct SN_env * z); +extern struct SN_env * russian_KOI8_R_create_env(void); +extern void russian_KOI8_R_close_env(struct SN_env * z); -static symbol s_0_0[3] = {215, 219, 201}; -static symbol s_0_1[4] = {201, 215, 219, 201}; -static symbol s_0_2[4] = {217, 215, 219, 201}; -static symbol s_0_3[1] = {215}; -static symbol s_0_4[2] = {201, 215}; -static symbol s_0_5[2] = {217, 215}; -static symbol s_0_6[5] = {215, 219, 201, 211, 216}; -static symbol s_0_7[6] = {201, 215, 219, 201, 211, 216}; -static symbol s_0_8[6] = {217, 215, 219, 201, 211, 216}; +static symbol s_0_0[3] = { 0xD7, 0xDB, 0xC9 }; +static symbol s_0_1[4] = { 0xC9, 0xD7, 0xDB, 0xC9 }; +static symbol s_0_2[4] = { 0xD9, 0xD7, 0xDB, 0xC9 }; +static symbol s_0_3[1] = { 0xD7 }; +static symbol s_0_4[2] = { 0xC9, 0xD7 }; +static symbol s_0_5[2] = { 0xD9, 0xD7 }; +static symbol s_0_6[5] = { 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 }; +static symbol s_0_7[6] = { 0xC9, 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 }; +static symbol s_0_8[6] = { 0xD9, 0xD7, 0xDB, 0xC9, 0xD3, 0xD8 }; static struct among a_0[9] = { - /* 0 */ {3, s_0_0, -1, 1, 0}, - /* 1 */ {4, s_0_1, 0, 2, 0}, - /* 2 */ {4, s_0_2, 0, 2, 0}, - /* 3 */ {1, s_0_3, -1, 1, 0}, - /* 4 */ {2, s_0_4, 3, 2, 0}, - /* 5 */ {2, s_0_5, 3, 2, 0}, - /* 6 */ {5, s_0_6, -1, 1, 0}, - /* 7 */ {6, s_0_7, 6, 2, 0}, - /* 8 */ {6, s_0_8, 6, 2, 0} +/* 0 */ { 3, s_0_0, -1, 1, 0}, +/* 1 */ { 4, s_0_1, 0, 2, 0}, +/* 2 */ { 4, s_0_2, 0, 2, 0}, +/* 3 */ { 1, s_0_3, -1, 1, 0}, +/* 4 */ { 2, s_0_4, 3, 2, 0}, +/* 5 */ { 2, s_0_5, 3, 2, 0}, +/* 6 */ { 5, s_0_6, -1, 1, 0}, +/* 7 */ { 6, s_0_7, 6, 2, 0}, +/* 8 */ { 6, s_0_8, 6, 2, 0} }; -static symbol s_1_0[2] = {192, 192}; -static symbol s_1_1[2] = {197, 192}; -static symbol s_1_2[2] = {207, 192}; -static symbol s_1_3[2] = {213, 192}; -static symbol s_1_4[2] = {197, 197}; -static symbol s_1_5[2] = {201, 197}; -static symbol s_1_6[2] = {207, 197}; -static symbol s_1_7[2] = {217, 197}; -static symbol s_1_8[2] = {201, 200}; -static symbol s_1_9[2] = {217, 200}; -static symbol s_1_10[3] = {201, 205, 201}; -static symbol s_1_11[3] = {217, 205, 201}; -static symbol s_1_12[2] = {197, 202}; -static symbol s_1_13[2] = {201, 202}; -static symbol s_1_14[2] = {207, 202}; -static symbol s_1_15[2] = {217, 202}; -static symbol s_1_16[2] = {197, 205}; -static symbol s_1_17[2] = {201, 205}; -static symbol s_1_18[2] = {207, 205}; -static symbol s_1_19[2] = {217, 205}; -static symbol s_1_20[3] = {197, 199, 207}; -static symbol s_1_21[3] = {207, 199, 207}; -static symbol s_1_22[2] = {193, 209}; -static symbol s_1_23[2] = {209, 209}; -static symbol s_1_24[3] = {197, 205, 213}; -static symbol s_1_25[3] = {207, 205, 213}; +static symbol s_1_0[2] = { 0xC0, 0xC0 }; +static symbol s_1_1[2] = { 0xC5, 0xC0 }; +static symbol s_1_2[2] = { 0xCF, 0xC0 }; +static symbol s_1_3[2] = { 0xD5, 0xC0 }; +static symbol s_1_4[2] = { 0xC5, 0xC5 }; +static symbol s_1_5[2] = { 0xC9, 0xC5 }; +static symbol s_1_6[2] = { 0xCF, 0xC5 }; +static symbol s_1_7[2] = { 0xD9, 0xC5 }; +static symbol s_1_8[2] = { 0xC9, 0xC8 }; +static symbol s_1_9[2] = { 0xD9, 0xC8 }; +static symbol s_1_10[3] = { 0xC9, 0xCD, 0xC9 }; +static symbol s_1_11[3] = { 0xD9, 0xCD, 0xC9 }; +static symbol s_1_12[2] = { 0xC5, 0xCA }; +static symbol s_1_13[2] = { 0xC9, 0xCA }; +static symbol s_1_14[2] = { 0xCF, 0xCA }; +static symbol s_1_15[2] = { 0xD9, 0xCA }; +static symbol s_1_16[2] = { 0xC5, 0xCD }; +static symbol s_1_17[2] = { 0xC9, 0xCD }; +static symbol s_1_18[2] = { 0xCF, 0xCD }; +static symbol s_1_19[2] = { 0xD9, 0xCD }; +static symbol s_1_20[3] = { 0xC5, 0xC7, 0xCF }; +static symbol s_1_21[3] = { 0xCF, 0xC7, 0xCF }; +static symbol s_1_22[2] = { 0xC1, 0xD1 }; +static symbol s_1_23[2] = { 0xD1, 0xD1 }; +static symbol s_1_24[3] = { 0xC5, 0xCD, 0xD5 }; +static symbol s_1_25[3] = { 0xCF, 0xCD, 0xD5 }; static struct among a_1[26] = { - /* 0 */ {2, s_1_0, -1, 1, 0}, - /* 1 */ {2, s_1_1, -1, 1, 0}, - /* 2 */ {2, s_1_2, -1, 1, 0}, - /* 3 */ {2, s_1_3, -1, 1, 0}, - /* 4 */ {2, s_1_4, -1, 1, 0}, - /* 5 */ {2, s_1_5, -1, 1, 0}, - /* 6 */ {2, s_1_6, -1, 1, 0}, - /* 7 */ {2, s_1_7, -1, 1, 0}, - /* 8 */ {2, s_1_8, -1, 1, 0}, - /* 9 */ {2, s_1_9, -1, 1, 0}, - /* 10 */ {3, s_1_10, -1, 1, 0}, - /* 11 */ {3, s_1_11, -1, 1, 0}, - /* 12 */ {2, s_1_12, -1, 1, 0}, - /* 13 */ {2, s_1_13, -1, 1, 0}, - /* 14 */ {2, s_1_14, -1, 1, 0}, - /* 15 */ {2, s_1_15, -1, 1, 0}, - /* 16 */ {2, s_1_16, -1, 1, 0}, - /* 17 */ {2, s_1_17, -1, 1, 0}, - /* 18 */ {2, s_1_18, -1, 1, 0}, - /* 19 */ {2, s_1_19, -1, 1, 0}, - /* 20 */ {3, s_1_20, -1, 1, 0}, - /* 21 */ {3, s_1_21, -1, 1, 0}, - /* 22 */ {2, s_1_22, -1, 1, 0}, - /* 23 */ {2, s_1_23, -1, 1, 0}, - /* 24 */ {3, s_1_24, -1, 1, 0}, - /* 25 */ {3, s_1_25, -1, 1, 0} +/* 0 */ { 2, s_1_0, -1, 1, 0}, +/* 1 */ { 2, s_1_1, -1, 1, 0}, +/* 2 */ { 2, s_1_2, -1, 1, 0}, +/* 3 */ { 2, s_1_3, -1, 1, 0}, +/* 4 */ { 2, s_1_4, -1, 1, 0}, +/* 5 */ { 2, s_1_5, -1, 1, 0}, +/* 6 */ { 2, s_1_6, -1, 1, 0}, +/* 7 */ { 2, s_1_7, -1, 1, 0}, +/* 8 */ { 2, s_1_8, -1, 1, 0}, +/* 9 */ { 2, s_1_9, -1, 1, 0}, +/* 10 */ { 3, s_1_10, -1, 1, 0}, +/* 11 */ { 3, s_1_11, -1, 1, 0}, +/* 12 */ { 2, s_1_12, -1, 1, 0}, +/* 13 */ { 2, s_1_13, -1, 1, 0}, +/* 14 */ { 2, s_1_14, -1, 1, 0}, +/* 15 */ { 2, s_1_15, -1, 1, 0}, +/* 16 */ { 2, s_1_16, -1, 1, 0}, +/* 17 */ { 2, s_1_17, -1, 1, 0}, +/* 18 */ { 2, s_1_18, -1, 1, 0}, +/* 19 */ { 2, s_1_19, -1, 1, 0}, +/* 20 */ { 3, s_1_20, -1, 1, 0}, +/* 21 */ { 3, s_1_21, -1, 1, 0}, +/* 22 */ { 2, s_1_22, -1, 1, 0}, +/* 23 */ { 2, s_1_23, -1, 1, 0}, +/* 24 */ { 3, s_1_24, -1, 1, 0}, +/* 25 */ { 3, s_1_25, -1, 1, 0} }; -static symbol s_2_0[2] = {197, 205}; -static symbol s_2_1[2] = {206, 206}; -static symbol s_2_2[2] = {215, 219}; -static symbol s_2_3[3] = {201, 215, 219}; -static symbol s_2_4[3] = {217, 215, 219}; -static symbol s_2_5[1] = {221}; -static symbol s_2_6[2] = {192, 221}; -static symbol s_2_7[3] = {213, 192, 221}; +static symbol s_2_0[2] = { 0xC5, 0xCD }; +static symbol s_2_1[2] = { 0xCE, 0xCE }; +static symbol s_2_2[2] = { 0xD7, 0xDB }; +static symbol s_2_3[3] = { 0xC9, 0xD7, 0xDB }; +static symbol s_2_4[3] = { 0xD9, 0xD7, 0xDB }; +static symbol s_2_5[1] = { 0xDD }; +static symbol s_2_6[2] = { 0xC0, 0xDD }; +static symbol s_2_7[3] = { 0xD5, 0xC0, 0xDD }; static struct among a_2[8] = { - /* 0 */ {2, s_2_0, -1, 1, 0}, - /* 1 */ {2, s_2_1, -1, 1, 0}, - /* 2 */ {2, s_2_2, -1, 1, 0}, - /* 3 */ {3, s_2_3, 2, 2, 0}, - /* 4 */ {3, s_2_4, 2, 2, 0}, - /* 5 */ {1, s_2_5, -1, 1, 0}, - /* 6 */ {2, s_2_6, 5, 1, 0}, - /* 7 */ {3, s_2_7, 6, 2, 0} +/* 0 */ { 2, s_2_0, -1, 1, 0}, +/* 1 */ { 2, s_2_1, -1, 1, 0}, +/* 2 */ { 2, s_2_2, -1, 1, 0}, +/* 3 */ { 3, s_2_3, 2, 2, 0}, +/* 4 */ { 3, s_2_4, 2, 2, 0}, +/* 5 */ { 1, s_2_5, -1, 1, 0}, +/* 6 */ { 2, s_2_6, 5, 1, 0}, +/* 7 */ { 3, s_2_7, 6, 2, 0} }; -static symbol s_3_0[2] = {211, 209}; -static symbol s_3_1[2] = {211, 216}; +static symbol s_3_0[2] = { 0xD3, 0xD1 }; +static symbol s_3_1[2] = { 0xD3, 0xD8 }; static struct among a_3[2] = { - /* 0 */ {2, s_3_0, -1, 1, 0}, - /* 1 */ {2, s_3_1, -1, 1, 0} +/* 0 */ { 2, s_3_0, -1, 1, 0}, +/* 1 */ { 2, s_3_1, -1, 1, 0} }; -static symbol s_4_0[1] = {192}; -static symbol s_4_1[2] = {213, 192}; -static symbol s_4_2[2] = {204, 193}; -static symbol s_4_3[3] = {201, 204, 193}; -static symbol s_4_4[3] = {217, 204, 193}; -static symbol s_4_5[2] = {206, 193}; -static symbol s_4_6[3] = {197, 206, 193}; -static symbol s_4_7[3] = {197, 212, 197}; -static symbol s_4_8[3] = {201, 212, 197}; -static symbol s_4_9[3] = {202, 212, 197}; -static symbol s_4_10[4] = {197, 202, 212, 197}; -static symbol s_4_11[4] = {213, 202, 212, 197}; -static symbol s_4_12[2] = {204, 201}; -static symbol s_4_13[3] = {201, 204, 201}; -static symbol s_4_14[3] = {217, 204, 201}; -static symbol s_4_15[1] = {202}; -static symbol s_4_16[2] = {197, 202}; -static symbol s_4_17[2] = {213, 202}; -static symbol s_4_18[1] = {204}; -static symbol s_4_19[2] = {201, 204}; -static symbol s_4_20[2] = {217, 204}; -static symbol s_4_21[2] = {197, 205}; -static symbol s_4_22[2] = {201, 205}; -static symbol s_4_23[2] = {217, 205}; -static symbol s_4_24[1] = {206}; -static symbol s_4_25[2] = {197, 206}; -static symbol s_4_26[2] = {204, 207}; -static symbol s_4_27[3] = {201, 204, 207}; -static symbol s_4_28[3] = {217, 204, 207}; -static symbol s_4_29[2] = {206, 207}; -static symbol s_4_30[3] = {197, 206, 207}; -static symbol s_4_31[3] = {206, 206, 207}; -static symbol s_4_32[2] = {192, 212}; -static symbol s_4_33[3] = {213, 192, 212}; -static symbol s_4_34[2] = {197, 212}; -static symbol s_4_35[3] = {213, 197, 212}; -static symbol s_4_36[2] = {201, 212}; -static symbol s_4_37[2] = {209, 212}; -static symbol s_4_38[2] = {217, 212}; -static symbol s_4_39[2] = {212, 216}; -static symbol s_4_40[3] = {201, 212, 216}; -static symbol s_4_41[3] = {217, 212, 216}; -static symbol s_4_42[3] = {197, 219, 216}; -static symbol s_4_43[3] = {201, 219, 216}; -static symbol s_4_44[2] = {206, 217}; -static symbol s_4_45[3] = {197, 206, 217}; +static symbol s_4_0[1] = { 0xC0 }; +static symbol s_4_1[2] = { 0xD5, 0xC0 }; +static symbol s_4_2[2] = { 0xCC, 0xC1 }; +static symbol s_4_3[3] = { 0xC9, 0xCC, 0xC1 }; +static symbol s_4_4[3] = { 0xD9, 0xCC, 0xC1 }; +static symbol s_4_5[2] = { 0xCE, 0xC1 }; +static symbol s_4_6[3] = { 0xC5, 0xCE, 0xC1 }; +static symbol s_4_7[3] = { 0xC5, 0xD4, 0xC5 }; +static symbol s_4_8[3] = { 0xC9, 0xD4, 0xC5 }; +static symbol s_4_9[3] = { 0xCA, 0xD4, 0xC5 }; +static symbol s_4_10[4] = { 0xC5, 0xCA, 0xD4, 0xC5 }; +static symbol s_4_11[4] = { 0xD5, 0xCA, 0xD4, 0xC5 }; +static symbol s_4_12[2] = { 0xCC, 0xC9 }; +static symbol s_4_13[3] = { 0xC9, 0xCC, 0xC9 }; +static symbol s_4_14[3] = { 0xD9, 0xCC, 0xC9 }; +static symbol s_4_15[1] = { 0xCA }; +static symbol s_4_16[2] = { 0xC5, 0xCA }; +static symbol s_4_17[2] = { 0xD5, 0xCA }; +static symbol s_4_18[1] = { 0xCC }; +static symbol s_4_19[2] = { 0xC9, 0xCC }; +static symbol s_4_20[2] = { 0xD9, 0xCC }; +static symbol s_4_21[2] = { 0xC5, 0xCD }; +static symbol s_4_22[2] = { 0xC9, 0xCD }; +static symbol s_4_23[2] = { 0xD9, 0xCD }; +static symbol s_4_24[1] = { 0xCE }; +static symbol s_4_25[2] = { 0xC5, 0xCE }; +static symbol s_4_26[2] = { 0xCC, 0xCF }; +static symbol s_4_27[3] = { 0xC9, 0xCC, 0xCF }; +static symbol s_4_28[3] = { 0xD9, 0xCC, 0xCF }; +static symbol s_4_29[2] = { 0xCE, 0xCF }; +static symbol s_4_30[3] = { 0xC5, 0xCE, 0xCF }; +static symbol s_4_31[3] = { 0xCE, 0xCE, 0xCF }; +static symbol s_4_32[2] = { 0xC0, 0xD4 }; +static symbol s_4_33[3] = { 0xD5, 0xC0, 0xD4 }; +static symbol s_4_34[2] = { 0xC5, 0xD4 }; +static symbol s_4_35[3] = { 0xD5, 0xC5, 0xD4 }; +static symbol s_4_36[2] = { 0xC9, 0xD4 }; +static symbol s_4_37[2] = { 0xD1, 0xD4 }; +static symbol s_4_38[2] = { 0xD9, 0xD4 }; +static symbol s_4_39[2] = { 0xD4, 0xD8 }; +static symbol s_4_40[3] = { 0xC9, 0xD4, 0xD8 }; +static symbol s_4_41[3] = { 0xD9, 0xD4, 0xD8 }; +static symbol s_4_42[3] = { 0xC5, 0xDB, 0xD8 }; +static symbol s_4_43[3] = { 0xC9, 0xDB, 0xD8 }; +static symbol s_4_44[2] = { 0xCE, 0xD9 }; +static symbol s_4_45[3] = { 0xC5, 0xCE, 0xD9 }; static struct among a_4[46] = { - /* 0 */ {1, s_4_0, -1, 2, 0}, - /* 1 */ {2, s_4_1, 0, 2, 0}, - /* 2 */ {2, s_4_2, -1, 1, 0}, - /* 3 */ {3, s_4_3, 2, 2, 0}, - /* 4 */ {3, s_4_4, 2, 2, 0}, - /* 5 */ {2, s_4_5, -1, 1, 0}, - /* 6 */ {3, s_4_6, 5, 2, 0}, - /* 7 */ {3, s_4_7, -1, 1, 0}, - /* 8 */ {3, s_4_8, -1, 2, 0}, - /* 9 */ {3, s_4_9, -1, 1, 0}, - /* 10 */ {4, s_4_10, 9, 2, 0}, - /* 11 */ {4, s_4_11, 9, 2, 0}, - /* 12 */ {2, s_4_12, -1, 1, 0}, - /* 13 */ {3, s_4_13, 12, 2, 0}, - /* 14 */ {3, s_4_14, 12, 2, 0}, - /* 15 */ {1, s_4_15, -1, 1, 0}, - /* 16 */ {2, s_4_16, 15, 2, 0}, - /* 17 */ {2, s_4_17, 15, 2, 0}, - /* 18 */ {1, s_4_18, -1, 1, 0}, - /* 19 */ {2, s_4_19, 18, 2, 0}, - /* 20 */ {2, s_4_20, 18, 2, 0}, - /* 21 */ {2, s_4_21, -1, 1, 0}, - /* 22 */ {2, s_4_22, -1, 2, 0}, - /* 23 */ {2, s_4_23, -1, 2, 0}, - /* 24 */ {1, s_4_24, -1, 1, 0}, - /* 25 */ {2, s_4_25, 24, 2, 0}, - /* 26 */ {2, s_4_26, -1, 1, 0}, - /* 27 */ {3, s_4_27, 26, 2, 0}, - /* 28 */ {3, s_4_28, 26, 2, 0}, - /* 29 */ {2, s_4_29, -1, 1, 0}, - /* 30 */ {3, s_4_30, 29, 2, 0}, - /* 31 */ {3, s_4_31, 29, 1, 0}, - /* 32 */ {2, s_4_32, -1, 1, 0}, - /* 33 */ {3, s_4_33, 32, 2, 0}, - /* 34 */ {2, s_4_34, -1, 1, 0}, - /* 35 */ {3, s_4_35, 34, 2, 0}, - /* 36 */ {2, s_4_36, -1, 2, 0}, - /* 37 */ {2, s_4_37, -1, 2, 0}, - /* 38 */ {2, s_4_38, -1, 2, 0}, - /* 39 */ {2, s_4_39, -1, 1, 0}, - /* 40 */ {3, s_4_40, 39, 2, 0}, - /* 41 */ {3, s_4_41, 39, 2, 0}, - /* 42 */ {3, s_4_42, -1, 1, 0}, - /* 43 */ {3, s_4_43, -1, 2, 0}, - /* 44 */ {2, s_4_44, -1, 1, 0}, - /* 45 */ {3, s_4_45, 44, 2, 0} +/* 0 */ { 1, s_4_0, -1, 2, 0}, +/* 1 */ { 2, s_4_1, 0, 2, 0}, +/* 2 */ { 2, s_4_2, -1, 1, 0}, +/* 3 */ { 3, s_4_3, 2, 2, 0}, +/* 4 */ { 3, s_4_4, 2, 2, 0}, +/* 5 */ { 2, s_4_5, -1, 1, 0}, +/* 6 */ { 3, s_4_6, 5, 2, 0}, +/* 7 */ { 3, s_4_7, -1, 1, 0}, +/* 8 */ { 3, s_4_8, -1, 2, 0}, +/* 9 */ { 3, s_4_9, -1, 1, 0}, +/* 10 */ { 4, s_4_10, 9, 2, 0}, +/* 11 */ { 4, s_4_11, 9, 2, 0}, +/* 12 */ { 2, s_4_12, -1, 1, 0}, +/* 13 */ { 3, s_4_13, 12, 2, 0}, +/* 14 */ { 3, s_4_14, 12, 2, 0}, +/* 15 */ { 1, s_4_15, -1, 1, 0}, +/* 16 */ { 2, s_4_16, 15, 2, 0}, +/* 17 */ { 2, s_4_17, 15, 2, 0}, +/* 18 */ { 1, s_4_18, -1, 1, 0}, +/* 19 */ { 2, s_4_19, 18, 2, 0}, +/* 20 */ { 2, s_4_20, 18, 2, 0}, +/* 21 */ { 2, s_4_21, -1, 1, 0}, +/* 22 */ { 2, s_4_22, -1, 2, 0}, +/* 23 */ { 2, s_4_23, -1, 2, 0}, +/* 24 */ { 1, s_4_24, -1, 1, 0}, +/* 25 */ { 2, s_4_25, 24, 2, 0}, +/* 26 */ { 2, s_4_26, -1, 1, 0}, +/* 27 */ { 3, s_4_27, 26, 2, 0}, +/* 28 */ { 3, s_4_28, 26, 2, 0}, +/* 29 */ { 2, s_4_29, -1, 1, 0}, +/* 30 */ { 3, s_4_30, 29, 2, 0}, +/* 31 */ { 3, s_4_31, 29, 1, 0}, +/* 32 */ { 2, s_4_32, -1, 1, 0}, +/* 33 */ { 3, s_4_33, 32, 2, 0}, +/* 34 */ { 2, s_4_34, -1, 1, 0}, +/* 35 */ { 3, s_4_35, 34, 2, 0}, +/* 36 */ { 2, s_4_36, -1, 2, 0}, +/* 37 */ { 2, s_4_37, -1, 2, 0}, +/* 38 */ { 2, s_4_38, -1, 2, 0}, +/* 39 */ { 2, s_4_39, -1, 1, 0}, +/* 40 */ { 3, s_4_40, 39, 2, 0}, +/* 41 */ { 3, s_4_41, 39, 2, 0}, +/* 42 */ { 3, s_4_42, -1, 1, 0}, +/* 43 */ { 3, s_4_43, -1, 2, 0}, +/* 44 */ { 2, s_4_44, -1, 1, 0}, +/* 45 */ { 3, s_4_45, 44, 2, 0} }; -static symbol s_5_0[1] = {192}; -static symbol s_5_1[2] = {201, 192}; -static symbol s_5_2[2] = {216, 192}; -static symbol s_5_3[1] = {193}; -static symbol s_5_4[1] = {197}; -static symbol s_5_5[2] = {201, 197}; -static symbol s_5_6[2] = {216, 197}; -static symbol s_5_7[2] = {193, 200}; -static symbol s_5_8[2] = {209, 200}; -static symbol s_5_9[3] = {201, 209, 200}; -static symbol s_5_10[1] = {201}; -static symbol s_5_11[2] = {197, 201}; -static symbol s_5_12[2] = {201, 201}; -static symbol s_5_13[3] = {193, 205, 201}; -static symbol s_5_14[3] = {209, 205, 201}; -static symbol s_5_15[4] = {201, 209, 205, 201}; -static symbol s_5_16[1] = {202}; -static symbol s_5_17[2] = {197, 202}; -static symbol s_5_18[3] = {201, 197, 202}; -static symbol s_5_19[2] = {201, 202}; -static symbol s_5_20[2] = {207, 202}; -static symbol s_5_21[2] = {193, 205}; -static symbol s_5_22[2] = {197, 205}; -static symbol s_5_23[3] = {201, 197, 205}; -static symbol s_5_24[2] = {207, 205}; -static symbol s_5_25[2] = {209, 205}; -static symbol s_5_26[3] = {201, 209, 205}; -static symbol s_5_27[1] = {207}; -static symbol s_5_28[1] = {209}; -static symbol s_5_29[2] = {201, 209}; -static symbol s_5_30[2] = {216, 209}; -static symbol s_5_31[1] = {213}; -static symbol s_5_32[2] = {197, 215}; -static symbol s_5_33[2] = {207, 215}; -static symbol s_5_34[1] = {216}; -static symbol s_5_35[1] = {217}; +static symbol s_5_0[1] = { 0xC0 }; +static symbol s_5_1[2] = { 0xC9, 0xC0 }; +static symbol s_5_2[2] = { 0xD8, 0xC0 }; +static symbol s_5_3[1] = { 0xC1 }; +static symbol s_5_4[1] = { 0xC5 }; +static symbol s_5_5[2] = { 0xC9, 0xC5 }; +static symbol s_5_6[2] = { 0xD8, 0xC5 }; +static symbol s_5_7[2] = { 0xC1, 0xC8 }; +static symbol s_5_8[2] = { 0xD1, 0xC8 }; +static symbol s_5_9[3] = { 0xC9, 0xD1, 0xC8 }; +static symbol s_5_10[1] = { 0xC9 }; +static symbol s_5_11[2] = { 0xC5, 0xC9 }; +static symbol s_5_12[2] = { 0xC9, 0xC9 }; +static symbol s_5_13[3] = { 0xC1, 0xCD, 0xC9 }; +static symbol s_5_14[3] = { 0xD1, 0xCD, 0xC9 }; +static symbol s_5_15[4] = { 0xC9, 0xD1, 0xCD, 0xC9 }; +static symbol s_5_16[1] = { 0xCA }; +static symbol s_5_17[2] = { 0xC5, 0xCA }; +static symbol s_5_18[3] = { 0xC9, 0xC5, 0xCA }; +static symbol s_5_19[2] = { 0xC9, 0xCA }; +static symbol s_5_20[2] = { 0xCF, 0xCA }; +static symbol s_5_21[2] = { 0xC1, 0xCD }; +static symbol s_5_22[2] = { 0xC5, 0xCD }; +static symbol s_5_23[3] = { 0xC9, 0xC5, 0xCD }; +static symbol s_5_24[2] = { 0xCF, 0xCD }; +static symbol s_5_25[2] = { 0xD1, 0xCD }; +static symbol s_5_26[3] = { 0xC9, 0xD1, 0xCD }; +static symbol s_5_27[1] = { 0xCF }; +static symbol s_5_28[1] = { 0xD1 }; +static symbol s_5_29[2] = { 0xC9, 0xD1 }; +static symbol s_5_30[2] = { 0xD8, 0xD1 }; +static symbol s_5_31[1] = { 0xD5 }; +static symbol s_5_32[2] = { 0xC5, 0xD7 }; +static symbol s_5_33[2] = { 0xCF, 0xD7 }; +static symbol s_5_34[1] = { 0xD8 }; +static symbol s_5_35[1] = { 0xD9 }; static struct among a_5[36] = { - /* 0 */ {1, s_5_0, -1, 1, 0}, - /* 1 */ {2, s_5_1, 0, 1, 0}, - /* 2 */ {2, s_5_2, 0, 1, 0}, - /* 3 */ {1, s_5_3, -1, 1, 0}, - /* 4 */ {1, s_5_4, -1, 1, 0}, - /* 5 */ {2, s_5_5, 4, 1, 0}, - /* 6 */ {2, s_5_6, 4, 1, 0}, - /* 7 */ {2, s_5_7, -1, 1, 0}, - /* 8 */ {2, s_5_8, -1, 1, 0}, - /* 9 */ {3, s_5_9, 8, 1, 0}, - /* 10 */ {1, s_5_10, -1, 1, 0}, - /* 11 */ {2, s_5_11, 10, 1, 0}, - /* 12 */ {2, s_5_12, 10, 1, 0}, - /* 13 */ {3, s_5_13, 10, 1, 0}, - /* 14 */ {3, s_5_14, 10, 1, 0}, - /* 15 */ {4, s_5_15, 14, 1, 0}, - /* 16 */ {1, s_5_16, -1, 1, 0}, - /* 17 */ {2, s_5_17, 16, 1, 0}, - /* 18 */ {3, s_5_18, 17, 1, 0}, - /* 19 */ {2, s_5_19, 16, 1, 0}, - /* 20 */ {2, s_5_20, 16, 1, 0}, - /* 21 */ {2, s_5_21, -1, 1, 0}, - /* 22 */ {2, s_5_22, -1, 1, 0}, - /* 23 */ {3, s_5_23, 22, 1, 0}, - /* 24 */ {2, s_5_24, -1, 1, 0}, - /* 25 */ {2, s_5_25, -1, 1, 0}, - /* 26 */ {3, s_5_26, 25, 1, 0}, - /* 27 */ {1, s_5_27, -1, 1, 0}, - /* 28 */ {1, s_5_28, -1, 1, 0}, - /* 29 */ {2, s_5_29, 28, 1, 0}, - /* 30 */ {2, s_5_30, 28, 1, 0}, - /* 31 */ {1, s_5_31, -1, 1, 0}, - /* 32 */ {2, s_5_32, -1, 1, 0}, - /* 33 */ {2, s_5_33, -1, 1, 0}, - /* 34 */ {1, s_5_34, -1, 1, 0}, - /* 35 */ {1, s_5_35, -1, 1, 0} +/* 0 */ { 1, s_5_0, -1, 1, 0}, +/* 1 */ { 2, s_5_1, 0, 1, 0}, +/* 2 */ { 2, s_5_2, 0, 1, 0}, +/* 3 */ { 1, s_5_3, -1, 1, 0}, +/* 4 */ { 1, s_5_4, -1, 1, 0}, +/* 5 */ { 2, s_5_5, 4, 1, 0}, +/* 6 */ { 2, s_5_6, 4, 1, 0}, +/* 7 */ { 2, s_5_7, -1, 1, 0}, +/* 8 */ { 2, s_5_8, -1, 1, 0}, +/* 9 */ { 3, s_5_9, 8, 1, 0}, +/* 10 */ { 1, s_5_10, -1, 1, 0}, +/* 11 */ { 2, s_5_11, 10, 1, 0}, +/* 12 */ { 2, s_5_12, 10, 1, 0}, +/* 13 */ { 3, s_5_13, 10, 1, 0}, +/* 14 */ { 3, s_5_14, 10, 1, 0}, +/* 15 */ { 4, s_5_15, 14, 1, 0}, +/* 16 */ { 1, s_5_16, -1, 1, 0}, +/* 17 */ { 2, s_5_17, 16, 1, 0}, +/* 18 */ { 3, s_5_18, 17, 1, 0}, +/* 19 */ { 2, s_5_19, 16, 1, 0}, +/* 20 */ { 2, s_5_20, 16, 1, 0}, +/* 21 */ { 2, s_5_21, -1, 1, 0}, +/* 22 */ { 2, s_5_22, -1, 1, 0}, +/* 23 */ { 3, s_5_23, 22, 1, 0}, +/* 24 */ { 2, s_5_24, -1, 1, 0}, +/* 25 */ { 2, s_5_25, -1, 1, 0}, +/* 26 */ { 3, s_5_26, 25, 1, 0}, +/* 27 */ { 1, s_5_27, -1, 1, 0}, +/* 28 */ { 1, s_5_28, -1, 1, 0}, +/* 29 */ { 2, s_5_29, 28, 1, 0}, +/* 30 */ { 2, s_5_30, 28, 1, 0}, +/* 31 */ { 1, s_5_31, -1, 1, 0}, +/* 32 */ { 2, s_5_32, -1, 1, 0}, +/* 33 */ { 2, s_5_33, -1, 1, 0}, +/* 34 */ { 1, s_5_34, -1, 1, 0}, +/* 35 */ { 1, s_5_35, -1, 1, 0} }; -static symbol s_6_0[3] = {207, 211, 212}; -static symbol s_6_1[4] = {207, 211, 212, 216}; +static symbol s_6_0[3] = { 0xCF, 0xD3, 0xD4 }; +static symbol s_6_1[4] = { 0xCF, 0xD3, 0xD4, 0xD8 }; static struct among a_6[2] = { - /* 0 */ {3, s_6_0, -1, 1, 0}, - /* 1 */ {4, s_6_1, -1, 1, 0} +/* 0 */ { 3, s_6_0, -1, 1, 0}, +/* 1 */ { 4, s_6_1, -1, 1, 0} }; -static symbol s_7_0[4] = {197, 202, 219, 197}; -static symbol s_7_1[1] = {206}; -static symbol s_7_2[1] = {216}; -static symbol s_7_3[3] = {197, 202, 219}; +static symbol s_7_0[4] = { 0xC5, 0xCA, 0xDB, 0xC5 }; +static symbol s_7_1[1] = { 0xCE }; +static symbol s_7_2[1] = { 0xD8 }; +static symbol s_7_3[3] = { 0xC5, 0xCA, 0xDB }; static struct among a_7[4] = { - /* 0 */ {4, s_7_0, -1, 1, 0}, - /* 1 */ {1, s_7_1, -1, 2, 0}, - /* 2 */ {1, s_7_2, -1, 3, 0}, - /* 3 */ {3, s_7_3, -1, 1, 0} +/* 0 */ { 4, s_7_0, -1, 1, 0}, +/* 1 */ { 1, s_7_1, -1, 2, 0}, +/* 2 */ { 1, s_7_2, -1, 3, 0}, +/* 3 */ { 3, s_7_3, -1, 1, 0} }; -static unsigned char g_v[] = {35, 130, 34, 18}; +static unsigned char g_v[] = { 35, 130, 34, 18 }; -static symbol s_0[] = {193}; -static symbol s_1[] = {209}; -static symbol s_2[] = {193}; -static symbol s_3[] = {209}; -static symbol s_4[] = {193}; -static symbol s_5[] = {209}; -static symbol s_6[] = {206}; -static symbol s_7[] = {206}; -static symbol s_8[] = {206}; -static symbol s_9[] = {201}; +static symbol s_0[] = { 0xC1 }; +static symbol s_1[] = { 0xD1 }; +static symbol s_2[] = { 0xC1 }; +static symbol s_3[] = { 0xD1 }; +static symbol s_4[] = { 0xC1 }; +static symbol s_5[] = { 0xD1 }; +static symbol s_6[] = { 0xCE }; +static symbol s_7[] = { 0xCE }; +static symbol s_8[] = { 0xCE }; +static symbol s_9[] = { 0xC9 }; -static int -r_mark_regions(struct SN_env * z) -{ - z->I[0] = z->l; - z->I[1] = z->l; - { - int c = z->c; /* do, line 100 */ - - while (1) - { /* gopast, line 101 */ - if (!(in_grouping(z, g_v, 192, 220))) - goto lab1; - break; - lab1: - if (z->c >= z->l) - goto lab0; - z->c++; - } - z->I[0] = z->c; /* setmark pV, line 101 */ - while (1) - { /* gopast, line 101 */ - if (!(out_grouping(z, g_v, 192, 220))) - goto lab2; - break; - lab2: - if (z->c >= z->l) - goto lab0; - z->c++; - } - while (1) - { /* gopast, line 102 */ - if (!(in_grouping(z, g_v, 192, 220))) - goto lab3; - break; - lab3: - if (z->c >= z->l) - goto lab0; - z->c++; - } - while (1) - { /* gopast, line 102 */ - if (!(out_grouping(z, g_v, 192, 220))) - goto lab4; - break; - lab4: - if (z->c >= z->l) - goto lab0; - z->c++; - } - z->I[1] = z->c; /* setmark p2, line 102 */ -lab0: - z->c = c; - } - return 1; +static int r_mark_regions(struct SN_env * z) { + z->I[0] = z->l; + z->I[1] = z->l; + { int c = z->c; /* do, line 63 */ + while(1) { /* gopast, line 64 */ + if (!(in_grouping(z, g_v, 192, 220))) goto lab1; + break; + lab1: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 64 */ + } + z->I[0] = z->c; /* setmark pV, line 64 */ + while(1) { /* gopast, line 64 */ + if (!(out_grouping(z, g_v, 192, 220))) goto lab2; + break; + lab2: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 64 */ + } + while(1) { /* gopast, line 65 */ + if (!(in_grouping(z, g_v, 192, 220))) goto lab3; + break; + lab3: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 65 */ + } + while(1) { /* gopast, line 65 */ + if (!(out_grouping(z, g_v, 192, 220))) goto lab4; + break; + lab4: + if (z->c >= z->l) goto lab0; + z->c++; /* gopast, line 65 */ + } + z->I[1] = z->c; /* setmark p2, line 65 */ + lab0: + z->c = c; + } + return 1; } -static int -r_R2(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[1] <= z->c)) return 0; + return 1; } -static int -r_perfective_gerund(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 111 */ - among_var = find_among_b(z, a_0, 9); /* substring, line 111 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 111 */ - switch (among_var) - { - case 0: - return 0; - case 1: - { - int m = z->l - z->c; /* or, line 115 */ - - if (!(eq_s_b(z, 1, s_0))) - goto lab1; - goto lab0; - lab1: - z->c = z->l - m; - if (!(eq_s_b(z, 1, s_1))) - return 0; - } - lab0: - slice_del(z); /* delete, line 115 */ - break; - case 2: - slice_del(z); /* delete, line 122 */ - break; - } - return 1; +static int r_perfective_gerund(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 74 */ + among_var = find_among_b(z, a_0, 9); /* substring, line 74 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 74 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m = z->l - z->c; (void) m; /* or, line 78 */ + if (!(eq_s_b(z, 1, s_0))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m; + if (!(eq_s_b(z, 1, s_1))) return 0; + } + lab0: + { int ret; + ret = slice_del(z); /* delete, line 78 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_del(z); /* delete, line 85 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_adjective(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 127 */ - among_var = find_among_b(z, a_1, 26); /* substring, line 127 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 127 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 136 */ - break; - } - return 1; +static int r_adjective(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 90 */ + among_var = find_among_b(z, a_1, 26); /* substring, line 90 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 90 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 99 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_adjectival(struct SN_env * z) -{ - int among_var; - - if (!r_adjective(z)) - return 0; /* call adjective, line 141 */ - { - int m = z->l - z->c; /* try, line 148 */ - - z->ket = z->c; /* [, line 149 */ - among_var = find_among_b(z, a_2, 8); /* substring, line 149 */ - if (!(among_var)) - { - z->c = z->l - m; - goto lab0; - } - z->bra = z->c; /* ], line 149 */ - switch (among_var) - { - case 0: - { - z->c = z->l - m; - goto lab0; - } - case 1: - { - int m = z->l - z->c; /* or, line 154 */ - - if (!(eq_s_b(z, 1, s_2))) - goto lab2; - goto lab1; - lab2: - z->c = z->l - m; - if (!(eq_s_b(z, 1, s_3))) - { - z->c = z->l - m; - goto lab0; - } - } - lab1: - slice_del(z); /* delete, line 154 */ - break; - case 2: - slice_del(z); /* delete, line 161 */ - break; - } -lab0: - ; - } - return 1; +static int r_adjectival(struct SN_env * z) { + int among_var; + { int ret = r_adjective(z); + if (ret == 0) return 0; /* call adjective, line 104 */ + if (ret < 0) return ret; + } + { int m = z->l - z->c; (void) m; /* try, line 111 */ + z->ket = z->c; /* [, line 112 */ + among_var = find_among_b(z, a_2, 8); /* substring, line 112 */ + if (!(among_var)) { z->c = z->l - m; goto lab0; } + z->bra = z->c; /* ], line 112 */ + switch(among_var) { + case 0: { z->c = z->l - m; goto lab0; } + case 1: + { int m = z->l - z->c; (void) m; /* or, line 117 */ + if (!(eq_s_b(z, 1, s_2))) goto lab2; + goto lab1; + lab2: + z->c = z->l - m; + if (!(eq_s_b(z, 1, s_3))) { z->c = z->l - m; goto lab0; } + } + lab1: + { int ret; + ret = slice_del(z); /* delete, line 117 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_del(z); /* delete, line 124 */ + if (ret < 0) return ret; + } + break; + } + lab0: + ; + } + return 1; } -static int -r_reflexive(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 168 */ - among_var = find_among_b(z, a_3, 2); /* substring, line 168 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 168 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 171 */ - break; - } - return 1; +static int r_reflexive(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 131 */ + among_var = find_among_b(z, a_3, 2); /* substring, line 131 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 131 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 134 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_verb(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 176 */ - among_var = find_among_b(z, a_4, 46); /* substring, line 176 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 176 */ - switch (among_var) - { - case 0: - return 0; - case 1: - { - int m = z->l - z->c; /* or, line 182 */ - - if (!(eq_s_b(z, 1, s_4))) - goto lab1; - goto lab0; - lab1: - z->c = z->l - m; - if (!(eq_s_b(z, 1, s_5))) - return 0; - } - lab0: - slice_del(z); /* delete, line 182 */ - break; - case 2: - slice_del(z); /* delete, line 190 */ - break; - } - return 1; +static int r_verb(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 139 */ + among_var = find_among_b(z, a_4, 46); /* substring, line 139 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 139 */ + switch(among_var) { + case 0: return 0; + case 1: + { int m = z->l - z->c; (void) m; /* or, line 145 */ + if (!(eq_s_b(z, 1, s_4))) goto lab1; + goto lab0; + lab1: + z->c = z->l - m; + if (!(eq_s_b(z, 1, s_5))) return 0; + } + lab0: + { int ret; + ret = slice_del(z); /* delete, line 145 */ + if (ret < 0) return ret; + } + break; + case 2: + { int ret; + ret = slice_del(z); /* delete, line 153 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_noun(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 199 */ - among_var = find_among_b(z, a_5, 36); /* substring, line 199 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 199 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 206 */ - break; - } - return 1; +static int r_noun(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 162 */ + among_var = find_among_b(z, a_5, 36); /* substring, line 162 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 162 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 169 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_derivational(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 215 */ - among_var = find_among_b(z, a_6, 2); /* substring, line 215 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 215 */ - if (!r_R2(z)) - return 0; /* call R2, line 215 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 218 */ - break; - } - return 1; +static int r_derivational(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 178 */ + among_var = find_among_b(z, a_6, 2); /* substring, line 178 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 178 */ + { int ret = r_R2(z); + if (ret == 0) return 0; /* call R2, line 178 */ + if (ret < 0) return ret; + } + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 181 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -static int -r_tidy_up(struct SN_env * z) -{ - int among_var; - - z->ket = z->c; /* [, line 223 */ - among_var = find_among_b(z, a_7, 4); /* substring, line 223 */ - if (!(among_var)) - return 0; - z->bra = z->c; /* ], line 223 */ - switch (among_var) - { - case 0: - return 0; - case 1: - slice_del(z); /* delete, line 227 */ - z->ket = z->c; /* [, line 228 */ - if (!(eq_s_b(z, 1, s_6))) - return 0; - z->bra = z->c; /* ], line 228 */ - if (!(eq_s_b(z, 1, s_7))) - return 0; - slice_del(z); /* delete, line 228 */ - break; - case 2: - if (!(eq_s_b(z, 1, s_8))) - return 0; - slice_del(z); /* delete, line 231 */ - break; - case 3: - slice_del(z); /* delete, line 233 */ - break; - } - return 1; +static int r_tidy_up(struct SN_env * z) { + int among_var; + z->ket = z->c; /* [, line 186 */ + among_var = find_among_b(z, a_7, 4); /* substring, line 186 */ + if (!(among_var)) return 0; + z->bra = z->c; /* ], line 186 */ + switch(among_var) { + case 0: return 0; + case 1: + { int ret; + ret = slice_del(z); /* delete, line 190 */ + if (ret < 0) return ret; + } + z->ket = z->c; /* [, line 191 */ + if (!(eq_s_b(z, 1, s_6))) return 0; + z->bra = z->c; /* ], line 191 */ + if (!(eq_s_b(z, 1, s_7))) return 0; + { int ret; + ret = slice_del(z); /* delete, line 191 */ + if (ret < 0) return ret; + } + break; + case 2: + if (!(eq_s_b(z, 1, s_8))) return 0; + { int ret; + ret = slice_del(z); /* delete, line 194 */ + if (ret < 0) return ret; + } + break; + case 3: + { int ret; + ret = slice_del(z); /* delete, line 196 */ + if (ret < 0) return ret; + } + break; + } + return 1; } -extern int -russian_stem(struct SN_env * z) -{ - { - int c = z->c; /* do, line 240 */ +extern int russian_KOI8_R_stem(struct SN_env * z) { + { int c = z->c; /* do, line 203 */ + { int ret = r_mark_regions(z); + if (ret == 0) goto lab0; /* call mark_regions, line 203 */ + if (ret < 0) return ret; + } + lab0: + z->c = c; + } + z->lb = z->c; z->c = z->l; /* backwards, line 204 */ - if (!r_mark_regions(z)) - goto lab0; /* call mark_regions, line 240 */ -lab0: - z->c = c; - } - z->lb = z->c; - z->c = z->l; /* backwards, line 241 */ - - { - int m = z->l - z->c; /* setlimit, line 241 */ - int m3; - - if (z->c < z->I[0]) - return 0; - z->c = z->I[0]; /* tomark, line 241 */ - m3 = z->lb; - z->lb = z->c; - z->c = z->l - m; - { - int m = z->l - z->c; /* do, line 242 */ - - { - int m = z->l - z->c; /* or, line 243 */ - - if (!r_perfective_gerund(z)) - goto lab3; /* call perfective_gerund, line 243 */ - goto lab2; - lab3: - z->c = z->l - m; - { - int m = z->l - z->c; /* try, line 244 */ - - if (!r_reflexive(z)) - { - z->c = z->l - m; - goto lab4; - } /* call reflexive, line 244 */ - lab4: - ; - } - { - int m = z->l - z->c; /* or, line 245 */ - - if (!r_adjectival(z)) - goto lab6; /* call adjectival, line 245 */ - goto lab5; - lab6: - z->c = z->l - m; - if (!r_verb(z)) - goto lab7; /* call verb, line 245 */ - goto lab5; - lab7: - z->c = z->l - m; - if (!r_noun(z)) - goto lab1; /* call noun, line 245 */ - } - lab5: - ; - } - lab2: - lab1: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* try, line 248 */ - - z->ket = z->c; /* [, line 248 */ - if (!(eq_s_b(z, 1, s_9))) - { - z->c = z->l - m; - goto lab8; - } - z->bra = z->c; /* ], line 248 */ - slice_del(z); /* delete, line 248 */ - lab8: - ; - } - { - int m = z->l - z->c; /* do, line 251 */ - - if (!r_derivational(z)) - goto lab9; /* call derivational, line 251 */ - lab9: - z->c = z->l - m; - } - { - int m = z->l - z->c; /* do, line 252 */ - - if (!r_tidy_up(z)) - goto lab10; /* call tidy_up, line 252 */ - lab10: - z->c = z->l - m; - } - z->lb = m3; - } - z->c = z->lb; - return 1; + { int m3; /* setlimit, line 204 */ + int m = z->l - z->c; (void) m; + if (z->c < z->I[0]) return 0; + z->c = z->I[0]; /* tomark, line 204 */ + m3 = z->lb; z->lb = z->c; + z->c = z->l - m; + { int m = z->l - z->c; (void) m; /* do, line 205 */ + { int m = z->l - z->c; (void) m; /* or, line 206 */ + { int ret = r_perfective_gerund(z); + if (ret == 0) goto lab3; /* call perfective_gerund, line 206 */ + if (ret < 0) return ret; + } + goto lab2; + lab3: + z->c = z->l - m; + { int m = z->l - z->c; (void) m; /* try, line 207 */ + { int ret = r_reflexive(z); + if (ret == 0) { z->c = z->l - m; goto lab4; } /* call reflexive, line 207 */ + if (ret < 0) return ret; + } + lab4: + ; + } + { int m = z->l - z->c; (void) m; /* or, line 208 */ + { int ret = r_adjectival(z); + if (ret == 0) goto lab6; /* call adjectival, line 208 */ + if (ret < 0) return ret; + } + goto lab5; + lab6: + z->c = z->l - m; + { int ret = r_verb(z); + if (ret == 0) goto lab7; /* call verb, line 208 */ + if (ret < 0) return ret; + } + goto lab5; + lab7: + z->c = z->l - m; + { int ret = r_noun(z); + if (ret == 0) goto lab1; /* call noun, line 208 */ + if (ret < 0) return ret; + } + } + lab5: + ; + } + lab2: + lab1: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* try, line 211 */ + z->ket = z->c; /* [, line 211 */ + if (!(eq_s_b(z, 1, s_9))) { z->c = z->l - m; goto lab8; } + z->bra = z->c; /* ], line 211 */ + { int ret; + ret = slice_del(z); /* delete, line 211 */ + if (ret < 0) return ret; + } + lab8: + ; + } + { int m = z->l - z->c; (void) m; /* do, line 214 */ + { int ret = r_derivational(z); + if (ret == 0) goto lab9; /* call derivational, line 214 */ + if (ret < 0) return ret; + } + lab9: + z->c = z->l - m; + } + { int m = z->l - z->c; (void) m; /* do, line 215 */ + { int ret = r_tidy_up(z); + if (ret == 0) goto lab10; /* call tidy_up, line 215 */ + if (ret < 0) return ret; + } + lab10: + z->c = z->l - m; + } + z->lb = m3; + } + z->c = z->lb; + return 1; } -extern struct SN_env * -russian_create_env(void) -{ - return SN_create_env(0, 2, 0); -} +extern struct SN_env * russian_KOI8_R_create_env(void) { return SN_create_env(0, 2, 0); } + +extern void russian_KOI8_R_close_env(struct SN_env * z) { SN_close_env(z); } -extern void -russian_close_env(struct SN_env * z) -{ - SN_close_env(z); -} diff --git a/contrib/tsearch2/snowball/russian_stem.h b/contrib/tsearch2/snowball/russian_stem.h index 69369e295b..de2179d29f 100644 --- a/contrib/tsearch2/snowball/russian_stem.h +++ b/contrib/tsearch2/snowball/russian_stem.h @@ -1,7 +1,16 @@ /* This file was generated automatically by the Snowball to ANSI C compiler */ -extern struct SN_env *russian_create_env(void); -extern void russian_close_env(struct SN_env * z); +#ifdef __cplusplus +extern "C" { +#endif + +extern struct SN_env * russian_KOI8_R_create_env(void); +extern void russian_KOI8_R_close_env(struct SN_env * z); + +extern int russian_KOI8_R_stem(struct SN_env * z); + +#ifdef __cplusplus +} +#endif -extern int russian_stem(struct SN_env * z); diff --git a/contrib/tsearch2/snowball/utilities.c b/contrib/tsearch2/snowball/utilities.c index de0c515257..a6bfa5c76a 100644 --- a/contrib/tsearch2/snowball/utilities.c +++ b/contrib/tsearch2/snowball/utilities.c @@ -9,510 +9,438 @@ #define CREATE_SIZE 1 -symbol * -create_s(void) -{ - symbol *p = (symbol *) (HEAD + (char *) malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol))); - - if (p == (symbol *) (HEAD)) - return NULL; - CAPACITY(p) = CREATE_SIZE; - SET_SIZE(p, CREATE_SIZE); - return p; +extern symbol * create_s(void) { + symbol * p; + void * mem = malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol)); + if (mem == NULL) return NULL; + p = (symbol *) (HEAD + (char *) mem); + CAPACITY(p) = CREATE_SIZE; + SET_SIZE(p, CREATE_SIZE); + return p; } -void -lose_s(symbol * p) -{ - free((char *) p - HEAD); +extern void lose_s(symbol * p) { + if (p == NULL) return; + free((char *) p - HEAD); } -int -in_grouping(struct SN_env * z, unsigned char *s, int min, int max) -{ - if (z->c >= z->l) - return 0; - { - int ch = z->p[z->c]; +/* + new_p = X_skip_utf8(p, c, lb, l, n); skips n characters forwards from p + c + if n +ve, or n characters backwards from p +c - 1 if n -ve. new_p is the new + position, or 0 on failure. - if - (ch > max || (ch -= min) < 0 || - (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return 0; - } - z->c++; - return 1; + -- 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; } -int -in_grouping_b(struct SN_env * z, unsigned char *s, int min, int max) -{ - if (z->c <= z->lb) - return 0; - { - int ch = z->p[z->c - 1]; +/* Code for character groupings: utf8 cases */ - if - (ch > max || (ch -= min) < 0 || - (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) - return 0; - } - z->c--; - return 1; +static int get_utf8(const symbol * p, int c, int l, int * slot) { + int b0, b1; + if (c >= l) return 0; + b0 = p[c++]; + if (b0 < 0xC0 || c == l) { /* 1100 0000 */ + * slot = b0; return 1; + } + b1 = p[c++]; + if (b0 < 0xE0 || c == l) { /* 1110 0000 */ + * slot = (b0 & 0x1F) << 6 | (b1 & 0x3F); return 2; + } + * slot = (b0 & 0xF) << 12 | (b1 & 0x3F) << 6 | (*p & 0x3F); return 3; } -int -out_grouping(struct SN_env * z, unsigned char *s, int min, int max) -{ - if (z->c >= z->l) - return 0; - { - int ch = z->p[z->c]; - - unless - (ch > max || (ch -= min) < 0 || - (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; - } - z->c++; - return 1; +static int get_b_utf8(const symbol * p, int c, int lb, int * slot) { + int b0, b1; + if (c <= lb) return 0; + b0 = p[--c]; + if (b0 < 0x80 || c == lb) { /* 1000 0000 */ + * slot = b0; return 1; + } + b1 = p[--c]; + if (b1 >= 0xC0 || c == lb) { /* 1100 0000 */ + * slot = (b1 & 0x1F) << 6 | (b0 & 0x3F); return 2; + } + * slot = (*p & 0xF) << 12 | (b1 & 0x3F) << 6 | (b0 & 0x3F); return 3; } -int -out_grouping_b(struct SN_env * z, unsigned char *s, int min, int max) -{ - if (z->c <= z->lb) - return 0; - { - int ch = z->p[z->c - 1]; - - unless - (ch > max || (ch -= min) < 0 || - (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; - } - z->c--; - return 1; +extern int in_grouping_U(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + unless (w) return 0; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c += w; return 1; } - -int -in_range(struct SN_env * z, int min, int max) -{ - if (z->c >= z->l) - return 0; - { - int ch = z->p[z->c]; - - if - (ch > max || ch < min) - return 0; - } - z->c++; - return 1; +extern int in_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + unless (w) return 0; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c -= w; return 1; } -int -in_range_b(struct SN_env * z, int min, int max) -{ - if (z->c <= z->lb) - return 0; - { - int ch = z->p[z->c - 1]; - - if - (ch > max || ch < min) - return 0; - } - z->c--; - return 1; +extern int out_grouping_U(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + int w = get_utf8(z->p, z->c, z->l, & ch); + unless (w) return 0; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c += w; return 1; } -int -out_range(struct SN_env * z, int min, int max) -{ - if (z->c >= z->l) - return 0; - { - int ch = z->p[z->c]; - - unless - (ch > max || ch < min) return 0; - } - z->c++; - return 1; +extern int out_grouping_b_U(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + int w = get_b_utf8(z->p, z->c, z->lb, & ch); + unless (w) return 0; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c -= w; return 1; } -int -out_range_b(struct SN_env * z, int min, int max) -{ - if (z->c <= z->lb) - return 0; - { - int ch = z->p[z->c - 1]; +/* Code for character groupings: non-utf8 cases */ - unless - (ch > max || ch < min) return 0; - } - z->c--; - return 1; +extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + if (z->c >= z->l) return 0; + ch = z->p[z->c]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c++; return 1; } -int -eq_s(struct SN_env * z, int s_size, 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 in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + if (z->c <= z->lb) return 0; + ch = z->p[z->c - 1]; + if (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c--; return 1; } -int -eq_s_b(struct SN_env * z, int s_size, 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 out_grouping(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + if (z->c >= z->l) return 0; + ch = z->p[z->c]; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c++; return 1; } -int -eq_v(struct SN_env * z, symbol * p) -{ - return eq_s(z, SIZE(p), p); +extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max) { + int ch; + if (z->c <= z->lb) return 0; + ch = z->p[z->c - 1]; + unless (ch > max || (ch -= min) < 0 || (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0; + z->c--; return 1; } -int -eq_v_b(struct SN_env * z, symbol * p) -{ - return eq_s_b(z, SIZE(p), p); +extern int eq_s(struct SN_env * z, int s_size, 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; } -int -find_among(struct SN_env * z, struct among * v, int v_size) -{ - int i = 0; - int j = v_size; +extern int eq_s_b(struct SN_env * z, int s_size, 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; +} - int c = z->c; - int l = z->l; - symbol *q = z->p + c; +extern int eq_v(struct SN_env * z, symbol * p) { + return eq_s(z, SIZE(p), p); +} - struct among *w; +extern int eq_v_b(struct SN_env * z, symbol * p) { + return eq_s_b(z, SIZE(p), p); +} - int common_i = 0; - int common_j = 0; +extern int find_among(struct SN_env * z, struct among * v, int v_size) { - int first_key_inspected = 0; + int i = 0; + int j = v_size; - while (1) - { - int k = i + ((j - i) >> 1); - int diff = 0; - int common = common_i < common_j ? common_i : common_j; /* smaller */ + int c = z->c; int l = z->l; + symbol * q = z->p + c; - w = v + k; - { - int i; + struct among * w; - for (i = common; i < w->s_size; i++) - { - if (c + common == l) - { - diff = -1; - break; - } - diff = q[common] - w->s[i]; - 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 */ + int common_i = 0; + int common_j = 0; - /* - * - but now we need to go round once more to get v->s - * inspected. This looks messy, but is actually the optimal - * approach. - */ + int first_key_inspected = 0; - 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); + 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 i; for (i = common; i < w->s_size; i++) { + if (c + common == l) { diff = -1; break; } + diff = q[common] - w->s[i]; + 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 */ - z->c = c + w->s_size; - if (res) - return w->result; - } - } - i = w->substring_i; - if (i < 0) - return 0; - } + /* - 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 */ -int -find_among_b(struct SN_env * z, struct among * v, int v_size) -{ - int i = 0; - int j = v_size; +extern int find_among_b(struct SN_env * z, struct among * v, int v_size) { - int c = z->c; - int lb = z->lb; - symbol *q = z->p + c - 1; + int i = 0; + int j = v_size; - struct among *w; + int c = z->c; int lb = z->lb; + symbol * q = z->p + c - 1; - int common_i = 0; - int common_j = 0; + struct among * w; - int first_key_inspected = 0; + int common_i = 0; + int common_j = 0; - while (1) - { - int k = i + ((j - i) >> 1); - int diff = 0; - int common = common_i < common_j ? common_i : common_j; + int first_key_inspected = 0; - w = v + k; - { - int i; - - for (i = w->s_size - 1 - common; i >= 0; i--) - { - if (c - common == lb) - { - diff = -1; - break; - } - diff = q[-common] - w->s[i]; - 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; - } + 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 i; for (i = w->s_size - 1 - common; i >= 0; i--) { + if (c - common == lb) { diff = -1; break; } + diff = q[- common] - w->s[i]; + 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; + } } -symbol * -increase_size(symbol * p, int n) -{ - int new_size = n + 20; - symbol *q = (symbol *) (HEAD + (char *) malloc(HEAD + (new_size + 1) * sizeof(symbol))); - - CAPACITY(q) = new_size; - memmove(q, p, CAPACITY(p) * sizeof(symbol)); - lose_s(p); - return q; +/* 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 + s_size symbols at s. + Returns 0 on success, -1 on error. + Also, frees z->p (and sets it to NULL) on error. */ - -int -replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s) +extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s, int * adjptr) { - int adjustment = s_size - (c_ket - c_bra); - int len = SIZE(z->p); - - if (adjustment != 0) - { - if (adjustment + len > CAPACITY(z->p)) - z->p = increase_size(z->p, adjustment + len); - memmove(z->p + c_ket + adjustment, z->p + c_ket, (len - c_ket) * sizeof(symbol)); - SET_SIZE(z->p, adjustment + len); - z->l += adjustment; - if (z->c >= c_ket) - z->c += adjustment; - else if (z->c > c_bra) - z->c = c_bra; - } - unless(s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol)); - return adjustment; + int adjustment; + int len; + if (z->p == NULL) { + z->p = create_s(); + if (z->p == NULL) return -1; + } + adjustment = s_size - (c_ket - c_bra); + len = SIZE(z->p); + if (adjustment != 0) { + if (adjustment + len > CAPACITY(z->p)) { + z->p = increase_size(z->p, adjustment + len); + if (z->p == NULL) return -1; + } + memmove(z->p + c_ket + adjustment, + z->p + c_ket, + (len - c_ket) * sizeof(symbol)); + SET_SIZE(z->p, adjustment + len); + z->l += adjustment; + if (z->c >= c_ket) + z->c += adjustment; + else + if (z->c > c_bra) + z->c = c_bra; + } + unless (s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol)); + if (adjptr != NULL) + *adjptr = adjustment; + return 0; } -static void -slice_check(struct SN_env * z) -{ - if (!(0 <= z->bra && - z->bra <= z->ket && - z->ket <= z->l && - z->l <= SIZE(z->p))) /* this line could be removed */ - { - fprintf(stderr, "faulty slice operation:\n"); - debug(z, -1, 0); - exit(1); - } +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; } -void -slice_from_s(struct SN_env * z, int s_size, symbol * s) -{ - slice_check(z); - replace_s(z, z->bra, z->ket, s_size, s); +extern int slice_from_s(struct SN_env * z, int s_size, symbol * s) { + if (slice_check(z)) return -1; + return replace_s(z, z->bra, z->ket, s_size, s, NULL); } -void -slice_from_v(struct SN_env * z, symbol * p) -{ - slice_from_s(z, SIZE(p), p); +extern int slice_from_v(struct SN_env * z, symbol * p) { + return slice_from_s(z, SIZE(p), p); } -void -slice_del(struct SN_env * z) -{ - slice_from_s(z, 0, NULL); +extern int slice_del(struct SN_env * z) { + return slice_from_s(z, 0, 0); } -void -insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s) -{ - int adjustment = replace_s(z, bra, ket, s_size, s); - - if (bra <= z->bra) - z->bra += adjustment; - if (bra <= z->ket) - z->ket += adjustment; +extern int insert_s(struct SN_env * z, int bra, int ket, int s_size, 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; } -void -insert_v(struct SN_env * z, int bra, int ket, symbol * p) -{ - int adjustment = replace_s(z, bra, ket, SIZE(p), p); - - if (bra <= z->bra) - z->bra += adjustment; - if (bra <= z->ket) - z->ket += adjustment; +extern int insert_v(struct SN_env * z, int bra, int ket, symbol * p) { + int adjustment; + if (replace_s(z, bra, ket, SIZE(p), p, &adjustment)) + return -1; + if (bra <= z->bra) z->bra += adjustment; + if (bra <= z->ket) z->ket += adjustment; + return 0; } -symbol * -slice_to(struct SN_env * z, symbol * p) -{ - slice_check(z); - { - int len = z->ket - z->bra; - - if (CAPACITY(p) < len) - p = increase_size(p, len); - memmove(p, z->p + z->bra, len * sizeof(symbol)); - SET_SIZE(p, len); - } - return 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; } -symbol * -assign_to(struct SN_env * z, symbol * p) -{ - int len = z->l; - - if (CAPACITY(p) < len) - p = increase_size(p, len); - memmove(p, z->p, 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; } -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"); +#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