#![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 {
context.i_p1 = env.limit;
context.i_p2 = env.limit;
'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();
}
'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();
}
context.i_p1 = env.cursor;
'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();
}
'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();
}
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;
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
among_var = env.find_among_b(A_0, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
if !env.in_grouping_b(G_particle_end, 97, 246) {
return false;
}
} else if among_var == 2 {
if !r_R2(env, context) {
return false;
}
}
if !env.slice_del() {
return false;
}
return true;
}
fn r_possessive(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
among_var = env.find_among_b(A_4, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
let v_3 = env.limit - env.cursor;
'lab0: loop {
if !env.eq_s_b(&"k") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_3;
if !env.slice_del() {
return false;
}
} else if among_var == 2 {
if !env.slice_del() {
return false;
}
env.ket = env.cursor;
if !env.eq_s_b(&"kse") {
return false;
}
env.bra = env.cursor;
if !env.slice_from("ksi") {
return false;
}
} else if among_var == 3 {
if !env.slice_del() {
return false;
}
} else if among_var == 4 {
if env.find_among_b(A_1, context) == 0 {
return false;
}
if !env.slice_del() {
return false;
}
} else if among_var == 5 {
if env.find_among_b(A_2, context) == 0 {
return false;
}
if !env.slice_del() {
return false;
}
} else if among_var == 6 {
if env.find_among_b(A_3, context) == 0 {
return false;
}
if !env.slice_del() {
return false;
}
}
return true;
}
fn r_LONG(env: &mut SnowballEnv, context: &mut Context) -> bool {
if env.find_among_b(A_5, context) == 0 {
return false;
}
return true;
}
fn r_VI(env: &mut SnowballEnv, context: &mut Context) -> bool {
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;
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
among_var = env.find_among_b(A_6, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
if !env.eq_s_b(&"a") {
return false;
}
} else if among_var == 2 {
if !env.eq_s_b(&"e") {
return false;
}
} else if among_var == 3 {
if !env.eq_s_b(&"i") {
return false;
}
} else if among_var == 4 {
if !env.eq_s_b(&"o") {
return false;
}
} else if among_var == 5 {
if !env.eq_s_b(&"\u{00E4}") {
return false;
}
} else if among_var == 6 {
if !env.eq_s_b(&"\u{00F6}") {
return false;
}
} else if among_var == 7 {
let v_3 = env.limit - env.cursor;
'lab0: loop {
let v_4 = env.limit - env.cursor;
'lab1: loop {
let v_5 = env.limit - env.cursor;
'lab2: loop {
if !r_LONG(env, context) {
break 'lab2;
}
break 'lab1;
}
env.cursor = env.limit - v_5;
if !env.eq_s_b(&"ie") {
env.cursor = env.limit - v_3;
break 'lab0;
}
break 'lab1;
}
env.cursor = env.limit - v_4;
if env.cursor <= env.limit_backward {
env.cursor = env.limit - v_3;
break 'lab0;
}
env.previous_char();
env.bra = env.cursor;
break 'lab0;
}
} else if among_var == 8 {
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 {
if !env.eq_s_b(&"e") {
return false;
}
}
if !env.slice_del() {
return false;
}
context.b_ending_removed = true;
return true;
}
fn r_other_endings(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
among_var = env.find_among_b(A_7, context);
if among_var == 0 {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_2;
if among_var == 0 {
return false;
} else if among_var == 1 {
let v_3 = env.limit - env.cursor;
'lab0: loop {
if !env.eq_s_b(&"po") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_3;
}
if !env.slice_del() {
return false;
}
return true;
}
fn r_i_plural(env: &mut SnowballEnv, context: &mut Context) -> bool {
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
if env.find_among_b(A_8, context) == 0 {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_2;
if !env.slice_del() {
return false;
}
return true;
}
fn r_t_plural(env: &mut SnowballEnv, context: &mut Context) -> bool {
let mut among_var;
let v_1 = env.limit - env.cursor;
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;
env.ket = env.cursor;
if !env.eq_s_b(&"t") {
env.limit_backward = v_2;
return false;
}
env.bra = env.cursor;
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;
if !env.slice_del() {
return false;
}
env.limit_backward = v_2;
let v_4 = env.limit - env.cursor;
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;
env.ket = env.cursor;
among_var = env.find_among_b(A_9, context);
if among_var == 0 {
env.limit_backward = v_5;
return false;
}
env.bra = env.cursor;
env.limit_backward = v_5;
if among_var == 0 {
return false;
} else if among_var == 1 {
let v_6 = env.limit - env.cursor;
'lab0: loop {
if !env.eq_s_b(&"po") {
break 'lab0;
}
return false;
}
env.cursor = env.limit - v_6;
}
if !env.slice_del() {
return false;
}
return true;
}
fn r_tidy(env: &mut SnowballEnv, context: &mut Context) -> bool {
let v_1 = env.limit - env.cursor;
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;
let v_3 = env.limit - env.cursor;
'lab0: loop {
let v_4 = env.limit - env.cursor;
if !r_LONG(env, context) {
break 'lab0;
}
env.cursor = env.limit - v_4;
env.ket = env.cursor;
if env.cursor <= env.limit_backward {
break 'lab0;
}
env.previous_char();
env.bra = env.cursor;
if !env.slice_del() {
return false;
}
break 'lab0;
}
env.cursor = env.limit - v_3;
let v_5 = env.limit - env.cursor;
'lab1: loop {
env.ket = env.cursor;
if !env.in_grouping_b(G_AEI, 97, 228) {
break 'lab1;
}
env.bra = env.cursor;
if !env.out_grouping_b(G_V1, 97, 246) {
break 'lab1;
}
if !env.slice_del() {
return false;
}
break 'lab1;
}
env.cursor = env.limit - v_5;
let v_6 = env.limit - env.cursor;
'lab2: loop {
env.ket = env.cursor;
if !env.eq_s_b(&"j") {
break 'lab2;
}
env.bra = env.cursor;
'lab3: loop {
let v_7 = env.limit - env.cursor;
'lab4: loop {
if !env.eq_s_b(&"o") {
break 'lab4;
}
break 'lab3;
}
env.cursor = env.limit - v_7;
if !env.eq_s_b(&"u") {
break 'lab2;
}
break 'lab3;
}
if !env.slice_del() {
return false;
}
break 'lab2;
}
env.cursor = env.limit - v_6;
let v_8 = env.limit - env.cursor;
'lab5: loop {
env.ket = env.cursor;
if !env.eq_s_b(&"o") {
break 'lab5;
}
env.bra = env.cursor;
if !env.eq_s_b(&"j") {
break 'lab5;
}
if !env.slice_del() {
return false;
}
break 'lab5;
}
env.cursor = env.limit - v_8;
env.limit_backward = v_2;
'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();
}
env.ket = env.cursor;
if env.cursor <= env.limit_backward {
return false;
}
env.previous_char();
env.bra = env.cursor;
context.S_x = env.slice_to();
if context.S_x.is_empty() {
return false;
}
if !env.eq_s_b(&context.S_x) {
return false;
}
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,
};
let v_1 = env.cursor;
'lab0: loop {
if !r_mark_regions(env, context) {
break 'lab0;
}
break 'lab0;
}
env.cursor = v_1;
context.b_ending_removed = false;
env.limit_backward = env.cursor;
env.cursor = env.limit;
let v_2 = env.limit - env.cursor;
'lab1: loop {
if !r_particle_etc(env, context) {
break 'lab1;
}
break 'lab1;
}
env.cursor = env.limit - v_2;
let v_3 = env.limit - env.cursor;
'lab2: loop {
if !r_possessive(env, context) {
break 'lab2;
}
break 'lab2;
}
env.cursor = env.limit - v_3;
let v_4 = env.limit - env.cursor;
'lab3: loop {
if !r_case_ending(env, context) {
break 'lab3;
}
break 'lab3;
}
env.cursor = env.limit - v_4;
let v_5 = env.limit - env.cursor;
'lab4: loop {
if !r_other_endings(env, context) {
break 'lab4;
}
break 'lab4;
}
env.cursor = env.limit - v_5;
'lab5: loop {
let v_6 = env.limit - env.cursor;
'lab6: loop {
if !context.b_ending_removed {
break 'lab6;
}
let v_7 = env.limit - env.cursor;
'lab7: loop {
if !r_i_plural(env, context) {
break 'lab7;
}
break 'lab7;
}
env.cursor = env.limit - v_7;
break 'lab5;
}
env.cursor = env.limit - v_6;
let v_8 = env.limit - env.cursor;
'lab8: loop {
if !r_t_plural(env, context) {
break 'lab8;
}
break 'lab8;
}
env.cursor = env.limit - v_8;
break 'lab5;
}
let v_9 = env.limit - env.cursor;
'lab9: loop {
if !r_tidy(env, context) {
break 'lab9;
}
break 'lab9;
}
env.cursor = env.limit - v_9;
env.cursor = env.limit_backward;
return true;
}