MediaWiki:Stemmer.js
Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր զննարկիչի հիշապահեստը. Mozilla / Firefox / Safari՝ Ctrl+Shift+R (Cmd+Shift+R Mac OS X-ում) Konqueror՝ F5 Opera՝ Tools→Preferences ընտրացանկից։ Internet Explorer՝ Ctrl+F5
// Armenian stemmer
// released under GNU GPL 2.0 or later
// based on Armenian Javascript stemmer from Urim project (http://code.google.com/p/urim/ Mozilla Public License 1.1), which is based on Snowball project (http://snowball.tartarus.org)
//
// Example
//
// var testStemmer = new ArmenianStemmer();
// testStemmer.setCurrent('Википедия');
// var res = testStemmer.getCurrent(); // res == 'Википед'
//
function Among(s, substring_i, result, method) {
if ((!s && s != "") || (!substring_i && (substring_i != 0)) || !result)
throw ("Bad Among initialisation: s:" + s + ", substring_i: "
+ substring_i + ", result: " + result);
this.s_size = s.length;
this.s = this.toCharArray(s);
this.substring_i = substring_i;
this.result = result;
this.method = method;
}
Among.prototype.toCharArray = function(s) {
var sLength = s.length;
var charArr = new Array(sLength);
for (var i = 0; i < sLength; i++)
charArr[i] = s.charCodeAt(i);
return charArr;
}
function SnowballProgram() {
var current;
return {
bra : 0,
ket : 0,
limit : 0,
cursor : 0,
limit_backward : 0,
setCurrent : function(word) {
current = word;
this.cursor = 0;
this.limit = word.length;
this.limit_backward = 0;
this.bra = this.cursor;
this.ket = this.limit;
},
getCurrent : function() {
var result = current;
current = null;
return result;
},
in_grouping : function(s, min, max) {
if (this.cursor >= this.limit)
return false;
var ch = current.charCodeAt(this.cursor);
if (ch > max || ch < min)
return false;
ch -= min;
if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)
return false;
this.cursor++;
return true;
},
in_grouping_b : function(s, min, max) {
if (this.cursor <= this.limit_backward)
return false;
var ch = current.charCodeAt(this.cursor - 1);
if (ch > max || ch < min)
return false;
ch -= min;
if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)
return false;
this.cursor--;
return true;
},
out_grouping : function(s, min, max) {
if (this.cursor >= this.limit)
return false;
var ch = current.charCodeAt(this.cursor);
if (ch > max || ch < min) {
this.cursor++;
return true;
}
ch -= min;
if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) {
this.cursor++;
return true;
}
return false;
},
out_grouping_b : function(s, min, max) {
if (this.cursor <= this.limit_backward)
return false;
var ch = current.charCodeAt(this.cursor - 1);
if (ch > max || ch < min) {
this.cursor--;
return true;
}
ch -= min;
if ((s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) {
this.cursor--;
return true;
}
return false;
},
in_range : function(min, max) {
if (this.cursor >= this.limit)
return false;
var ch = current.charCodeAt(this.cursor);
if (ch > max || ch < min)
return false;
this.cursor++;
return true;
},
in_range_b : function(min, max) {
if (this.cursor <= this.limit_backward)
return false;
var ch = current.charCodeAt(this.cursor - 1);
if (ch > max || ch < min)
return false;
this.cursor--;
return true;
},
out_range : function(min, max) {
if (this.cursor >= this.limit)
return false;
var ch = current.charCodeAt(this.cursor);
if (!(ch > max || ch < min))
return false;
this.cursor++;
return true;
},
out_range_b : function(min, max) {
if (this.cursor <= this.limit_backward)
return false;
var ch = current.charCodeAt(this.cursor - 1);
if (!(ch > max || ch < min))
return false;
this.cursor--;
return true;
},
eq_s : function(s_size, s) {
if (this.limit - this.cursor < s_size)
return false;
for (var i = 0; i != s_size; i++) {
if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i))
return false;
}
this.cursor += s_size;
return true;
},
eq_s_b : function(s_size, s) {
if (this.cursor - this.limit_backward < s_size)
return false;
for (var i = 0; i != s_size; i++) {
if (current.charCodeAt(this.cursor - s_size + i) != s
.charCodeAt(i))
return false;
}
this.cursor -= s_size;
return true;
},
find_among : function(v, v_size) {
var i = 0;
var j = v_size;
var c = this.cursor;
var l = this.limit;
var common_i = 0;
var common_j = 0;
var first_key_inspected = false;
while (true) {
var k = i + ((j - i) >> 1);
var diff = 0;
var common = common_i < common_j ? common_i : common_j;
var w = v[k];
for (var i2 = common; i2 < w.s_size; i2++) {
if (c + common == l) {
diff = -1;
break;
}
diff = current.charCodeAt(c + common) - w.s[i2];
if (diff != 0)
break;
common++;
}
if (diff < 0) {
j = k;
common_j = common;
} else {
i = k;
common_i = common;
}
if (j - i <= 1) {
if (i > 0)
break;
if (j == i)
break;
if (first_key_inspected)
break;
first_key_inspected = true;
}
}
while (true) {
var w = v[i];
if (common_i >= w.s_size) {
this.cursor = c + w.s_size;
if (!w.method)
return w.result;
var res = w.method();
this.cursor = c + w.s_size;
if (res)
return w.result;
}
i = w.substring_i;
if (i < 0)
return 0;
}
},
find_among_b : function(v, v_size) {
var i = 0;
var j = v_size;
var c = this.cursor;
var lb = this.limit_backward;
var common_i = 0;
var common_j = 0;
var first_key_inspected = false;
while (true) {
var k = i + ((j - i) >> 1);
var diff = 0;
var common = common_i < common_j ? common_i : common_j;
var w = v[k];
for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) {
if (c - common == lb) {
diff = -1;
break;
}
diff = current.charCodeAt(c - 1 - common) - w.s[i2];
if (diff != 0)
break;
common++;
}
if (diff < 0) {
j = k;
common_j = common;
} else {
i = k;
common_i = common;
}
if (j - i <= 1) {
if (i > 0)
break;
if (j == i)
break;
if (first_key_inspected)
break;
first_key_inspected = true;
}
}
while (true) {
var w = v[i];
if (common_i >= w.s_size) {
this.cursor = c - w.s_size;
if (!w.method)
return w.result;
var res = w.method();
this.cursor = c - w.s_size;
if (res)
return w.result;
}
i = w.substring_i;
if (i < 0)
return 0;
}
},
replace_s : function(c_bra, c_ket, s) {
var adjustment = s.length - (c_ket - c_bra);
var left = current.substring(0, c_bra);
var right = current.substring(c_ket);
current = left + s + right;
this.limit += adjustment;
if (this.cursor >= c_ket)
this.cursor += adjustment;
else if (this.cursor > c_bra)
this.cursor = c_bra;
return adjustment;
},
slice_check : function() {
if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit
|| this.limit > current.length) {
throw ("faulty slice operation");
}
},
slice_from : function(s) {
this.slice_check();
this.replace_s(this.bra, this.ket, s);
},
slice_del : function() {
this.slice_from("");
},
insert : function(c_bra, c_ket, s) {
var adjustment = this.replace_s(c_bra, c_ket, s);
if (c_bra <= this.bra)
this.bra += adjustment;
if (c_bra <= this.ket)
this.ket += adjustment;
},
slice_to : function() {
this.slice_check();
return current.substring(this.bra, this.ket);
},
eq_v_b : function(s) {
return this.eq_s_b(s.length, s);
}
};
}
function ArmenianStemmer() {
var a_0 = [
new Among ( "\u0580\u0578\u0580\u0564", -1, 1 ),
new Among ( "\u0565\u0580\u0578\u0580\u0564", 0, 1 ),
new Among ( "\u0561\u056C\u056B", -1, 1 ),
new Among ( "\u0561\u056F\u056B", -1, 1 ),
new Among ( "\u0578\u0580\u0561\u056F", -1, 1 ),
new Among ( "\u0565\u0572", -1, 1 ),
new Among ( "\u0561\u056F\u0561\u0576", -1, 1 ),
new Among ( "\u0561\u0580\u0561\u0576", -1, 1 ),
new Among ( "\u0565\u0576", -1, 1 ),
new Among ( "\u0565\u056F\u0565\u0576", 8, 1 ),
new Among ( "\u0565\u0580\u0565\u0576", 8, 1 ),
new Among ( "\u0578\u0580\u0567\u0576", -1, 1 ),
new Among ( "\u056B\u0576", -1, 1 ),
new Among ( "\u0563\u056B\u0576", 12, 1 ),
new Among ( "\u0578\u057E\u056B\u0576", 12, 1 ),
new Among ( "\u056C\u0561\u0575\u0576", -1, 1 ),
new Among ( "\u057E\u0578\u0582\u0576", -1, 1 ),
new Among ( "\u057A\u0565\u057D", -1, 1 ),
new Among ( "\u056B\u057E", -1, 1 ),
new Among ( "\u0561\u057F", -1, 1 ),
new Among ( "\u0561\u057E\u0565\u057F", -1, 1 ),
new Among ( "\u056F\u0578\u057F", -1, 1 ),
new Among ( "\u0562\u0561\u0580", -1, 1 )
];
var a_1 = [
new Among ( "\u0561", -1, 1 ),
new Among ( "\u0561\u0581\u0561", 0, 1 ),
new Among ( "\u0565\u0581\u0561", 0, 1 ),
new Among ( "\u057E\u0565", -1, 1 ),
new Among ( "\u0561\u0581\u0580\u056B", -1, 1 ),
new Among ( "\u0561\u0581\u056B", -1, 1 ),
new Among ( "\u0565\u0581\u056B", -1, 1 ),
new Among ( "\u057E\u0565\u0581\u056B", 6, 1 ),
new Among ( "\u0561\u056C", -1, 1 ),
new Among ( "\u0568\u0561\u056C", 8, 1 ),
new Among ( "\u0561\u0576\u0561\u056C", 8, 1 ),
new Among ( "\u0565\u0576\u0561\u056C", 8, 1 ),
new Among ( "\u0561\u0581\u0576\u0561\u056C", 8, 1 ),
new Among ( "\u0565\u056C", -1, 1 ),
new Among ( "\u0568\u0565\u056C", 13, 1 ),
new Among ( "\u0576\u0565\u056C", 13, 1 ),
new Among ( "\u0581\u0576\u0565\u056C", 15, 1 ),
new Among ( "\u0565\u0581\u0576\u0565\u056C", 16, 1 ),
new Among ( "\u0579\u0565\u056C", 13, 1 ),
new Among ( "\u057E\u0565\u056C", 13, 1 ),
new Among ( "\u0561\u0581\u057E\u0565\u056C", 19, 1 ),
new Among ( "\u0565\u0581\u057E\u0565\u056C", 19, 1 ),
new Among ( "\u057F\u0565\u056C", 13, 1 ),
new Among ( "\u0561\u057F\u0565\u056C", 22, 1 ),
new Among ( "\u0578\u057F\u0565\u056C", 22, 1 ),
new Among ( "\u056F\u0578\u057F\u0565\u056C", 24, 1 ),
new Among ( "\u057E\u0561\u056E", -1, 1 ),
new Among ( "\u0578\u0582\u0574", -1, 1 ),
new Among ( "\u057E\u0578\u0582\u0574", 27, 1 ),
new Among ( "\u0561\u0576", -1, 1 ),
new Among ( "\u0581\u0561\u0576", 29, 1 ),
new Among ( "\u0561\u0581\u0561\u0576", 30, 1 ),
new Among ( "\u0561\u0581\u0580\u056B\u0576", -1, 1 ),
new Among ( "\u0561\u0581\u056B\u0576", -1, 1 ),
new Among ( "\u0565\u0581\u056B\u0576", -1, 1 ),
new Among ( "\u057E\u0565\u0581\u056B\u0576", 34, 1 ),
new Among ( "\u0561\u056C\u056B\u057D", -1, 1 ),
new Among ( "\u0565\u056C\u056B\u057D", -1, 1 ),
new Among ( "\u0561\u057E", -1, 1 ),
new Among ( "\u0561\u0581\u0561\u057E", 38, 1 ),
new Among ( "\u0565\u0581\u0561\u057E", 38, 1 ),
new Among ( "\u0561\u056C\u0578\u057E", -1, 1 ),
new Among ( "\u0565\u056C\u0578\u057E", -1, 1 ),
new Among ( "\u0561\u0580", -1, 1 ),
new Among ( "\u0561\u0581\u0561\u0580", 43, 1 ),
new Among ( "\u0565\u0581\u0561\u0580", 43, 1 ),
new Among ( "\u0561\u0581\u0580\u056B\u0580", -1, 1 ),
new Among ( "\u0561\u0581\u056B\u0580", -1, 1 ),
new Among ( "\u0565\u0581\u056B\u0580", -1, 1 ),
new Among ( "\u057E\u0565\u0581\u056B\u0580", 48, 1 ),
new Among ( "\u0561\u0581", -1, 1 ),
new Among ( "\u0565\u0581", -1, 1 ),
new Among ( "\u0561\u0581\u0580\u0565\u0581", 51, 1 ),
new Among ( "\u0561\u056C\u0578\u0582\u0581", -1, 1 ),
new Among ( "\u0565\u056C\u0578\u0582\u0581", -1, 1 ),
new Among ( "\u0561\u056C\u0578\u0582", -1, 1 ),
new Among ( "\u0565\u056C\u0578\u0582", -1, 1 ),
new Among ( "\u0561\u0584", -1, 1 ),
new Among ( "\u0581\u0561\u0584", 57, 1 ),
new Among ( "\u0561\u0581\u0561\u0584", 58, 1 ),
new Among ( "\u0561\u0581\u0580\u056B\u0584", -1, 1 ),
new Among ( "\u0561\u0581\u056B\u0584", -1, 1 ),
new Among ( "\u0565\u0581\u056B\u0584", -1, 1 ),
new Among ( "\u057E\u0565\u0581\u056B\u0584", 62, 1 ),
new Among ( "\u0561\u0576\u0584", -1, 1 ),
new Among ( "\u0581\u0561\u0576\u0584", 64, 1 ),
new Among ( "\u0561\u0581\u0561\u0576\u0584", 65, 1 ),
new Among ( "\u0561\u0581\u0580\u056B\u0576\u0584", -1, 1 ),
new Among ( "\u0561\u0581\u056B\u0576\u0584", -1, 1 ),
new Among ( "\u0565\u0581\u056B\u0576\u0584", -1, 1 ),
new Among ( "\u057E\u0565\u0581\u056B\u0576\u0584", 69, 1 )
];
var a_2 = [
new Among ( "\u0578\u0580\u0564", -1, 1 ),
new Among ( "\u0578\u0582\u0575\u0569", -1, 1 ),
new Among ( "\u0578\u0582\u0570\u056B", -1, 1 ),
new Among ( "\u0581\u056B", -1, 1 ),
new Among ( "\u056B\u056C", -1, 1 ),
new Among ( "\u0561\u056F", -1, 1 ),
new Among ( "\u0575\u0561\u056F", 5, 1 ),
new Among ( "\u0561\u0576\u0561\u056F", 5, 1 ),
new Among ( "\u056B\u056F", -1, 1 ),
new Among ( "\u0578\u0582\u056F", -1, 1 ),
new Among ( "\u0561\u0576", -1, 1 ),
new Among ( "\u057A\u0561\u0576", 10, 1 ),
new Among ( "\u057D\u057F\u0561\u0576", 10, 1 ),
new Among ( "\u0561\u0580\u0561\u0576", 10, 1 ),
new Among ( "\u0565\u0572\u0567\u0576", -1, 1 ),
new Among ( "\u0575\u0578\u0582\u0576", -1, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0578\u0582\u0576", 15, 1 ),
new Among ( "\u0561\u056E\u0578", -1, 1 ),
new Among ( "\u056B\u0579", -1, 1 ),
new Among ( "\u0578\u0582\u057D", -1, 1 ),
new Among ( "\u0578\u0582\u057D\u057F", -1, 1 ),
new Among ( "\u0563\u0561\u0580", -1, 1 ),
new Among ( "\u057E\u0578\u0580", -1, 1 ),
new Among ( "\u0561\u057E\u0578\u0580", 22, 1 ),
new Among ( "\u0578\u0581", -1, 1 ),
new Among ( "\u0561\u0576\u0585\u0581", -1, 1 ),
new Among ( "\u0578\u0582", -1, 1 ),
new Among ( "\u0584", -1, 1 ),
new Among ( "\u0579\u0565\u0584", 27, 1 ),
new Among ( "\u056B\u0584", 27, 1 ),
new Among ( "\u0561\u056C\u056B\u0584", 29, 1 ),
new Among ( "\u0561\u0576\u056B\u0584", 29, 1 ),
new Among ( "\u057E\u0561\u056E\u0584", 27, 1 ),
new Among ( "\u0578\u0582\u0575\u0584", 27, 1 ),
new Among ( "\u0565\u0576\u0584", 27, 1 ),
new Among ( "\u0578\u0576\u0584", 27, 1 ),
new Among ( "\u0578\u0582\u0576\u0584", 27, 1 ),
new Among ( "\u0574\u0578\u0582\u0576\u0584", 36, 1 ),
new Among ( "\u056B\u0579\u0584", 27, 1 ),
new Among ( "\u0561\u0580\u0584", 27, 1 )
];
var a_3 = [
new Among ( "\u057D\u0561", -1, 1 ),
new Among ( "\u057E\u0561", -1, 1 ),
new Among ( "\u0561\u0574\u0562", -1, 1 ),
new Among ( "\u0564", -1, 1 ),
new Among ( "\u0561\u0576\u0564", 3, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0561\u0576\u0564", 4, 1 ),
new Among ( "\u057E\u0561\u0576\u0564", 4, 1 ),
new Among ( "\u0578\u057B\u0564", 3, 1 ),
new Among ( "\u0565\u0580\u0564", 3, 1 ),
new Among ( "\u0576\u0565\u0580\u0564", 8, 1 ),
new Among ( "\u0578\u0582\u0564", 3, 1 ),
new Among ( "\u0568", -1, 1 ),
new Among ( "\u0561\u0576\u0568", 11, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0561\u0576\u0568", 12, 1 ),
new Among ( "\u057E\u0561\u0576\u0568", 12, 1 ),
new Among ( "\u0578\u057B\u0568", 11, 1 ),
new Among ( "\u0565\u0580\u0568", 11, 1 ),
new Among ( "\u0576\u0565\u0580\u0568", 16, 1 ),
new Among ( "\u056B", -1, 1 ),
new Among ( "\u057E\u056B", 18, 1 ),
new Among ( "\u0565\u0580\u056B", 18, 1 ),
new Among ( "\u0576\u0565\u0580\u056B", 20, 1 ),
new Among ( "\u0561\u0576\u0578\u0582\u0574", -1, 1 ),
new Among ( "\u0565\u0580\u0578\u0582\u0574", -1, 1 ),
new Among ( "\u0576\u0565\u0580\u0578\u0582\u0574", 23, 1 ),
new Among ( "\u0576", -1, 1 ),
new Among ( "\u0561\u0576", 25, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0561\u0576", 26, 1 ),
new Among ( "\u057E\u0561\u0576", 26, 1 ),
new Among ( "\u056B\u0576", 25, 1 ),
new Among ( "\u0565\u0580\u056B\u0576", 29, 1 ),
new Among ( "\u0576\u0565\u0580\u056B\u0576", 30, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0561\u0576\u0576", 25, 1 ),
new Among ( "\u0565\u0580\u0576", 25, 1 ),
new Among ( "\u0576\u0565\u0580\u0576", 33, 1 ),
new Among ( "\u0578\u0582\u0576", 25, 1 ),
new Among ( "\u0578\u057B", -1, 1 ),
new Among ( "\u0578\u0582\u0569\u0575\u0561\u0576\u057D", -1, 1 ),
new Among ( "\u057E\u0561\u0576\u057D", -1, 1 ),
new Among ( "\u0578\u057B\u057D", -1, 1 ),
new Among ( "\u0578\u057E", -1, 1 ),
new Among ( "\u0561\u0576\u0578\u057E", 40, 1 ),
new Among ( "\u057E\u0578\u057E", 40, 1 ),
new Among ( "\u0565\u0580\u0578\u057E", 40, 1 ),
new Among ( "\u0576\u0565\u0580\u0578\u057E", 43, 1 ),
new Among ( "\u0565\u0580", -1, 1 ),
new Among ( "\u0576\u0565\u0580", 45, 1 ),
new Among ( "\u0581", -1, 1 ),
new Among ( "\u056B\u0581", 47, 1 ),
new Among ( "\u057E\u0561\u0576\u056B\u0581", 48, 1 ),
new Among ( "\u0578\u057B\u056B\u0581", 48, 1 ),
new Among ( "\u057E\u056B\u0581", 48, 1 ),
new Among ( "\u0565\u0580\u056B\u0581", 48, 1 ),
new Among ( "\u0576\u0565\u0580\u056B\u0581", 52, 1 ),
new Among ( "\u0581\u056B\u0581", 48, 1 ),
new Among ( "\u0578\u0581", 47, 1 ),
new Among ( "\u0578\u0582\u0581", 47, 1 )
];
var g_v = [209, 4, 128, 0, 18 ];
var I_p2;
var I_pV;
var sbp = new SnowballProgram();
function r_mark_regions() {
var v_1;
I_pV = sbp.limit;
I_p2 = sbp.limit;
v_1 = sbp.cursor;
lab0: do {
golab1: while(true)
{
lab2: do {
if (!(sbp.in_grouping(g_v, 1377, 1413)))
{
break lab2;
}
break golab1;
} while (false);
if (sbp.cursor >= sbp.limit)
{
break lab0;
}
sbp.cursor++;
}
I_pV = sbp.cursor;
golab3: while(true)
{
lab4: do {
if (!(sbp.out_grouping(g_v, 1377, 1413)))
{
break lab4;
}
break golab3;
} while (false);
if (sbp.cursor >= sbp.limit)
{
break lab0;
}
sbp.cursor++;
}
golab5: while(true)
{
lab6: do {
if (!(sbp.in_grouping(g_v, 1377, 1413)))
{
break lab6;
}
break golab5;
} while (false);
if (sbp.cursor >= sbp.limit)
{
break lab0;
}
sbp.cursor++;
}
golab7: while(true)
{
lab8: do {
if (!(sbp.out_grouping(g_v, 1377, 1413)))
{
break lab8;
}
break golab7;
} while (false);
if (sbp.cursor >= sbp.limit)
{
break lab0;
}
sbp.cursor++;
}
I_p2 = sbp.cursor;
} while (false);
sbp.cursor = v_1;
return true;
}
function r_R2() {
if (!(I_p2 <= sbp.cursor))
{
return false;
}
return true;
}
function r_adjective() {
var among_var;
sbp.ket = sbp.cursor;
among_var = sbp.find_among_b(a_0, 23);
if (among_var == 0)
{
return false;
}
sbp.bra = sbp.cursor;
switch(among_var) {
case 0:
return false;
case 1:
sbp.slice_del();
break;
}
return true;
}
function r_verb() {
var among_var;
sbp.ket = sbp.cursor;
among_var = sbp.find_among_b(a_1, 71);
if (among_var == 0)
{
return false;
}
sbp.bra = sbp.cursor;
switch(among_var) {
case 0:
return false;
case 1:
sbp.slice_del();
break;
}
return true;
}
function r_noun() {
var among_var;
sbp.ket = sbp.cursor;
among_var = sbp.find_among_b(a_2, 40);
if (among_var == 0)
{
return false;
}
sbp.bra = sbp.cursor;
switch(among_var) {
case 0:
return false;
case 1:
sbp.slice_del();
break;
}
return true;
}
function r_ending() {
var among_var;
sbp.ket = sbp.cursor;
among_var = sbp.find_among_b(a_3, 57);
if (among_var == 0)
{
return false;
}
sbp.bra = sbp.cursor;
if (!r_R2())
{
return false;
}
switch(among_var) {
case 0:
return false;
case 1:
sbp.slice_del();
break;
}
return true;
}
this.stem = function() {
var v_1;
var v_2;
var v_3;
var v_4;
var v_5;
var v_6;
var v_7;
v_1 = sbp.cursor;
lab0: do {
if (!r_mark_regions())
{
break lab0;
}
} while (false);
sbp.cursor = v_1;
sbp.limit_backward = sbp.cursor; sbp.cursor = sbp.limit;
v_2 = sbp.limit - sbp.cursor;
if (sbp.cursor < I_pV)
{
return false;
}
sbp.cursor = I_pV;
v_3 = sbp.limit_backward;
sbp.limit_backward = sbp.cursor;
sbp.cursor = sbp.limit - v_2;
v_4 = sbp.limit - sbp.cursor;
lab1: do {
if (!r_ending())
{
break lab1;
}
} while (false);
sbp.cursor = sbp.limit - v_4;
v_5 = sbp.limit - sbp.cursor;
lab2: do {
if (!r_verb())
{
break lab2;
}
} while (false);
sbp.cursor = sbp.limit - v_5;
v_6 = sbp.limit - sbp.cursor;
lab3: do {
if (!r_adjective())
{
break lab3;
}
} while (false);
sbp.cursor = sbp.limit - v_6;
v_7 = sbp.limit - sbp.cursor;
lab4: do {
if (!r_noun())
{
break lab4;
}
} while (false);
sbp.cursor = sbp.limit - v_7;
sbp.limit_backward = v_3;
sbp.cursor = sbp.limit_backward; return true;
}
this.setCurrent = function(word) {
sbp.setCurrent(word);
};
this.getCurrent = function() {
return sbp.getCurrent();
};
}