integers ( p1 ) groupings ( samoglasniki crke soglasniki ) routines ( remove_ovski remove_evski remove_anski remove_stvo remove_shtvo remove_shen remove_ski remove_chek remove_ovm remove_ovi remove_ega remove_ijo remove_ija remove_ema remove_ste remove_ejo remove_ite remove_ila remove_shche remove_shki remove_ost remove_ast remove_len remove_ven remove_vna remove_chan remove_iti remove_al remove_ih remove_iv remove_eg remove_ja remove_je remove_em remove_en remove_ev remove_ov remove_jo remove_ma remove_mi remove_eh remove_ij remove_om remove_do remove_och remove_ti remove_il remove_ec remove_ka remove_in remove_an remove_at remove_sh remove_ir remove_m remove_c remove_a remove_e remove_i remove_o remove_u ) define crke 'abcčdefghijklmnoprs¹tuvz¾' define samoglasniki 'aeiou' define soglasniki crke-samoglasniki externals ( stem ) backwardmode ( define remove_ovski as ( [substring] among ( 'ovski' (delete) ) ) define remove_evski as ( [substring] among ( 'evski' (delete) ) ) define remove_anski as ( [substring] among ( 'anski' (delete) ) ) define remove_stvo as ( [substring] among ( 'stvo' (delete) ) ) define remove_shtvo as ( [substring] among ( '¹tvo' (delete) ) ) define remove_shen as ( [substring] among ( '¹en' (delete) ) ) define remove_ski as ( [substring] among ( 'ski' (delete) ) ) define remove_chek as ( [substring] among ( 'ček' (delete) ) ) define remove_ovm as ( [substring] among ( 'ovm' (delete) ) ) define remove_ovi as ( [substring] among ( 'ovi' (delete) ) ) define remove_ega as ( [substring] among ( 'ega' (delete) ) ) define remove_ijo as ( [substring] among ( 'ijo' (delete) ) ) define remove_ija as ( [substring] among ( 'ija' (delete) ) ) define remove_ema as ( [substring] among ( 'ema' (delete) ) ) define remove_ste as ( [substring] among ( 'ste' (delete) ) ) define remove_ejo as ( [substring] among ( 'ejo' (delete) ) ) define remove_ite as ( [substring] among ( 'ite' (delete) ) ) define remove_ila as ( [substring] among ( 'ila' (delete) ) ) define remove_shche as ( [substring] among ( '¹če' (delete) ) ) define remove_shki as ( [substring] among ( '¹ki' (delete) ) ) define remove_ost as ( [substring] among ( 'ost' (delete) ) ) define remove_ast as ( [substring] among ( 'ast' (delete) ) ) define remove_len as ( [substring] among ( 'len' (delete) ) ) define remove_ven as ( [substring] among ( 'ven' (delete) ) ) define remove_vna as ( [substring] among ( 'vna' (delete) ) ) define remove_chan as ( [substring] among ( 'čan' (delete) ) ) define remove_iti as ( [substring] among ( 'iti' (delete) ) ) define remove_al as ( [substring] among ( 'al' (delete) ) ) define remove_ih as ( [substring] among ( 'ih' (delete) ) ) define remove_iv as ( [substring] among ( 'iv' (delete) ) ) define remove_eg as ( [substring] among ( 'eg' (delete) ) ) define remove_ja as ( [substring] among ( 'ja' (delete) ) ) define remove_je as ( [substring] among ( 'je' (delete) ) ) define remove_em as ( [substring] among ( 'em' (delete) ) ) define remove_en as ( [substring] among ( 'en' (delete) ) ) define remove_ev as ( [substring] among ( 'ev' (delete) ) ) define remove_ov as ( [substring] among ( 'ov' (delete) ) ) define remove_jo as ( [substring] among ( 'jo' (delete) ) ) define remove_ma as ( [substring] among ( 'ma' (delete) ) ) define remove_mi as ( [substring] among ( 'mi' (delete) ) ) define remove_eh as ( [substring] among ( 'eh' (delete) ) ) define remove_ij as ( [substring] among ( 'ij' (delete) ) ) define remove_om as ( [substring] among ( 'om' (delete) ) ) define remove_do as ( [substring] among ( 'do' (delete) ) ) define remove_och as ( [substring] among ( 'oč' (delete) ) ) define remove_ti as ( [substring] among ( 'ti' (delete) ) ) define remove_il as ( [substring] among ( 'il' (delete) ) ) define remove_ec as ( [substring] among ( 'ec' (delete) ) ) define remove_ka as ( [substring] among ( 'ka' (delete) ) ) define remove_in as ( [substring] among ( 'in' (delete) ) ) define remove_an as ( [substring] among ( 'an' (delete) ) ) define remove_at as ( [substring] among ( 'at' (delete) ) ) define remove_ir as ( [substring] among ( 'ir' (delete) ) ) define remove_sh as ( [substring] among ( '¹' (delete) ) ) define remove_m as ( [substring] among ( 'm' (delete) ) ) define remove_c as ( [substring] among ( 'c' (delete) ) ) define remove_a as ( [substring] among ( 'a' (delete) ) ) define remove_e as ( [substring] among ( 'e' (delete) ) ) define remove_i as ( [substring] among ( 'i' (delete) ) ) define remove_o as ( [substring] among ( 'o' (delete) ) ) define remove_u as ( [substring] among ( 'u' (delete) ) ) ) define stem as ( $p1 = limit backwards ( do ( loop 4 (try (($p1>8) try (remove_ovski or remove_evski or remove_anski)) try (($p1>7) try (remove_stvo or remove_shtvo)) $p1 = size try (($p1>6) try (remove_shen or remove_ski or remove_chek or remove_ovm or remove_ega or remove_ovi or remove_ijo or remove_ija or remove_ema or remove_ste or remove_ejo /* or remove_oche or remove_eche or remove_ocha or remove_echa*/ or remove_ite or remove_ila or remove_shche or remove_shki or remove_ost or remove_ast or remove_len or remove_ven or remove_vna or remove_chan or remove_iti)) $p1 = size try (($p1>6) try (remove_al or remove_ih or remove_iv or remove_eg or remove_ja or remove_je or remove_em or remove_en or remove_ev or remove_ov or remove_jo or remove_ma or remove_mi or remove_eh or remove_ij or remove_om or remove_do or remove_och /* or remove_ech */ or remove_ti or remove_il or remove_ec or remove_ka or remove_in or remove_an or remove_at or remove_ir)) $p1 = size try (($p1>5) try (remove_sh or remove_m or remove_c or remove_a or remove_e or remove_i or remove_o or remove_u)) $p1 = size try (($p1>6) try ( [soglasniki] test soglasniki delete ) ) $p1 = size try (($p1>5) try (remove_a or remove_e or remove_i or remove_o or remove_u))) ) ) )