sub vp{ local($word) = @_; local($myvalue); local($retvalue); if ( ( $myvalue = &impoliteimper($word) ) eq "true") { $retval = "true"; } elsif ( ( $myvalue = &causative($word) ) eq "true" ){ $retvalue = "true"; } elsif ( ( $myvalue = &present($word) ) eq "true" ){ $retvalue = "true"; } elsif ( ( $myvalue = &infinitive($word) ) eq "true" ){ $retvalue = "true"; } elsif ( ( $myvalue = &rootverb($word) ) eq "true" ) { $retvalue = "true"; } elsif ( ($myvalue = &pastperfect($word) ) eq "true") { $retvalue = "true"; } elsif ( ($myvalue = &imperative($word) ) eq "true") { $retvalue = "true"; } elsif ( ($myvalue = &conjunctppl($word) ) eq "true") { $retvalue = "true"; } elsif ( ($myvalue = &subjunctive($word) ) eq "true") { $retvalue = "true"; } elsif ( ($myvalue = &future($word) ) eq "true") { $retvalue = "true"; } else { $retvalue = "false";} } sub infinitive{ local($word) = @_; local($hold) = $word; @tensetag = (); local($retvalue) = "nul"; if ( ( $result = &foundword($word) ) eq "true" ){ push(@tensetag, "($word infinitive)"); $retvalue = "true"; } elsif ( $word =~ s/vaanaa$/naa/ && ( $res = &foundword($word) eq "true" )) { push (@tensetag, "($hold $word causative_infinitive)"); $retvalue = "true"; } else { $retvalue = "false"; } } sub rootverb { local($word) = @_; local($dupword) = $word; local($result); local($retvalue); @tensetag = (); $word .= "naa"; if ( ( $result = &foundword($word) ) eq "true" ){ push(@tensetag, "($dupword $word rootvb)" ); $retvalue = "true"; } else { $retvalue = "false"; } } sub causative { local($word) = @_; local($hold) = $word; @tensetag = (); if ( $word =~ /\Bvaa\B/ ){ if ( $word =~ s/vaayaa$/naa/ && ( $res = &foundword($word) eq "true" ) ) { push(@tensetag, "($hold $word causative_mas_past)"); $retval = "true"; } elsif( $word =~ s/vaaye$/naa/ && ( $res = &foundword($word) eq "true") ) { push(@tensetag, "($hold $word causaitve_pl_past)"); $retval = "true"; } elsif ( $word =~ s/vaayii$/naa/ && ( $res = &foundword($word) eq "true") ) { push(@tensetag,"($hold $word causative_fem_past)"); $retval = "true"; } elsif ( $word =~ s/vaauungaa$/naa/ && ( $res = &foundword($word) eq "true") ) { push(@tensetag, "($hold $word causative_1st_fut)"); $retval = "true"; } elsif ( $word =~ s/vaauunge$/naa/ && ($res = &foundword($word) eq "true") ) { push(@tensetag, "($hold $word causative_pl_fut)"); $retval = "true"; } else { $retval = "false";} } } sub impoliteimper { local($word) = @_; local($dupword) = $word; local($hold) = $word; @tensetag = (); if ( $word =~ s/o$// ){ $word .= "naa"; if ( ( $result = &foundword($word) ) eq "true"){ push(@tensetag, "($dupword $word imp_imp)"); $retval = "true"; } elsif( $hold =~ s/o$/enaa/) { if ( ( $result = &foundword($hold) ) eq "true"){ push( @tensetag, "($dupword $hold imp_imp)"); $retval = "true"; } else { $retval = "false";} } } else { $retval = "false";} } sub future{ local($word) = @_; local($dupword) = $word; @tensetag = (); if ( $word =~ s/uungaa$//){ #exceptional uungaa words $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_1mas_sg)"); # I mas $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_1mas_sg)"); $retval = "true"; } } } elsif ( $word =~ s/uungii$//){ #exceptional uungii words # I fem $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_1fem_sg)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_1fem_sg)"); $retval = "true"; } } } elsif ( $word =~ s/yegii$// || $word =~ s/egii$//){ #exceptional egii words you,he,she $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_3fem_sg)"); #she $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_3fem_sg)"); #she $retval = "true"; } } } elsif ( $word =~ s/yengii$// || $word =~ s/engii$//){ #exceptional engii words we $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_1fem_pl)"); #we fem $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_1fem_pl)"); #we fem $retval = "true"; } } } elsif ( $word =~ s/yenge$// || $word =~ s/enge$//){ #exceptional ege words we mas $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_1mas_pl)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_1mas_pl)"); $retval = "true"; } } } elsif ( $word =~ s/yegaa$// || $word =~ s/egaa$//){ #exceptional egaa words you mas $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_12sg_mas)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_12sg_mas)"); $retval = "true"; }else{$retval = "false";} } } elsif ( $word =~ s/yoge$// || $word =~ s/oge$//){ #exceptional egaa words you mas $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_2sg_mas)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_2sg_mas)"); $retval = "true"; } else {$retval = "false";} } } elsif ( $word =~ s/yogii$// || $word =~ s/ogii$//){ #exceptional egaa words you mas $excep = &exceptional_uungaa_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($dupword $excep fut_2sg_fem)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word fut_2sg_fem)"); $retval = "true"; } else {$retval = "false";} } } elsif ( $word =~ s/gaa$/naa/ && ( $res = &foundword($word) eq "true")) { push(@tensetag, "($dupword $word fut_2sg_mas)"); $retval = "true"; } elsif ( $word =~ s/nge$/naa/ && ( $res = &foundword($word) eq "true" )) { push(@tensetag, "($dupword $word fut_3pl_mas)"); $retval = "true"; } elsif( $word =~ s/ngii$/naa/ && ( $res = &foundword($word) eq "true" )) { push(@tensetag, "($dupword $word fut_23_fem)"); $retval = "true"; } elsif ( $word =~ s/ge$/naa/ && ( $res = &foundword($word) eq "true") ) { push(@tensetag, "($dupword $word fut_2mas)"); $retval = "true"; } elsif ( $word =~ s/gii$/naa/ && ($res = &foundword($word) eq "true") ) { push(@tensetag, "($dupword $word fut_2fem)"); $retval = "true"; } else { $retval = "false";} } sub exceptional_uungaa_wd{ # polite imperative form local($myword) = @_; local($retval) = "null"; if ( $myword eq "d" ){ $retval = "denaa";} elsif ( $myword eq "l") { $retval = "lenaa";} elsif ( $myword eq "h") { $retval = "honaa";} else { $retval = $myword;} } sub conjunctppl{ # jaakar aakar etc. output : @tensetag local($word) = @_; local($wordsrc) = $word; local($result) = "nul"; @tensetag = (); if( $word =~ s/kar$//){ $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($wordsrc $word conj_ppl)"); $retval = "true"; } } else { $retval = "false";} } sub pastperfect{ local($word) = @_; local($wordsrc) = $word; local($result) = "nul"; @tensetag = (); if ( $word =~ s/yaa$// || $word =~ s/aa$//){ #exceptional past_perfect words $excep = &exceptional_perfect_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($wordsrc $excep mas_sg_past)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($wordsrc $word mas_sg_past)"); $retval = "true"; } } } elsif ( $word =~ s/ye$// || $word =~ s/e$// ){ #exceptional past_perf words $excep = &exceptional_perfect_wd($word); $result = &foundword($excep); if( $result eq "true"){ push(@tensetag, "($wordsrc $excep maspl_past)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($wordsrc $word mas_pl_past)"); $retval = "true"; } } } elsif ( $word =~ s/yii$// || $word =~ s/ii$// ){ #exceptional past_perf words if( ( $excep = &exceptional_perfect_wd($word) ) ne "false" && ($result = &foundword($excep) ) eq "true") { push(@tensetag, "($wordsrc $excep fem_sg_past)"); $retval = "true"; } else { $word .= "naa"; if ( ( $result = &foundword($word) ) ne "false" ) { push(@tensetag, "($wordsrc $word fem_sg_past)"); $retval = "true"; }else{ $word =~ s/naa$/ii/; $retval = "false";} } } elsif ( $word =~ s/yiin$// || $word =~ s/iin$// ){ #exceptional past_perf words $excep = &exceptional_perfect_wd($word); if($excep ne "false"){ $result = &foundword($excep); } if( $result eq "true"){ push(@tensetag, "($wordsrc $excep fem_pl_past)"); $retval = "true"; } else { $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($wordsrc $word fem_pl_past)"); $retval = "true";} else {$retval="false";} } } else { $retval = "false";} } sub exceptional_perfect_wd{ # gayaa kiyaa huaatype words local($myword) = @_; local($retval) = "null"; if ( $myword =~ s/ga$/jaanaa/ ){ $retval = $myword;} elsif ( $myword =~ s/ki$/karnaa/) { $retval = $myword;} elsif ( $myword =~ s/li$/lenaa/) { $retval = $myword;} elsif ( $myword =~ s/di$/denaa/) { $retval = $myword;} elsif ( $myword =~ s/pi$/piinaa/) { $retval = $myword;} elsif ( $myword =~ s/hu$/honaa/) { $retval = $myword;} elsif ( $myword =~ s/h$/honaa/) { $retval = $myword;} elsif ( $myword =~ s/k$/karnaa/) { $retval = $myword;} elsif ( $myword =~ s/l$/lenaa/) { $retval = $myword;} elsif ( $myword =~ s/d$/denaa/) { $retval = $myword;} elsif ( $myword =~ s/p$/piinaa/) { $retval = $myword;} else { $retval = "false"} } sub subjunctive{ local($word) = @_; local($dupword) = $word; @tensetag = (); if ( $word =~ s/uun$//){ $word .= "naa"; $result = &foundword($word); if( $result eq "true"){ push(@tensetag, "($dupword $word subjunctive)"); $retval = "true"; } } else { $retval = "false";} } sub imperative{ local($word) = @_; local($dupword) = $word; @tensetag = (); if ( $word =~ s/jie$// ){ #Polite honorofic form $excep = &exceptional_hon_wd($word); # makes kiijie to karnaa $result = &foundword($excep); # check if karnaa is in the dict. if( $result eq "true"){ push(@tensetag, "($dupword $excep pol_imp_2pl)"); $retval = "true"; } else {$retval = "false";} } elsif ( $word =~ s/ie$// || $word =~ s/iegaa$// ){ #Polite honorofic form $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word pol_imp 2pl)"); $retval = "true"; } else {$retval = "false";} } else { $retval = "false";} } #end sub sub exceptional_hon_wd{ # polite imperative form local($myword) = @_; local($retval) = "null"; if ( $myword eq "dii" ){ $retval = "denaa";} elsif ( $myword eq "kii") { $retval = "karnaa";} elsif ( $myword eq "lii") { $retval = "lenaa";} elsif ( $myword eq "dii") { $retval = "denaa";} elsif ( $myword eq "pii") { $retval = "piinaa";} else { $retval = $myword;} } sub present{ local($word) = @_; local($dupword) = $word; local($result) = "nul"; @tensetag = (); if ( $word =~ s/taa$//){ # taa type inflection $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword, $word pr 3masfem)"); $retval = "true"; } else{ $word =~ s/naa$/taa/;} } elsif ( $word =~ s/te$//){ # te type inflection $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword, $word pr_pl)"); $retval = "true"; } else{ $word =~ s/naa$/taa/;} } elsif ( $word =~ s/tii$//){ # tii type inflection $word .= "naa"; $result = &foundword($word); if ( $result eq "true"){ push(@tensetag, "($dupword $word pr_3fem)"); $retval = "true"; } } else { $retval = "false";} } 1;