isomorfeus-ferret 0.12.4 → 0.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +612 -612
  3. data/README.md +80 -48
  4. data/ext/isomorfeus_ferret_ext/bm_hash.c +9 -6
  5. data/ext/isomorfeus_ferret_ext/bm_micro_string.c +4 -2
  6. data/ext/isomorfeus_ferret_ext/frb_store.c +34 -5
  7. data/ext/isomorfeus_ferret_ext/frt_posh.h +11 -19
  8. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +1844 -1911
  9. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +7 -7
  10. data/ext/isomorfeus_ferret_ext/frt_scanner.c +1 -0
  11. data/ext/isomorfeus_ferret_ext/frt_scanner_mb.c +1 -0
  12. data/ext/isomorfeus_ferret_ext/frt_scanner_utf8.c +1 -0
  13. data/ext/isomorfeus_ferret_ext/frt_search.h +1 -1
  14. data/ext/isomorfeus_ferret_ext/libstemmer.c +14 -11
  15. data/ext/isomorfeus_ferret_ext/libstemmer.h +4 -9
  16. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_basque.c +1167 -0
  17. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_basque.h +6 -0
  18. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_catalan.c +1433 -0
  19. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_catalan.h +6 -0
  20. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_danish.c +120 -143
  21. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_danish.h +1 -2
  22. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_dutch.c +217 -237
  23. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_dutch.h +1 -1
  24. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_english.c +377 -432
  25. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_english.h +1 -1
  26. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_finnish.c +298 -342
  27. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_finnish.h +1 -2
  28. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_french.c +530 -524
  29. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_french.h +1 -1
  30. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_german.c +201 -214
  31. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_german.h +1 -1
  32. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_hungarian.c +1 -1
  33. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_indonesian.c +394 -0
  34. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_indonesian.h +6 -0
  35. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_irish.c +457 -0
  36. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_irish.h +6 -0
  37. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_italian.c +396 -439
  38. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_italian.h +1 -1
  39. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_norwegian.c +104 -128
  40. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_norwegian.h +1 -1
  41. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_porter.c +242 -273
  42. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_porter.h +1 -1
  43. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_portuguese.c +406 -461
  44. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_portuguese.h +1 -2
  45. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_spanish.c +405 -456
  46. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_spanish.h +1 -1
  47. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_swedish.c +108 -126
  48. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_swedish.h +1 -1
  49. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_hungarian.c +849 -0
  50. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_hungarian.h +6 -0
  51. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_romanian.c +373 -405
  52. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_romanian.h +1 -1
  53. data/ext/isomorfeus_ferret_ext/stem_KOI8_R_russian.c +288 -305
  54. data/ext/isomorfeus_ferret_ext/stem_KOI8_R_russian.h +1 -1
  55. data/ext/isomorfeus_ferret_ext/stem_UTF_8_arabic.c +1651 -0
  56. data/ext/isomorfeus_ferret_ext/stem_UTF_8_arabic.h +6 -0
  57. data/ext/isomorfeus_ferret_ext/stem_UTF_8_armenian.c +546 -0
  58. data/ext/isomorfeus_ferret_ext/stem_UTF_8_armenian.h +6 -0
  59. data/ext/isomorfeus_ferret_ext/stem_UTF_8_basque.c +1171 -0
  60. data/ext/isomorfeus_ferret_ext/stem_UTF_8_basque.h +6 -0
  61. data/ext/isomorfeus_ferret_ext/stem_UTF_8_catalan.c +1436 -0
  62. data/ext/isomorfeus_ferret_ext/stem_UTF_8_catalan.h +6 -0
  63. data/ext/isomorfeus_ferret_ext/stem_UTF_8_danish.c +121 -141
  64. data/ext/isomorfeus_ferret_ext/stem_UTF_8_danish.h +1 -1
  65. data/ext/isomorfeus_ferret_ext/stem_UTF_8_dutch.c +221 -241
  66. data/ext/isomorfeus_ferret_ext/stem_UTF_8_dutch.h +1 -1
  67. data/ext/isomorfeus_ferret_ext/stem_UTF_8_english.c +381 -431
  68. data/ext/isomorfeus_ferret_ext/stem_UTF_8_english.h +1 -1
  69. data/ext/isomorfeus_ferret_ext/stem_UTF_8_finnish.c +300 -345
  70. data/ext/isomorfeus_ferret_ext/stem_UTF_8_finnish.h +1 -1
  71. data/ext/isomorfeus_ferret_ext/stem_UTF_8_french.c +518 -511
  72. data/ext/isomorfeus_ferret_ext/stem_UTF_8_french.h +1 -1
  73. data/ext/isomorfeus_ferret_ext/stem_UTF_8_german.c +201 -209
  74. data/ext/isomorfeus_ferret_ext/stem_UTF_8_german.h +1 -1
  75. data/ext/isomorfeus_ferret_ext/stem_UTF_8_greek.c +3660 -0
  76. data/ext/isomorfeus_ferret_ext/stem_UTF_8_greek.h +6 -0
  77. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hindi.c +309 -0
  78. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hindi.h +6 -0
  79. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hungarian.c +306 -671
  80. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hungarian.h +1 -1
  81. data/ext/isomorfeus_ferret_ext/stem_UTF_8_indonesian.c +394 -0
  82. data/ext/isomorfeus_ferret_ext/stem_UTF_8_indonesian.h +6 -0
  83. data/ext/isomorfeus_ferret_ext/stem_UTF_8_irish.c +457 -0
  84. data/ext/isomorfeus_ferret_ext/stem_UTF_8_irish.h +6 -0
  85. data/ext/isomorfeus_ferret_ext/stem_UTF_8_italian.c +400 -442
  86. data/ext/isomorfeus_ferret_ext/stem_UTF_8_italian.h +1 -1
  87. data/ext/isomorfeus_ferret_ext/stem_UTF_8_lithuanian.c +824 -0
  88. data/ext/isomorfeus_ferret_ext/stem_UTF_8_lithuanian.h +6 -0
  89. data/ext/isomorfeus_ferret_ext/stem_UTF_8_nepali.c +408 -0
  90. data/ext/isomorfeus_ferret_ext/stem_UTF_8_nepali.h +6 -0
  91. data/ext/isomorfeus_ferret_ext/stem_UTF_8_norwegian.c +105 -127
  92. data/ext/isomorfeus_ferret_ext/stem_UTF_8_norwegian.h +1 -1
  93. data/ext/isomorfeus_ferret_ext/stem_UTF_8_porter.c +245 -276
  94. data/ext/isomorfeus_ferret_ext/stem_UTF_8_porter.h +1 -1
  95. data/ext/isomorfeus_ferret_ext/stem_UTF_8_portuguese.c +409 -464
  96. data/ext/isomorfeus_ferret_ext/stem_UTF_8_portuguese.h +1 -1
  97. data/ext/isomorfeus_ferret_ext/stem_UTF_8_romanian.c +376 -408
  98. data/ext/isomorfeus_ferret_ext/stem_UTF_8_romanian.h +1 -1
  99. data/ext/isomorfeus_ferret_ext/stem_UTF_8_russian.c +272 -287
  100. data/ext/isomorfeus_ferret_ext/stem_UTF_8_russian.h +1 -1
  101. data/ext/isomorfeus_ferret_ext/stem_UTF_8_serbian.c +6530 -0
  102. data/ext/isomorfeus_ferret_ext/stem_UTF_8_serbian.h +6 -0
  103. data/ext/isomorfeus_ferret_ext/stem_UTF_8_spanish.c +407 -458
  104. data/ext/isomorfeus_ferret_ext/stem_UTF_8_spanish.h +1 -1
  105. data/ext/isomorfeus_ferret_ext/stem_UTF_8_swedish.c +110 -125
  106. data/ext/isomorfeus_ferret_ext/stem_UTF_8_swedish.h +1 -1
  107. data/ext/isomorfeus_ferret_ext/stem_UTF_8_tamil.c +1865 -0
  108. data/ext/isomorfeus_ferret_ext/stem_UTF_8_tamil.h +6 -0
  109. data/ext/isomorfeus_ferret_ext/stem_UTF_8_turkish.c +698 -806
  110. data/ext/isomorfeus_ferret_ext/stem_UTF_8_turkish.h +1 -1
  111. data/ext/isomorfeus_ferret_ext/stem_UTF_8_yiddish.c +1220 -0
  112. data/ext/isomorfeus_ferret_ext/stem_UTF_8_yiddish.h +6 -0
  113. data/ext/isomorfeus_ferret_ext/stem_api.c +1 -9
  114. data/ext/isomorfeus_ferret_ext/stem_api.h +1 -3
  115. data/ext/isomorfeus_ferret_ext/stem_header.h +30 -26
  116. data/ext/isomorfeus_ferret_ext/stem_modules.h +113 -26
  117. data/ext/isomorfeus_ferret_ext/stem_modules.txt +18 -5
  118. data/ext/isomorfeus_ferret_ext/stem_utilities.c +167 -132
  119. data/ext/isomorfeus_ferret_ext/test.c +7 -1
  120. data/ext/isomorfeus_ferret_ext/test_search.c +0 -1
  121. data/lib/isomorfeus/ferret/version.rb +1 -1
  122. metadata +39 -4
  123. data/ext/isomorfeus_ferret_ext/q_parser.y +0 -1366
@@ -1,4 +1,4 @@
1
- /* This file was generated automatically by the Snowball to ANSI C compiler */
1
+ /* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
2
2
 
3
3
  #include "stem_header.h"
4
4
 
@@ -44,35 +44,35 @@ static const symbol s_0_28[3] = { 'a', 's', 't' };
44
44
 
45
45
  static const struct among a_0[29] =
46
46
  {
47
- /* 0 */ { 1, s_0_0, -1, 1, 0},
48
- /* 1 */ { 1, s_0_1, -1, 1, 0},
49
- /* 2 */ { 3, s_0_2, 1, 1, 0},
50
- /* 3 */ { 4, s_0_3, 1, 1, 0},
51
- /* 4 */ { 4, s_0_4, 1, 1, 0},
52
- /* 5 */ { 3, s_0_5, 1, 1, 0},
53
- /* 6 */ { 3, s_0_6, 1, 1, 0},
54
- /* 7 */ { 6, s_0_7, 6, 1, 0},
55
- /* 8 */ { 4, s_0_8, 1, 3, 0},
56
- /* 9 */ { 2, s_0_9, -1, 1, 0},
57
- /* 10 */ { 5, s_0_10, 9, 1, 0},
58
- /* 11 */ { 2, s_0_11, -1, 1, 0},
59
- /* 12 */ { 2, s_0_12, -1, 1, 0},
60
- /* 13 */ { 5, s_0_13, 12, 1, 0},
61
- /* 14 */ { 1, s_0_14, -1, 2, 0},
62
- /* 15 */ { 2, s_0_15, 14, 1, 0},
63
- /* 16 */ { 2, s_0_16, 14, 1, 0},
64
- /* 17 */ { 4, s_0_17, 16, 1, 0},
65
- /* 18 */ { 5, s_0_18, 16, 1, 0},
66
- /* 19 */ { 4, s_0_19, 16, 1, 0},
67
- /* 20 */ { 7, s_0_20, 19, 1, 0},
68
- /* 21 */ { 3, s_0_21, 14, 1, 0},
69
- /* 22 */ { 6, s_0_22, 21, 1, 0},
70
- /* 23 */ { 3, s_0_23, 14, 1, 0},
71
- /* 24 */ { 3, s_0_24, 14, 1, 0},
72
- /* 25 */ { 2, s_0_25, -1, 1, 0},
73
- /* 26 */ { 3, s_0_26, 25, 1, 0},
74
- /* 27 */ { 3, s_0_27, -1, 3, 0},
75
- /* 28 */ { 3, s_0_28, -1, 1, 0}
47
+ { 1, s_0_0, -1, 1, 0},
48
+ { 1, s_0_1, -1, 1, 0},
49
+ { 3, s_0_2, 1, 1, 0},
50
+ { 4, s_0_3, 1, 1, 0},
51
+ { 4, s_0_4, 1, 1, 0},
52
+ { 3, s_0_5, 1, 1, 0},
53
+ { 3, s_0_6, 1, 1, 0},
54
+ { 6, s_0_7, 6, 1, 0},
55
+ { 4, s_0_8, 1, 3, 0},
56
+ { 2, s_0_9, -1, 1, 0},
57
+ { 5, s_0_10, 9, 1, 0},
58
+ { 2, s_0_11, -1, 1, 0},
59
+ { 2, s_0_12, -1, 1, 0},
60
+ { 5, s_0_13, 12, 1, 0},
61
+ { 1, s_0_14, -1, 2, 0},
62
+ { 2, s_0_15, 14, 1, 0},
63
+ { 2, s_0_16, 14, 1, 0},
64
+ { 4, s_0_17, 16, 1, 0},
65
+ { 5, s_0_18, 16, 1, 0},
66
+ { 4, s_0_19, 16, 1, 0},
67
+ { 7, s_0_20, 19, 1, 0},
68
+ { 3, s_0_21, 14, 1, 0},
69
+ { 6, s_0_22, 21, 1, 0},
70
+ { 3, s_0_23, 14, 1, 0},
71
+ { 3, s_0_24, 14, 1, 0},
72
+ { 2, s_0_25, -1, 1, 0},
73
+ { 3, s_0_26, 25, 1, 0},
74
+ { 3, s_0_27, -1, 3, 0},
75
+ { 3, s_0_28, -1, 1, 0}
76
76
  };
77
77
 
78
78
  static const symbol s_1_0[2] = { 'd', 't' };
@@ -80,8 +80,8 @@ static const symbol s_1_1[2] = { 'v', 't' };
80
80
 
81
81
  static const struct among a_1[2] =
82
82
  {
83
- /* 0 */ { 2, s_1_0, -1, -1, 0},
84
- /* 1 */ { 2, s_1_1, -1, -1, 0}
83
+ { 2, s_1_0, -1, -1, 0},
84
+ { 2, s_1_1, -1, -1, 0}
85
85
  };
86
86
 
87
87
  static const symbol s_2_0[3] = { 'l', 'e', 'g' };
@@ -98,88 +98,85 @@ static const symbol s_2_10[7] = { 'h', 'e', 't', 's', 'l', 'o', 'v' };
98
98
 
99
99
  static const struct among a_2[11] =
100
100
  {
101
- /* 0 */ { 3, s_2_0, -1, 1, 0},
102
- /* 1 */ { 4, s_2_1, 0, 1, 0},
103
- /* 2 */ { 2, s_2_2, -1, 1, 0},
104
- /* 3 */ { 3, s_2_3, 2, 1, 0},
105
- /* 4 */ { 3, s_2_4, 2, 1, 0},
106
- /* 5 */ { 4, s_2_5, 4, 1, 0},
107
- /* 6 */ { 3, s_2_6, -1, 1, 0},
108
- /* 7 */ { 3, s_2_7, -1, 1, 0},
109
- /* 8 */ { 4, s_2_8, 7, 1, 0},
110
- /* 9 */ { 4, s_2_9, 7, 1, 0},
111
- /* 10 */ { 7, s_2_10, 9, 1, 0}
101
+ { 3, s_2_0, -1, 1, 0},
102
+ { 4, s_2_1, 0, 1, 0},
103
+ { 2, s_2_2, -1, 1, 0},
104
+ { 3, s_2_3, 2, 1, 0},
105
+ { 3, s_2_4, 2, 1, 0},
106
+ { 4, s_2_5, 4, 1, 0},
107
+ { 3, s_2_6, -1, 1, 0},
108
+ { 3, s_2_7, -1, 1, 0},
109
+ { 4, s_2_8, 7, 1, 0},
110
+ { 4, s_2_9, 7, 1, 0},
111
+ { 7, s_2_10, 9, 1, 0}
112
112
  };
113
113
 
114
114
  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 };
115
115
 
116
116
  static const unsigned char g_s_ending[] = { 119, 125, 149, 1 };
117
117
 
118
- static const symbol s_0[] = { 'k' };
119
- static const symbol s_1[] = { 'e', 'r' };
118
+ static const symbol s_0[] = { 'e', 'r' };
120
119
 
121
120
  static int r_mark_regions(struct SN_env * z) {
122
- z->I[0] = z->l;
123
- { int c_test = z->c; /* test, line 30 */
124
- { int ret = skip_utf8(z->p, z->c, 0, z->l, + 3);
121
+ z->I[1] = z->l;
122
+ { int c_test1 = z->c;
123
+ { int ret = skip_utf8(z->p, z->c, z->l, 3);
125
124
  if (ret < 0) return 0;
126
- z->c = ret; /* hop, line 30 */
125
+ z->c = ret;
127
126
  }
128
- z->I[1] = z->c; /* setmark x, line 30 */
129
- z->c = c_test;
127
+ z->I[0] = z->c;
128
+ z->c = c_test1;
130
129
  }
131
- if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0; /* goto */ /* grouping v, line 31 */
132
- { /* gopast */ /* non v, line 31 */
130
+ if (out_grouping_U(z, g_v, 97, 248, 1) < 0) return 0;
131
+ {
133
132
  int ret = in_grouping_U(z, g_v, 97, 248, 1);
134
133
  if (ret < 0) return 0;
135
134
  z->c += ret;
136
135
  }
137
- z->I[0] = z->c; /* setmark p1, line 31 */
138
- /* try, line 32 */
139
- if (!(z->I[0] < z->I[1])) goto lab0;
140
- z->I[0] = z->I[1];
136
+ z->I[1] = z->c;
137
+
138
+ if (!(z->I[1] < z->I[0])) goto lab0;
139
+ z->I[1] = z->I[0];
141
140
  lab0:
142
141
  return 1;
143
142
  }
144
143
 
145
144
  static int r_main_suffix(struct SN_env * z) {
146
145
  int among_var;
147
- { int mlimit; /* setlimit, line 38 */
148
- int m1 = z->l - z->c; (void)m1;
149
- if (z->c < z->I[0]) return 0;
150
- z->c = z->I[0]; /* tomark, line 38 */
151
- mlimit = z->lb; z->lb = z->c;
152
- z->c = z->l - m1;
153
- z->ket = z->c; /* [, line 38 */
154
- if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; }
155
- among_var = find_among_b(z, a_0, 29); /* substring, line 38 */
156
- if (!(among_var)) { z->lb = mlimit; return 0; }
157
- z->bra = z->c; /* ], line 38 */
158
- z->lb = mlimit;
146
+
147
+ { int mlimit1;
148
+ if (z->c < z->I[1]) return 0;
149
+ mlimit1 = z->lb; z->lb = z->I[1];
150
+ z->ket = z->c;
151
+ if (z->c <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((1851426 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
152
+ among_var = find_among_b(z, a_0, 29);
153
+ if (!(among_var)) { z->lb = mlimit1; return 0; }
154
+ z->bra = z->c;
155
+ z->lb = mlimit1;
159
156
  }
160
- switch(among_var) {
161
- case 0: return 0;
157
+ switch (among_var) {
162
158
  case 1:
163
- { int ret = slice_del(z); /* delete, line 44 */
159
+ { int ret = slice_del(z);
164
160
  if (ret < 0) return ret;
165
161
  }
166
162
  break;
167
163
  case 2:
168
- { int m2 = z->l - z->c; (void)m2; /* or, line 46 */
164
+ { int m2 = z->l - z->c; (void)m2;
169
165
  if (in_grouping_b_U(z, g_s_ending, 98, 122, 0)) goto lab1;
170
166
  goto lab0;
171
167
  lab1:
172
168
  z->c = z->l - m2;
173
- if (!(eq_s_b(z, 1, s_0))) return 0;
169
+ if (z->c <= z->lb || z->p[z->c - 1] != 'k') return 0;
170
+ z->c--;
174
171
  if (out_grouping_b_U(z, g_v, 97, 248, 0)) return 0;
175
172
  }
176
173
  lab0:
177
- { int ret = slice_del(z); /* delete, line 46 */
174
+ { int ret = slice_del(z);
178
175
  if (ret < 0) return ret;
179
176
  }
180
177
  break;
181
178
  case 3:
182
- { int ret = slice_from_s(z, 2, s_1); /* <-, line 48 */
179
+ { int ret = slice_from_s(z, 2, s_0);
183
180
  if (ret < 0) return ret;
184
181
  }
185
182
  break;
@@ -188,98 +185,79 @@ static int r_main_suffix(struct SN_env * z) {
188
185
  }
189
186
 
190
187
  static int r_consonant_pair(struct SN_env * z) {
191
- { int m_test = z->l - z->c; /* test, line 53 */
192
- { int mlimit; /* setlimit, line 54 */
193
- int m1 = z->l - z->c; (void)m1;
194
- if (z->c < z->I[0]) return 0;
195
- z->c = z->I[0]; /* tomark, line 54 */
196
- mlimit = z->lb; z->lb = z->c;
197
- z->c = z->l - m1;
198
- z->ket = z->c; /* [, line 54 */
199
- if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit; return 0; }
200
- if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit; return 0; } /* substring, line 54 */
201
- z->bra = z->c; /* ], line 54 */
202
- z->lb = mlimit;
188
+ { int m_test1 = z->l - z->c;
189
+
190
+ { int mlimit2;
191
+ if (z->c < z->I[1]) return 0;
192
+ mlimit2 = z->lb; z->lb = z->I[1];
193
+ z->ket = z->c;
194
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] != 116) { z->lb = mlimit2; return 0; }
195
+ if (!(find_among_b(z, a_1, 2))) { z->lb = mlimit2; return 0; }
196
+ z->bra = z->c;
197
+ z->lb = mlimit2;
203
198
  }
204
- z->c = z->l - m_test;
199
+ z->c = z->l - m_test1;
205
200
  }
206
- { int ret = skip_utf8(z->p, z->c, z->lb, 0, -1);
201
+ { int ret = skip_b_utf8(z->p, z->c, z->lb, 1);
207
202
  if (ret < 0) return 0;
208
- z->c = ret; /* next, line 59 */
203
+ z->c = ret;
209
204
  }
210
- z->bra = z->c; /* ], line 59 */
211
- { int ret = slice_del(z); /* delete, line 59 */
205
+ z->bra = z->c;
206
+ { int ret = slice_del(z);
212
207
  if (ret < 0) return ret;
213
208
  }
214
209
  return 1;
215
210
  }
216
211
 
217
212
  static int r_other_suffix(struct SN_env * z) {
218
- int among_var;
219
- { int mlimit; /* setlimit, line 63 */
220
- int m1 = z->l - z->c; (void)m1;
221
- if (z->c < z->I[0]) return 0;
222
- z->c = z->I[0]; /* tomark, line 63 */
223
- mlimit = z->lb; z->lb = z->c;
224
- z->c = z->l - m1;
225
- z->ket = z->c; /* [, line 63 */
226
- if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit; return 0; }
227
- among_var = find_among_b(z, a_2, 11); /* substring, line 63 */
228
- if (!(among_var)) { z->lb = mlimit; return 0; }
229
- z->bra = z->c; /* ], line 63 */
230
- z->lb = mlimit;
213
+
214
+ { int mlimit1;
215
+ if (z->c < z->I[1]) return 0;
216
+ mlimit1 = z->lb; z->lb = z->I[1];
217
+ z->ket = z->c;
218
+ if (z->c - 1 <= z->lb || z->p[z->c - 1] >> 5 != 3 || !((4718720 >> (z->p[z->c - 1] & 0x1f)) & 1)) { z->lb = mlimit1; return 0; }
219
+ if (!(find_among_b(z, a_2, 11))) { z->lb = mlimit1; return 0; }
220
+ z->bra = z->c;
221
+ z->lb = mlimit1;
231
222
  }
232
- switch(among_var) {
233
- case 0: return 0;
234
- case 1:
235
- { int ret = slice_del(z); /* delete, line 67 */
236
- if (ret < 0) return ret;
237
- }
238
- break;
223
+ { int ret = slice_del(z);
224
+ if (ret < 0) return ret;
239
225
  }
240
226
  return 1;
241
227
  }
242
228
 
243
229
  extern int norwegian_UTF_8_stem(struct SN_env * z) {
244
- { int c1 = z->c; /* do, line 74 */
230
+ { int c1 = z->c;
245
231
  { int ret = r_mark_regions(z);
246
- if (ret == 0) goto lab0; /* call mark_regions, line 74 */
247
232
  if (ret < 0) return ret;
248
233
  }
249
- lab0:
250
234
  z->c = c1;
251
235
  }
252
- z->lb = z->c; z->c = z->l; /* backwards, line 75 */
236
+ z->lb = z->c; z->c = z->l;
253
237
 
254
- { int m2 = z->l - z->c; (void)m2; /* do, line 76 */
238
+ { int m2 = z->l - z->c; (void)m2;
255
239
  { int ret = r_main_suffix(z);
256
- if (ret == 0) goto lab1; /* call main_suffix, line 76 */
257
240
  if (ret < 0) return ret;
258
241
  }
259
- lab1:
260
242
  z->c = z->l - m2;
261
243
  }
262
- { int m3 = z->l - z->c; (void)m3; /* do, line 77 */
244
+ { int m3 = z->l - z->c; (void)m3;
263
245
  { int ret = r_consonant_pair(z);
264
- if (ret == 0) goto lab2; /* call consonant_pair, line 77 */
265
246
  if (ret < 0) return ret;
266
247
  }
267
- lab2:
268
248
  z->c = z->l - m3;
269
249
  }
270
- { int m4 = z->l - z->c; (void)m4; /* do, line 78 */
250
+ { int m4 = z->l - z->c; (void)m4;
271
251
  { int ret = r_other_suffix(z);
272
- if (ret == 0) goto lab3; /* call other_suffix, line 78 */
273
252
  if (ret < 0) return ret;
274
253
  }
275
- lab3:
276
254
  z->c = z->l - m4;
277
255
  }
278
256
  z->c = z->lb;
279
257
  return 1;
280
258
  }
281
259
 
282
- extern struct SN_env * norwegian_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); }
260
+ extern struct SN_env * norwegian_UTF_8_create_env(void) { return SN_create_env(0, 2); }
283
261
 
284
262
  extern void norwegian_UTF_8_close_env(struct SN_env * z) { SN_close_env(z, 0); }
285
263
 
@@ -1,4 +1,4 @@
1
- /* This file was generated automatically by the Snowball to ANSI C compiler */
1
+ /* Generated by Snowball 2.2.0 - https://snowballstem.org/ */
2
2
 
3
3
  extern struct SN_env * norwegian_UTF_8_create_env(void);
4
4
  extern void norwegian_UTF_8_close_env(struct SN_env * z);