\n"; } return($solution); return; } function SetSolution(&$solnsArr,$num,$root,$iTense,$iSubject,$iRelative,$iObject) { if (strlen($root) < 2){ return 1; } $lookupStr = "Verb: ${root}"; $curSoln = getSingleSolutionTxt(++$dictSolnNum,$root,$iTense,$iSubject,$iRelative,$iObject,$lookupStr); $curSoln .= "
"; $divnum++; array_push($solnsArr, $curSoln); return; } function CheckTenses($testword){ $start=0; $n=0; $end=strlen($testword); $RelativeNotFound = 1; $iRelative; $iTense; $iTenseSing; $iTensePlural; $iSubject; $iTenseInf; $iTenseNegInf; $solns = array(); ## just go through all the tense checks one after another ######## 1) Regular tenses (1 to 22) with positive subject prefix eg 'ninaenda' ################ for ($iSubject = 1; $iSubject <= 21; $iSubject++) ## ni, u, a etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 1; $iTense <= 22; $iTense++) ## na, me, ta, etc { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start, $end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); $RelativeNotFound = 1; if (($iTense == 1) || ($iTense == 2) || (($iTense == 4) && (substr($testword,$start,2) == "ka"))) { $tempStart = $start; if ($iTense == 4) { $tempStart += 2; } ##ie ignore the ka in nitakachofanya for ($iRelative = 20; ($iRelative <= 29)&&($RelativeNotFound); $iRelative++) { if (substr($testword,$tempStart,strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative)) { $RelativeNotFound = 0; ##ie break out of loop $start = $tempStart + strlen(getRelativeInfix($iRelative)); SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iRelative,0); last; #break out here } } } if ($RelativeNotFound) { $iRelative = 0; } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } # 2) Regular tenses with negative subject prefix (30-32) eg 'sikuenda' ################ for ($iSubject = 30; $iSubject <= 50; $iSubject++) #si, hu, ha etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 30; $iTense <= 32; $iTense++) ## ku, ja, ta { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start,$end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } ######/ 3) Present -ve (40) eg 'siendi' ######################## $iTense = 40; if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iSubject = 30; $iSubject <= 50; $iSubject++) ## si, hu, ha etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { ##no tense infix $start = strlen(getSubjectPrefix($iSubject)); ## if word ends in "i" then the root could either end in "i" or "a" SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); if (substr($testword,$end-1,1) == "i") { SetSolution ($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "a",$iTense,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); if (substr($testword,$end-1,1) == "i") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "a",$iTense,$iSubject,0,$iObject); } } } } } } #### 4) Present indefinite ('a' tense) (41) eg 'naenda' #### $iTense = 41; if ((substr($testword,$end-1,1) == "a")||(substr($testword,$end-1,1) == "e")||(substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iSubject = 60; $iSubject <= 79; $iSubject++) ## na, wa, twa etc { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { ##no tense infix $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start, $end - $start))) { $start += 2; } SetSolution ($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); } } } } } ####/ 5) Simple command (42,43) piga pigeni #################################### $iTenseSing=42; $iTensePlural=43; ##first deal with irregulars njoo, njooni, nenda, nendeni, lete, (leteni) if ($testword == "njoo") { SetSolution($solns, ++$n,"ja",$iTenseSing,0,0,0); } else if ($testword == "njooni") { SetSolution($solns, ++$n,"kuja",$iTensePlural,0,0,0); } else if ($testword == "nenda") { SetSolution($solns, ++$n,"enda",$iTenseSing,0,0,0); } else if ($testword == "nendeni") { SetSolution($solns, ++$n,"enda",$iTensePlural,0,0,0); } else if ($testword == "lete") { SetSolution($solns, ++$n,"leta",$iTenseSing,0,0,0); } else if ($testword == "leteni") { SetSolution($solns, ++$n,"leta",$iTensePlural,0,0,0); } else if (substr($testword,$end-3,3) == "eni") { ##two possible stems e or a/ SetSolution($solns, (++$n),substr($testword,0,$end-3) . "a",$iTensePlural,0,0,0); SetSolution($solns, (++$n),substr($testword,0,$end-3) . "e",$iTensePlural,0,0,0); } else if (substr($testword,$end-2,2) == "ni") { ##just remove -ni SetSolution($solns, (++$n),substr($testword,0,$end-2),$iTensePlural,0,0,0); } ##this gives too many false readings, and would be picked up anyway by Kamusi ## else if ((substr($testword,$end-1,1) eq "a")||(substr($testword,$end-1,1) eq "e")||(substr($testword,$end-1,1) eq "i")||(substr($testword,$end-1,1) eq "u")) ## SetSolution($solns, (++$n),substr($testword,0,$end),$iTenseSing,0,0,0); ###### 6) command in subjunctive (44,45) uende or mkuleni ####################/ $iTenseSing=44; $iTensePlural=45; for ($i = 0; $i <= 2; $i++) { if ($i==0) { $iSubject = 2; } ##u else if ($i==1) { $iSubject = 6; } ##m else { $iSubject = 21; }##mw $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$end-3,3) == "eni") { ##two possible stems e or a/ SetSolution($solns, (++$n),substr($testword,$start,$end - 3 - $start) . "a",$iTensePlural,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end - 3 - $start) . "e",$iTensePlural,$iSubject,0,0); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "a",$iTenseSing,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end - 1 - $start) . "e",$iTenseSing,$iSubject,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTenseSing,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems e or a/ SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,$iSubject,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 1 - $start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - $start-strlen(getObjectInfix($iObject))),$iTenseSing,$iSubject,0,$iObject); } } } } } ###### 7) command with object nipe / nipeni (give me) (46,47) ######################/ $iTenseSing=46; $iTensePlural=47; $iSubject = 0; ##no subject for ($iObject = 1; $iObject <= 25; $iObject++) { if (($iObject != 2) && (substr($testword,0,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject))) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems e or a/ SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - 3 - $start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,$iSubject,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseSing,$iSubject,0,$iObject); } } } ########/8) command with ka kapige (48) #################### $iTenseSing = 48; $iTensePlural = 49; $start = 0; if (substr($testword,$start,strlen($TenseInfix[$iTenseSing])) == $TenseInfix[$iTenseSing]) { $start = strlen($TenseInfix[$iTenseSing]); if (substr($testword,$end-3,3) == "eni") ##not sure if kapigeni exists though { ##two possible stems e or a/ SetSolution($solns, (++$n),substr($testword,$start,$end-3-$start) . "a",$iTensePlural,0,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-3-$start) . "e",$iTensePlural,0,0,0); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "a",$iTenseSing,0,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "e",$iTenseSing,0,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, ++$n,substr($testword,$start,$end),$iTenseSing,0,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-3,3) == "eni") { ##two possible stems e or a/ not sure if valid with ka tense SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "a",$iTensePlural,0,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-3-$start-strlen(getObjectInfix($iObject))) . "e",$iTensePlural,0,0,$iObject); } else if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTenseSing,0,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTenseSing,0,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseSing,0,0,$iObject); } } } } ####/9) subjunctive +ve and ve & expeditious (50,51,52) (nipende and nisipende and nikapige)##########/ for ($iSubject = 1; $iSubject <= 22; $iSubject++) ## ni, u, a etc NOTE 22 not 21 { $start = 0; if (substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { for ($iTense = 50; $iTense <= 52; $iTense++) ## null, si, ka { $start = strlen(getSubjectPrefix($iSubject)); if (substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)); if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "a",$iTense,$iSubject,0,0); SetSolution($solns, (++$n),substr($testword,$start,$end-1-$start) . "e",$iTense,$iSubject,0,0); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTense,$iSubject,0,0); } for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { if (substr($testword,$end-1,1) == "e") { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "a",$iTense,$iSubject,0,$iObject); SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-1-$start-strlen(getObjectInfix($iObject))) . "e",$iTense,$iSubject,0,$iObject); } else if ((substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,0,$iObject); } } } } } } } #////10) general relative (53) nipigaye /////////// $iTense = 53; for ($iSubject = 1; $iSubject <= 15; $iSubject++) #// ni, u, a etc { if (substr($testword,0,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { #// if end of word matches the relative for that subjec eg ye for ni if (substr($testword,$end - strlen($RelativeInfix[$iSubject]), strlen($RelativeInfix[$iSubject])) == $RelativeInfix[$iSubject]) { $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start,strlen($RelativeInfix[$iSubject])))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-strlen($RelativeInfix[$iSubject]) - $start),$iTense,$iSubject,$iSubject,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end - strlen($RelativeInfix[$iSubject]) - $start - strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iSubject,$iObject); } } } #/// now test for general relative of time/manner eg afikapo (still within the first if statement) for ($iRelative = 25; $iRelative <= 26; $iRelative++) #// po and vyo { #// if end of word is "vyo" or "po" if (substr($testword,$end - strlen(getRelativeInfix($iRelative)), strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative)) { $start = strlen(getSubjectPrefix($iSubject)); if (Monosyllabic(substr($testword,$start,$end - strlen(getRelativeInfix($iRelative)) - $start))) { $start = $start +2; } SetSolution($solns,(++$n),substr($testword,$start,$end - strlen(getRelativeInfix($iRelative)) - $start), $iTense,$iSubject,$iRelative,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns,(++$n),substr($testword,$start+strlen(getObjectInfix($iObject))),$end - strlen($RelativeInfix[$iSubject]) - ($start+strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iRelative,$iObject); } } } } } } ####11) general negative relative (53) nisiyekula ##########/ $iTense = 54; for ($iSubject = 1; $iSubject <= 15; $iSubject++) ## ni, u, a etc { if (substr($testword,0,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) { $start = strlen(getSubjectPrefix($iSubject)); ## if next 2 letters match TenseInfix (si) and following are the relative for that subjec eg ye for ni if ((substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) && (substr($testword,$start+strlen(getTenseInfix($iTense)),strlen($RelativeInfix[$iSubject])) == $RelativeInfix[$iSubject])) { $start = strlen(getSubjectPrefix($iSubject)) +strlen(getTenseInfix($iTense)) + strlen($RelativeInfix[$iSubject]); if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iSubject,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,$iSubject,$iSubject,$iObject); } } } #/// now test for negative relative of time/manner eg asipofika (still within the first if statement) $start = strlen(getSubjectPrefix($iSubject)); for ($iRelative = 25; $iRelative <= 26; $iRelative++) #// po and vyo { #// if "vyo" or "po" after the "si" eg nisipofanya if ((substr($testword,$start,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) && (substr($testword,$start+strlen(getTenseInfix($iTense)), strlen(getRelativeInfix($iRelative))) == getRelativeInfix($iRelative))) { $start = strlen(getSubjectPrefix($iSubject)) + strlen(getTenseInfix($iTense)) + strlen(getRelativeInfix($iRelative)); if (Monosyllabic(substr($testword,$start,$end - $start))) { $start = $start +2; } SetSolution($solns,(++$n),substr($testword,$start,$end - $start),$iTense,$iSubject,$iRelative,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns,(++$n),substr($testword,$start+strlen(getObjectInfix($iObject)), $end - ($start+strlen(getObjectInfix($iObject)))), $iTense,$iSubject,$iRelative,$iObject); } } } } } } #### 12) infinitive positive and negative (60,61) eg kupiga ######################/ $iTenseInf = 60; $iTenseNegInf = 61; if (substr($testword,0,4) == "kuto") { $start = 4; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseNegInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseNegInf,0,0,$iObject); } } } if (substr($testword,0,2) == "ku") { $start = 2; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseInf,0,0,$iObject); } } } else if (substr($testword,0,2) == "kw") { $start = 2; if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTenseInf,0,0,0); for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTenseInf,0,0,$iObject); } } } ####/ 14 & 15) habitual 62 hupiga, and headline tense (63) mtoto kapigwa na .. and ha############## if ((substr($testword,$end-1,1) == "a")||(substr($testword,$end-1,1) == "e")||(substr($testword,$end-1,1) == "i")||(substr($testword,$end-1,1) == "u")) { for ($iTense = 62; $iTense<=63; $iTense++) { ## if starts with ka or hu if (substr($testword,0,strlen(getTenseInfix($iTense))) == getTenseInfix($iTense)) { $start = strlen(getTenseInfix($iTense)); if (Monosyllabic(substr($testword,$start,$end-$start))) { $start += 2; } SetSolution($solns, (++$n),substr($testword,$start,$end-$start),$iTense,0,0,0); ##no subject in these tenses for ($iObject = 1; $iObject <= 25; $iObject++) { if (substr($testword,$start,strlen(getObjectInfix($iObject))) == getObjectInfix($iObject)) { SetSolution($solns, (++$n),substr($testword,$start+strlen(getObjectInfix($iObject)),$end-$start-strlen(getObjectInfix($iObject))),$iTense,0,0,$iObject); } } } } } #//////// 16) Kuwa na - irregular present tense nina, una, ana etc //////// $iTense = 1; #//present continuous $start = 0; for ($iSubject = 1; $iSubject <= 21; $iSubject++) { #// ni, u, a etc if ((substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) && (substr($testword,strlen(getSubjectPrefix($iSubject)),$end - strlen(getSubjectPrefix($iSubject))) == "na")) { SetSolution($solns,(++$n),"wa na",$iTense,$iSubject,0,0); } } $iTense = 40; #//present negative sina, huna, hakuna etc for ($iSubject = 30; $iSubject <= 50; $iSubject++) { # // si, hu, ha etc if ((substr($testword,$start,strlen(getSubjectPrefix($iSubject))) == getSubjectPrefix($iSubject)) && (substr($testword,strlen(getSubjectPrefix($iSubject)),$end - strlen(getSubjectPrefix($iSubject))) == "na")) { SetSolution($solns,(++$n),"wa na",$iTense,$iSubject,0,0); } } return($solns); } $solnsArr = CheckTenses($query); if(count($solnsArr)){ $node->title = "$query looks like a sentence"; $node->children_html = "We have some possible search refinements
Popular contentLast viewed:My listReview tools |