Commit 7b925e12 authored by Peter Eisentraut's avatar Peter Eisentraut

Sync our Snowball stemmer dictionaries with current upstream

The main change is a new stemmer for Greek.  There are minor changes
in the Danish and French stemmers.

Author: Panagiotis Mavrogiorgos <pmav99@gmail.com>
parent dedb6e01
...@@ -3810,6 +3810,7 @@ Parser: "pg_catalog.default" ...@@ -3810,6 +3810,7 @@ Parser: "pg_catalog.default"
pg_catalog | finnish_stem | snowball stemmer for finnish language pg_catalog | finnish_stem | snowball stemmer for finnish language
pg_catalog | french_stem | snowball stemmer for french language pg_catalog | french_stem | snowball stemmer for french language
pg_catalog | german_stem | snowball stemmer for german language pg_catalog | german_stem | snowball stemmer for german language
pg_catalog | greek_stem | snowball stemmer for greek language
pg_catalog | hungarian_stem | snowball stemmer for hungarian language pg_catalog | hungarian_stem | snowball stemmer for hungarian language
pg_catalog | indonesian_stem | snowball stemmer for indonesian language pg_catalog | indonesian_stem | snowball stemmer for indonesian language
pg_catalog | irish_stem | snowball stemmer for irish language pg_catalog | irish_stem | snowball stemmer for irish language
......
...@@ -41,6 +41,7 @@ OBJS= $(WIN32RES) dict_snowball.o api.o utilities.o \ ...@@ -41,6 +41,7 @@ OBJS= $(WIN32RES) dict_snowball.o api.o utilities.o \
stem_UTF_8_finnish.o \ stem_UTF_8_finnish.o \
stem_UTF_8_french.o \ stem_UTF_8_french.o \
stem_UTF_8_german.o \ stem_UTF_8_german.o \
stem_UTF_8_greek.o \
stem_UTF_8_hungarian.o \ stem_UTF_8_hungarian.o \
stem_UTF_8_indonesian.o \ stem_UTF_8_indonesian.o \
stem_UTF_8_irish.o \ stem_UTF_8_irish.o \
...@@ -69,6 +70,7 @@ LANGUAGES= \ ...@@ -69,6 +70,7 @@ LANGUAGES= \
finnish finnish \ finnish finnish \
french french \ french french \
german german \ german german \
greek greek \
hungarian hungarian \ hungarian hungarian \
indonesian indonesian \ indonesian indonesian \
irish irish \ irish irish \
......
...@@ -29,8 +29,8 @@ We choose to include the derived files in the PostgreSQL distribution ...@@ -29,8 +29,8 @@ We choose to include the derived files in the PostgreSQL distribution
because most installations will not have the Snowball compiler available. because most installations will not have the Snowball compiler available.
We are currently synced with the Snowball git commit We are currently synced with the Snowball git commit
1964ce688cbeca505263c8f77e16ed923296ce7a 4456b82c26c02493e8807a66f30593a98c5d2888
of 2018-06-29. of 2019-06-24.
To update the PostgreSQL sources from a new Snowball version: To update the PostgreSQL sources from a new Snowball version:
...@@ -57,7 +57,7 @@ do not require any changes. ...@@ -57,7 +57,7 @@ do not require any changes.
4. Check whether any stemmer modules have been added or removed. If so, edit 4. Check whether any stemmer modules have been added or removed. If so, edit
the OBJS list in Makefile, the list of #include's in dict_snowball.c, and the the OBJS list in Makefile, the list of #include's in dict_snowball.c, and the
stemmer_modules[] table in dict_snowball.c. You might also need to change stemmer_modules[] table in dict_snowball.c. You might also need to change
the LANGUAGES list in Makefile. the LANGUAGES list in Makefile and tsearch_config_languages in initdb.c.
5. The various stopword files in stopwords/ must be downloaded 5. The various stopword files in stopwords/ must be downloaded
individually from pages on the snowballstem.org website. individually from pages on the snowballstem.org website.
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include "snowball/libstemmer/stem_UTF_8_finnish.h" #include "snowball/libstemmer/stem_UTF_8_finnish.h"
#include "snowball/libstemmer/stem_UTF_8_french.h" #include "snowball/libstemmer/stem_UTF_8_french.h"
#include "snowball/libstemmer/stem_UTF_8_german.h" #include "snowball/libstemmer/stem_UTF_8_german.h"
#include "snowball/libstemmer/stem_UTF_8_greek.h"
#include "snowball/libstemmer/stem_UTF_8_hungarian.h" #include "snowball/libstemmer/stem_UTF_8_hungarian.h"
#include "snowball/libstemmer/stem_UTF_8_indonesian.h" #include "snowball/libstemmer/stem_UTF_8_indonesian.h"
#include "snowball/libstemmer/stem_UTF_8_irish.h" #include "snowball/libstemmer/stem_UTF_8_irish.h"
...@@ -115,6 +116,7 @@ static const stemmer_module stemmer_modules[] = ...@@ -115,6 +116,7 @@ static const stemmer_module stemmer_modules[] =
STEMMER_MODULE(finnish, PG_UTF8, UTF_8), STEMMER_MODULE(finnish, PG_UTF8, UTF_8),
STEMMER_MODULE(french, PG_UTF8, UTF_8), STEMMER_MODULE(french, PG_UTF8, UTF_8),
STEMMER_MODULE(german, PG_UTF8, UTF_8), STEMMER_MODULE(german, PG_UTF8, UTF_8),
STEMMER_MODULE(greek, PG_UTF8, UTF_8),
STEMMER_MODULE(hungarian, PG_UTF8, UTF_8), STEMMER_MODULE(hungarian, PG_UTF8, UTF_8),
STEMMER_MODULE(indonesian, PG_UTF8, UTF_8), STEMMER_MODULE(indonesian, PG_UTF8, UTF_8),
STEMMER_MODULE(irish, PG_UTF8, UTF_8), STEMMER_MODULE(irish, PG_UTF8, UTF_8),
......
...@@ -124,6 +124,8 @@ static const struct among a_2[5] = ...@@ -124,6 +124,8 @@ static const struct among a_2[5] =
/* 4 */ { 4, s_2_4, -1, 2, 0} /* 4 */ { 4, s_2_4, -1, 2, 0}
}; };
static const unsigned char g_c[] = { 119, 223, 119, 1 };
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 }; static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 }; static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 };
...@@ -133,25 +135,25 @@ static const symbol s_1[] = { 'i', 'g' }; ...@@ -133,25 +135,25 @@ static const symbol s_1[] = { 'i', 'g' };
static const symbol s_2[] = { 'l', 0xF8, 's' }; static const symbol s_2[] = { 'l', 0xF8, 's' };
static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
z->I[0] = z->l; /* $p1 = <integer expression>, line 31 */ z->I[0] = z->l; /* $p1 = <integer expression>, line 33 */
{ int c_test1 = z->c; /* test, line 33 */ { int c_test1 = z->c; /* test, line 35 */
{ int ret = z->c + 3; /* hop, line 33 */ { int ret = z->c + 3; /* hop, line 35 */
if (0 > ret || ret > z->l) return 0; if (0 > ret || ret > z->l) return 0;
z->c = ret; z->c = ret;
} }
z->I[1] = z->c; /* setmark x, line 33 */ z->I[1] = z->c; /* setmark x, line 35 */
z->c = c_test1; z->c = c_test1;
} }
if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 34 */ if (out_grouping(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 36 */
{ /* gopast */ /* non v, line 34 */ { /* gopast */ /* non v, line 36 */
int ret = in_grouping(z, g_v, 97, 248, 1); int ret = in_grouping(z, g_v, 97, 248, 1);
if (ret < 0) return 0; if (ret < 0) return 0;
z->c += ret; z->c += ret;
} }
z->I[0] = z->c; /* setmark p1, line 34 */ z->I[0] = z->c; /* setmark p1, line 36 */
/* try, line 35 */ /* try, line 37 */
if (!(z->I[0] < z->I[1])) goto lab0; /* $(<integer expression> < <integer expression>), line 35 */ if (!(z->I[0] < z->I[1])) goto lab0; /* $(<integer expression> < <integer expression>), line 37 */
z->I[0] = z->I[1]; /* $p1 = <integer expression>, line 35 */ z->I[0] = z->I[1]; /* $p1 = <integer expression>, line 37 */
lab0: lab0:
return 1; return 1;
} }
...@@ -159,25 +161,25 @@ lab0: ...@@ -159,25 +161,25 @@ lab0:
static int r_main_suffix(struct SN_env * z) { /* backwardmode */ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int mlimit1; /* setlimit, line 41 */ { int mlimit1; /* setlimit, line 43 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 41 */ z->ket = z->c; /* [, line 43 */
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 41 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 43 */
among_var = find_among_b(z, a_0, 32); among_var = find_among_b(z, a_0, 32);
if (!(among_var)) { z->lb = mlimit1; return 0; } if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 41 */ z->bra = z->c; /* ], line 43 */
z->lb = mlimit1; z->lb = mlimit1;
} }
switch (among_var) { /* among, line 42 */ switch (among_var) { /* among, line 44 */
case 1: case 1:
{ int ret = slice_del(z); /* delete, line 48 */ { int ret = slice_del(z); /* delete, line 50 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
if (in_grouping_b(z, g_s_ending, 97, 229, 0)) return 0; /* grouping s_ending, line 50 */ if (in_grouping_b(z, g_s_ending, 97, 229, 0)) return 0; /* grouping s_ending, line 52 */
{ int ret = slice_del(z); /* delete, line 50 */ { int ret = slice_del(z); /* delete, line 52 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -186,23 +188,23 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -186,23 +188,23 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
} }
static int r_consonant_pair(struct SN_env * z) { /* backwardmode */ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
{ int m_test1 = z->l - z->c; /* test, line 55 */ { int m_test1 = z->l - z->c; /* test, line 57 */
{ int mlimit2; /* setlimit, line 56 */ { int mlimit2; /* setlimit, line 58 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit2 = z->lb; z->lb = z->I[0]; mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 56 */ z->ket = z->c; /* [, line 58 */
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; } /* substring, line 56 */ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; } /* substring, line 58 */
if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; } if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; }
z->bra = z->c; /* ], line 56 */ z->bra = z->c; /* ], line 58 */
z->lb = mlimit2; z->lb = mlimit2;
} }
z->c = z->l - m_test1; z->c = z->l - m_test1;
} }
if (z->c <= z->lb) return 0; if (z->c <= z->lb) return 0;
z->c--; /* next, line 62 */ z->c--; /* next, line 64 */
z->bra = z->c; /* ], line 62 */ z->bra = z->c; /* ], line 64 */
{ int ret = slice_del(z); /* delete, line 62 */ { int ret = slice_del(z); /* delete, line 64 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
...@@ -210,35 +212,35 @@ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */ ...@@ -210,35 +212,35 @@ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
static int r_other_suffix(struct SN_env * z) { /* backwardmode */ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int m1 = z->l - z->c; (void)m1; /* do, line 66 */ { int m1 = z->l - z->c; (void)m1; /* do, line 68 */
z->ket = z->c; /* [, line 66 */ z->ket = z->c; /* [, line 68 */
if (!(eq_s_b(z, 2, s_0))) goto lab0; /* literal, line 66 */ if (!(eq_s_b(z, 2, s_0))) goto lab0; /* literal, line 68 */
z->bra = z->c; /* ], line 66 */ z->bra = z->c; /* ], line 68 */
if (!(eq_s_b(z, 2, s_1))) goto lab0; /* literal, line 66 */ if (!(eq_s_b(z, 2, s_1))) goto lab0; /* literal, line 68 */
{ int ret = slice_del(z); /* delete, line 66 */ { int ret = slice_del(z); /* delete, line 68 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = z->l - m1; z->c = z->l - m1;
} }
{ int mlimit2; /* setlimit, line 67 */ { int mlimit2; /* setlimit, line 69 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit2 = z->lb; z->lb = z->I[0]; mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 67 */ z->ket = z->c; /* [, line 69 */
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; } /* substring, line 67 */ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; } /* substring, line 69 */
among_var = find_among_b(z, a_2, 5); among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit2; return 0; } if (!(among_var)) { z->lb = mlimit2; return 0; }
z->bra = z->c; /* ], line 67 */ z->bra = z->c; /* ], line 69 */
z->lb = mlimit2; z->lb = mlimit2;
} }
switch (among_var) { /* among, line 68 */ switch (among_var) { /* among, line 70 */
case 1: case 1:
{ int ret = slice_del(z); /* delete, line 70 */ { int ret = slice_del(z); /* delete, line 72 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m3 = z->l - z->c; (void)m3; /* do, line 70 */ { int m3 = z->l - z->c; (void)m3; /* do, line 72 */
{ int ret = r_consonant_pair(z); /* call consonant_pair, line 70 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 72 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -247,7 +249,7 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -247,7 +249,7 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 3, s_2); /* <-, line 72 */ { int ret = slice_from_s(z, 3, s_2); /* <-, line 74 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -257,60 +259,60 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -257,60 +259,60 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
static int r_undouble(struct SN_env * z) { /* backwardmode */ static int r_undouble(struct SN_env * z) { /* backwardmode */
{ int mlimit1; /* setlimit, line 76 */ { int mlimit1; /* setlimit, line 78 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 76 */ z->ket = z->c; /* [, line 78 */
if (out_grouping_b(z, g_v, 97, 248, 0)) { z->lb = mlimit1; return 0; } /* non v, line 76 */ if (in_grouping_b(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; } /* grouping c, line 78 */
z->bra = z->c; /* ], line 76 */ z->bra = z->c; /* ], line 78 */
z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 76 */ z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 78 */
if (z->S[0] == 0) return -1; /* -> ch, line 76 */ if (z->S[0] == 0) return -1; /* -> ch, line 78 */
z->lb = mlimit1; z->lb = mlimit1;
} }
if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 77 */ if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 79 */
{ int ret = slice_del(z); /* delete, line 78 */ { int ret = slice_del(z); /* delete, line 80 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
} }
extern int danish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ extern int danish_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
{ int c1 = z->c; /* do, line 84 */ { int c1 = z->c; /* do, line 86 */
{ int ret = r_mark_regions(z); /* call mark_regions, line 84 */ { int ret = r_mark_regions(z); /* call mark_regions, line 86 */
if (ret == 0) goto lab0; if (ret == 0) goto lab0;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = c1; z->c = c1;
} }
z->lb = z->c; z->c = z->l; /* backwards, line 85 */ z->lb = z->c; z->c = z->l; /* backwards, line 87 */
{ int m2 = z->l - z->c; (void)m2; /* do, line 86 */ { int m2 = z->l - z->c; (void)m2; /* do, line 88 */
{ int ret = r_main_suffix(z); /* call main_suffix, line 86 */ { int ret = r_main_suffix(z); /* call main_suffix, line 88 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab1: lab1:
z->c = z->l - m2; z->c = z->l - m2;
} }
{ int m3 = z->l - z->c; (void)m3; /* do, line 87 */ { int m3 = z->l - z->c; (void)m3; /* do, line 89 */
{ int ret = r_consonant_pair(z); /* call consonant_pair, line 87 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 89 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab2: lab2:
z->c = z->l - m3; z->c = z->l - m3;
} }
{ int m4 = z->l - z->c; (void)m4; /* do, line 88 */ { int m4 = z->l - z->c; (void)m4; /* do, line 90 */
{ int ret = r_other_suffix(z); /* call other_suffix, line 88 */ { int ret = r_other_suffix(z); /* call other_suffix, line 90 */
if (ret == 0) goto lab3; if (ret == 0) goto lab3;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab3: lab3:
z->c = z->l - m4; z->c = z->l - m4;
} }
{ int m5 = z->l - z->c; (void)m5; /* do, line 89 */ { int m5 = z->l - z->c; (void)m5; /* do, line 91 */
{ int ret = r_undouble(z); /* call undouble, line 89 */ { int ret = r_undouble(z); /* call undouble, line 91 */
if (ret == 0) goto lab4; if (ret == 0) goto lab4;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
......
...@@ -45,16 +45,22 @@ static const struct among a_0[3] = ...@@ -45,16 +45,22 @@ static const struct among a_0[3] =
/* 2 */ { 3, s_0_2, -1, -1, 0} /* 2 */ { 3, s_0_2, -1, -1, 0}
}; };
static const symbol s_1_1[1] = { 'I' }; static const symbol s_1_1[1] = { 'H' };
static const symbol s_1_2[1] = { 'U' }; static const symbol s_1_2[2] = { 'H', 'e' };
static const symbol s_1_3[1] = { 'Y' }; static const symbol s_1_3[2] = { 'H', 'i' };
static const symbol s_1_4[1] = { 'I' };
static const symbol s_1_5[1] = { 'U' };
static const symbol s_1_6[1] = { 'Y' };
static const struct among a_1[4] = static const struct among a_1[7] =
{ {
/* 0 */ { 0, 0, -1, 4, 0}, /* 0 */ { 0, 0, -1, 7, 0},
/* 1 */ { 1, s_1_1, 0, 1, 0}, /* 1 */ { 1, s_1_1, 0, 6, 0},
/* 2 */ { 1, s_1_2, 0, 2, 0}, /* 2 */ { 2, s_1_2, 1, 4, 0},
/* 3 */ { 1, s_1_3, 0, 3, 0} /* 3 */ { 2, s_1_3, 1, 5, 0},
/* 4 */ { 1, s_1_4, 0, 1, 0},
/* 5 */ { 1, s_1_5, 0, 2, 0},
/* 6 */ { 1, s_1_6, 0, 3, 0}
}; };
static const symbol s_2_0[3] = { 'i', 'q', 'U' }; static const symbol s_2_0[3] = { 'i', 'q', 'U' };
...@@ -338,17 +344,15 @@ static const symbol s_7_2[4] = { 'i', 0xE8, 'r', 'e' }; ...@@ -338,17 +344,15 @@ static const symbol s_7_2[4] = { 'i', 0xE8, 'r', 'e' };
static const symbol s_7_3[3] = { 'i', 'o', 'n' }; static const symbol s_7_3[3] = { 'i', 'o', 'n' };
static const symbol s_7_4[3] = { 'I', 'e', 'r' }; static const symbol s_7_4[3] = { 'I', 'e', 'r' };
static const symbol s_7_5[3] = { 'i', 'e', 'r' }; static const symbol s_7_5[3] = { 'i', 'e', 'r' };
static const symbol s_7_6[1] = { 0xEB };
static const struct among a_7[7] = static const struct among a_7[6] =
{ {
/* 0 */ { 1, s_7_0, -1, 3, 0}, /* 0 */ { 1, s_7_0, -1, 3, 0},
/* 1 */ { 4, s_7_1, 0, 2, 0}, /* 1 */ { 4, s_7_1, 0, 2, 0},
/* 2 */ { 4, s_7_2, 0, 2, 0}, /* 2 */ { 4, s_7_2, 0, 2, 0},
/* 3 */ { 3, s_7_3, -1, 1, 0}, /* 3 */ { 3, s_7_3, -1, 1, 0},
/* 4 */ { 3, s_7_4, -1, 2, 0}, /* 4 */ { 3, s_7_4, -1, 2, 0},
/* 5 */ { 3, s_7_5, -1, 2, 0}, /* 5 */ { 3, s_7_5, -1, 2, 0}
/* 6 */ { 1, s_7_6, -1, 4, 0}
}; };
static const symbol s_8_0[3] = { 'e', 'l', 'l' }; static const symbol s_8_0[3] = { 'e', 'l', 'l' };
...@@ -373,34 +377,38 @@ static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0 ...@@ -373,34 +377,38 @@ static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0
static const symbol s_0[] = { 'U' }; static const symbol s_0[] = { 'U' };
static const symbol s_1[] = { 'I' }; static const symbol s_1[] = { 'I' };
static const symbol s_2[] = { 'Y' }; static const symbol s_2[] = { 'Y' };
static const symbol s_3[] = { 'Y' }; static const symbol s_3[] = { 'H', 'e' };
static const symbol s_4[] = { 'U' }; static const symbol s_4[] = { 'H', 'i' };
static const symbol s_5[] = { 'i' }; static const symbol s_5[] = { 'Y' };
static const symbol s_6[] = { 'u' }; static const symbol s_6[] = { 'U' };
static const symbol s_7[] = { 'y' }; static const symbol s_7[] = { 'i' };
static const symbol s_8[] = { 'i', 'c' }; static const symbol s_8[] = { 'u' };
static const symbol s_9[] = { 'i', 'q', 'U' }; static const symbol s_9[] = { 'y' };
static const symbol s_10[] = { 'l', 'o', 'g' }; static const symbol s_10[] = { 0xEB };
static const symbol s_11[] = { 'u' }; static const symbol s_11[] = { 0xEF };
static const symbol s_12[] = { 'e', 'n', 't' }; static const symbol s_12[] = { 'i', 'c' };
static const symbol s_13[] = { 'a', 't' }; static const symbol s_13[] = { 'i', 'q', 'U' };
static const symbol s_14[] = { 'e', 'u', 'x' }; static const symbol s_14[] = { 'l', 'o', 'g' };
static const symbol s_15[] = { 'i' }; static const symbol s_15[] = { 'u' };
static const symbol s_16[] = { 'a', 'b', 'l' }; static const symbol s_16[] = { 'e', 'n', 't' };
static const symbol s_17[] = { 'i', 'q', 'U' }; static const symbol s_17[] = { 'a', 't' };
static const symbol s_18[] = { 'a', 't' }; static const symbol s_18[] = { 'e', 'u', 'x' };
static const symbol s_19[] = { 'i', 'c' }; static const symbol s_19[] = { 'i' };
static const symbol s_20[] = { 'i', 'q', 'U' }; static const symbol s_20[] = { 'a', 'b', 'l' };
static const symbol s_21[] = { 'e', 'a', 'u' }; static const symbol s_21[] = { 'i', 'q', 'U' };
static const symbol s_22[] = { 'a', 'l' }; static const symbol s_22[] = { 'a', 't' };
static const symbol s_23[] = { 'e', 'u', 'x' }; static const symbol s_23[] = { 'i', 'c' };
static const symbol s_24[] = { 'a', 'n', 't' }; static const symbol s_24[] = { 'i', 'q', 'U' };
static const symbol s_25[] = { 'e', 'n', 't' }; static const symbol s_25[] = { 'e', 'a', 'u' };
static const symbol s_26[] = { 'i' }; static const symbol s_26[] = { 'a', 'l' };
static const symbol s_27[] = { 'g', 'u' }; static const symbol s_27[] = { 'e', 'u', 'x' };
static const symbol s_28[] = { 'e' }; static const symbol s_28[] = { 'a', 'n', 't' };
static const symbol s_29[] = { 'i' }; static const symbol s_29[] = { 'e', 'n', 't' };
static const symbol s_30[] = { 'c' }; static const symbol s_30[] = { 'H', 'i' };
static const symbol s_31[] = { 'i' };
static const symbol s_32[] = { 'e' };
static const symbol s_33[] = { 'i' };
static const symbol s_34[] = { 'c' };
static int r_prelude(struct SN_env * z) { /* forwardmode */ static int r_prelude(struct SN_env * z) { /* forwardmode */
while(1) { /* repeat, line 38 */ while(1) { /* repeat, line 38 */
...@@ -443,23 +451,43 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ ...@@ -443,23 +451,43 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab3: lab3:
z->c = c3; z->c = c3;
z->bra = z->c; /* [, line 45 */ z->bra = z->c; /* [, line 45 */
if (z->c == z->l || z->p[z->c] != 'y') goto lab7; /* literal, line 45 */ if (z->c == z->l || z->p[z->c] != 0xEB) goto lab7; /* literal, line 45 */
z->c++; z->c++;
z->ket = z->c; /* ], line 45 */ z->ket = z->c; /* ], line 45 */
if (in_grouping(z, g_v, 97, 251, 0)) goto lab7; /* grouping v, line 45 */ { int ret = slice_from_s(z, 2, s_3); /* <-, line 45 */
{ int ret = slice_from_s(z, 1, s_3); /* <-, line 45 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab2; goto lab2;
lab7: lab7:
z->c = c3; z->c = c3;
if (z->c == z->l || z->p[z->c] != 'q') goto lab1; /* literal, line 47 */
z->c++;
z->bra = z->c; /* [, line 47 */ z->bra = z->c; /* [, line 47 */
if (z->c == z->l || z->p[z->c] != 'u') goto lab1; /* literal, line 47 */ if (z->c == z->l || z->p[z->c] != 0xEF) goto lab8; /* literal, line 47 */
z->c++; z->c++;
z->ket = z->c; /* ], line 47 */ z->ket = z->c; /* ], line 47 */
{ int ret = slice_from_s(z, 1, s_4); /* <-, line 47 */ { int ret = slice_from_s(z, 2, s_4); /* <-, line 47 */
if (ret < 0) return ret;
}
goto lab2;
lab8:
z->c = c3;
z->bra = z->c; /* [, line 49 */
if (z->c == z->l || z->p[z->c] != 'y') goto lab9; /* literal, line 49 */
z->c++;
z->ket = z->c; /* ], line 49 */
if (in_grouping(z, g_v, 97, 251, 0)) goto lab9; /* grouping v, line 49 */
{ int ret = slice_from_s(z, 1, s_5); /* <-, line 49 */
if (ret < 0) return ret;
}
goto lab2;
lab9:
z->c = c3;
if (z->c == z->l || z->p[z->c] != 'q') goto lab1; /* literal, line 51 */
z->c++;
z->bra = z->c; /* [, line 51 */
if (z->c == z->l || z->p[z->c] != 'u') goto lab1; /* literal, line 51 */
z->c++;
z->ket = z->c; /* ], line 51 */
{ int ret = slice_from_s(z, 1, s_6); /* <-, line 51 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -480,59 +508,59 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ ...@@ -480,59 +508,59 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
} }
static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
z->I[0] = z->l; /* $pV = <integer expression>, line 52 */ z->I[0] = z->l; /* $pV = <integer expression>, line 56 */
z->I[1] = z->l; /* $p1 = <integer expression>, line 53 */ z->I[1] = z->l; /* $p1 = <integer expression>, line 57 */
z->I[2] = z->l; /* $p2 = <integer expression>, line 54 */ z->I[2] = z->l; /* $p2 = <integer expression>, line 58 */
{ int c1 = z->c; /* do, line 56 */ { int c1 = z->c; /* do, line 60 */
{ int c2 = z->c; /* or, line 58 */ { int c2 = z->c; /* or, line 62 */
if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 57 */ if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 57 */ if (in_grouping(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
if (z->c >= z->l) goto lab2; if (z->c >= z->l) goto lab2;
z->c++; /* next, line 57 */ z->c++; /* next, line 61 */
goto lab1; goto lab1;
lab2: lab2:
z->c = c2; z->c = c2;
if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3; /* among, line 59 */ if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3; /* among, line 63 */
if (!(find_among(z, a_0, 3))) goto lab3; if (!(find_among(z, a_0, 3))) goto lab3;
goto lab1; goto lab1;
lab3: lab3:
z->c = c2; z->c = c2;
if (z->c >= z->l) goto lab0; if (z->c >= z->l) goto lab0;
z->c++; /* next, line 66 */ z->c++; /* next, line 70 */
{ /* gopast */ /* grouping v, line 66 */ { /* gopast */ /* grouping v, line 70 */
int ret = out_grouping(z, g_v, 97, 251, 1); int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab0; if (ret < 0) goto lab0;
z->c += ret; z->c += ret;
} }
} }
lab1: lab1:
z->I[0] = z->c; /* setmark pV, line 67 */ z->I[0] = z->c; /* setmark pV, line 71 */
lab0: lab0:
z->c = c1; z->c = c1;
} }
{ int c3 = z->c; /* do, line 69 */ { int c3 = z->c; /* do, line 73 */
{ /* gopast */ /* grouping v, line 70 */ { /* gopast */ /* grouping v, line 74 */
int ret = out_grouping(z, g_v, 97, 251, 1); int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
{ /* gopast */ /* non v, line 70 */ { /* gopast */ /* non v, line 74 */
int ret = in_grouping(z, g_v, 97, 251, 1); int ret = in_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
z->I[1] = z->c; /* setmark p1, line 70 */ z->I[1] = z->c; /* setmark p1, line 74 */
{ /* gopast */ /* grouping v, line 71 */ { /* gopast */ /* grouping v, line 75 */
int ret = out_grouping(z, g_v, 97, 251, 1); int ret = out_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
{ /* gopast */ /* non v, line 71 */ { /* gopast */ /* non v, line 75 */
int ret = in_grouping(z, g_v, 97, 251, 1); int ret = in_grouping(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
z->I[2] = z->c; /* setmark p2, line 71 */ z->I[2] = z->c; /* setmark p2, line 75 */
lab4: lab4:
z->c = c3; z->c = c3;
} }
...@@ -541,32 +569,47 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ ...@@ -541,32 +569,47 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
static int r_postlude(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */
int among_var; int among_var;
while(1) { /* repeat, line 75 */ while(1) { /* repeat, line 79 */
int c1 = z->c; int c1 = z->c;
z->bra = z->c; /* [, line 77 */ z->bra = z->c; /* [, line 81 */
if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652096 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 4; else /* substring, line 77 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else /* substring, line 81 */
among_var = find_among(z, a_1, 4); among_var = find_among(z, a_1, 7);
if (!(among_var)) goto lab0; if (!(among_var)) goto lab0;
z->ket = z->c; /* ], line 77 */ z->ket = z->c; /* ], line 81 */
switch (among_var) { /* among, line 77 */ switch (among_var) { /* among, line 81 */
case 1: case 1:
{ int ret = slice_from_s(z, 1, s_5); /* <-, line 78 */ { int ret = slice_from_s(z, 1, s_7); /* <-, line 82 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 1, s_6); /* <-, line 79 */ { int ret = slice_from_s(z, 1, s_8); /* <-, line 83 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_from_s(z, 1, s_7); /* <-, line 80 */ { int ret = slice_from_s(z, 1, s_9); /* <-, line 84 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = slice_from_s(z, 1, s_10); /* <-, line 85 */
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 1, s_11); /* <-, line 86 */
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_del(z); /* delete, line 87 */
if (ret < 0) return ret;
}
break;
case 7:
if (z->c >= z->l) goto lab0; if (z->c >= z->l) goto lab0;
z->c++; /* next, line 81 */ z->c++; /* next, line 88 */
break; break;
} }
continue; continue;
...@@ -578,58 +621,58 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */ ...@@ -578,58 +621,58 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
} }
static int r_RV(struct SN_env * z) { /* backwardmode */ static int r_RV(struct SN_env * z) { /* backwardmode */
if (!(z->I[0] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 87 */ if (!(z->I[0] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 94 */
return 1; return 1;
} }
static int r_R1(struct SN_env * z) { /* backwardmode */ static int r_R1(struct SN_env * z) { /* backwardmode */
if (!(z->I[1] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 88 */ if (!(z->I[1] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 95 */
return 1; return 1;
} }
static int r_R2(struct SN_env * z) { /* backwardmode */ static int r_R2(struct SN_env * z) { /* backwardmode */
if (!(z->I[2] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 89 */ if (!(z->I[2] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 96 */
return 1; return 1;
} }
static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
z->ket = z->c; /* [, line 92 */ z->ket = z->c; /* [, line 99 */
among_var = find_among_b(z, a_4, 43); /* substring, line 92 */ among_var = find_among_b(z, a_4, 43); /* substring, line 99 */
if (!(among_var)) return 0; if (!(among_var)) return 0;
z->bra = z->c; /* ], line 92 */ z->bra = z->c; /* ], line 99 */
switch (among_var) { /* among, line 92 */ switch (among_var) { /* among, line 99 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 96 */ { int ret = r_R2(z); /* call R2, line 103 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 96 */ { int ret = slice_del(z); /* delete, line 103 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = r_R2(z); /* call R2, line 99 */ { int ret = r_R2(z); /* call R2, line 106 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 99 */ { int ret = slice_del(z); /* delete, line 106 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m1 = z->l - z->c; (void)m1; /* try, line 100 */ { int m1 = z->l - z->c; (void)m1; /* try, line 107 */
z->ket = z->c; /* [, line 100 */ z->ket = z->c; /* [, line 107 */
if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m1; goto lab0; } /* literal, line 100 */ if (!(eq_s_b(z, 2, s_12))) { z->c = z->l - m1; goto lab0; } /* literal, line 107 */
z->bra = z->c; /* ], line 100 */ z->bra = z->c; /* ], line 107 */
{ int m2 = z->l - z->c; (void)m2; /* or, line 100 */ { int m2 = z->l - z->c; (void)m2; /* or, line 107 */
{ int ret = r_R2(z); /* call R2, line 100 */ { int ret = r_R2(z); /* call R2, line 107 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 100 */ { int ret = slice_del(z); /* delete, line 107 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab1; goto lab1;
lab2: lab2:
z->c = z->l - m2; z->c = z->l - m2;
{ int ret = slice_from_s(z, 3, s_9); /* <-, line 100 */ { int ret = slice_from_s(z, 3, s_13); /* <-, line 107 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -639,98 +682,98 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -639,98 +682,98 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 104 */ { int ret = r_R2(z); /* call R2, line 111 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_10); /* <-, line 104 */ { int ret = slice_from_s(z, 3, s_14); /* <-, line 111 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = r_R2(z); /* call R2, line 107 */ { int ret = r_R2(z); /* call R2, line 114 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 1, s_11); /* <-, line 107 */ { int ret = slice_from_s(z, 1, s_15); /* <-, line 114 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 5: case 5:
{ int ret = r_R2(z); /* call R2, line 110 */ { int ret = r_R2(z); /* call R2, line 117 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_12); /* <-, line 110 */ { int ret = slice_from_s(z, 3, s_16); /* <-, line 117 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 6: case 6:
{ int ret = r_RV(z); /* call RV, line 114 */ { int ret = r_RV(z); /* call RV, line 121 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 114 */ { int ret = slice_del(z); /* delete, line 121 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m3 = z->l - z->c; (void)m3; /* try, line 115 */ { int m3 = z->l - z->c; (void)m3; /* try, line 122 */
z->ket = z->c; /* [, line 116 */ z->ket = z->c; /* [, line 123 */
among_var = find_among_b(z, a_2, 6); /* substring, line 116 */ among_var = find_among_b(z, a_2, 6); /* substring, line 123 */
if (!(among_var)) { z->c = z->l - m3; goto lab3; } if (!(among_var)) { z->c = z->l - m3; goto lab3; }
z->bra = z->c; /* ], line 116 */ z->bra = z->c; /* ], line 123 */
switch (among_var) { /* among, line 116 */ switch (among_var) { /* among, line 123 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 117 */ { int ret = r_R2(z); /* call R2, line 124 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 117 */ { int ret = slice_del(z); /* delete, line 124 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->ket = z->c; /* [, line 117 */ z->ket = z->c; /* [, line 124 */
if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m3; goto lab3; } /* literal, line 117 */ if (!(eq_s_b(z, 2, s_17))) { z->c = z->l - m3; goto lab3; } /* literal, line 124 */
z->bra = z->c; /* ], line 117 */ z->bra = z->c; /* ], line 124 */
{ int ret = r_R2(z); /* call R2, line 117 */ { int ret = r_R2(z); /* call R2, line 124 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 117 */ { int ret = slice_del(z); /* delete, line 124 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int m4 = z->l - z->c; (void)m4; /* or, line 118 */ { int m4 = z->l - z->c; (void)m4; /* or, line 125 */
{ int ret = r_R2(z); /* call R2, line 118 */ { int ret = r_R2(z); /* call R2, line 125 */
if (ret == 0) goto lab5; if (ret == 0) goto lab5;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 118 */ { int ret = slice_del(z); /* delete, line 125 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab4; goto lab4;
lab5: lab5:
z->c = z->l - m4; z->c = z->l - m4;
{ int ret = r_R1(z); /* call R1, line 118 */ { int ret = r_R1(z); /* call R1, line 125 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_14); /* <-, line 118 */ { int ret = slice_from_s(z, 3, s_18); /* <-, line 125 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab4: lab4:
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 120 */ { int ret = r_R2(z); /* call R2, line 127 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 120 */ { int ret = slice_del(z); /* delete, line 127 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = r_RV(z); /* call RV, line 122 */ { int ret = r_RV(z); /* call RV, line 129 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_from_s(z, 1, s_15); /* <-, line 122 */ { int ret = slice_from_s(z, 1, s_19); /* <-, line 129 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -740,61 +783,61 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -740,61 +783,61 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 7: case 7:
{ int ret = r_R2(z); /* call R2, line 129 */ { int ret = r_R2(z); /* call R2, line 136 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 129 */ { int ret = slice_del(z); /* delete, line 136 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m5 = z->l - z->c; (void)m5; /* try, line 130 */ { int m5 = z->l - z->c; (void)m5; /* try, line 137 */
z->ket = z->c; /* [, line 131 */ z->ket = z->c; /* [, line 138 */
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; } /* substring, line 131 */ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; } /* substring, line 138 */
among_var = find_among_b(z, a_3, 3); among_var = find_among_b(z, a_3, 3);
if (!(among_var)) { z->c = z->l - m5; goto lab6; } if (!(among_var)) { z->c = z->l - m5; goto lab6; }
z->bra = z->c; /* ], line 131 */ z->bra = z->c; /* ], line 138 */
switch (among_var) { /* among, line 131 */ switch (among_var) { /* among, line 138 */
case 1: case 1:
{ int m6 = z->l - z->c; (void)m6; /* or, line 132 */ { int m6 = z->l - z->c; (void)m6; /* or, line 139 */
{ int ret = r_R2(z); /* call R2, line 132 */ { int ret = r_R2(z); /* call R2, line 139 */
if (ret == 0) goto lab8; if (ret == 0) goto lab8;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 132 */ { int ret = slice_del(z); /* delete, line 139 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab7; goto lab7;
lab8: lab8:
z->c = z->l - m6; z->c = z->l - m6;
{ int ret = slice_from_s(z, 3, s_16); /* <-, line 132 */ { int ret = slice_from_s(z, 3, s_20); /* <-, line 139 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab7: lab7:
break; break;
case 2: case 2:
{ int m7 = z->l - z->c; (void)m7; /* or, line 133 */ { int m7 = z->l - z->c; (void)m7; /* or, line 140 */
{ int ret = r_R2(z); /* call R2, line 133 */ { int ret = r_R2(z); /* call R2, line 140 */
if (ret == 0) goto lab10; if (ret == 0) goto lab10;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 133 */ { int ret = slice_del(z); /* delete, line 140 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab9; goto lab9;
lab10: lab10:
z->c = z->l - m7; z->c = z->l - m7;
{ int ret = slice_from_s(z, 3, s_17); /* <-, line 133 */ { int ret = slice_from_s(z, 3, s_21); /* <-, line 140 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab9: lab9:
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 134 */ { int ret = r_R2(z); /* call R2, line 141 */
if (ret == 0) { z->c = z->l - m5; goto lab6; } if (ret == 0) { z->c = z->l - m5; goto lab6; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 134 */ { int ret = slice_del(z); /* delete, line 141 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -804,38 +847,38 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -804,38 +847,38 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 8: case 8:
{ int ret = r_R2(z); /* call R2, line 141 */ { int ret = r_R2(z); /* call R2, line 148 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 141 */ { int ret = slice_del(z); /* delete, line 148 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m8 = z->l - z->c; (void)m8; /* try, line 142 */ { int m8 = z->l - z->c; (void)m8; /* try, line 149 */
z->ket = z->c; /* [, line 142 */ z->ket = z->c; /* [, line 149 */
if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m8; goto lab11; } /* literal, line 142 */ if (!(eq_s_b(z, 2, s_22))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
z->bra = z->c; /* ], line 142 */ z->bra = z->c; /* ], line 149 */
{ int ret = r_R2(z); /* call R2, line 142 */ { int ret = r_R2(z); /* call R2, line 149 */
if (ret == 0) { z->c = z->l - m8; goto lab11; } if (ret == 0) { z->c = z->l - m8; goto lab11; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 142 */ { int ret = slice_del(z); /* delete, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->ket = z->c; /* [, line 142 */ z->ket = z->c; /* [, line 149 */
if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m8; goto lab11; } /* literal, line 142 */ if (!(eq_s_b(z, 2, s_23))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
z->bra = z->c; /* ], line 142 */ z->bra = z->c; /* ], line 149 */
{ int m9 = z->l - z->c; (void)m9; /* or, line 142 */ { int m9 = z->l - z->c; (void)m9; /* or, line 149 */
{ int ret = r_R2(z); /* call R2, line 142 */ { int ret = r_R2(z); /* call R2, line 149 */
if (ret == 0) goto lab13; if (ret == 0) goto lab13;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 142 */ { int ret = slice_del(z); /* delete, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab12; goto lab12;
lab13: lab13:
z->c = z->l - m9; z->c = z->l - m9;
{ int ret = slice_from_s(z, 3, s_20); /* <-, line 142 */ { int ret = slice_from_s(z, 3, s_24); /* <-, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -845,78 +888,78 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -845,78 +888,78 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 9: case 9:
{ int ret = slice_from_s(z, 3, s_21); /* <-, line 144 */ { int ret = slice_from_s(z, 3, s_25); /* <-, line 151 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 10: case 10:
{ int ret = r_R1(z); /* call R1, line 145 */ { int ret = r_R1(z); /* call R1, line 152 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 2, s_22); /* <-, line 145 */ { int ret = slice_from_s(z, 2, s_26); /* <-, line 152 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 11: case 11:
{ int m10 = z->l - z->c; (void)m10; /* or, line 147 */ { int m10 = z->l - z->c; (void)m10; /* or, line 154 */
{ int ret = r_R2(z); /* call R2, line 147 */ { int ret = r_R2(z); /* call R2, line 154 */
if (ret == 0) goto lab15; if (ret == 0) goto lab15;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 147 */ { int ret = slice_del(z); /* delete, line 154 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab14; goto lab14;
lab15: lab15:
z->c = z->l - m10; z->c = z->l - m10;
{ int ret = r_R1(z); /* call R1, line 147 */ { int ret = r_R1(z); /* call R1, line 154 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_23); /* <-, line 147 */ { int ret = slice_from_s(z, 3, s_27); /* <-, line 154 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab14: lab14:
break; break;
case 12: case 12:
{ int ret = r_R1(z); /* call R1, line 150 */ { int ret = r_R1(z); /* call R1, line 157 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
if (out_grouping_b(z, g_v, 97, 251, 0)) return 0; /* non v, line 150 */ if (out_grouping_b(z, g_v, 97, 251, 0)) return 0; /* non v, line 157 */
{ int ret = slice_del(z); /* delete, line 150 */ { int ret = slice_del(z); /* delete, line 157 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 13: case 13:
{ int ret = r_RV(z); /* call RV, line 155 */ { int ret = r_RV(z); /* call RV, line 162 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_24); /* <-, line 155 */ { int ret = slice_from_s(z, 3, s_28); /* <-, line 162 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 155 */ return 0; /* fail, line 162 */
break; break;
case 14: case 14:
{ int ret = r_RV(z); /* call RV, line 156 */ { int ret = r_RV(z); /* call RV, line 163 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_25); /* <-, line 156 */ { int ret = slice_from_s(z, 3, s_29); /* <-, line 163 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 156 */ return 0; /* fail, line 163 */
break; break;
case 15: case 15:
{ int m_test11 = z->l - z->c; /* test, line 158 */ { int m_test11 = z->l - z->c; /* test, line 165 */
if (in_grouping_b(z, g_v, 97, 251, 0)) return 0; /* grouping v, line 158 */ if (in_grouping_b(z, g_v, 97, 251, 0)) return 0; /* grouping v, line 165 */
{ int ret = r_RV(z); /* call RV, line 158 */ { int ret = r_RV(z); /* call RV, line 165 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
z->c = z->l - m_test11; z->c = z->l - m_test11;
} }
{ int ret = slice_del(z); /* delete, line 158 */ { int ret = slice_del(z); /* delete, line 165 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 158 */ return 0; /* fail, line 165 */
break; break;
} }
return 1; return 1;
...@@ -924,15 +967,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -924,15 +967,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
{ int mlimit1; /* setlimit, line 163 */ { int mlimit1; /* setlimit, line 170 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 164 */ z->ket = z->c; /* [, line 171 */
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 164 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 171 */
if (!(find_among_b(z, a_5, 35))) { z->lb = mlimit1; return 0; } if (!(find_among_b(z, a_5, 35))) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 164 */ z->bra = z->c; /* ], line 171 */
if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; } /* non v, line 170 */ { int m2 = z->l - z->c; (void)m2; /* not, line 177 */
{ int ret = slice_del(z); /* delete, line 170 */ if (z->c <= z->lb || z->p[z->c - 1] != 'H') goto lab0; /* literal, line 177 */
z->c--;
{ z->lb = mlimit1; return 0; }
lab0:
z->c = z->l - m2;
}
if (out_grouping_b(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; } /* non v, line 177 */
{ int ret = slice_del(z); /* delete, line 177 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->lb = mlimit1; z->lb = mlimit1;
...@@ -943,38 +993,38 @@ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -943,38 +993,38 @@ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int mlimit1; /* setlimit, line 174 */ { int mlimit1; /* setlimit, line 181 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 175 */ z->ket = z->c; /* [, line 182 */
among_var = find_among_b(z, a_6, 38); /* substring, line 175 */ among_var = find_among_b(z, a_6, 38); /* substring, line 182 */
if (!(among_var)) { z->lb = mlimit1; return 0; } if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 175 */ z->bra = z->c; /* ], line 182 */
switch (among_var) { /* among, line 175 */ switch (among_var) { /* among, line 182 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 177 */ { int ret = r_R2(z); /* call R2, line 184 */
if (ret == 0) { z->lb = mlimit1; return 0; } if (ret == 0) { z->lb = mlimit1; return 0; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 177 */ { int ret = slice_del(z); /* delete, line 184 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_del(z); /* delete, line 185 */ { int ret = slice_del(z); /* delete, line 192 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_del(z); /* delete, line 190 */ { int ret = slice_del(z); /* delete, line 197 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m2 = z->l - z->c; (void)m2; /* try, line 191 */ { int m2 = z->l - z->c; (void)m2; /* try, line 198 */
z->ket = z->c; /* [, line 191 */ z->ket = z->c; /* [, line 198 */
if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; } /* literal, line 191 */ if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; } /* literal, line 198 */
z->c--; z->c--;
z->bra = z->c; /* ], line 191 */ z->bra = z->c; /* ], line 198 */
{ int ret = slice_del(z); /* delete, line 191 */ { int ret = slice_del(z); /* delete, line 198 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
...@@ -989,82 +1039,84 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -989,82 +1039,84 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int m1 = z->l - z->c; (void)m1; /* try, line 199 */ { int m1 = z->l - z->c; (void)m1; /* try, line 206 */
z->ket = z->c; /* [, line 199 */ z->ket = z->c; /* [, line 206 */
if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; } /* literal, line 199 */ if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; } /* literal, line 206 */
z->c--; z->c--;
z->bra = z->c; /* ], line 199 */ z->bra = z->c; /* ], line 206 */
{ int m_test2 = z->l - z->c; /* test, line 199 */ { int m_test2 = z->l - z->c; /* test, line 206 */
if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; } /* non keep_with_s, line 199 */ { int m3 = z->l - z->c; (void)m3; /* or, line 206 */
if (!(eq_s_b(z, 2, s_30))) goto lab2; /* literal, line 206 */
goto lab1;
lab2:
z->c = z->l - m3;
if (out_grouping_b(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; } /* non keep_with_s, line 206 */
}
lab1:
z->c = z->l - m_test2; z->c = z->l - m_test2;
} }
{ int ret = slice_del(z); /* delete, line 199 */ { int ret = slice_del(z); /* delete, line 206 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
; ;
} }
{ int mlimit3; /* setlimit, line 200 */ { int mlimit4; /* setlimit, line 207 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit3 = z->lb; z->lb = z->I[0]; mlimit4 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 201 */ z->ket = z->c; /* [, line 208 */
among_var = find_among_b(z, a_7, 7); /* substring, line 201 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit4; return 0; } /* substring, line 208 */
if (!(among_var)) { z->lb = mlimit3; return 0; } among_var = find_among_b(z, a_7, 6);
z->bra = z->c; /* ], line 201 */ if (!(among_var)) { z->lb = mlimit4; return 0; }
switch (among_var) { /* among, line 201 */ z->bra = z->c; /* ], line 208 */
switch (among_var) { /* among, line 208 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 202 */ { int ret = r_R2(z); /* call R2, line 209 */
if (ret == 0) { z->lb = mlimit3; return 0; } if (ret == 0) { z->lb = mlimit4; return 0; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m4 = z->l - z->c; (void)m4; /* or, line 202 */ { int m5 = z->l - z->c; (void)m5; /* or, line 209 */
if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab2; /* literal, line 202 */ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab4; /* literal, line 209 */
z->c--; z->c--;
goto lab1; goto lab3;
lab2: lab4:
z->c = z->l - m4; z->c = z->l - m5;
if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit3; return 0; } /* literal, line 202 */ if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit4; return 0; } /* literal, line 209 */
z->c--; z->c--;
} }
lab1: lab3:
{ int ret = slice_del(z); /* delete, line 202 */ { int ret = slice_del(z); /* delete, line 209 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 1, s_26); /* <-, line 204 */ { int ret = slice_from_s(z, 1, s_31); /* <-, line 211 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_del(z); /* delete, line 205 */ { int ret = slice_del(z); /* delete, line 212 */
if (ret < 0) return ret;
}
break;
case 4:
if (!(eq_s_b(z, 2, s_27))) { z->lb = mlimit3; return 0; } /* literal, line 206 */
{ int ret = slice_del(z); /* delete, line 206 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
} }
z->lb = mlimit3; z->lb = mlimit4;
} }
return 1; return 1;
} }
static int r_un_double(struct SN_env * z) { /* backwardmode */ static int r_un_double(struct SN_env * z) { /* backwardmode */
{ int m_test1 = z->l - z->c; /* test, line 212 */ { int m_test1 = z->l - z->c; /* test, line 218 */
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 212 */ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 218 */
if (!(find_among_b(z, a_8, 5))) return 0; if (!(find_among_b(z, a_8, 5))) return 0;
z->c = z->l - m_test1; z->c = z->l - m_test1;
} }
z->ket = z->c; /* [, line 212 */ z->ket = z->c; /* [, line 218 */
if (z->c <= z->lb) return 0; if (z->c <= z->lb) return 0;
z->c--; /* next, line 212 */ z->c--; /* next, line 218 */
z->bra = z->c; /* ], line 212 */ z->bra = z->c; /* ], line 218 */
{ int ret = slice_del(z); /* delete, line 212 */ { int ret = slice_del(z); /* delete, line 218 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
...@@ -1072,8 +1124,8 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */ ...@@ -1072,8 +1124,8 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */
static int r_un_accent(struct SN_env * z) { /* backwardmode */ static int r_un_accent(struct SN_env * z) { /* backwardmode */
{ int i = 1; { int i = 1;
while(1) { /* atleast, line 216 */ while(1) { /* atleast, line 222 */
if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 216 */ if (out_grouping_b(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */
i--; i--;
continue; continue;
lab0: lab0:
...@@ -1081,82 +1133,82 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */ ...@@ -1081,82 +1133,82 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */
} }
if (i > 0) return 0; if (i > 0) return 0;
} }
z->ket = z->c; /* [, line 217 */ z->ket = z->c; /* [, line 223 */
{ int m1 = z->l - z->c; (void)m1; /* or, line 217 */ { int m1 = z->l - z->c; (void)m1; /* or, line 223 */
if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab2; /* literal, line 217 */ if (z->c <= z->lb || z->p[z->c - 1] != 0xE9) goto lab2; /* literal, line 223 */
z->c--; z->c--;
goto lab1; goto lab1;
lab2: lab2:
z->c = z->l - m1; z->c = z->l - m1;
if (z->c <= z->lb || z->p[z->c - 1] != 0xE8) return 0; /* literal, line 217 */ if (z->c <= z->lb || z->p[z->c - 1] != 0xE8) return 0; /* literal, line 223 */
z->c--; z->c--;
} }
lab1: lab1:
z->bra = z->c; /* ], line 217 */ z->bra = z->c; /* ], line 223 */
{ int ret = slice_from_s(z, 1, s_28); /* <-, line 217 */ { int ret = slice_from_s(z, 1, s_32); /* <-, line 223 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
} }
extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */ extern int french_ISO_8859_1_stem(struct SN_env * z) { /* forwardmode */
{ int c1 = z->c; /* do, line 223 */ { int c1 = z->c; /* do, line 229 */
{ int ret = r_prelude(z); /* call prelude, line 223 */ { int ret = r_prelude(z); /* call prelude, line 229 */
if (ret == 0) goto lab0; if (ret == 0) goto lab0;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = c1; z->c = c1;
} }
/* do, line 224 */ /* do, line 230 */
{ int ret = r_mark_regions(z); /* call mark_regions, line 224 */ { int ret = r_mark_regions(z); /* call mark_regions, line 230 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab1: lab1:
z->lb = z->c; z->c = z->l; /* backwards, line 225 */ z->lb = z->c; z->c = z->l; /* backwards, line 231 */
{ int m2 = z->l - z->c; (void)m2; /* do, line 227 */ { int m2 = z->l - z->c; (void)m2; /* do, line 233 */
{ int m3 = z->l - z->c; (void)m3; /* or, line 237 */ { int m3 = z->l - z->c; (void)m3; /* or, line 243 */
{ int m4 = z->l - z->c; (void)m4; /* and, line 233 */ { int m4 = z->l - z->c; (void)m4; /* and, line 239 */
{ int m5 = z->l - z->c; (void)m5; /* or, line 229 */ { int m5 = z->l - z->c; (void)m5; /* or, line 235 */
{ int ret = r_standard_suffix(z); /* call standard_suffix, line 229 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 235 */
if (ret == 0) goto lab6; if (ret == 0) goto lab6;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab5; goto lab5;
lab6: lab6:
z->c = z->l - m5; z->c = z->l - m5;
{ int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 230 */ { int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 236 */
if (ret == 0) goto lab7; if (ret == 0) goto lab7;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab5; goto lab5;
lab7: lab7:
z->c = z->l - m5; z->c = z->l - m5;
{ int ret = r_verb_suffix(z); /* call verb_suffix, line 231 */ { int ret = r_verb_suffix(z); /* call verb_suffix, line 237 */
if (ret == 0) goto lab4; if (ret == 0) goto lab4;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab5: lab5:
z->c = z->l - m4; z->c = z->l - m4;
{ int m6 = z->l - z->c; (void)m6; /* try, line 234 */ { int m6 = z->l - z->c; (void)m6; /* try, line 240 */
z->ket = z->c; /* [, line 234 */ z->ket = z->c; /* [, line 240 */
{ int m7 = z->l - z->c; (void)m7; /* or, line 234 */ { int m7 = z->l - z->c; (void)m7; /* or, line 240 */
if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 234 */ if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 240 */
z->c--; z->c--;
z->bra = z->c; /* ], line 234 */ z->bra = z->c; /* ], line 240 */
{ int ret = slice_from_s(z, 1, s_29); /* <-, line 234 */ { int ret = slice_from_s(z, 1, s_33); /* <-, line 240 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab9; goto lab9;
lab10: lab10:
z->c = z->l - m7; z->c = z->l - m7;
if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m6; goto lab8; } /* literal, line 235 */ if (z->c <= z->lb || z->p[z->c - 1] != 0xE7) { z->c = z->l - m6; goto lab8; } /* literal, line 241 */
z->c--; z->c--;
z->bra = z->c; /* ], line 235 */ z->bra = z->c; /* ], line 241 */
{ int ret = slice_from_s(z, 1, s_30); /* <-, line 235 */ { int ret = slice_from_s(z, 1, s_34); /* <-, line 241 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -1168,7 +1220,7 @@ lab1: ...@@ -1168,7 +1220,7 @@ lab1:
goto lab3; goto lab3;
lab4: lab4:
z->c = z->l - m3; z->c = z->l - m3;
{ int ret = r_residual_suffix(z); /* call residual_suffix, line 238 */ { int ret = r_residual_suffix(z); /* call residual_suffix, line 244 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -1177,16 +1229,16 @@ lab1: ...@@ -1177,16 +1229,16 @@ lab1:
lab2: lab2:
z->c = z->l - m2; z->c = z->l - m2;
} }
{ int m8 = z->l - z->c; (void)m8; /* do, line 243 */ { int m8 = z->l - z->c; (void)m8; /* do, line 249 */
{ int ret = r_un_double(z); /* call un_double, line 243 */ { int ret = r_un_double(z); /* call un_double, line 249 */
if (ret == 0) goto lab11; if (ret == 0) goto lab11;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab11: lab11:
z->c = z->l - m8; z->c = z->l - m8;
} }
{ int m9 = z->l - z->c; (void)m9; /* do, line 244 */ { int m9 = z->l - z->c; (void)m9; /* do, line 250 */
{ int ret = r_un_accent(z); /* call un_accent, line 244 */ { int ret = r_un_accent(z); /* call un_accent, line 250 */
if (ret == 0) goto lab12; if (ret == 0) goto lab12;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -1194,8 +1246,8 @@ lab1: ...@@ -1194,8 +1246,8 @@ lab1:
z->c = z->l - m9; z->c = z->l - m9;
} }
z->c = z->lb; z->c = z->lb;
{ int c10 = z->c; /* do, line 246 */ { int c10 = z->c; /* do, line 252 */
{ int ret = r_postlude(z); /* call postlude, line 246 */ { int ret = r_postlude(z); /* call postlude, line 252 */
if (ret == 0) goto lab13; if (ret == 0) goto lab13;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
......
...@@ -124,6 +124,8 @@ static const struct among a_2[5] = ...@@ -124,6 +124,8 @@ static const struct among a_2[5] =
/* 4 */ { 5, s_2_4, -1, 2, 0} /* 4 */ { 5, s_2_4, -1, 2, 0}
}; };
static const unsigned char g_c[] = { 119, 223, 119, 1 };
static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 }; static const unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 };
static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 }; static const unsigned char g_s_ending[] = { 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 };
...@@ -133,25 +135,25 @@ static const symbol s_1[] = { 'i', 'g' }; ...@@ -133,25 +135,25 @@ static const symbol s_1[] = { 'i', 'g' };
static const symbol s_2[] = { 'l', 0xC3, 0xB8, 's' }; static const symbol s_2[] = { 'l', 0xC3, 0xB8, 's' };
static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
z->I[0] = z->l; /* $p1 = <integer expression>, line 31 */ z->I[0] = z->l; /* $p1 = <integer expression>, line 33 */
{ int c_test1 = z->c; /* test, line 33 */ { int c_test1 = z->c; /* test, line 35 */
{ int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); /* hop, line 33 */ { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3); /* hop, line 35 */
if (ret < 0) return 0; if (ret < 0) return 0;
z->c = ret; z->c = ret;
} }
z->I[1] = z->c; /* setmark x, line 33 */ z->I[1] = z->c; /* setmark x, line 35 */
z->c = c_test1; z->c = c_test1;
} }
if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 34 */ if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 36 */
{ /* gopast */ /* non v, line 34 */ { /* gopast */ /* non v, line 36 */
int ret = in_grouping_U(z, g_v, 97, 248, 1); int ret = in_grouping_U(z, g_v, 97, 248, 1);
if (ret < 0) return 0; if (ret < 0) return 0;
z->c += ret; z->c += ret;
} }
z->I[0] = z->c; /* setmark p1, line 34 */ z->I[0] = z->c; /* setmark p1, line 36 */
/* try, line 35 */ /* try, line 37 */
if (!(z->I[0] < z->I[1])) goto lab0; /* $(<integer expression> < <integer expression>), line 35 */ if (!(z->I[0] < z->I[1])) goto lab0; /* $(<integer expression> < <integer expression>), line 37 */
z->I[0] = z->I[1]; /* $p1 = <integer expression>, line 35 */ z->I[0] = z->I[1]; /* $p1 = <integer expression>, line 37 */
lab0: lab0:
return 1; return 1;
} }
...@@ -159,25 +161,25 @@ lab0: ...@@ -159,25 +161,25 @@ lab0:
static int r_main_suffix(struct SN_env * z) { /* backwardmode */ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int mlimit1; /* setlimit, line 41 */ { int mlimit1; /* setlimit, line 43 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 41 */ z->ket = z->c; /* [, line 43 */
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 41 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851440 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 43 */
among_var = find_among_b(z, a_0, 32); among_var = find_among_b(z, a_0, 32);
if (!(among_var)) { z->lb = mlimit1; return 0; } if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 41 */ z->bra = z->c; /* ], line 43 */
z->lb = mlimit1; z->lb = mlimit1;
} }
switch (among_var) { /* among, line 42 */ switch (among_var) { /* among, line 44 */
case 1: case 1:
{ int ret = slice_del(z); /* delete, line 48 */ { int ret = slice_del(z); /* delete, line 50 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
if (in_grouping_b_U(z, g_s_ending, 97, 229, 0)) return 0; /* grouping s_ending, line 50 */ if (in_grouping_b_U(z, g_s_ending, 97, 229, 0)) return 0; /* grouping s_ending, line 52 */
{ int ret = slice_del(z); /* delete, line 50 */ { int ret = slice_del(z); /* delete, line 52 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -186,25 +188,25 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -186,25 +188,25 @@ static int r_main_suffix(struct SN_env * z) { /* backwardmode */
} }
static int r_consonant_pair(struct SN_env * z) { /* backwardmode */ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
{ int m_test1 = z->l - z->c; /* test, line 55 */ { int m_test1 = z->l - z->c; /* test, line 57 */
{ int mlimit2; /* setlimit, line 56 */ { int mlimit2; /* setlimit, line 58 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit2 = z->lb; z->lb = z->I[0]; mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 56 */ z->ket = z->c; /* [, line 58 */
if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; } /* substring, line 56 */ if (z->c - 1 <= z->lb || (z->p[z->c - 1] != 100 && z->p[z->c - 1] != 116)) { z->lb = mlimit2; return 0; } /* substring, line 58 */
if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; } if (!(find_among_b(z, a_1, 4))) { z->lb = mlimit2; return 0; }
z->bra = z->c; /* ], line 56 */ z->bra = z->c; /* ], line 58 */
z->lb = mlimit2; z->lb = mlimit2;
} }
z->c = z->l - m_test1; z->c = z->l - m_test1;
} }
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0; if (ret < 0) return 0;
z->c = ret; /* next, line 62 */ z->c = ret; /* next, line 64 */
} }
z->bra = z->c; /* ], line 62 */ z->bra = z->c; /* ], line 64 */
{ int ret = slice_del(z); /* delete, line 62 */ { int ret = slice_del(z); /* delete, line 64 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
...@@ -212,35 +214,35 @@ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */ ...@@ -212,35 +214,35 @@ static int r_consonant_pair(struct SN_env * z) { /* backwardmode */
static int r_other_suffix(struct SN_env * z) { /* backwardmode */ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int m1 = z->l - z->c; (void)m1; /* do, line 66 */ { int m1 = z->l - z->c; (void)m1; /* do, line 68 */
z->ket = z->c; /* [, line 66 */ z->ket = z->c; /* [, line 68 */
if (!(eq_s_b(z, 2, s_0))) goto lab0; /* literal, line 66 */ if (!(eq_s_b(z, 2, s_0))) goto lab0; /* literal, line 68 */
z->bra = z->c; /* ], line 66 */ z->bra = z->c; /* ], line 68 */
if (!(eq_s_b(z, 2, s_1))) goto lab0; /* literal, line 66 */ if (!(eq_s_b(z, 2, s_1))) goto lab0; /* literal, line 68 */
{ int ret = slice_del(z); /* delete, line 66 */ { int ret = slice_del(z); /* delete, line 68 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = z->l - m1; z->c = z->l - m1;
} }
{ int mlimit2; /* setlimit, line 67 */ { int mlimit2; /* setlimit, line 69 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit2 = z->lb; z->lb = z->I[0]; mlimit2 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 67 */ z->ket = z->c; /* [, line 69 */
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; } /* substring, line 67 */ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1572992 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit2; return 0; } /* substring, line 69 */
among_var = find_among_b(z, a_2, 5); among_var = find_among_b(z, a_2, 5);
if (!(among_var)) { z->lb = mlimit2; return 0; } if (!(among_var)) { z->lb = mlimit2; return 0; }
z->bra = z->c; /* ], line 67 */ z->bra = z->c; /* ], line 69 */
z->lb = mlimit2; z->lb = mlimit2;
} }
switch (among_var) { /* among, line 68 */ switch (among_var) { /* among, line 70 */
case 1: case 1:
{ int ret = slice_del(z); /* delete, line 70 */ { int ret = slice_del(z); /* delete, line 72 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m3 = z->l - z->c; (void)m3; /* do, line 70 */ { int m3 = z->l - z->c; (void)m3; /* do, line 72 */
{ int ret = r_consonant_pair(z); /* call consonant_pair, line 70 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 72 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -249,7 +251,7 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -249,7 +251,7 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 4, s_2); /* <-, line 72 */ { int ret = slice_from_s(z, 4, s_2); /* <-, line 74 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -259,60 +261,60 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -259,60 +261,60 @@ static int r_other_suffix(struct SN_env * z) { /* backwardmode */
static int r_undouble(struct SN_env * z) { /* backwardmode */ static int r_undouble(struct SN_env * z) { /* backwardmode */
{ int mlimit1; /* setlimit, line 76 */ { int mlimit1; /* setlimit, line 78 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 76 */ z->ket = z->c; /* [, line 78 */
if (out_grouping_b_U(z, g_v, 97, 248, 0)) { z->lb = mlimit1; return 0; } /* non v, line 76 */ if (in_grouping_b_U(z, g_c, 98, 122, 0)) { z->lb = mlimit1; return 0; } /* grouping c, line 78 */
z->bra = z->c; /* ], line 76 */ z->bra = z->c; /* ], line 78 */
z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 76 */ z->S[0] = slice_to(z, z->S[0]); /* -> ch, line 78 */
if (z->S[0] == 0) return -1; /* -> ch, line 76 */ if (z->S[0] == 0) return -1; /* -> ch, line 78 */
z->lb = mlimit1; z->lb = mlimit1;
} }
if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 77 */ if (!(eq_v_b(z, z->S[0]))) return 0; /* name ch, line 79 */
{ int ret = slice_del(z); /* delete, line 78 */ { int ret = slice_del(z); /* delete, line 80 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
} }
extern int danish_UTF_8_stem(struct SN_env * z) { /* forwardmode */ extern int danish_UTF_8_stem(struct SN_env * z) { /* forwardmode */
{ int c1 = z->c; /* do, line 84 */ { int c1 = z->c; /* do, line 86 */
{ int ret = r_mark_regions(z); /* call mark_regions, line 84 */ { int ret = r_mark_regions(z); /* call mark_regions, line 86 */
if (ret == 0) goto lab0; if (ret == 0) goto lab0;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = c1; z->c = c1;
} }
z->lb = z->c; z->c = z->l; /* backwards, line 85 */ z->lb = z->c; z->c = z->l; /* backwards, line 87 */
{ int m2 = z->l - z->c; (void)m2; /* do, line 86 */ { int m2 = z->l - z->c; (void)m2; /* do, line 88 */
{ int ret = r_main_suffix(z); /* call main_suffix, line 86 */ { int ret = r_main_suffix(z); /* call main_suffix, line 88 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab1: lab1:
z->c = z->l - m2; z->c = z->l - m2;
} }
{ int m3 = z->l - z->c; (void)m3; /* do, line 87 */ { int m3 = z->l - z->c; (void)m3; /* do, line 89 */
{ int ret = r_consonant_pair(z); /* call consonant_pair, line 87 */ { int ret = r_consonant_pair(z); /* call consonant_pair, line 89 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab2: lab2:
z->c = z->l - m3; z->c = z->l - m3;
} }
{ int m4 = z->l - z->c; (void)m4; /* do, line 88 */ { int m4 = z->l - z->c; (void)m4; /* do, line 90 */
{ int ret = r_other_suffix(z); /* call other_suffix, line 88 */ { int ret = r_other_suffix(z); /* call other_suffix, line 90 */
if (ret == 0) goto lab3; if (ret == 0) goto lab3;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab3: lab3:
z->c = z->l - m4; z->c = z->l - m4;
} }
{ int m5 = z->l - z->c; (void)m5; /* do, line 89 */ { int m5 = z->l - z->c; (void)m5; /* do, line 91 */
{ int ret = r_undouble(z); /* call undouble, line 89 */ { int ret = r_undouble(z); /* call undouble, line 91 */
if (ret == 0) goto lab4; if (ret == 0) goto lab4;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
......
...@@ -45,16 +45,22 @@ static const struct among a_0[3] = ...@@ -45,16 +45,22 @@ static const struct among a_0[3] =
/* 2 */ { 3, s_0_2, -1, -1, 0} /* 2 */ { 3, s_0_2, -1, -1, 0}
}; };
static const symbol s_1_1[1] = { 'I' }; static const symbol s_1_1[1] = { 'H' };
static const symbol s_1_2[1] = { 'U' }; static const symbol s_1_2[2] = { 'H', 'e' };
static const symbol s_1_3[1] = { 'Y' }; static const symbol s_1_3[2] = { 'H', 'i' };
static const symbol s_1_4[1] = { 'I' };
static const symbol s_1_5[1] = { 'U' };
static const symbol s_1_6[1] = { 'Y' };
static const struct among a_1[4] = static const struct among a_1[7] =
{ {
/* 0 */ { 0, 0, -1, 4, 0}, /* 0 */ { 0, 0, -1, 7, 0},
/* 1 */ { 1, s_1_1, 0, 1, 0}, /* 1 */ { 1, s_1_1, 0, 6, 0},
/* 2 */ { 1, s_1_2, 0, 2, 0}, /* 2 */ { 2, s_1_2, 1, 4, 0},
/* 3 */ { 1, s_1_3, 0, 3, 0} /* 3 */ { 2, s_1_3, 1, 5, 0},
/* 4 */ { 1, s_1_4, 0, 1, 0},
/* 5 */ { 1, s_1_5, 0, 2, 0},
/* 6 */ { 1, s_1_6, 0, 3, 0}
}; };
static const symbol s_2_0[3] = { 'i', 'q', 'U' }; static const symbol s_2_0[3] = { 'i', 'q', 'U' };
...@@ -338,17 +344,15 @@ static const symbol s_7_2[5] = { 'i', 0xC3, 0xA8, 'r', 'e' }; ...@@ -338,17 +344,15 @@ static const symbol s_7_2[5] = { 'i', 0xC3, 0xA8, 'r', 'e' };
static const symbol s_7_3[3] = { 'i', 'o', 'n' }; static const symbol s_7_3[3] = { 'i', 'o', 'n' };
static const symbol s_7_4[3] = { 'I', 'e', 'r' }; static const symbol s_7_4[3] = { 'I', 'e', 'r' };
static const symbol s_7_5[3] = { 'i', 'e', 'r' }; static const symbol s_7_5[3] = { 'i', 'e', 'r' };
static const symbol s_7_6[2] = { 0xC3, 0xAB };
static const struct among a_7[7] = static const struct among a_7[6] =
{ {
/* 0 */ { 1, s_7_0, -1, 3, 0}, /* 0 */ { 1, s_7_0, -1, 3, 0},
/* 1 */ { 5, s_7_1, 0, 2, 0}, /* 1 */ { 5, s_7_1, 0, 2, 0},
/* 2 */ { 5, s_7_2, 0, 2, 0}, /* 2 */ { 5, s_7_2, 0, 2, 0},
/* 3 */ { 3, s_7_3, -1, 1, 0}, /* 3 */ { 3, s_7_3, -1, 1, 0},
/* 4 */ { 3, s_7_4, -1, 2, 0}, /* 4 */ { 3, s_7_4, -1, 2, 0},
/* 5 */ { 3, s_7_5, -1, 2, 0}, /* 5 */ { 3, s_7_5, -1, 2, 0}
/* 6 */ { 2, s_7_6, -1, 4, 0}
}; };
static const symbol s_8_0[3] = { 'e', 'l', 'l' }; static const symbol s_8_0[3] = { 'e', 'l', 'l' };
...@@ -373,37 +377,43 @@ static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0 ...@@ -373,37 +377,43 @@ static const unsigned char g_keep_with_s[] = { 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0
static const symbol s_0[] = { 'U' }; static const symbol s_0[] = { 'U' };
static const symbol s_1[] = { 'I' }; static const symbol s_1[] = { 'I' };
static const symbol s_2[] = { 'Y' }; static const symbol s_2[] = { 'Y' };
static const symbol s_3[] = { 'Y' }; static const symbol s_3[] = { 0xC3, 0xAB };
static const symbol s_4[] = { 'U' }; static const symbol s_4[] = { 'H', 'e' };
static const symbol s_5[] = { 'i' }; static const symbol s_5[] = { 0xC3, 0xAF };
static const symbol s_6[] = { 'u' }; static const symbol s_6[] = { 'H', 'i' };
static const symbol s_7[] = { 'y' }; static const symbol s_7[] = { 'Y' };
static const symbol s_8[] = { 'i', 'c' }; static const symbol s_8[] = { 'U' };
static const symbol s_9[] = { 'i', 'q', 'U' }; static const symbol s_9[] = { 'i' };
static const symbol s_10[] = { 'l', 'o', 'g' }; static const symbol s_10[] = { 'u' };
static const symbol s_11[] = { 'u' }; static const symbol s_11[] = { 'y' };
static const symbol s_12[] = { 'e', 'n', 't' }; static const symbol s_12[] = { 0xC3, 0xAB };
static const symbol s_13[] = { 'a', 't' }; static const symbol s_13[] = { 0xC3, 0xAF };
static const symbol s_14[] = { 'e', 'u', 'x' }; static const symbol s_14[] = { 'i', 'c' };
static const symbol s_15[] = { 'i' }; static const symbol s_15[] = { 'i', 'q', 'U' };
static const symbol s_16[] = { 'a', 'b', 'l' }; static const symbol s_16[] = { 'l', 'o', 'g' };
static const symbol s_17[] = { 'i', 'q', 'U' }; static const symbol s_17[] = { 'u' };
static const symbol s_18[] = { 'a', 't' }; static const symbol s_18[] = { 'e', 'n', 't' };
static const symbol s_19[] = { 'i', 'c' }; static const symbol s_19[] = { 'a', 't' };
static const symbol s_20[] = { 'i', 'q', 'U' }; static const symbol s_20[] = { 'e', 'u', 'x' };
static const symbol s_21[] = { 'e', 'a', 'u' }; static const symbol s_21[] = { 'i' };
static const symbol s_22[] = { 'a', 'l' }; static const symbol s_22[] = { 'a', 'b', 'l' };
static const symbol s_23[] = { 'e', 'u', 'x' }; static const symbol s_23[] = { 'i', 'q', 'U' };
static const symbol s_24[] = { 'a', 'n', 't' }; static const symbol s_24[] = { 'a', 't' };
static const symbol s_25[] = { 'e', 'n', 't' }; static const symbol s_25[] = { 'i', 'c' };
static const symbol s_26[] = { 'i' }; static const symbol s_26[] = { 'i', 'q', 'U' };
static const symbol s_27[] = { 'g', 'u' }; static const symbol s_27[] = { 'e', 'a', 'u' };
static const symbol s_28[] = { 0xC3, 0xA9 }; static const symbol s_28[] = { 'a', 'l' };
static const symbol s_29[] = { 0xC3, 0xA8 }; static const symbol s_29[] = { 'e', 'u', 'x' };
static const symbol s_30[] = { 'e' }; static const symbol s_30[] = { 'a', 'n', 't' };
static const symbol s_31[] = { 'i' }; static const symbol s_31[] = { 'e', 'n', 't' };
static const symbol s_32[] = { 0xC3, 0xA7 }; static const symbol s_32[] = { 'H', 'i' };
static const symbol s_33[] = { 'c' }; static const symbol s_33[] = { 'i' };
static const symbol s_34[] = { 0xC3, 0xA9 };
static const symbol s_35[] = { 0xC3, 0xA8 };
static const symbol s_36[] = { 'e' };
static const symbol s_37[] = { 'i' };
static const symbol s_38[] = { 0xC3, 0xA7 };
static const symbol s_39[] = { 'c' };
static int r_prelude(struct SN_env * z) { /* forwardmode */ static int r_prelude(struct SN_env * z) { /* forwardmode */
while(1) { /* repeat, line 38 */ while(1) { /* repeat, line 38 */
...@@ -446,23 +456,41 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ ...@@ -446,23 +456,41 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
lab3: lab3:
z->c = c3; z->c = c3;
z->bra = z->c; /* [, line 45 */ z->bra = z->c; /* [, line 45 */
if (z->c == z->l || z->p[z->c] != 'y') goto lab7; /* literal, line 45 */ if (!(eq_s(z, 2, s_3))) goto lab7; /* literal, line 45 */
z->c++;
z->ket = z->c; /* ], line 45 */ z->ket = z->c; /* ], line 45 */
if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab7; /* grouping v, line 45 */ { int ret = slice_from_s(z, 2, s_4); /* <-, line 45 */
{ int ret = slice_from_s(z, 1, s_3); /* <-, line 45 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab2; goto lab2;
lab7: lab7:
z->c = c3; z->c = c3;
if (z->c == z->l || z->p[z->c] != 'q') goto lab1; /* literal, line 47 */
z->c++;
z->bra = z->c; /* [, line 47 */ z->bra = z->c; /* [, line 47 */
if (z->c == z->l || z->p[z->c] != 'u') goto lab1; /* literal, line 47 */ if (!(eq_s(z, 2, s_5))) goto lab8; /* literal, line 47 */
z->c++;
z->ket = z->c; /* ], line 47 */ z->ket = z->c; /* ], line 47 */
{ int ret = slice_from_s(z, 1, s_4); /* <-, line 47 */ { int ret = slice_from_s(z, 2, s_6); /* <-, line 47 */
if (ret < 0) return ret;
}
goto lab2;
lab8:
z->c = c3;
z->bra = z->c; /* [, line 49 */
if (z->c == z->l || z->p[z->c] != 'y') goto lab9; /* literal, line 49 */
z->c++;
z->ket = z->c; /* ], line 49 */
if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab9; /* grouping v, line 49 */
{ int ret = slice_from_s(z, 1, s_7); /* <-, line 49 */
if (ret < 0) return ret;
}
goto lab2;
lab9:
z->c = c3;
if (z->c == z->l || z->p[z->c] != 'q') goto lab1; /* literal, line 51 */
z->c++;
z->bra = z->c; /* [, line 51 */
if (z->c == z->l || z->p[z->c] != 'u') goto lab1; /* literal, line 51 */
z->c++;
z->ket = z->c; /* ], line 51 */
{ int ret = slice_from_s(z, 1, s_8); /* <-, line 51 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -485,63 +513,63 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */ ...@@ -485,63 +513,63 @@ static int r_prelude(struct SN_env * z) { /* forwardmode */
} }
static int r_mark_regions(struct SN_env * z) { /* forwardmode */ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
z->I[0] = z->l; /* $pV = <integer expression>, line 52 */ z->I[0] = z->l; /* $pV = <integer expression>, line 56 */
z->I[1] = z->l; /* $p1 = <integer expression>, line 53 */ z->I[1] = z->l; /* $p1 = <integer expression>, line 57 */
z->I[2] = z->l; /* $p2 = <integer expression>, line 54 */ z->I[2] = z->l; /* $p2 = <integer expression>, line 58 */
{ int c1 = z->c; /* do, line 56 */ { int c1 = z->c; /* do, line 60 */
{ int c2 = z->c; /* or, line 58 */ { int c2 = z->c; /* or, line 62 */
if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 57 */ if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 57 */ if (in_grouping_U(z, g_v, 97, 251, 0)) goto lab2; /* grouping v, line 61 */
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1); { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab2; if (ret < 0) goto lab2;
z->c = ret; /* next, line 57 */ z->c = ret; /* next, line 61 */
} }
goto lab1; goto lab1;
lab2: lab2:
z->c = c2; z->c = c2;
if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3; /* among, line 59 */ if (z->c + 2 >= z->l || z->p[z->c + 2] >> 5 != 3 || !((331776 >> (z->p[z->c + 2] & 0x1f)) & 1)) goto lab3; /* among, line 63 */
if (!(find_among(z, a_0, 3))) goto lab3; if (!(find_among(z, a_0, 3))) goto lab3;
goto lab1; goto lab1;
lab3: lab3:
z->c = c2; z->c = c2;
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1); { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0; if (ret < 0) goto lab0;
z->c = ret; /* next, line 66 */ z->c = ret; /* next, line 70 */
} }
{ /* gopast */ /* grouping v, line 66 */ { /* gopast */ /* grouping v, line 70 */
int ret = out_grouping_U(z, g_v, 97, 251, 1); int ret = out_grouping_U(z, g_v, 97, 251, 1);
if (ret < 0) goto lab0; if (ret < 0) goto lab0;
z->c += ret; z->c += ret;
} }
} }
lab1: lab1:
z->I[0] = z->c; /* setmark pV, line 67 */ z->I[0] = z->c; /* setmark pV, line 71 */
lab0: lab0:
z->c = c1; z->c = c1;
} }
{ int c3 = z->c; /* do, line 69 */ { int c3 = z->c; /* do, line 73 */
{ /* gopast */ /* grouping v, line 70 */ { /* gopast */ /* grouping v, line 74 */
int ret = out_grouping_U(z, g_v, 97, 251, 1); int ret = out_grouping_U(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
{ /* gopast */ /* non v, line 70 */ { /* gopast */ /* non v, line 74 */
int ret = in_grouping_U(z, g_v, 97, 251, 1); int ret = in_grouping_U(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
z->I[1] = z->c; /* setmark p1, line 70 */ z->I[1] = z->c; /* setmark p1, line 74 */
{ /* gopast */ /* grouping v, line 71 */ { /* gopast */ /* grouping v, line 75 */
int ret = out_grouping_U(z, g_v, 97, 251, 1); int ret = out_grouping_U(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
{ /* gopast */ /* non v, line 71 */ { /* gopast */ /* non v, line 75 */
int ret = in_grouping_U(z, g_v, 97, 251, 1); int ret = in_grouping_U(z, g_v, 97, 251, 1);
if (ret < 0) goto lab4; if (ret < 0) goto lab4;
z->c += ret; z->c += ret;
} }
z->I[2] = z->c; /* setmark p2, line 71 */ z->I[2] = z->c; /* setmark p2, line 75 */
lab4: lab4:
z->c = c3; z->c = c3;
} }
...@@ -550,33 +578,48 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */ ...@@ -550,33 +578,48 @@ static int r_mark_regions(struct SN_env * z) { /* forwardmode */
static int r_postlude(struct SN_env * z) { /* forwardmode */ static int r_postlude(struct SN_env * z) { /* forwardmode */
int among_var; int among_var;
while(1) { /* repeat, line 75 */ while(1) { /* repeat, line 79 */
int c1 = z->c; int c1 = z->c;
z->bra = z->c; /* [, line 77 */ z->bra = z->c; /* [, line 81 */
if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652096 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 4; else /* substring, line 77 */ if (z->c >= z->l || z->p[z->c + 0] >> 5 != 2 || !((35652352 >> (z->p[z->c + 0] & 0x1f)) & 1)) among_var = 7; else /* substring, line 81 */
among_var = find_among(z, a_1, 4); among_var = find_among(z, a_1, 7);
if (!(among_var)) goto lab0; if (!(among_var)) goto lab0;
z->ket = z->c; /* ], line 77 */ z->ket = z->c; /* ], line 81 */
switch (among_var) { /* among, line 77 */ switch (among_var) { /* among, line 81 */
case 1: case 1:
{ int ret = slice_from_s(z, 1, s_5); /* <-, line 78 */ { int ret = slice_from_s(z, 1, s_9); /* <-, line 82 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 1, s_6); /* <-, line 79 */ { int ret = slice_from_s(z, 1, s_10); /* <-, line 83 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_from_s(z, 1, s_7); /* <-, line 80 */ { int ret = slice_from_s(z, 1, s_11); /* <-, line 84 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = slice_from_s(z, 2, s_12); /* <-, line 85 */
if (ret < 0) return ret;
}
break;
case 5:
{ int ret = slice_from_s(z, 2, s_13); /* <-, line 86 */
if (ret < 0) return ret;
}
break;
case 6:
{ int ret = slice_del(z); /* delete, line 87 */
if (ret < 0) return ret;
}
break;
case 7:
{ int ret = skip_utf8(z->p, z->c, 0, z->l, 1); { int ret = skip_utf8(z->p, z->c, 0, z->l, 1);
if (ret < 0) goto lab0; if (ret < 0) goto lab0;
z->c = ret; /* next, line 81 */ z->c = ret; /* next, line 88 */
} }
break; break;
} }
...@@ -589,58 +632,58 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */ ...@@ -589,58 +632,58 @@ static int r_postlude(struct SN_env * z) { /* forwardmode */
} }
static int r_RV(struct SN_env * z) { /* backwardmode */ static int r_RV(struct SN_env * z) { /* backwardmode */
if (!(z->I[0] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 87 */ if (!(z->I[0] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 94 */
return 1; return 1;
} }
static int r_R1(struct SN_env * z) { /* backwardmode */ static int r_R1(struct SN_env * z) { /* backwardmode */
if (!(z->I[1] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 88 */ if (!(z->I[1] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 95 */
return 1; return 1;
} }
static int r_R2(struct SN_env * z) { /* backwardmode */ static int r_R2(struct SN_env * z) { /* backwardmode */
if (!(z->I[2] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 89 */ if (!(z->I[2] <= z->c)) return 0; /* $(<integer expression> <= <integer expression>), line 96 */
return 1; return 1;
} }
static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
z->ket = z->c; /* [, line 92 */ z->ket = z->c; /* [, line 99 */
among_var = find_among_b(z, a_4, 43); /* substring, line 92 */ among_var = find_among_b(z, a_4, 43); /* substring, line 99 */
if (!(among_var)) return 0; if (!(among_var)) return 0;
z->bra = z->c; /* ], line 92 */ z->bra = z->c; /* ], line 99 */
switch (among_var) { /* among, line 92 */ switch (among_var) { /* among, line 99 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 96 */ { int ret = r_R2(z); /* call R2, line 103 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 96 */ { int ret = slice_del(z); /* delete, line 103 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = r_R2(z); /* call R2, line 99 */ { int ret = r_R2(z); /* call R2, line 106 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 99 */ { int ret = slice_del(z); /* delete, line 106 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m1 = z->l - z->c; (void)m1; /* try, line 100 */ { int m1 = z->l - z->c; (void)m1; /* try, line 107 */
z->ket = z->c; /* [, line 100 */ z->ket = z->c; /* [, line 107 */
if (!(eq_s_b(z, 2, s_8))) { z->c = z->l - m1; goto lab0; } /* literal, line 100 */ if (!(eq_s_b(z, 2, s_14))) { z->c = z->l - m1; goto lab0; } /* literal, line 107 */
z->bra = z->c; /* ], line 100 */ z->bra = z->c; /* ], line 107 */
{ int m2 = z->l - z->c; (void)m2; /* or, line 100 */ { int m2 = z->l - z->c; (void)m2; /* or, line 107 */
{ int ret = r_R2(z); /* call R2, line 100 */ { int ret = r_R2(z); /* call R2, line 107 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 100 */ { int ret = slice_del(z); /* delete, line 107 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab1; goto lab1;
lab2: lab2:
z->c = z->l - m2; z->c = z->l - m2;
{ int ret = slice_from_s(z, 3, s_9); /* <-, line 100 */ { int ret = slice_from_s(z, 3, s_15); /* <-, line 107 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -650,98 +693,98 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -650,98 +693,98 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 104 */ { int ret = r_R2(z); /* call R2, line 111 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_10); /* <-, line 104 */ { int ret = slice_from_s(z, 3, s_16); /* <-, line 111 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = r_R2(z); /* call R2, line 107 */ { int ret = r_R2(z); /* call R2, line 114 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 1, s_11); /* <-, line 107 */ { int ret = slice_from_s(z, 1, s_17); /* <-, line 114 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 5: case 5:
{ int ret = r_R2(z); /* call R2, line 110 */ { int ret = r_R2(z); /* call R2, line 117 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_12); /* <-, line 110 */ { int ret = slice_from_s(z, 3, s_18); /* <-, line 117 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 6: case 6:
{ int ret = r_RV(z); /* call RV, line 114 */ { int ret = r_RV(z); /* call RV, line 121 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 114 */ { int ret = slice_del(z); /* delete, line 121 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m3 = z->l - z->c; (void)m3; /* try, line 115 */ { int m3 = z->l - z->c; (void)m3; /* try, line 122 */
z->ket = z->c; /* [, line 116 */ z->ket = z->c; /* [, line 123 */
among_var = find_among_b(z, a_2, 6); /* substring, line 116 */ among_var = find_among_b(z, a_2, 6); /* substring, line 123 */
if (!(among_var)) { z->c = z->l - m3; goto lab3; } if (!(among_var)) { z->c = z->l - m3; goto lab3; }
z->bra = z->c; /* ], line 116 */ z->bra = z->c; /* ], line 123 */
switch (among_var) { /* among, line 116 */ switch (among_var) { /* among, line 123 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 117 */ { int ret = r_R2(z); /* call R2, line 124 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 117 */ { int ret = slice_del(z); /* delete, line 124 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->ket = z->c; /* [, line 117 */ z->ket = z->c; /* [, line 124 */
if (!(eq_s_b(z, 2, s_13))) { z->c = z->l - m3; goto lab3; } /* literal, line 117 */ if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m3; goto lab3; } /* literal, line 124 */
z->bra = z->c; /* ], line 117 */ z->bra = z->c; /* ], line 124 */
{ int ret = r_R2(z); /* call R2, line 117 */ { int ret = r_R2(z); /* call R2, line 124 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 117 */ { int ret = slice_del(z); /* delete, line 124 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int m4 = z->l - z->c; (void)m4; /* or, line 118 */ { int m4 = z->l - z->c; (void)m4; /* or, line 125 */
{ int ret = r_R2(z); /* call R2, line 118 */ { int ret = r_R2(z); /* call R2, line 125 */
if (ret == 0) goto lab5; if (ret == 0) goto lab5;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 118 */ { int ret = slice_del(z); /* delete, line 125 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab4; goto lab4;
lab5: lab5:
z->c = z->l - m4; z->c = z->l - m4;
{ int ret = r_R1(z); /* call R1, line 118 */ { int ret = r_R1(z); /* call R1, line 125 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_14); /* <-, line 118 */ { int ret = slice_from_s(z, 3, s_20); /* <-, line 125 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab4: lab4:
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 120 */ { int ret = r_R2(z); /* call R2, line 127 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 120 */ { int ret = slice_del(z); /* delete, line 127 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 4: case 4:
{ int ret = r_RV(z); /* call RV, line 122 */ { int ret = r_RV(z); /* call RV, line 129 */
if (ret == 0) { z->c = z->l - m3; goto lab3; } if (ret == 0) { z->c = z->l - m3; goto lab3; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_from_s(z, 1, s_15); /* <-, line 122 */ { int ret = slice_from_s(z, 1, s_21); /* <-, line 129 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -751,61 +794,61 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -751,61 +794,61 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 7: case 7:
{ int ret = r_R2(z); /* call R2, line 129 */ { int ret = r_R2(z); /* call R2, line 136 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 129 */ { int ret = slice_del(z); /* delete, line 136 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m5 = z->l - z->c; (void)m5; /* try, line 130 */ { int m5 = z->l - z->c; (void)m5; /* try, line 137 */
z->ket = z->c; /* [, line 131 */ z->ket = z->c; /* [, line 138 */
if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; } /* substring, line 131 */ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4198408 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->c = z->l - m5; goto lab6; } /* substring, line 138 */
among_var = find_among_b(z, a_3, 3); among_var = find_among_b(z, a_3, 3);
if (!(among_var)) { z->c = z->l - m5; goto lab6; } if (!(among_var)) { z->c = z->l - m5; goto lab6; }
z->bra = z->c; /* ], line 131 */ z->bra = z->c; /* ], line 138 */
switch (among_var) { /* among, line 131 */ switch (among_var) { /* among, line 138 */
case 1: case 1:
{ int m6 = z->l - z->c; (void)m6; /* or, line 132 */ { int m6 = z->l - z->c; (void)m6; /* or, line 139 */
{ int ret = r_R2(z); /* call R2, line 132 */ { int ret = r_R2(z); /* call R2, line 139 */
if (ret == 0) goto lab8; if (ret == 0) goto lab8;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 132 */ { int ret = slice_del(z); /* delete, line 139 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab7; goto lab7;
lab8: lab8:
z->c = z->l - m6; z->c = z->l - m6;
{ int ret = slice_from_s(z, 3, s_16); /* <-, line 132 */ { int ret = slice_from_s(z, 3, s_22); /* <-, line 139 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab7: lab7:
break; break;
case 2: case 2:
{ int m7 = z->l - z->c; (void)m7; /* or, line 133 */ { int m7 = z->l - z->c; (void)m7; /* or, line 140 */
{ int ret = r_R2(z); /* call R2, line 133 */ { int ret = r_R2(z); /* call R2, line 140 */
if (ret == 0) goto lab10; if (ret == 0) goto lab10;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 133 */ { int ret = slice_del(z); /* delete, line 140 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab9; goto lab9;
lab10: lab10:
z->c = z->l - m7; z->c = z->l - m7;
{ int ret = slice_from_s(z, 3, s_17); /* <-, line 133 */ { int ret = slice_from_s(z, 3, s_23); /* <-, line 140 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab9: lab9:
break; break;
case 3: case 3:
{ int ret = r_R2(z); /* call R2, line 134 */ { int ret = r_R2(z); /* call R2, line 141 */
if (ret == 0) { z->c = z->l - m5; goto lab6; } if (ret == 0) { z->c = z->l - m5; goto lab6; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 134 */ { int ret = slice_del(z); /* delete, line 141 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
...@@ -815,38 +858,38 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -815,38 +858,38 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 8: case 8:
{ int ret = r_R2(z); /* call R2, line 141 */ { int ret = r_R2(z); /* call R2, line 148 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 141 */ { int ret = slice_del(z); /* delete, line 148 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m8 = z->l - z->c; (void)m8; /* try, line 142 */ { int m8 = z->l - z->c; (void)m8; /* try, line 149 */
z->ket = z->c; /* [, line 142 */ z->ket = z->c; /* [, line 149 */
if (!(eq_s_b(z, 2, s_18))) { z->c = z->l - m8; goto lab11; } /* literal, line 142 */ if (!(eq_s_b(z, 2, s_24))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
z->bra = z->c; /* ], line 142 */ z->bra = z->c; /* ], line 149 */
{ int ret = r_R2(z); /* call R2, line 142 */ { int ret = r_R2(z); /* call R2, line 149 */
if (ret == 0) { z->c = z->l - m8; goto lab11; } if (ret == 0) { z->c = z->l - m8; goto lab11; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 142 */ { int ret = slice_del(z); /* delete, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->ket = z->c; /* [, line 142 */ z->ket = z->c; /* [, line 149 */
if (!(eq_s_b(z, 2, s_19))) { z->c = z->l - m8; goto lab11; } /* literal, line 142 */ if (!(eq_s_b(z, 2, s_25))) { z->c = z->l - m8; goto lab11; } /* literal, line 149 */
z->bra = z->c; /* ], line 142 */ z->bra = z->c; /* ], line 149 */
{ int m9 = z->l - z->c; (void)m9; /* or, line 142 */ { int m9 = z->l - z->c; (void)m9; /* or, line 149 */
{ int ret = r_R2(z); /* call R2, line 142 */ { int ret = r_R2(z); /* call R2, line 149 */
if (ret == 0) goto lab13; if (ret == 0) goto lab13;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 142 */ { int ret = slice_del(z); /* delete, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab12; goto lab12;
lab13: lab13:
z->c = z->l - m9; z->c = z->l - m9;
{ int ret = slice_from_s(z, 3, s_20); /* <-, line 142 */ { int ret = slice_from_s(z, 3, s_26); /* <-, line 149 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -856,78 +899,78 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -856,78 +899,78 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
} }
break; break;
case 9: case 9:
{ int ret = slice_from_s(z, 3, s_21); /* <-, line 144 */ { int ret = slice_from_s(z, 3, s_27); /* <-, line 151 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 10: case 10:
{ int ret = r_R1(z); /* call R1, line 145 */ { int ret = r_R1(z); /* call R1, line 152 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 2, s_22); /* <-, line 145 */ { int ret = slice_from_s(z, 2, s_28); /* <-, line 152 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 11: case 11:
{ int m10 = z->l - z->c; (void)m10; /* or, line 147 */ { int m10 = z->l - z->c; (void)m10; /* or, line 154 */
{ int ret = r_R2(z); /* call R2, line 147 */ { int ret = r_R2(z); /* call R2, line 154 */
if (ret == 0) goto lab15; if (ret == 0) goto lab15;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 147 */ { int ret = slice_del(z); /* delete, line 154 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab14; goto lab14;
lab15: lab15:
z->c = z->l - m10; z->c = z->l - m10;
{ int ret = r_R1(z); /* call R1, line 147 */ { int ret = r_R1(z); /* call R1, line 154 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_23); /* <-, line 147 */ { int ret = slice_from_s(z, 3, s_29); /* <-, line 154 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab14: lab14:
break; break;
case 12: case 12:
{ int ret = r_R1(z); /* call R1, line 150 */ { int ret = r_R1(z); /* call R1, line 157 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
if (out_grouping_b_U(z, g_v, 97, 251, 0)) return 0; /* non v, line 150 */ if (out_grouping_b_U(z, g_v, 97, 251, 0)) return 0; /* non v, line 157 */
{ int ret = slice_del(z); /* delete, line 150 */ { int ret = slice_del(z); /* delete, line 157 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 13: case 13:
{ int ret = r_RV(z); /* call RV, line 155 */ { int ret = r_RV(z); /* call RV, line 162 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_24); /* <-, line 155 */ { int ret = slice_from_s(z, 3, s_30); /* <-, line 162 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 155 */ return 0; /* fail, line 162 */
break; break;
case 14: case 14:
{ int ret = r_RV(z); /* call RV, line 156 */ { int ret = r_RV(z); /* call RV, line 163 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
{ int ret = slice_from_s(z, 3, s_25); /* <-, line 156 */ { int ret = slice_from_s(z, 3, s_31); /* <-, line 163 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 156 */ return 0; /* fail, line 163 */
break; break;
case 15: case 15:
{ int m_test11 = z->l - z->c; /* test, line 158 */ { int m_test11 = z->l - z->c; /* test, line 165 */
if (in_grouping_b_U(z, g_v, 97, 251, 0)) return 0; /* grouping v, line 158 */ if (in_grouping_b_U(z, g_v, 97, 251, 0)) return 0; /* grouping v, line 165 */
{ int ret = r_RV(z); /* call RV, line 158 */ { int ret = r_RV(z); /* call RV, line 165 */
if (ret <= 0) return ret; if (ret <= 0) return ret;
} }
z->c = z->l - m_test11; z->c = z->l - m_test11;
} }
{ int ret = slice_del(z); /* delete, line 158 */ { int ret = slice_del(z); /* delete, line 165 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 0; /* fail, line 158 */ return 0; /* fail, line 165 */
break; break;
} }
return 1; return 1;
...@@ -935,15 +978,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -935,15 +978,22 @@ static int r_standard_suffix(struct SN_env * z) { /* backwardmode */
static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
{ int mlimit1; /* setlimit, line 163 */ { int mlimit1; /* setlimit, line 170 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 164 */ z->ket = z->c; /* [, line 171 */
if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 164 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((68944418 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; } /* substring, line 171 */
if (!(find_among_b(z, a_5, 35))) { z->lb = mlimit1; return 0; } if (!(find_among_b(z, a_5, 35))) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 164 */ z->bra = z->c; /* ], line 171 */
if (out_grouping_b_U(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; } /* non v, line 170 */ { int m2 = z->l - z->c; (void)m2; /* not, line 177 */
{ int ret = slice_del(z); /* delete, line 170 */ if (z->c <= z->lb || z->p[z->c - 1] != 'H') goto lab0; /* literal, line 177 */
z->c--;
{ z->lb = mlimit1; return 0; }
lab0:
z->c = z->l - m2;
}
if (out_grouping_b_U(z, g_v, 97, 251, 0)) { z->lb = mlimit1; return 0; } /* non v, line 177 */
{ int ret = slice_del(z); /* delete, line 177 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
z->lb = mlimit1; z->lb = mlimit1;
...@@ -954,38 +1004,38 @@ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -954,38 +1004,38 @@ static int r_i_verb_suffix(struct SN_env * z) { /* backwardmode */
static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int mlimit1; /* setlimit, line 174 */ { int mlimit1; /* setlimit, line 181 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit1 = z->lb; z->lb = z->I[0]; mlimit1 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 175 */ z->ket = z->c; /* [, line 182 */
among_var = find_among_b(z, a_6, 38); /* substring, line 175 */ among_var = find_among_b(z, a_6, 38); /* substring, line 182 */
if (!(among_var)) { z->lb = mlimit1; return 0; } if (!(among_var)) { z->lb = mlimit1; return 0; }
z->bra = z->c; /* ], line 175 */ z->bra = z->c; /* ], line 182 */
switch (among_var) { /* among, line 175 */ switch (among_var) { /* among, line 182 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 177 */ { int ret = r_R2(z); /* call R2, line 184 */
if (ret == 0) { z->lb = mlimit1; return 0; } if (ret == 0) { z->lb = mlimit1; return 0; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int ret = slice_del(z); /* delete, line 177 */ { int ret = slice_del(z); /* delete, line 184 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_del(z); /* delete, line 185 */ { int ret = slice_del(z); /* delete, line 192 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_del(z); /* delete, line 190 */ { int ret = slice_del(z); /* delete, line 197 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m2 = z->l - z->c; (void)m2; /* try, line 191 */ { int m2 = z->l - z->c; (void)m2; /* try, line 198 */
z->ket = z->c; /* [, line 191 */ z->ket = z->c; /* [, line 198 */
if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; } /* literal, line 191 */ if (z->c <= z->lb || z->p[z->c - 1] != 'e') { z->c = z->l - m2; goto lab0; } /* literal, line 198 */
z->c--; z->c--;
z->bra = z->c; /* ], line 191 */ z->bra = z->c; /* ], line 198 */
{ int ret = slice_del(z); /* delete, line 191 */ { int ret = slice_del(z); /* delete, line 198 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
...@@ -1000,84 +1050,86 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */ ...@@ -1000,84 +1050,86 @@ static int r_verb_suffix(struct SN_env * z) { /* backwardmode */
static int r_residual_suffix(struct SN_env * z) { /* backwardmode */ static int r_residual_suffix(struct SN_env * z) { /* backwardmode */
int among_var; int among_var;
{ int m1 = z->l - z->c; (void)m1; /* try, line 199 */ { int m1 = z->l - z->c; (void)m1; /* try, line 206 */
z->ket = z->c; /* [, line 199 */ z->ket = z->c; /* [, line 206 */
if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; } /* literal, line 199 */ if (z->c <= z->lb || z->p[z->c - 1] != 's') { z->c = z->l - m1; goto lab0; } /* literal, line 206 */
z->c--; z->c--;
z->bra = z->c; /* ], line 199 */ z->bra = z->c; /* ], line 206 */
{ int m_test2 = z->l - z->c; /* test, line 199 */ { int m_test2 = z->l - z->c; /* test, line 206 */
if (out_grouping_b_U(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; } /* non keep_with_s, line 199 */ { int m3 = z->l - z->c; (void)m3; /* or, line 206 */
if (!(eq_s_b(z, 2, s_32))) goto lab2; /* literal, line 206 */
goto lab1;
lab2:
z->c = z->l - m3;
if (out_grouping_b_U(z, g_keep_with_s, 97, 232, 0)) { z->c = z->l - m1; goto lab0; } /* non keep_with_s, line 206 */
}
lab1:
z->c = z->l - m_test2; z->c = z->l - m_test2;
} }
{ int ret = slice_del(z); /* delete, line 199 */ { int ret = slice_del(z); /* delete, line 206 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
; ;
} }
{ int mlimit3; /* setlimit, line 200 */ { int mlimit4; /* setlimit, line 207 */
if (z->c < z->I[0]) return 0; if (z->c < z->I[0]) return 0;
mlimit3 = z->lb; z->lb = z->I[0]; mlimit4 = z->lb; z->lb = z->I[0];
z->ket = z->c; /* [, line 201 */ z->ket = z->c; /* [, line 208 */
among_var = find_among_b(z, a_7, 7); /* substring, line 201 */ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((278560 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit4; return 0; } /* substring, line 208 */
if (!(among_var)) { z->lb = mlimit3; return 0; } among_var = find_among_b(z, a_7, 6);
z->bra = z->c; /* ], line 201 */ if (!(among_var)) { z->lb = mlimit4; return 0; }
switch (among_var) { /* among, line 201 */ z->bra = z->c; /* ], line 208 */
switch (among_var) { /* among, line 208 */
case 1: case 1:
{ int ret = r_R2(z); /* call R2, line 202 */ { int ret = r_R2(z); /* call R2, line 209 */
if (ret == 0) { z->lb = mlimit3; return 0; } if (ret == 0) { z->lb = mlimit4; return 0; }
if (ret < 0) return ret; if (ret < 0) return ret;
} }
{ int m4 = z->l - z->c; (void)m4; /* or, line 202 */ { int m5 = z->l - z->c; (void)m5; /* or, line 209 */
if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab2; /* literal, line 202 */ if (z->c <= z->lb || z->p[z->c - 1] != 's') goto lab4; /* literal, line 209 */
z->c--; z->c--;
goto lab1; goto lab3;
lab2: lab4:
z->c = z->l - m4; z->c = z->l - m5;
if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit3; return 0; } /* literal, line 202 */ if (z->c <= z->lb || z->p[z->c - 1] != 't') { z->lb = mlimit4; return 0; } /* literal, line 209 */
z->c--; z->c--;
} }
lab1: lab3:
{ int ret = slice_del(z); /* delete, line 202 */ { int ret = slice_del(z); /* delete, line 209 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 2: case 2:
{ int ret = slice_from_s(z, 1, s_26); /* <-, line 204 */ { int ret = slice_from_s(z, 1, s_33); /* <-, line 211 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
case 3: case 3:
{ int ret = slice_del(z); /* delete, line 205 */ { int ret = slice_del(z); /* delete, line 212 */
if (ret < 0) return ret;
}
break;
case 4:
if (!(eq_s_b(z, 2, s_27))) { z->lb = mlimit3; return 0; } /* literal, line 206 */
{ int ret = slice_del(z); /* delete, line 206 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
break; break;
} }
z->lb = mlimit3; z->lb = mlimit4;
} }
return 1; return 1;
} }
static int r_un_double(struct SN_env * z) { /* backwardmode */ static int r_un_double(struct SN_env * z) { /* backwardmode */
{ int m_test1 = z->l - z->c; /* test, line 212 */ { int m_test1 = z->l - z->c; /* test, line 218 */
if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 212 */ if (z->c - 2 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1069056 >> (z->p[z->c - 1] & 0x1f)) & 1)) return 0; /* among, line 218 */
if (!(find_among_b(z, a_8, 5))) return 0; if (!(find_among_b(z, a_8, 5))) return 0;
z->c = z->l - m_test1; z->c = z->l - m_test1;
} }
z->ket = z->c; /* [, line 212 */ z->ket = z->c; /* [, line 218 */
{ int ret = skip_utf8(z->p, z->c, z->lb, 0, -1); { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
if (ret < 0) return 0; if (ret < 0) return 0;
z->c = ret; /* next, line 212 */ z->c = ret; /* next, line 218 */
} }
z->bra = z->c; /* ], line 212 */ z->bra = z->c; /* ], line 218 */
{ int ret = slice_del(z); /* delete, line 212 */ { int ret = slice_del(z); /* delete, line 218 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
...@@ -1085,8 +1137,8 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */ ...@@ -1085,8 +1137,8 @@ static int r_un_double(struct SN_env * z) { /* backwardmode */
static int r_un_accent(struct SN_env * z) { /* backwardmode */ static int r_un_accent(struct SN_env * z) { /* backwardmode */
{ int i = 1; { int i = 1;
while(1) { /* atleast, line 216 */ while(1) { /* atleast, line 222 */
if (out_grouping_b_U(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 216 */ if (out_grouping_b_U(z, g_v, 97, 251, 0)) goto lab0; /* non v, line 222 */
i--; i--;
continue; continue;
lab0: lab0:
...@@ -1094,79 +1146,79 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */ ...@@ -1094,79 +1146,79 @@ static int r_un_accent(struct SN_env * z) { /* backwardmode */
} }
if (i > 0) return 0; if (i > 0) return 0;
} }
z->ket = z->c; /* [, line 217 */ z->ket = z->c; /* [, line 223 */
{ int m1 = z->l - z->c; (void)m1; /* or, line 217 */ { int m1 = z->l - z->c; (void)m1; /* or, line 223 */
if (!(eq_s_b(z, 2, s_28))) goto lab2; /* literal, line 217 */ if (!(eq_s_b(z, 2, s_34))) goto lab2; /* literal, line 223 */
goto lab1; goto lab1;
lab2: lab2:
z->c = z->l - m1; z->c = z->l - m1;
if (!(eq_s_b(z, 2, s_29))) return 0; /* literal, line 217 */ if (!(eq_s_b(z, 2, s_35))) return 0; /* literal, line 223 */
} }
lab1: lab1:
z->bra = z->c; /* ], line 217 */ z->bra = z->c; /* ], line 223 */
{ int ret = slice_from_s(z, 1, s_30); /* <-, line 217 */ { int ret = slice_from_s(z, 1, s_36); /* <-, line 223 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
return 1; return 1;
} }
extern int french_UTF_8_stem(struct SN_env * z) { /* forwardmode */ extern int french_UTF_8_stem(struct SN_env * z) { /* forwardmode */
{ int c1 = z->c; /* do, line 223 */ { int c1 = z->c; /* do, line 229 */
{ int ret = r_prelude(z); /* call prelude, line 223 */ { int ret = r_prelude(z); /* call prelude, line 229 */
if (ret == 0) goto lab0; if (ret == 0) goto lab0;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab0: lab0:
z->c = c1; z->c = c1;
} }
/* do, line 224 */ /* do, line 230 */
{ int ret = r_mark_regions(z); /* call mark_regions, line 224 */ { int ret = r_mark_regions(z); /* call mark_regions, line 230 */
if (ret == 0) goto lab1; if (ret == 0) goto lab1;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab1: lab1:
z->lb = z->c; z->c = z->l; /* backwards, line 225 */ z->lb = z->c; z->c = z->l; /* backwards, line 231 */
{ int m2 = z->l - z->c; (void)m2; /* do, line 227 */ { int m2 = z->l - z->c; (void)m2; /* do, line 233 */
{ int m3 = z->l - z->c; (void)m3; /* or, line 237 */ { int m3 = z->l - z->c; (void)m3; /* or, line 243 */
{ int m4 = z->l - z->c; (void)m4; /* and, line 233 */ { int m4 = z->l - z->c; (void)m4; /* and, line 239 */
{ int m5 = z->l - z->c; (void)m5; /* or, line 229 */ { int m5 = z->l - z->c; (void)m5; /* or, line 235 */
{ int ret = r_standard_suffix(z); /* call standard_suffix, line 229 */ { int ret = r_standard_suffix(z); /* call standard_suffix, line 235 */
if (ret == 0) goto lab6; if (ret == 0) goto lab6;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab5; goto lab5;
lab6: lab6:
z->c = z->l - m5; z->c = z->l - m5;
{ int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 230 */ { int ret = r_i_verb_suffix(z); /* call i_verb_suffix, line 236 */
if (ret == 0) goto lab7; if (ret == 0) goto lab7;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab5; goto lab5;
lab7: lab7:
z->c = z->l - m5; z->c = z->l - m5;
{ int ret = r_verb_suffix(z); /* call verb_suffix, line 231 */ { int ret = r_verb_suffix(z); /* call verb_suffix, line 237 */
if (ret == 0) goto lab4; if (ret == 0) goto lab4;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
lab5: lab5:
z->c = z->l - m4; z->c = z->l - m4;
{ int m6 = z->l - z->c; (void)m6; /* try, line 234 */ { int m6 = z->l - z->c; (void)m6; /* try, line 240 */
z->ket = z->c; /* [, line 234 */ z->ket = z->c; /* [, line 240 */
{ int m7 = z->l - z->c; (void)m7; /* or, line 234 */ { int m7 = z->l - z->c; (void)m7; /* or, line 240 */
if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 234 */ if (z->c <= z->lb || z->p[z->c - 1] != 'Y') goto lab10; /* literal, line 240 */
z->c--; z->c--;
z->bra = z->c; /* ], line 234 */ z->bra = z->c; /* ], line 240 */
{ int ret = slice_from_s(z, 1, s_31); /* <-, line 234 */ { int ret = slice_from_s(z, 1, s_37); /* <-, line 240 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
goto lab9; goto lab9;
lab10: lab10:
z->c = z->l - m7; z->c = z->l - m7;
if (!(eq_s_b(z, 2, s_32))) { z->c = z->l - m6; goto lab8; } /* literal, line 235 */ if (!(eq_s_b(z, 2, s_38))) { z->c = z->l - m6; goto lab8; } /* literal, line 241 */
z->bra = z->c; /* ], line 235 */ z->bra = z->c; /* ], line 241 */
{ int ret = slice_from_s(z, 1, s_33); /* <-, line 235 */ { int ret = slice_from_s(z, 1, s_39); /* <-, line 241 */
if (ret < 0) return ret; if (ret < 0) return ret;
} }
} }
...@@ -1178,7 +1230,7 @@ lab1: ...@@ -1178,7 +1230,7 @@ lab1:
goto lab3; goto lab3;
lab4: lab4:
z->c = z->l - m3; z->c = z->l - m3;
{ int ret = r_residual_suffix(z); /* call residual_suffix, line 238 */ { int ret = r_residual_suffix(z); /* call residual_suffix, line 244 */
if (ret == 0) goto lab2; if (ret == 0) goto lab2;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -1187,16 +1239,16 @@ lab1: ...@@ -1187,16 +1239,16 @@ lab1:
lab2: lab2:
z->c = z->l - m2; z->c = z->l - m2;
} }
{ int m8 = z->l - z->c; (void)m8; /* do, line 243 */ { int m8 = z->l - z->c; (void)m8; /* do, line 249 */
{ int ret = r_un_double(z); /* call un_double, line 243 */ { int ret = r_un_double(z); /* call un_double, line 249 */
if (ret == 0) goto lab11; if (ret == 0) goto lab11;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
lab11: lab11:
z->c = z->l - m8; z->c = z->l - m8;
} }
{ int m9 = z->l - z->c; (void)m9; /* do, line 244 */ { int m9 = z->l - z->c; (void)m9; /* do, line 250 */
{ int ret = r_un_accent(z); /* call un_accent, line 244 */ { int ret = r_un_accent(z); /* call un_accent, line 250 */
if (ret == 0) goto lab12; if (ret == 0) goto lab12;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
...@@ -1204,8 +1256,8 @@ lab1: ...@@ -1204,8 +1256,8 @@ lab1:
z->c = z->l - m9; z->c = z->l - m9;
} }
z->c = z->lb; z->c = z->lb;
{ int c10 = z->c; /* do, line 246 */ { int c10 = z->c; /* do, line 252 */
{ int ret = r_postlude(z); /* call postlude, line 246 */ { int ret = r_postlude(z); /* call postlude, line 252 */
if (ret == 0) goto lab13; if (ret == 0) goto lab13;
if (ret < 0) return ret; if (ret < 0) return ret;
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -59,31 +59,49 @@ extern int skip_utf8(const symbol * p, int c, int lb, int l, int n) { ...@@ -59,31 +59,49 @@ extern int skip_utf8(const symbol * p, int c, int lb, int l, int n) {
/* Code for character groupings: utf8 cases */ /* Code for character groupings: utf8 cases */
static int get_utf8(const symbol * p, int c, int l, int * slot) { static int get_utf8(const symbol * p, int c, int l, int * slot) {
int b0, b1; int b0, b1, b2;
if (c >= l) return 0; if (c >= l) return 0;
b0 = p[c++]; b0 = p[c++];
if (b0 < 0xC0 || c == l) { /* 1100 0000 */ if (b0 < 0xC0 || c == l) { /* 1100 0000 */
* slot = b0; return 1; *slot = b0;
return 1;
} }
b1 = p[c++]; b1 = p[c++] & 0x3F;
if (b0 < 0xE0 || c == l) { /* 1110 0000 */ if (b0 < 0xE0 || c == l) { /* 1110 0000 */
* slot = (b0 & 0x1F) << 6 | (b1 & 0x3F); return 2; *slot = (b0 & 0x1F) << 6 | b1;
return 2;
} }
* slot = (b0 & 0xF) << 12 | (b1 & 0x3F) << 6 | (p[c] & 0x3F); return 3; b2 = p[c++] & 0x3F;
if (b0 < 0xF0 || c == l) { /* 1111 0000 */
*slot = (b0 & 0xF) << 12 | b1 << 6 | b2;
return 3;
}
*slot = (b0 & 0xE) << 18 | b1 << 12 | b2 << 6 | (p[c] & 0x3F);
return 4;
} }
static int get_b_utf8(const symbol * p, int c, int lb, int * slot) { static int get_b_utf8(const symbol * p, int c, int lb, int * slot) {
int b0, b1; int a, b;
if (c <= lb) return 0; if (c <= lb) return 0;
b0 = p[--c]; b = p[--c];
if (b0 < 0x80 || c == lb) { /* 1000 0000 */ if (b < 0x80 || c == lb) { /* 1000 0000 */
* slot = b0; return 1; *slot = b;
return 1;
}
a = b & 0x3F;
b = p[--c];
if (b >= 0xC0 || c == lb) { /* 1100 0000 */
*slot = (b & 0x1F) << 6 | a;
return 2;
} }
b1 = p[--c]; a |= (b & 0x3F) << 6;
if (b1 >= 0xC0 || c == lb) { /* 1100 0000 */ b = p[--c];
* slot = (b1 & 0x1F) << 6 | (b0 & 0x3F); return 2; if (b >= 0xE0 || c == lb) { /* 1110 0000 */
*slot = (b & 0xF) << 12 | a;
return 3;
} }
* slot = (p[--c] & 0xF) << 12 | (b1 & 0x3F) << 6 | (b0 & 0x3F); return 3; *slot = (p[--c] & 0xE) << 18 | (b & 0x3F) << 12 | a;
return 4;
} }
extern int in_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) { extern int in_grouping_U(struct SN_env * z, const unsigned char * s, int min, int max, int repeat) {
...@@ -230,8 +248,13 @@ extern int find_among(struct SN_env * z, const struct among * v, int v_size) { ...@@ -230,8 +248,13 @@ extern int find_among(struct SN_env * z, const struct among * v, int v_size) {
common++; common++;
} }
} }
if (diff < 0) { j = k; common_j = common; } if (diff < 0) {
else { i = k; common_i = common; } j = k;
common_j = common;
} else {
i = k;
common_i = common;
}
if (j - i <= 1) { if (j - i <= 1) {
if (i > 0) break; /* v->s has been inspected */ if (i > 0) break; /* v->s has been inspected */
if (j == i) break; /* only one item in v */ if (j == i) break; /* only one item in v */
...@@ -360,9 +383,8 @@ extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const ...@@ -360,9 +383,8 @@ extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const
z->l += adjustment; z->l += adjustment;
if (z->c >= c_ket) if (z->c >= c_ket)
z->c += adjustment; z->c += adjustment;
else else if (z->c > c_bra)
if (z->c > c_bra) z->c = c_bra;
z->c = c_bra;
} }
if (s_size) memmove(z->p + c_bra, s, s_size * sizeof(symbol)); if (s_size) memmove(z->p + c_bra, s, s_size * sizeof(symbol));
if (adjptr != NULL) if (adjptr != NULL)
......
...@@ -716,6 +716,8 @@ static const struct tsearch_config_match tsearch_config_languages[] = ...@@ -716,6 +716,8 @@ static const struct tsearch_config_match tsearch_config_languages[] =
{"french", "French"}, {"french", "French"},
{"german", "de"}, {"german", "de"},
{"german", "German"}, {"german", "German"},
{"greek", "el"},
{"greek", "Greek"},
{"hungarian", "hu"}, {"hungarian", "hu"},
{"hungarian", "Hungarian"}, {"hungarian", "Hungarian"},
{"indonesian", "id"}, {"indonesian", "id"},
......
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 201906161 #define CATALOG_VERSION_NO 201907041
#endif #endif
...@@ -19,8 +19,15 @@ struct SN_env { ...@@ -19,8 +19,15 @@ struct SN_env {
unsigned char * B; unsigned char * B;
}; };
#ifdef __cplusplus
extern "C" {
#endif
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, int S_size); extern void SN_close_env(struct SN_env * z, int S_size);
extern int SN_set_current(struct SN_env * z, int size, const symbol * s); extern int SN_set_current(struct SN_env * z, int size, const symbol * s);
#ifdef __cplusplus
}
#endif
/* This file was generated automatically by the Snowball to ISO C compiler */
/* http://snowballstem.org/ */
#ifdef __cplusplus
extern "C" {
#endif
extern struct SN_env * greek_UTF_8_create_env(void);
extern void greek_UTF_8_close_env(struct SN_env * z);
extern int greek_UTF_8_stem(struct SN_env * z);
#ifdef __cplusplus
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment