blob: 21d40848f82e1c76013957774b4da6e3af55d14a [file] [log] [blame]
//! This file was generated automatically by the Snowball to Rust compiler
//! http://snowballstem.org/
#![allow(non_upper_case_globals)]
#![allow(non_snake_case)]
#![allow(unused_variables)]
#![allow(unused_mut)]
use snowball::SnowballEnv;
use snowball::Among;
static A_0: &'static [Among<Context>; 10] = &[
Among("pa", -1, 1, None),
Among("sti", -1, 2, None),
Among("kaan", -1, 1, None),
Among("han", -1, 1, None),
Among("kin", -1, 1, None),
Among("h\u{00E4}n", -1, 1, None),
Among("k\u{00E4}\u{00E4}n", -1, 1, None),
Among("ko", -1, 1, None),
Among("p\u{00E4}", -1, 1, None),
Among("k\u{00F6}", -1, 1, None),
];
static A_1: &'static [Among<Context>; 6] = &[
Among("lla", -1, -1, None),
Among("na", -1, -1, None),
Among("ssa", -1, -1, None),
Among("ta", -1, -1, None),
Among("lta", 3, -1, None),
Among("sta", 3, -1, None),
];
static A_2: &'static [Among<Context>; 6] = &[
Among("ll\u{00E4}", -1, -1, None),
Among("n\u{00E4}", -1, -1, None),
Among("ss\u{00E4}", -1, -1, None),
Among("t\u{00E4}", -1, -1, None),
Among("lt\u{00E4}", 3, -1, None),
Among("st\u{00E4}", 3, -1, None),
];
static A_3: &'static [Among<Context>; 2] = &[
Among("lle", -1, -1, None),
Among("ine", -1, -1, None),
];
static A_4: &'static [Among<Context>; 9] = &[
Among("nsa", -1, 3, None),
Among("mme", -1, 3, None),
Among("nne", -1, 3, None),
Among("ni", -1, 2, None),
Among("si", -1, 1, None),
Among("an", -1, 4, None),
Among("en", -1, 6, None),
Among("\u{00E4}n", -1, 5, None),
Among("ns\u{00E4}", -1, 3, None),
];
static A_5: &'static [Among<Context>; 7] = &[
Among("aa", -1, -1, None),
Among("ee", -1, -1, None),
Among("ii", -1, -1, None),
Among("oo", -1, -1, None),
Among("uu", -1, -1, None),
Among("\u{00E4}\u{00E4}", -1, -1, None),
Among("\u{00F6}\u{00F6}", -1, -1, None),
];
static A_6: &'static [Among<Context>; 30] = &[
Among("a", -1, 8, None),
Among("lla", 0, -1, None),
Among("na", 0, -1, None),
Among("ssa", 0, -1, None),
Among("ta", 0, -1, None),
Among("lta", 4, -1, None),
Among("sta", 4, -1, None),
Among("tta", 4, 9, None),
Among("lle", -1, -1, None),
Among("ine", -1, -1, None),
Among("ksi", -1, -1, None),
Among("n", -1, 7, None),
Among("han", 11, 1, None),
Among("den", 11, -1, Some(&r_VI)),
Among("seen", 11, -1, Some(&r_LONG)),
Among("hen", 11, 2, None),
Among("tten", 11, -1, Some(&r_VI)),
Among("hin", 11, 3, None),
Among("siin", 11, -1, Some(&r_VI)),
Among("hon", 11, 4, None),
Among("h\u{00E4}n", 11, 5, None),
Among("h\u{00F6}n", 11, 6, None),
Among("\u{00E4}", -1, 8, None),
Among("ll\u{00E4}", 22, -1, None),
Among("n\u{00E4}", 22, -1, None),
Among("ss\u{00E4}", 22, -1, None),
Among("t\u{00E4}", 22, -1, None),
Among("lt\u{00E4}", 26, -1, None),
Among("st\u{00E4}", 26, -1, None),
Among("tt\u{00E4}", 26, 9, None),
];
static A_7: &'static [Among<Context>; 14] = &[
Among("eja", -1, -1, None),
Among("mma", -1, 1, None),
Among("imma", 1, -1, None),
Among("mpa", -1, 1, None),
Among("impa", 3, -1, None),
Among("mmi", -1, 1, None),
Among("immi", 5, -1, None),
Among("mpi", -1, 1, None),
Among("impi", 7, -1, None),
Among("ej\u{00E4}", -1, -1, None),
Among("mm\u{00E4}", -1, 1, None),
Among("imm\u{00E4}", 10, -1, None),
Among("mp\u{00E4}", -1, 1, None),
Among("imp\u{00E4}", 12, -1, None),
];
static A_8: &'static [Among<Context>; 2] = &[
Among("i", -1, -1, None),
Among("j", -1, -1, None),
];
static A_9: &'static [Among<Context>; 2] = &[
Among("mma", -1, 1, None),
Among("imma", 0, -1, None),
];
static G_AEI: &'static [u8; 17] = &[17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8];
static G_V1: &'static [u8; 19] = &[17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32];
static G_V2: &'static [u8; 19] = &[17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32];
static G_particle_end: &'static [u8; 19] = &[17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32];
#[derive(Clone)]
struct Context {
b_ending_removed: bool,
S_x: String,
i_p2: usize,
i_p1: usize,
}
fn r_mark_regions(env: &mut SnowballEnv, context: &mut Context) -> bool {
// (, line 40
context.i_p1 = env.limit;
context.i_p2 = env.limit;
// goto, line 45
'golab0: loop {
let v_1 = env.cursor;
'lab1: loop {
if !env.in_grouping(G_V1, 97, 246) {
break 'lab1;
}
env.cursor = v_1;
break 'golab0;
}
env.cursor = v_1;
if env.cursor >= env.limit {
return false;
}
env.next_char();
}
// gopast, line 45
'golab2: loop {
'lab3: loop {
if !env.out_grouping(G_V1, 97, 246) {
break 'lab3;
}
break 'golab2;
}
if env.cursor >= env.limit {
return false;
}
env.next_char();
}
// setmark p1, line 45
context.i_p1 = env.cursor;
// goto, line 46
'golab4: loop {
let v_3 = env.cursor;
'lab5: loop {
if !env.in_grouping(G_V1, 97, 246) {
break 'lab5;
}
env.cursor = v_3;
break 'golab4;
}
env.cursor = v_3;
if env.cursor >= env.limit {
return false;
}
env.next_char();
}
// gopast, line 46
'golab6: loop {
'lab7: loop {
if !env.out_grouping(G_V1, 97, 246) {
break 'lab7;
}
break 'golab6;
}
if env.cursor >= env.limit {
return false;
}
env.next_char();
}
// setmark p2, line 46
context.i_p2 = env.cursor;
return true;
}
fn r_R2(env: &mut SnowballEnv, context: &mut Context) -> bool {
if !(context.i_p2 <= env.cursor){
return false;
}
return true;
}
fn r_particle_etc(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
// (, line 53
// setlimit, line 54
let v_1 = env.limit - env.cursor;
// tomark, line 54
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 54
// [, line 54
env.ket = env.cursor;
// substring, line 54
among_var = env.find_among_b(A_0, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
// ], line 54
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
// (, line 61
if !env.in_grouping_b(G_particle_end, 97, 246) {
return false;
}
} else if among_var == 2 {
// (, line 63
// call R2, line 63
if !r_R2(env, context) {
return false;
}
}
// delete, line 65
if !env.slice_del() {
return false;
}
return true;
}
fn r_possessive(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
// (, line 67
// setlimit, line 68
let v_1 = env.limit - env.cursor;
// tomark, line 68
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 68
// [, line 68
env.ket = env.cursor;
// substring, line 68
among_var = env.find_among_b(A_4, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
// ], line 68
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
// (, line 71
// not, line 71
let v_3 = env.limit - env.cursor;
'lab0: loop {
// literal, line 71
if !env.eq_s_b(&"k") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_3;
// delete, line 71
if !env.slice_del() {
return false;
}
} else if among_var == 2 {
// (, line 73
// delete, line 73
if !env.slice_del() {
return false;
}
// [, line 73
env.ket = env.cursor;
// literal, line 73
if !env.eq_s_b(&"kse") {
return false;
}
// ], line 73
env.bra = env.cursor;
// <-, line 73
if !env.slice_from("ksi") {
return false;
}
} else if among_var == 3 {
// (, line 77
// delete, line 77
if !env.slice_del() {
return false;
}
} else if among_var == 4 {
// (, line 80
// among, line 80
if env.find_among_b(A_1, context) == 0 {
return false;
}
// delete, line 80
if !env.slice_del() {
return false;
}
} else if among_var == 5 {
// (, line 82
// among, line 82
if env.find_among_b(A_2, context) == 0 {
return false;
}
// delete, line 83
if !env.slice_del() {
return false;
}
} else if among_var == 6 {
// (, line 85
// among, line 85
if env.find_among_b(A_3, context) == 0 {
return false;
}
// delete, line 85
if !env.slice_del() {
return false;
}
}
return true;
}
fn r_LONG(env: &mut SnowballEnv, context: &mut Context) -> bool {
// among, line 90
if env.find_among_b(A_5, context) == 0 {
return false;
}
return true;
}
fn r_VI(env: &mut SnowballEnv, context: &mut Context) -> bool {
// (, line 92
// literal, line 92
if !env.eq_s_b(&"i") {
return false;
}
if !env.in_grouping_b(G_V2, 97, 246) {
return false;
}
return true;
}
fn r_case_ending(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
// (, line 94
// setlimit, line 95
let v_1 = env.limit - env.cursor;
// tomark, line 95
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 95
// [, line 95
env.ket = env.cursor;
// substring, line 95
among_var = env.find_among_b(A_6, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
// ], line 95
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
// (, line 97
// literal, line 97
if !env.eq_s_b(&"a") {
return false;
}
} else if among_var == 2 {
// (, line 98
// literal, line 98
if !env.eq_s_b(&"e") {
return false;
}
} else if among_var == 3 {
// (, line 99
// literal, line 99
if !env.eq_s_b(&"i") {
return false;
}
} else if among_var == 4 {
// (, line 100
// literal, line 100
if !env.eq_s_b(&"o") {
return false;
}
} else if among_var == 5 {
// (, line 101
// literal, line 101
if !env.eq_s_b(&"\u{00E4}") {
return false;
}
} else if among_var == 6 {
// (, line 102
// literal, line 102
if !env.eq_s_b(&"\u{00F6}") {
return false;
}
} else if among_var == 7 {
// (, line 110
// try, line 110
let v_3 = env.limit - env.cursor;
'lab0: loop {
// (, line 110
// and, line 112
let v_4 = env.limit - env.cursor;
// or, line 111
'lab1: loop {
let v_5 = env.limit - env.cursor;
'lab2: loop {
// call LONG, line 110
if !r_LONG(env, context) {
break 'lab2;
}
break 'lab1;
}
env.cursor = env.limit - v_5;
// literal, line 111
if !env.eq_s_b(&"ie") {
env.cursor = env.limit - v_3;
break 'lab0;
}
break 'lab1;
}
env.cursor = env.limit - v_4;
// next, line 112
if env.cursor <= env.limit_backward {
env.cursor = env.limit - v_3;
break 'lab0;
}
env.previous_char();
// ], line 112
env.bra = env.cursor;
break 'lab0;
}
} else if among_var == 8 {
// (, line 118
if !env.in_grouping_b(G_V1, 97, 246) {
return false;
}
if !env.out_grouping_b(G_V1, 97, 246) {
return false;
}
} else if among_var == 9 {
// (, line 120
// literal, line 120
if !env.eq_s_b(&"e") {
return false;
}
}
// delete, line 137
if !env.slice_del() {
return false;
}
// set ending_removed, line 138
context.b_ending_removed = true;
return true;
}
fn r_other_endings(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
// (, line 140
// setlimit, line 141
let v_1 = env.limit - env.cursor;
// tomark, line 141
if env.cursor < context.i_p2 {
return false;
}
env.cursor = context.i_p2;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 141
// [, line 141
env.ket = env.cursor;
// substring, line 141
among_var = env.find_among_b(A_7, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
// ], line 141
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
// (, line 145
// not, line 145
let v_3 = env.limit - env.cursor;
'lab0: loop {
// literal, line 145
if !env.eq_s_b(&"po") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_3;
}
// delete, line 150
if !env.slice_del() {
return false;
}
return true;
}
fn r_i_plural(env: &mut SnowballEnv, context: &mut Context) -> bool {
// (, line 152
// setlimit, line 153
let v_1 = env.limit - env.cursor;
// tomark, line 153
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 153
// [, line 153
env.ket = env.cursor;
// substring, line 153
if env.find_among_b(A_8, context) == 0 {
env.limit_backward = v_2;
return false;
}
// ], line 153
env.bra = env.cursor;
env.limit_backward = v_2;
// delete, line 157
if !env.slice_del() {
return false;
}
return true;
}
fn r_t_plural(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
// (, line 159
// setlimit, line 160
let v_1 = env.limit - env.cursor;
// tomark, line 160
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 160
// [, line 161
env.ket = env.cursor;
// literal, line 161
if !env.eq_s_b(&"t") {
env.limit_backward = v_2;
return false;
}
// ], line 161
env.bra = env.cursor;
// test, line 161
let v_3 = env.limit - env.cursor;
if !env.in_grouping_b(G_V1, 97, 246) {
env.limit_backward = v_2;
return false;
}
env.cursor = env.limit - v_3;
// delete, line 162
if !env.slice_del() {
return false;
}
env.limit_backward = v_2;
// setlimit, line 164
let v_4 = env.limit - env.cursor;
// tomark, line 164
if env.cursor < context.i_p2 {
return false;
}
env.cursor = context.i_p2;
let v_5 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_4;
// (, line 164
// [, line 164
env.ket = env.cursor;
// substring, line 164
among_var = env.find_among_b(A_9, context);
if among_var == 0 {
env.limit_backward = v_5;
return false;
}
// ], line 164
env.bra = env.cursor;
env.limit_backward = v_5;
if among_var == 0 {
return false;
} else if among_var == 1 {
// (, line 166
// not, line 166
let v_6 = env.limit - env.cursor;
'lab0: loop {
// literal, line 166
if !env.eq_s_b(&"po") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_6;
}
// delete, line 169
if !env.slice_del() {
return false;
}
return true;
}
fn r_tidy(env: &mut SnowballEnv, context: &mut Context) -> bool {
// (, line 171
// setlimit, line 172
let v_1 = env.limit - env.cursor;
// tomark, line 172
if env.cursor < context.i_p1 {
return false;
}
env.cursor = context.i_p1;
let v_2 = env.limit_backward;
env.limit_backward = env.cursor;
env.cursor = env.limit - v_1;
// (, line 172
// do, line 173
let v_3 = env.limit - env.cursor;
'lab0: loop {
// (, line 173
// and, line 173
let v_4 = env.limit - env.cursor;
// call LONG, line 173
if !r_LONG(env, context) {
break 'lab0;
}
env.cursor = env.limit - v_4;
// (, line 173
// [, line 173
env.ket = env.cursor;
// next, line 173
if env.cursor <= env.limit_backward {
break 'lab0;
}
env.previous_char();
// ], line 173
env.bra = env.cursor;
// delete, line 173
if !env.slice_del() {
return false;
}
break 'lab0;
}
env.cursor = env.limit - v_3;
// do, line 174
let v_5 = env.limit - env.cursor;
'lab1: loop {
// (, line 174
// [, line 174
env.ket = env.cursor;
if !env.in_grouping_b(G_AEI, 97, 228) {
break 'lab1;
}
// ], line 174
env.bra = env.cursor;
if !env.out_grouping_b(G_V1, 97, 246) {
break 'lab1;
}
// delete, line 174
if !env.slice_del() {
return false;
}
break 'lab1;
}
env.cursor = env.limit - v_5;
// do, line 175
let v_6 = env.limit - env.cursor;
'lab2: loop {
// (, line 175
// [, line 175
env.ket = env.cursor;
// literal, line 175
if !env.eq_s_b(&"j") {
break 'lab2;
}
// ], line 175
env.bra = env.cursor;
// or, line 175
'lab3: loop {
let v_7 = env.limit - env.cursor;
'lab4: loop {
// literal, line 175
if !env.eq_s_b(&"o") {
break 'lab4;
}
break 'lab3;
}
env.cursor = env.limit - v_7;
// literal, line 175
if !env.eq_s_b(&"u") {
break 'lab2;
}
break 'lab3;
}
// delete, line 175
if !env.slice_del() {
return false;
}
break 'lab2;
}
env.cursor = env.limit - v_6;
// do, line 176
let v_8 = env.limit - env.cursor;
'lab5: loop {
// (, line 176
// [, line 176
env.ket = env.cursor;
// literal, line 176
if !env.eq_s_b(&"o") {
break 'lab5;
}
// ], line 176
env.bra = env.cursor;
// literal, line 176
if !env.eq_s_b(&"j") {
break 'lab5;
}
// delete, line 176
if !env.slice_del() {
return false;
}
break 'lab5;
}
env.cursor = env.limit - v_8;
env.limit_backward = v_2;
// goto, line 178
'golab6: loop {
let v_9 = env.limit - env.cursor;
'lab7: loop {
if !env.out_grouping_b(G_V1, 97, 246) {
break 'lab7;
}
env.cursor = env.limit - v_9;
break 'golab6;
}
env.cursor = env.limit - v_9;
if env.cursor <= env.limit_backward {
return false;
}
env.previous_char();
}
// [, line 178
env.ket = env.cursor;
// next, line 178
if env.cursor <= env.limit_backward {
return false;
}
env.previous_char();
// ], line 178
env.bra = env.cursor;
// -> x, line 178
context.S_x = env.slice_to();
if context.S_x.is_empty() {
return false;
}
// name x, line 178
if !env.eq_s_b(&context.S_x) {
return false;
}
// delete, line 178
if !env.slice_del() {
return false;
}
return true;
}
pub fn stem(env: &mut SnowballEnv) -> bool {
let mut context = &mut Context {
b_ending_removed: false,
S_x: String::new(),
i_p2: 0,
i_p1: 0,
};
// (, line 182
// do, line 184
let v_1 = env.cursor;
'lab0: loop {
// call mark_regions, line 184
if !r_mark_regions(env, context) {
break 'lab0;
}
break 'lab0;
}
env.cursor = v_1;
// unset ending_removed, line 185
context.b_ending_removed = false;
// backwards, line 186
env.limit_backward = env.cursor;
env.cursor = env.limit;
// (, line 186
// do, line 187
let v_2 = env.limit - env.cursor;
'lab1: loop {
// call particle_etc, line 187
if !r_particle_etc(env, context) {
break 'lab1;
}
break 'lab1;
}
env.cursor = env.limit - v_2;
// do, line 188
let v_3 = env.limit - env.cursor;
'lab2: loop {
// call possessive, line 188
if !r_possessive(env, context) {
break 'lab2;
}
break 'lab2;
}
env.cursor = env.limit - v_3;
// do, line 189
let v_4 = env.limit - env.cursor;
'lab3: loop {
// call case_ending, line 189
if !r_case_ending(env, context) {
break 'lab3;
}
break 'lab3;
}
env.cursor = env.limit - v_4;
// do, line 190
let v_5 = env.limit - env.cursor;
'lab4: loop {
// call other_endings, line 190
if !r_other_endings(env, context) {
break 'lab4;
}
break 'lab4;
}
env.cursor = env.limit - v_5;
// or, line 191
'lab5: loop {
let v_6 = env.limit - env.cursor;
'lab6: loop {
// (, line 191
// Boolean test ending_removed, line 191
if !context.b_ending_removed {
break 'lab6;
}
// do, line 191
let v_7 = env.limit - env.cursor;
'lab7: loop {
// call i_plural, line 191
if !r_i_plural(env, context) {
break 'lab7;
}
break 'lab7;
}
env.cursor = env.limit - v_7;
break 'lab5;
}
env.cursor = env.limit - v_6;
// do, line 191
let v_8 = env.limit - env.cursor;
'lab8: loop {
// call t_plural, line 191
if !r_t_plural(env, context) {
break 'lab8;
}
break 'lab8;
}
env.cursor = env.limit - v_8;
break 'lab5;
}
// do, line 192
let v_9 = env.limit - env.cursor;
'lab9: loop {
// call tidy, line 192
if !r_tidy(env, context) {
break 'lab9;
}
break 'lab9;
}
env.cursor = env.limit - v_9;
env.cursor = env.limit_backward;
return true;
}