static void step1ab(struct stemmer * z) { char * b = z->b; if (b[z->k] == 's') { if (ends(z, "\04" "sses")) z->k -= 2; else if (ends(z, "\03" "ies")) setto(z, "\01" "i"); else if (b[z->k - 1] != 's') z->k--; } if (ends(z, "\03" "eed")) { if (m(z) > 0) z->k--; } else if ((ends(z, "\02" "ed") || ends(z, "\03" "ing")) && vowelinstem(z)) { z->k = z->j; if (ends(z, "\02" "at")) setto(z, "\03" "ate"); else if (ends(z, "\02" "bl")) setto(z, "\03" "ble"); else if (ends(z, "\02" "iz")) setto(z, "\03" "ize"); else if (doublec(z, z->k)) { z->k--; { int ch = b[z->k]; if (ch == 'l' || ch == 's' || ch == 'z') z->k++; } } else if (m(z) == 1 && cvc(z, z->k)) setto(z, "\01" "e"); } }
static void step1c() { // fprintf(stderr, "1c"); if (ends("\01" "y") && vowelinstem()) b[k] = 'i'; }
static void step1ab() { char ch; if (b[k] == 's') { if (ends("\04" "sses")) k -= 2; else if (ends("\03" "ies")) setto("\01" "i"); else if (b[k-1] != 's') k--; } if (ends("\03" "eed")) { if (m() > 0) k--; } else if ((ends("\02" "ed") || ends("\03" "ing") || ends("\02" "in")) && vowelinstem()) { k = j; if (ends("\02" "at")) setto("\03" "ate"); else if (ends("\02" "bl")) setto("\03" "ble"); else if (ends("\02" "iz")) setto("\03" "ize"); else if (doublec(k)) { k--; ch = b[k]; if (ch == 'l' || ch == 's' || ch == 'z') k++; } else if (m() == 1 && cvc(k)) setto("\01" "e"); } }
/* step1c() turns terminal y to i when there is another vowel in the stem. */ static void step1c(void) { if (ends("\01" "y") && vowelinstem()) { b[k] = 'i'; } return; }
/* step1ab() gets rid of plurals and -ed or -ing. e.g. caresses -> caress ponies -> poni ties -> ti caress -> caress cats -> cat feed -> feed agreed -> agree disabled -> disable matting -> mat mating -> mate meeting -> meet milling -> mill messing -> mess meetings -> meet */ static void step1ab(void) { if (b[k] == 's') { if (ends("\04" "sses")) { k -= 2; } else if (ends("\03" "ies")) { setto("\01" "i"); } else if (b[k-1] != 's') { k--; } } if (ends("\03" "eed")) { if (m() > 0U) { k--; } } else if ((ends("\02" "ed") || ends("\03" "ing")) && vowelinstem()) { k = j; if (ends("\02" "at")) { setto("\03" "ate"); } else if (ends("\02" "bl")) { setto("\03" "ble"); } else if (ends("\02" "iz")) { setto("\03" "ize"); } else if (doublec(k)) { k--; { int ch = b[k]; if (ch == 'l' || ch == 's' || ch == 'z') { k++; } } } else if (m() == 1U && cvc(k)) { setto("\01" "e"); } } return; }
void PorterStemmer::step1() { if (b[k] == _T('s')) { if (ends(_T("sses"))) k -= 2; else if (ends(_T("ies"))) setto(_T("i")); else if (b[k-1] != _T('s')) k--; } if (ends(_T("eed"))) { if (m() > 0) k--; } else if ((ends(_T("ed")) || ends(_T("ing"))) && vowelinstem()) { k = j; if (ends(_T("at"))) setto(_T("ate")); else if (ends(_T("bl"))) setto(_T("ble")); else if (ends(_T("iz"))) setto(_T("ize")); else if (doublec(k)) { int32_t ch = b[k--]; if (ch == _T('l') || ch == _T('s') || ch == _T('z')) k++; } else if (m() == 1 && cvc(k)) setto(_T("e")); } }
static void step1c(struct stemmer * z) { if (ends(z, "\01" "y") && vowelinstem(z)) z->b[z->k] = 'i'; }
void step1c() { if (ends("\01" "y") && vowelinstem()) b[k] = 'i'; }
void Porter_Stemmer::step1c() { if (ends("\01" "y") && vowelinstem()) b[k] = 'i'; }
void PorterStemmer::step2() { if (ends(_T("y")) && vowelinstem()) { b[k] = 'i'; dirty = true; } }