1
0
forked from GitHub/gf-core

Major refactoring -> lexical aspect; word order in VP

This commit is contained in:
krasimir
2008-04-05 17:18:47 +00:00
parent da5200f02a
commit 2498fe7ee8
12 changed files with 362 additions and 319 deletions

View File

@@ -51,8 +51,8 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
-- Verb
VP = {
s : ResBul.Tense => Anteriority => Polarity => Agr => Bool => Str ;
imp : Polarity => Number => Str ;
s : ResBul.Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str ;
imp : Polarity => Number => Aspect => Str ;
ad : Bool => Str ;
s2 : Agr => Str ;
subjRole : Role

View File

@@ -24,16 +24,13 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
agr=agrP3 (GSg Neut);
present = verb.s ! (VPres (numGenNum agr.gn) agr.p) ;
aorist = verb.s ! (VAorist (numGenNum agr.gn) agr.p) ;
perfect = verb.s ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
present = verb ! (VPres (numGenNum agr.gn) agr.p) ;
aorist = verb ! (VAorist (numGenNum agr.gn) agr.p) ;
perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
auxPres = auxBe [] ! VPres (numGenNum agr.gn) agr.p ;
auxAorist = auxBe [] ! VAorist (numGenNum agr.gn) agr.p ;
auxPerfect = auxBe [] ! VPerfect (aform agr.gn Indef (RObj Acc)) ;
auxCondS = auxWould [] ! VAorist (numGenNum agr.gn) agr.p ;
auxCondA = auxCondS ++
auxBe [] ! VPerfect (aform agr.gn Indef (RObj Acc)) ;
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ;
auxAorist = auxBe ! VAorist (numGenNum agr.gn) agr.p ;
auxCondS = auxWould ! VAorist (numGenNum agr.gn) agr.p ;
v : {aux1:Str; aux2:Str; main:Str}
= case <t,a> of {
@@ -43,8 +40,7 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ;
<Fut, Simul> => {aux1="ùå"; aux2=[]; main=present} ;
<Fut, Anter> => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ;
<Cond,Simul> => {aux1=auxCondS; aux2=[]; main=perfect} ;
<Cond,Anter> => {aux1=auxCondA; aux2=[]; main=perfect}
<Cond,_> => {aux1=auxCondS; aux2=[]; main=perfect}
} ;
in case o of {
@@ -58,8 +54,16 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
mkQuestion (ss (ip.s ! Nom))
(mkClause "there" (agrP3 ip.n) (predAux auxBe)) ;
-}
ProgrVP vp = vp ;
ProgrVP vp = {
s = \\t,a,p,agr,q,asp => vp.s ! t ! a ! p ! agr ! q ! Imperf ;
imp = \\p,n,_ => vp.imp ! p ! n ! Imperf ;
ad = vp.ad ;
s2 = vp.s2 ;
subjRole = vp.subjRole
} ;
ImpPl1 vp = {s = "íåêà" ++ vp.s ! Pres ! Simul ! Pos ! {gn = GPl ; p = P1} ! False ++ vp.s2 ! {gn = GPl ; p = P1}} ;
ImpPl1 vp = {s = let verbs = vp.s ! Pres ! Simul ! Pos ! {gn = GPl ; p = P1} ! False ! Imperf ;
in "íåêà" ++ vp.s2 ! {gn = GPl ; p = P1}
} ;
}

View File

@@ -8,18 +8,18 @@ flags
lin
airplane_N = mkN007 "ñàìîëåò" ;
answer_V2S = mkV2S (mkV187 "îòãîâàðÿì") naP ;
answer_V2S = mkV2S (actionV (mkV187 "îòãîâàðÿì") (mkV173 "îòãîâîðÿ")) naP ;
apartment_N = mkN007 "àïàðòàìåíò" ;
apple_N = mkN041 "ÿáúëêà" ;
art_N = mkN054 "èçêóñòâî" ;
ask_V2Q = mkV2Q (mkV186 "ïèòàì") noPrep ;
ask_V2Q = mkV2Q (stateV (mkV186 "ïèòàì")) noPrep ;
baby_N = mkN065 "áåáå" ;
bad_A = mkA076 "ëîø" ;
bank_N = mkN041 "áàíêà" ;
beautiful_A = mkA076 "êðàñèâ" ;
become_VA = mkVA (mkV152 "ñòàíà") ;
become_VA = mkVA (actionV (mkV186 "ñòàâàì") (mkV152 "ñòàíà")) ;
beer_N = mkN041 "áèðà" ;
beg_V2V = mkV2V (mkV173 "ìîëÿ") noPrep zaP ;
beg_V2V = mkV2V (stateV (mkV173 "ìîëÿ")) noPrep zaP ;
big_A = mkA081 "ãîëÿì" ;
bike_N = mkN061 "êîëåëî" ;
bird_N = mkN041 "ïòèöà" ;
@@ -31,12 +31,12 @@ lin
boss_N = mkN001 "øåô" ;
boy_N = mkN065 "ìîì÷å" ;
bread_N = mkN001 "õëÿá" ;
break_V2 = dirV2 (mkV173 "÷óïÿ") ;
break_V2 = dirV2 (actionV (mkV173 "÷óïÿ") (mkV173 "ñ÷óïÿ")) ;
broad_A = mkA079 "îáøèðåí" ;
brother_N2 = prepN2 (mkN025 "áðàò") naP ;
brown_A = mkA076 "êàôÿâ" ;
butter_N = mkN054 "ìàñëî" ;
buy_V2 = dirV2 (mkV173 "êóïÿ") ;
buy_V2 = dirV2 (actionV (mkV186 "êóïóâàì") (mkV173 "êóïÿ")) ;
camera_N = mkN041 "êàìåðà" ;
cap_N = mkN041 "øàïêà" ;
car_N = mkN041 "êîëà" ;
@@ -50,50 +50,50 @@ lin
city_N = mkN001 "ãðàä" ;
clean_A = mkA076 "÷èñò" ;
clever_A = mkA079 "óìåí" ;
close_V2 = dirV2 (mkV173 "çàòâîðÿ") ;
close_V2 = dirV2 (actionV (mkV187 "çàòâàðÿì") (mkV173 "çàòâîðÿ")) ;
coat_N = mkN054 "ïàëòî" ;
cold_A = mkA076 "ñòóäåí" ;
come_V = mkV146a "äîéäà" ;
come_V = actionV (mkV165 "èäà") (mkV146a "äîéäà") ;
computer_N = mkN009 "êîìïþòúð" ;
country_N = mkN041 "äúðæàâà" ;
cousin_N = mkN007a "áðàòîâ÷åä" ;
cow_N = mkN041 "êðàâà" ;
die_V = mkV186 "óìèðàì" ;
die_V = actionV (mkV186 "óìèðàì") (mkV150a "óìðà") ;
dirty_A = mkA079 "ìðúñåí" ;
distance_N3 = prepN3 (mkN072 "ðàçñòîÿíèå") otP doP ;
doctor_N = mkN007a "äîêòîð" ;
dog_N = mkN065 "êó÷å" ;
door_N = mkN041 "âðàòà" ;
drink_V2 = dirV2 (mkV163 "ïèÿ") ;
drink_V2 = dirV2 (stateV (mkV163 "ïèÿ")) ;
easy_A2V = mkA2V (mkA079 "ëåñåí") zaP ;
eat_V2 = dirV2 (mkV169 "ÿì") ;
eat_V2 = dirV2 (stateV (mkV169 "ÿì")) ;
empty_A = mkA079 "ïðàçåí" ;
enemy_N = mkN001 "âðàã" ;
factory_N = mkN041 "ôàáðèêà" ;
father_N2 = prepN2 (mkN038 "áàùà") naP ;
fear_VS = mkVS (mkV186 "ñòðàõóâàì") ;
find_V2 = dirV2 (mkV173 "íàìåðÿ") ;
fear_VS = mkVS (stateV (mkV186 "ñòðàõóâàì")) ;
find_V2 = dirV2 (actionV (mkV186 "íàìèðàì") (mkV173 "íàìåðÿ")) ;
fish_N = mkN041 "ðèáà" ;
floor_N = mkN007 "åòàæ" ;
fridge_N = mkN007 "ôðèçåð" ;
friend_N = mkN031a "ïðèÿòåë" ;
fruit_N = mkN001 "ïëîä" ;
fun_AV = mkAV (mkA079 "çàáàâåí") ;
forget_V2 = dirV2 (mkV173 "çàáðàâÿ") ;
forget_V2 = dirV2 (actionV (mkV187 "çàáðàâÿì") (mkV173 "çàáðàâÿ")) ;
garden_N = mkN041 "ãðàäèíà" ;
girl_N = mkN065 "ìîìè÷å" ;
glove_N = mkN041 "ðúêàâèöà" ;
gold_N = mkN054 "çëàòî" ;
good_A = mkA080 "äîáúð" ;
go_V = mkV186 "îòèâàì" ;
go_V = actionV (mkV186 "îòèâàì") (mkV146 "îòèäà") ;
green_A = mkA076 "çåëåí" ;
harbour_N = mkN066 "ïðèñòàíèùå" ;
hate_V2 = dirV2 (mkV173 "ìðàçÿ") ;
hate_V2 = dirV2 (stateV (mkV173 "ìðàçÿ")) ;
hat_N = mkN041 "øàïêà" ;
have_V2 = dirV2 (mkV186 "èìàì") ;
hear_V2 = dirV2 (mkV186 "÷óâàì") ;
have_V2 = dirV2 (stateV (mkV186 "èìàì")) ;
hear_V2 = dirV2 (actionV (mkV186 "÷óâàì") (mkV163 "÷óÿ")) ;
hill_N = mkN001 "õúëì" ;
hope_VS = mkVS (reflV (mkV186 "íàäÿâàì") Acc) ;
hope_VS = mkVS (reflV (stateV (mkV186 "íàäÿâàì")) Acc) ;
horse_N = mkN035 "êîí" ;
hot_A = mkA076 "ãîðåù" ;
house_N = mkN041 "êúùà" ;
@@ -101,19 +101,19 @@ lin
industry_N = mkN047 "èíäóñòðèÿ" ;
iron_N = mkN057 "æåëÿçî" ;
king_N = mkN035a "öàð" ;
know_V2 = dirV2 (mkV162 "çíàÿ") ;
know_V2 = dirV2 (stateV (mkV162 "çíàÿ")) ;
lake_N = mkN054 "åçåðî" ;
lamp_N = mkN041 "ëàìïà" ;
learn_V2 = dirV2 (mkV176 "ó÷à") ;
learn_V2 = dirV2 (stateV (mkV176 "ó÷à")) ;
leather_N = mkN041 "êîæà" ;
leave_V2 = dirV2 (mkV173 "îñòàâÿ") ;
like_V2 = dirV2 (mkV186 "õàðåñâàì") ;
listen_V2 = dirV2 (mkV186 "ñëóøàì") ;
live_V = mkV160 "æèâåÿ" ;
leave_V2 = dirV2 (actionV (mkV187 "îñòàâÿì") (mkV173 "îñòàâÿ")) ;
like_V2 = dirV2 (actionV (mkV186 "õàðåñâàì") (mkV186 "õàðåñàì")) ;
listen_V2 = dirV2 (stateV (mkV186 "ñëóøàì")) ;
live_V = stateV (mkV160 "æèâåÿ") ;
long_A = mkA080 "äúëúã" ;
lose_V2 = dirV2 (mkV173 "ãóáÿ") ;
lose_V2 = dirV2 (actionV (mkV173 "ãóáÿ") (mkV173 "çàãóáÿ")) ;
love_N = mkN049 "ëþáîâ" ;
love_V2 = dirV2 (mkV186 "îáè÷àì") ;
love_V2 = dirV2 (stateV (mkV186 "îáè÷àì")) ;
man_N = mkN024 "ìúæ" ;
married_A2 = mkA2 (mkA076 "æåíåí") zaP ;
meat_N = mkN054 "ìåñî" ;
@@ -127,22 +127,22 @@ lin
newspaper_N = mkN014 "âåñòíèê" ;
oil_N = mkN065 "îëèî" ;
old_A = mkA076 "ñòàð" ;
open_V2 = dirV2 (mkV187 "îòâàðÿì") ;
paint_V2A = mkV2A (mkV186 "ðèñóâàì") noPrep ;
open_V2 = dirV2 (actionV (mkV187 "îòâàðÿì") (mkV173 "îòâîðÿ")) ;
paint_V2A = mkV2A (actionV (mkV186 "ðèñóâàì") (mkV186 "íàðèñóâàì")) noPrep ;
paper_N = mkN047 "õàðòèÿ" ;
paris_PN = mkPN "Ïàðèæ" Masc ;
peace_N = mkN040a "ìèð" ;
pen_N = mkN041 "ïèñàëêà" ;
planet_N = mkN041 "ïëàíåòà" ;
plastic_N = mkN041 "ïëàñòìàñà" ;
play_V2 = dirV2 (mkV161 "èãðàÿ") ;
play_V2 = dirV2 (stateV (mkV161 "èãðàÿ")) ;
policeman_N = mkN032a "ïîëèöàé" ;
priest_N = mkN014 "ñâåùåíèê" ;
probable_AS = mkAS (mkA079 "âåðîÿòåí") ;
queen_N = mkN041 "êðàëèöà" ;
radio_N = mkN054 "ðàäèî" ;
rain_V0 = mkV0 (mkV174 "âàëè") ;
read_V2 = dirV2 (mkV145 "÷åòà") ;
rain_V0 = mkV0 (stateV (mkV174 "âàëè")) ;
read_V2 = dirV2 (stateV (mkV145 "÷åòà")) ;
red_A = mkA076 "÷åðâåí" ;
religion_N = mkN047 "ðåëèãèÿ" ;
restaurant_N = mkN007 "ðåñòîðàíò" ;
@@ -150,15 +150,15 @@ lin
rock_N = mkN041 "ñêàëà" ;
roof_N = mkN007 "ïîêðèâ" ;
rubber_N = mkN041 "ãóìà" ;
run_V = (mkV186 "áÿãàì") ;
say_VS = mkVS (mkV186 "êàçâàì") ;
run_V = stateV (mkV186 "áÿãàì") ;
say_VS = mkVS (actionV (mkV186 "êàçâàì") (mkV156 "êàæà")) ;
school_N = mkN066 "ó÷èëèùå" ;
science_N = mkN041 "íàóêà" ;
sea_N = mkN065 "ìîðå" ;
seek_V2 = dirV2 (mkV173 "òúðñÿ") ;
see_V2 = dirV2 (mkV186 "âèæäàì") ;
sell_V3 = dirV3 (mkV186 "ïðîäàâàì") naP ;
send_V3 = dirV3 (mkV186 "ïðàùàì") doP ;
seek_V2 = dirV2 (stateV (mkV173 "òúðñÿ")) ;
see_V2 = dirV2 (actionV (mkV186 "âèæäàì") (mkV181 "âèäÿ")) ;
sell_V3 = dirV3 (stateV (mkV186 "ïðîäàâàì")) naP ;
send_V3 = dirV3 (actionV (mkV186 "ïðàùàì") (mkV173 "ïðàòÿ")) doP ;
sheep_N = mkN044 "îâöà" ;
ship_N = mkN007 "êîðàá" ;
shirt_N = mkN041 "ðèçà" ;
@@ -167,11 +167,11 @@ lin
short_A = mkA076 "êúñ" ;
silver_N = mkN054 "ñðåáðî" ;
sister_N = mkN041a "ñåñòðà" ;
sleep_V = mkV182 "ñïÿ" ;
sleep_V = stateV (mkV182 "ñïÿ") ;
small_A = mkA080 "ìàëúê" ;
snake_N = mkN047 "çìèÿ" ;
sock_N = mkN007 "÷îðàï" ;
speak_V2 = dirV2 (mkV173 "ãîâîðÿ") ;
speak_V2 = dirV2 (stateV (mkV173 "ãîâîðÿ")) ;
star_N = mkN041 "çâåçäà" ;
steel_N = mkN041 "ñòîìàíà" ;
stone_N = mkN017 "êàìúê" ;
@@ -179,47 +179,47 @@ lin
student_N = mkN007a "ñòóäåíò" ;
stupid_A = mkA076 "ãëóïàâ" ;
sun_N = mkN066 "ñëúíöå" ;
switch8off_V2 = dirV2 (mkV186 "èçêëþ÷âàì") ;
switch8on_V2 = dirV2 (mkV186 "âêëþ÷âàì") ;
switch8off_V2 = dirV2 (actionV (mkV186 "èçêëþ÷âàì") (mkV176 "èçêëþ÷à")) ;
switch8on_V2 = dirV2 (actionV (mkV186 "âêëþ÷âàì") (mkV176 "âêëþ÷à")) ;
table_N = mkN041 "ìàñà" ;
talk_V3 = mkV3 (mkV173 "ãîâîðÿ") naP zaP ;
talk_V3 = mkV3 (stateV (mkV173 "ãîâîðÿ")) naP zaP ;
teacher_N = mkN031a "ó÷èòåë" ;
teach_V2 = dirV2 (mkV186 "ïðåïîäàâàì") ;
teach_V2 = dirV2 (actionV (mkV186 "ïðåïîäàâàì") (mkV168 "ïðåïîäàì")) ;
television_N = mkN047 "òåëåâèçèÿ" ;
thick_A = mkA076 "äåáåë" ;
thin_A = mkA080 "òúíúê" ;
train_N = mkN001 "âëàê" ;
travel_V = mkV186 "ïúòóâàì" ;
travel_V = stateV (mkV186 "ïúòóâàì") ;
tree_N = mkN061 "äúðâî" ;
ugly_A = mkA076 "ãëóïàâ" ;
understand_V2 = dirV2 (mkV186 "ðàçáèðàì") ;
understand_V2 = dirV2 (actionV (mkV186 "ðàçáèðàì") (mkV170 "ðàçáåðà")) ;
university_N = mkN007 "óíèâåðñèòåò" ;
village_N = mkN054 "ñåëî" ;
wait_V2 = prepV2 (mkV186 "÷àêàì") zaP ;
walk_V = mkV173 "õîäÿ" ;
wait_V2 = prepV2 (stateV (mkV186 "÷àêàì")) zaP ;
walk_V = stateV (mkV173 "õîäÿ") ;
warm_A = mkA080 "òîïúë" ;
war_N = mkN041 "âîéíà" ;
watch_V2 = dirV2 (mkV186 "ãëåäàì") ;
watch_V2 = dirV2 (stateV (mkV186 "ãëåäàì")) ;
water_N = mkN041 "âîäà" ;
white_A = mkA081 "áÿë" ;
window_N = mkN008 "ïðîçîðåö" ;
wine_N = mkN054 "âèíî" ;
win_V2 = dirV2 (mkV174 "ïîáåäÿ") ;
win_V2 = dirV2 (actionV (mkV186 "ïîáåæäàâàì") (mkV174 "ïîáåäÿ")) ;
woman_N = mkN041a "æåíà" ;
wonder_VQ = mkVQ (reflV (mkV173 "÷óäÿ") Acc) ;
wonder_VQ = mkVQ (reflV (actionV (mkV186 "ó÷óäâàì") (mkV173 "÷óäÿ")) Acc) ;
wood_N = mkN041 "äúðâåñèíà" ;
write_V2 = dirV2 (mkV159 "ïèøà") ;
write_V2 = dirV2 (stateV (mkV159 "ïèøà")) ;
yellow_A = mkA076 "æúëò" ;
young_A = mkA076 "ìëàä" ;
do_V2 = dirV2 (mkV160a "âúðøà") ;
do_V2 = dirV2 (stateV (mkV160a "âúðøà")) ;
now_Adv = mkAdv "ñåãà" ;
already_Adv = mkAdv "âå÷å" ;
song_N = mkN050 "ïåñåí" ;
add_V3 = dirV3 (mkV186 "ñúáèðàì") sP ;
add_V3 = dirV3 (actionV (mkV186 "ñúáèðàì") (mkV170 "ñúáåðà")) sP ;
number_N = mkN054 "÷èñëî" ;
put_V2 = prepV2 (mkV186 "ñëàãàì") noPrep ;
stop_V = mkV150 "ñïðà" ;
jump_V = mkV176 "ñêî÷à" ;
put_V2 = prepV2 (actionV (mkV186 "ñëàãàì") (mkV176 "ñëîæà")) noPrep ;
stop_V = actionV (mkV186 "ñïèðàì") (mkV150 "ñïðà") ;
jump_V = actionV (mkV186 "ñêà÷àì") (mkV176 "ñêî÷à") ;
left_Ord = mkA081 "ëÿâ" ** {nonEmpty=True} ;
right_Ord = mkA084 "äåñåí" ** {nonEmpty=True} ;
far_Adv = mkAdv "äàëå÷å" ;
@@ -299,52 +299,52 @@ lin
wing_N = mkN056 "êðèëî" ;
worm_N = mkN032 "÷åðâåé" ;
year_N = mkN041 "ãîäèíà" ;
blow_V = mkV186 "äóõàì" ;
breathe_V = dirV2 (mkV186 "äèøàì") ;
burn_V = mkV187 "èçãàðÿì" ;
dig_V = mkV161 "êîïàÿ" ;
fall_V = mkV186 "ïàäàì" ;
float_V = mkV186 "ïëàâàì" ;
flow_V = mkV148 "òåêà" ;
fly_V = mkV177 "ëåòÿ" ;
freeze_V = mkV186 "çàìðúçâàì" ;
give_V3 = dirV3 (mkV186 "äàâàì") naP ;
laugh_V = reflV (mkV160 "ñìåÿ") Acc ;
lie_V = mkV178 "ëåæà" ;
play_V = mkV161 "èãðàÿ" ;
sew_V = mkV163 "øèÿ" ;
sing_V = mkV164 "ïåÿ" ;
sit_V = mkV177 "ñåäÿ" ;
smell_V = mkV159 "ìèðèøà" ;
spit_V = mkV163 "ïëþÿ" ;
stand_V = mkV180 "ñòîÿ" ;
swell_V = mkV186 "íàäóâàì" ;
swim_V = mkV186 "ïëóâàì" ;
think_V = mkV173 "ìèñëÿ" ;
turn_V = mkV186 "îáðúùàì" ;
vomit_V = mkV186 "ïîâðúùàì" ;
blow_V = stateV (mkV186 "äóõàì") ;
breathe_V = dirV2 (stateV (mkV186 "äèøàì")) ;
burn_V = actionV (mkV187 "èçãàðÿì") (mkV177 "èçãîðÿ") ;
dig_V = stateV (mkV161 "êîïàÿ") ;
fall_V = actionV (mkV186 "ïàäàì") (mkV152 "ïàäíà") ;
float_V = stateV (mkV186 "ïëàâàì") ;
flow_V = stateV (mkV148 "òåêà") ;
fly_V = stateV (mkV177 "ëåòÿ") ;
freeze_V = stateV (mkV186 "çàìðúçâàì") ;
give_V3 = dirV3 (actionV (mkV186 "äàâàì") (mkV186 "äàì")) naP ;
laugh_V = reflV (stateV (mkV160 "ñìåÿ")) Acc ;
lie_V = stateV (mkV178 "ëåæà") ;
play_V = stateV (mkV161 "èãðàÿ") ;
sew_V = stateV (mkV163 "øèÿ") ;
sing_V = stateV (mkV164 "ïåÿ") ;
sit_V = stateV (mkV177 "ñåäÿ") ;
smell_V = stateV (mkV159 "ìèðèøà") ;
spit_V = stateV (mkV163 "ïëþÿ") ;
stand_V = stateV (mkV180 "ñòîÿ") ;
swell_V = actionV (mkV186 "íàäóâàì") (mkV163 "íàäóÿ") ;
swim_V = stateV (mkV186 "ïëóâàì") ;
think_V = stateV (mkV173 "ìèñëÿ") ;
turn_V = actionV (mkV186 "îáðúùàì") (mkV152 "îáúðíà") ;
vomit_V = actionV (mkV186 "ïîâðúùàì") (mkV152 "ïîâúðíà") ;
bite_V2 = dirV2 (mkV154 "õàïÿ") ;
count_V2 = dirV2 (mkV175 "áðîÿ") ;
cut_V2 = dirV2 (mkV157 "ðåæà") ;
fear_V2 = dirV2 (reflV (mkV186 "ñòðàõóâàì") Acc) ;
fight_V2 = dirV2 (reflV (mkV173 "áîðÿ") Acc) ;
hit_V2 = dirV2 (mkV173 "óäàðÿ") ;
hold_V2 = dirV2 (mkV179 "äúðæà") ;
hunt_V2 = dirV2 (mkV174 "ëîâÿ") ;
kill_V2 = dirV2 (mkV163 "óáèÿ") ;
pull_V2 = dirV2 (mkV186 "äúðïàì") ;
push_V2 = dirV2 (mkV186 "áóòàì") ;
rub_V2 = dirV2 (mkV163 "òðèÿ") ;
scratch_V2 = dirV2 (mkV186 "äðàñêàì") ;
split_V2 = dirV2 (mkV174 "ðàçäåëÿ") ;
squeeze_V2 = dirV2 (mkV186 "ñòèñêàì") ;
stab_V2 = dirV2 (mkV186 "ïðîìóøâàì") ;
suck_V2 = dirV2 (mkV155 "ñó÷à") ;
throw_V2 = dirV2 (mkV173 "õâúðëÿ") ;
tie_V2 = dirV2 (mkV186 "âðúçâàì") ;
wash_V2 = dirV2 (mkV163 "ìèÿ") ;
wipe_V2 = dirV2 (mkV159 "áúðøà") ;
bite_V2 = dirV2 (stateV (mkV154 "õàïÿ")) ;
count_V2 = dirV2 (stateV (mkV175 "áðîÿ")) ;
cut_V2 = dirV2 (stateV (mkV157 "ðåæà")) ;
fear_V2 = dirV2 (reflV (stateV (mkV186 "ñòðàõóâàì")) Acc) ;
fight_V2 = dirV2 (reflV (stateV (mkV173 "áîðÿ")) Acc) ;
hit_V2 = dirV2 (actionV (mkV187 "óäðÿì") (mkV173 "óäàðÿ")) ;
hold_V2 = dirV2 (stateV (mkV179 "äúðæà")) ;
hunt_V2 = dirV2 (stateV (mkV174 "ëîâÿ")) ;
kill_V2 = dirV2 (actionV (mkV186 "óáèâàì") (mkV163 "óáèÿ")) ;
pull_V2 = dirV2 (stateV (mkV186 "äúðïàì")) ;
push_V2 = dirV2 (stateV (mkV186 "áóòàì")) ;
rub_V2 = dirV2 (stateV (mkV163 "òðèÿ")) ;
scratch_V2 = dirV2 (actionV (mkV186 "äðàñêàì") (mkV152 "äðàñíà")) ;
split_V2 = dirV2 (actionV (mkV187 "ðàçäåëÿì") (mkV174 "ðàçäåëÿ")) ;
squeeze_V2 = dirV2 (actionV (mkV186 "ñòèñêàì") (mkV152 "ñòèñíà")) ;
stab_V2 = dirV2 (actionV (mkV186 "ïðîìóøâàì") (mkV176 "ïðîìóøà")) ;
suck_V2 = dirV2 (stateV (mkV155 "ñó÷à")) ;
throw_V2 = dirV2 (actionV (mkV187 "õâúðëÿì") (mkV173 "õâúðëÿ")) ;
tie_V2 = dirV2 (actionV (mkV186 "âðúçâàì") (mkV156 "âúðæà")) ;
wash_V2 = dirV2 (stateV (mkV163 "ìèÿ")) ;
wipe_V2 = dirV2 (stateV (mkV159 "áúðøà")) ;
grammar_N = mkN041 "ãðàìàòèêà" ;
language_N = mkN014 "åçèê" ;

View File

@@ -38,9 +38,9 @@ oper
--2 Verbs
mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> V =
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti -> {
s = table {
mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> VTable =
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti ->
table {
VPres Sg P1 => cheta;
VPres Sg P2 => chete + "ø";
VPres Sg P3 => chete;
@@ -99,9 +99,6 @@ oper
_ => chete + "éêè"
}
} ;
vtype = VNormal ;
lock_V = <>
} ;
--2 Nouns

View File

@@ -50,7 +50,20 @@ oper
phrasalV : V -> Case -> V ;
phrasalV v c = {s = v.s; vtype = VPhrasal c; lock_V=<>} ;
actionV : VTable -> VTable -> V ;
actionV imperf perf = {
s = table {Imperf=>imperf; Perf=>perf};
vtype = VNormal;
lock_V=<>
} ;
stateV : VTable -> V ;
stateV vtable = {
s = \\_=>vtable;
vtype = VNormal;
lock_V=<>
} ;
--3 Zero-place verbs
--

View File

@@ -44,7 +44,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ;
PPartNP np v2 = {
s = \\c => np.s ! c ++ v2.s ! VPassive (aform np.a.gn Indef c) ;
s = \\c => np.s ! c ++ v2.s ! Perf ! VPassive (aform np.a.gn Indef c) ;
a = np.a
} ;

View File

@@ -867,7 +867,7 @@ oper
(v0)
(v0)
(v0) ;
mkV142 : Str -> V ;
mkV142 : Str -> VTable ;
mkV142 base = let v0 = tk 3 base
in mkVerb (v0+"ńúě")
(v0+"ĺ")
@@ -878,7 +878,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"áúäč") ;
mkV143 : Str -> V ;
mkV143 : Str -> VTable ;
mkV143 base = let v0 = tk 3 base
in mkVerb (v0+"úäŕ")
(v0+"úäĺ")
@@ -889,7 +889,7 @@ oper
(v0+"-")
(v0+"úäĺů")
(v0+"úäč") ;
mkV144 : Str -> V ;
mkV144 : Str -> VTable ;
mkV144 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
@@ -900,7 +900,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"-") ;
mkV145 : Str -> V ;
mkV145 : Str -> VTable ;
mkV145 base = let v0 = tk 2 base;
v1 = last (tk 1 base)
in mkVerb (v0+v1+"ŕ")
@@ -912,7 +912,7 @@ oper
(v0+v1+"ĺí")
(v0+v1+"˙ů")
(v0+v1+"č") ;
mkV145a : Str -> V ;
mkV145a : Str -> VTable ;
mkV145a base = let v0 = tk 3 base;
v1 = last (tk 2 base)
in mkVerb (v0+v1+"ńŕ")
@@ -924,7 +924,7 @@ oper
(v0+v1+"ńĺí")
(v0+v1+"ń˙ů")
(v0+v1+"ńč") ;
mkV145b : Str -> V ;
mkV145b : Str -> VTable ;
mkV145b base = let v0 = tk 2 base
in mkVerb (v0+"ňŕ")
(v0+"ňĺ")
@@ -935,7 +935,7 @@ oper
(v0+"-")
(v0+"ň˙ů")
(v0+"ňč") ;
mkV146 : Str -> V ;
mkV146 : Str -> VTable ;
mkV146 base = let v0 = tk 2 base
in mkVerb (v0+"äŕ")
(v0+"äĺ")
@@ -946,7 +946,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"äč") ;
mkV146a : Str -> V ;
mkV146a : Str -> VTable ;
mkV146a base = let v0 = tk 3 base
in mkVerb (v0+"éäŕ")
(v0+"éäĺ")
@@ -957,7 +957,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"éäč") ;
mkV147 : Str -> V ;
mkV147 : Str -> VTable ;
mkV147 base = let v0 = tk 3 base
in mkVerb (v0+"˙çŕ")
(v0+"ĺçĺ")
@@ -968,7 +968,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"ĺç") ;
mkV148 : Str -> V ;
mkV148 : Str -> VTable ;
mkV148 base = let v0 = tk 2 base
in mkVerb (v0+"ęŕ")
(v0+"÷ĺ")
@@ -979,7 +979,7 @@ oper
(v0+"÷ĺí")
(v0+"÷ŕů")
(v0+"÷č") ;
mkV149 : Str -> V ;
mkV149 : Str -> VTable ;
mkV149 base = let v0 = tk 3 base
in mkVerb (v0+"ĺęŕ")
(v0+"ĺ÷ĺ")
@@ -990,7 +990,7 @@ oper
(v0+"ĺ÷ĺí")
(v0+"-")
(v0+"ĺ÷č") ;
mkV150 : Str -> V ;
mkV150 : Str -> VTable ;
mkV150 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
@@ -1001,7 +1001,7 @@ oper
(v0+"˙í")
(v0+"-")
(v0+"č") ;
mkV150a : Str -> V ;
mkV150a : Str -> VTable ;
mkV150a base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
@@ -1012,7 +1012,7 @@ oper
(v0+"-")
(v0+"-")
(v0+"č") ;
mkV151 : Str -> V ;
mkV151 : Str -> VTable ;
mkV151 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
@@ -1023,7 +1023,7 @@ oper
(v0+"˙ů")
(v0+"ŕí")
(v0+"č") ;
mkV152 : Str -> V ;
mkV152 : Str -> VTable ;
mkV152 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
@@ -1034,7 +1034,7 @@ oper
(v0+"ŕň")
(v0+"-")
(v0+"č") ;
mkV152a : Str -> V ;
mkV152a : Str -> VTable ;
mkV152a base = let v0 = tk 4 base
in mkVerb (v0+"˙ăíŕ")
(v0+"ĺăíĺ")
@@ -1045,7 +1045,7 @@ oper
(v0+"˙ăíŕň")
(v0+"-")
(v0+"ĺăíč") ;
mkV153 : Str -> V ;
mkV153 : Str -> VTable ;
mkV153 base = let v0 = tk 3 base
in mkVerb (v0+"˙íŕ")
(v0+"ĺíĺ")
@@ -1056,7 +1056,7 @@ oper
(v0+"˙íŕň")
(v0+"-")
(v0+"ĺíč") ;
mkV154 : Str -> V ;
mkV154 : Str -> VTable ;
mkV154 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"ĺ")
@@ -1067,7 +1067,7 @@ oper
(v0+"ŕí")
(v0+"ĺů")
(v0+"č") ;
mkV155 : Str -> V ;
mkV155 : Str -> VTable ;
mkV155 base = let v0 = tk 2 base
in mkVerb (v0+"÷ŕ")
(v0+"÷ĺ")
@@ -1078,7 +1078,7 @@ oper
(v0+"-")
(v0+"÷ĺů")
(v0+"÷č") ;
mkV156 : Str -> V ;
mkV156 : Str -> VTable ;
mkV156 base = let v0 = tk 2 base
in mkVerb (v0+"ćŕ")
(v0+"ćĺ")
@@ -1089,7 +1089,7 @@ oper
(v0+"çŕí")
(v0+"-")
(v0+"ćč") ;
mkV157 : Str -> V ;
mkV157 : Str -> VTable ;
mkV157 base = let v0 = tk 3 base
in mkVerb (v0+"ĺćŕ")
(v0+"ĺćĺ")
@@ -1100,7 +1100,7 @@ oper
(v0+"˙çŕí")
(v0+"ĺćĺů")
(v0+"ĺćč") ;
mkV158 : Str -> V ;
mkV158 : Str -> VTable ;
mkV158 base = let v0 = tk 2 base
in mkVerb (v0+"ćŕ")
(v0+"ćĺ")
@@ -1111,7 +1111,7 @@ oper
(v0+"ăŕí")
(v0+"ćĺů")
(v0+"ćč") ;
mkV159 : Str -> V ;
mkV159 : Str -> VTable ;
mkV159 base = let v0 = tk 2 base
in mkVerb (v0+"řŕ")
(v0+"řĺ")
@@ -1122,7 +1122,7 @@ oper
(v0+"ńŕí")
(v0+"řĺů")
(v0+"řč") ;
mkV160 : Str -> V ;
mkV160 : Str -> VTable ;
mkV160 base = let v0 = tk 2 base
in mkVerb (v0+"ĺ˙")
(v0+"ĺĺ")
@@ -1133,7 +1133,7 @@ oper
(v0+"˙í")
(v0+"ĺĺů")
(v0+"ĺé") ;
mkV160a : Str -> V ;
mkV160a : Str -> VTable ;
mkV160a base = let v0 = tk 2 base
in mkVerb (v0+"ĺ˙")
(v0+"ĺĺ")
@@ -1144,7 +1144,7 @@ oper
(v0+"ŕí")
(v0+"ĺĺů")
(v0+"ĺé") ;
mkV161 : Str -> V ;
mkV161 : Str -> VTable ;
mkV161 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"ĺ")
@@ -1155,7 +1155,7 @@ oper
(v0+"í")
(v0+"ĺů")
(v0+"é") ;
mkV161a : Str -> V ;
mkV161a : Str -> VTable ;
mkV161a base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"ĺ")
@@ -1166,7 +1166,7 @@ oper
(v0+"ň")
(v0+"ĺů")
(v0+"é") ;
mkV162 : Str -> V ;
mkV162 : Str -> VTable ;
mkV162 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"ĺ")
@@ -1177,7 +1177,7 @@ oper
(v0+"-")
(v0+"ĺů")
(v0+"é") ;
mkV163 : Str -> V ;
mkV163 : Str -> VTable ;
mkV163 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"ĺ")
@@ -1188,7 +1188,7 @@ oper
(v0+"ň")
(v0+"ĺů")
(v0+"é") ;
mkV164 : Str -> V ;
mkV164 : Str -> VTable ;
mkV164 base = let v0 = tk 2 base
in mkVerb (v0+"ĺ˙")
(v0+"ĺĺ")
@@ -1199,18 +1199,18 @@ oper
(v0+"˙ň")
(v0+"ĺĺů")
(v0+"ĺé") ;
mkV165 : Str -> V ;
mkV165 : Str -> VTable ;
mkV165 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"ĺ")
(v0+"-")
(v0+"îő")
(v0+"ĺő")
(v0+"-")
(v0+"ĺë")
(v0+"-")
(v0+"ĺů")
(v0+"č") ;
mkV166 : Str -> V ;
mkV166 : Str -> VTable ;
mkV166 base = let v0 = tk 2 base
in mkVerb (v0+"ăŕ")
(v0+"ćĺ")
@@ -1221,7 +1221,7 @@ oper
(v0+"-")
(v0+"ćĺů")
(v0+"-") ;
mkV167 : Str -> V ;
mkV167 : Str -> VTable ;
mkV167 base = let v0 = tk 2 base
in mkVerb (v0+"ęŕ")
(v0+"÷ĺ")
@@ -1232,7 +1232,7 @@ oper
(v0+"ęŕí")
(v0+"÷ĺů")
(v0+"÷č") ;
mkV168 : Str -> V ;
mkV168 : Str -> VTable ;
mkV168 base = let v0 = tk 1 base
in mkVerb (v0+"ě")
(v0+"äĺ")
@@ -1243,7 +1243,7 @@ oper
(v0+"äĺí")
(v0+"-")
(v0+"é") ;
mkV169 : Str -> V ;
mkV169 : Str -> VTable ;
mkV169 base = let v0 = tk 1 base
in mkVerb (v0+"ě")
(v0+"äĺ")
@@ -1254,7 +1254,7 @@ oper
(v0+"äĺí")
(v0+"äĺů")
(v0+"ć") ;
mkV170 : Str -> V ;
mkV170 : Str -> VTable ;
mkV170 base = let v0 = tk 3 base
in mkVerb (v0+"ĺđŕ")
(v0+"ĺđĺ")
@@ -1265,7 +1265,7 @@ oper
(v0+"đŕí")
(v0+"ĺđ˙ů")
(v0+"ĺđč") ;
mkV171 : Str -> V ;
mkV171 : Str -> VTable ;
mkV171 base = let v0 = tk 2 base
in mkVerb (v0+"ěŕ")
(v0+"ěĺ")
@@ -1276,7 +1276,7 @@ oper
(v0+"ň")
(v0+"-")
(v0+"ěč") ;
mkV172 : Str -> V ;
mkV172 : Str -> VTable ;
mkV172 base = let v0 = tk 4 base
in mkVerb (v0+"úëíŕ")
(v0+"úëíĺ")
@@ -1287,7 +1287,7 @@ oper
(v0+"úëíŕň")
(v0+"úëíĺů")
(v0+"úëíč") ;
mkV173 : Str -> V ;
mkV173 : Str -> VTable ;
mkV173 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1298,7 +1298,7 @@ oper
(v0+"ĺí")
(v0+"ĺů")
(v0+"č") ;
mkV174 : Str -> V ;
mkV174 : Str -> VTable ;
mkV174 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1309,7 +1309,7 @@ oper
(v0+"ĺí")
(v0+"˙ů")
(v0+"č") ;
mkV175 : Str -> V ;
mkV175 : Str -> VTable ;
mkV175 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1320,7 +1320,7 @@ oper
(v0+"ĺí")
(v0+"˙ů")
(v0+"é") ;
mkV176 : Str -> V ;
mkV176 : Str -> VTable ;
mkV176 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"č")
@@ -1331,7 +1331,7 @@ oper
(v0+"ĺí")
(v0+"ĺů")
(v0+"č") ;
mkV177 : Str -> V ;
mkV177 : Str -> VTable ;
mkV177 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1342,7 +1342,7 @@ oper
(v0+"˙í")
(v0+"˙ů")
(v0+"č") ;
mkV178 : Str -> V ;
mkV178 : Str -> VTable ;
mkV178 base = let v0 = tk 1 base
in mkVerb (v0+"ŕ")
(v0+"č")
@@ -1353,7 +1353,7 @@ oper
(v0+"-")
(v0+"ŕů")
(v0+"č") ;
mkV179 : Str -> V ;
mkV179 : Str -> VTable ;
mkV179 base = let v0 = tk 4 base
in mkVerb (v0+"úđćŕ")
(v0+"úđćč")
@@ -1364,7 +1364,7 @@ oper
(v0+"úđćŕí")
(v0+"úđćŕů")
(v0+"đúć") ;
mkV180 : Str -> V ;
mkV180 : Str -> VTable ;
mkV180 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1375,7 +1375,7 @@ oper
(v0+"-")
(v0+"˙ů")
(v0+"é") ;
mkV181 : Str -> V ;
mkV181 : Str -> VTable ;
mkV181 base = let v0 = tk 2 base
in mkVerb (v0+"ä˙")
(v0+"äč")
@@ -1386,7 +1386,7 @@ oper
(v0+"ä˙í")
(v0+"-")
(v0+"ć") ;
mkV182 : Str -> V ;
mkV182 : Str -> VTable ;
mkV182 base = let v0 = tk 1 base
in mkVerb (v0+"˙")
(v0+"č")
@@ -1397,7 +1397,7 @@ oper
(v0+"-")
(v0+"˙ů")
(v0+"č") ;
mkV183 : Str -> V ;
mkV183 : Str -> VTable ;
mkV183 base = let v0 = tk 3 base
in mkVerb (v0+"ĺćŕ")
(v0+"ĺćč")
@@ -1408,7 +1408,7 @@ oper
(v0+"˙çŕí")
(v0+"ĺćĺů")
(v0+"ĺćč") ;
mkV184 : Str -> V ;
mkV184 : Str -> VTable ;
mkV184 base = let v0 = tk 3 base
in mkVerb (v0+"ĺë˙")
(v0+"ĺëč")
@@ -1419,7 +1419,7 @@ oper
(v0+"ë˙í")
(v0+"ĺëĺů")
(v0+"ĺëč") ;
mkV185 : Str -> V ;
mkV185 : Str -> VTable ;
mkV185 base = let v0 = tk 3 base
in mkVerb (v0+"îë˙")
(v0+"îëč")
@@ -1430,7 +1430,7 @@ oper
(v0+"ëŕí")
(v0+"îëĺů")
(v0+"îëč") ;
mkV186 : Str -> V ;
mkV186 : Str -> VTable ;
mkV186 base = let v0 = tk 2 base
in mkVerb (v0+"ŕě")
(v0+"ŕ")
@@ -1441,7 +1441,7 @@ oper
(v0+"ŕí")
(v0+"ŕů")
(v0+"ŕé") ;
mkV187 : Str -> V ;
mkV187 : Str -> VTable ;
mkV187 base = let v0 = tk 2 base
in mkVerb (v0+"˙ě")
(v0+"˙")

View File

@@ -14,7 +14,7 @@ concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
UttNP np = {s = np.s ! RSubj} ;
UttVP vp = {s = vp.ad ! False ++
"äà" ++
vp.s ! Pres ! Simul ! Pos ! agrP3 (GSg Neut) ! False ++
vp.s ! Pres ! Simul ! Pos ! agrP3 (GSg Neut) ! False ! Perf ++
vp.s2 ! agrP3 (GSg Neut)} ;
UttAdv adv = adv ;

View File

@@ -44,6 +44,8 @@ resource ResBul = ParamX ** open Prelude in {
--2 For $Verb$
Aspect = Imperf | Perf ;
VForm =
VPres Number Person
| VAorist Number Person
@@ -186,14 +188,16 @@ resource ResBul = ParamX ** open Prelude in {
oper
-- For $Verb$.
VTable = VForm => Str ;
Verb : Type = {
s : VForm => Str ;
vtype : VType
s : Aspect => VTable ;
vtype : VType
} ;
VP : Type = {
s : Tense => Anteriority => Polarity => Agr => Bool => Str ;
imp : Polarity => Number => Str ;
s : Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str ;
imp : Polarity => Number => Aspect => Str ;
ad : Bool => Str ; -- sentential adverb
s2 : Agr => Str ;
subjRole : Role
@@ -201,53 +205,75 @@ resource ResBul = ParamX ** open Prelude in {
predV : Verb -> VP =
\verb ->
{ s = \\t,a,p,agr,q => let
clitic = case verb.vtype of {
VNormal => {s=[]; agr=agr} ;
VMedial c => {s=reflClitics ! c; agr=agr} ;
VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}}
} ;
{ s = \\t,a,p,agr,q,asp =>
let clitic = case verb.vtype of {
VNormal => {s=[]; agr=agr} ;
VMedial c => {s=reflClitics ! c; agr=agr} ;
VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}}
} ;
present = verb.s ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
aorist = verb.s ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
perfect = verb.s ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
present = verb.s ! asp ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
presentImperf = verb.s ! Imperf ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxCond = auxWould ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
apc : Str -> Str = \s ->
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
<Sg, P3> => clitic.s++s++auxPres ;
_ => auxPres++s++clitic.s
} ;
auxPres = auxBe clitic.s ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
auxAorist = auxBe clitic.s ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxPerfect = auxBe clitic.s ! VPerfect (aform clitic.agr.gn Indef (RObj Acc)) ;
auxCondS = auxWould clitic.s ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxCondA = auxCondS ++
auxBe [] ! VPerfect (aform clitic.agr.gn Indef (RObj Acc)) ;
verbs : {aux:Str; main:Str}
= case <t,a> of {
<Pres,Simul> => {aux=clitic.s; main=present} ;
<Pres,Anter> => {aux=auxPres; main=perfect} ;
<Past,Simul> => {aux=clitic.s; main=aorist} ;
<Past,Anter> => {aux=auxAorist; main=perfect} ;
<Fut, Simul> => {aux=clitic.s; main=present} ;
<Fut, Anter> => {aux=auxPres; main=perfect} ;
<Cond,Simul> => {aux=auxCondS; main=perfect} ;
<Cond,Anter> => {aux=auxCondA; main=perfect}
} ;
li = case q of {True => "ëè"; False => []} ;
aux = case p of {
Pos => case t of {
Fut => {s1="ùå"++verbs.aux; s2=li} ;
_ => case q of {True => {s1=[]; s2="ëè"++verbs.aux};
False => {s1=verbs.aux; s2=[]}}
} ;
Neg => case t of {
Fut => {s1="íå"++"ùå"++verbs.aux; s2=li} ;
_ => case q of {True => {s1="íå"++verbs.aux; s2="ëè"};
False => {s1="íå"++verbs.aux; s2=[]}}
}
}
in aux.s1 ++ verbs.main ++ aux.s2;
imp = \\p,n => let ne = case p of {Pos => []; Neg => "íå"} ;
in ne ++ verb.s ! VImperative n ;
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case q of {True => {s1=[]; s2="ëè"++apc []};
False => {s1=apc []; s2=[]}} ;
Neg => {s1="íå"++apc li; s2=[]}
} ;
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case q of {True => {s1=[]; s2="ëè"++s};
False => {s1=s; s2=[]}} ;
Neg => case verb.vtype of
{VNormal => {s1="íå"; s2=li} ;
_ => {s1="íå"++s++li; s2=[]}}
} ;
vf3 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => {s1="ùå"++s; s2=li} ;
Neg => {s1="íÿìà"++li++"äà"++s; s2=[]}
} ;
vf4 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => {s1= s++li++clitic.s; s2=[]} ;
Neg => {s1="íå"++s++li++clitic.s; s2=[]}
} ;
verbs : {aux:{s1:Str; s2:Str}; main:Str}
= case <t,a> of {
<Pres,Simul> => {aux=vf2 clitic.s; main=presentImperf} ;
<Pres,Anter> => {aux=vf1 clitic.s; main=perfect} ;
<Past,Simul> => {aux=vf2 clitic.s; main=aorist} ;
<Past,Anter> => {aux=vf4 auxAorist; main=perfect} ;
<Fut, Simul> => {aux=vf3 clitic.s; main=present} ;
<Fut, Anter> => {aux=vf3 (apc []); main=perfect} ;
<Cond,_ > => {aux=vf4 auxCond ; main=perfect}
}
in verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
imp = \\p,n,asp =>
case p of {
Pos => verb.s ! asp ! VImperative n ;
Neg => "íå" ++ verb.s ! Imperf ! VImperative n
} ;
ad = \\_ => [] ;
s2 = \\_ => [] ;
subjRole = case verb.vtype of {
@@ -265,62 +291,62 @@ resource ResBul = ParamX ** open Prelude in {
subjRole = vp.subjRole
} ;
auxBe : Str -> VForm => Str = \se ->
auxBe : VTable =
table {
VPres Sg P1 => "ñúì" ++ se ;
VPres Sg P2 => "ñè" ++ se ;
VPres Sg P3 => se ++ "å" ;
VPres Pl P1 => "ñìå" ++ se ;
VPres Pl P2 => "ñòå" ++ se ;
VPres Pl P3 => "ñà" ++ se ;
VAorist Sg P1 => "áÿõ" ++ se ;
VAorist Sg P2 => "áåøå" ++ se ;
VAorist Sg P3 => se ++ "áåøå" ;
VAorist Pl P1 => "áÿõìå" ++ se ;
VAorist Pl P2 => "áÿõòå" ++ se ;
VAorist Pl P3 => "áÿõà" ++ se ;
VImperfect Sg P1 => "áÿõ" ++ se ;
VImperfect Sg _ => "áåøå" ++ se ;
VImperfect Pl P1 => "áÿõìå" ++ se ;
VImperfect Pl P2 => "áÿõòå" ++ se ;
VImperfect Pl P3 => "áÿõà" ++ se ;
VPerfect aform => regAdjective "áèë" ! aform ++ se ;
VPluPerfect aform => regAdjective "áèë" ! aform ++ se ;
VPassive aform => regAdjective "áúäåí" ! aform ++ se ;
VPresPart aform => regAdjective "áúäåù" ! aform ++ se ;
VImperative Sg => "áúäè" ++ se ;
VImperative Pl => "áúäåòå" ++ se ;
VGerund => "áèäåéêè" ++ se
VPres Sg P1 => "ñúì" ;
VPres Sg P2 => "ñè" ;
VPres Sg P3 => "å" ;
VPres Pl P1 => "ñìå" ;
VPres Pl P2 => "ñòå" ;
VPres Pl P3 => "ñà" ;
VAorist Sg P1 => "áÿõ" ;
VAorist Sg _ => "áåøå" ;
VAorist Pl P1 => "áÿõìå" ;
VAorist Pl P2 => "áÿõòå" ;
VAorist Pl P3 => "áÿõà" ;
VImperfect Sg P1 => "áÿõ" ;
VImperfect Sg _ => "áåøå" ;
VImperfect Pl P1 => "áÿõìå" ;
VImperfect Pl P2 => "áÿõòå" ;
VImperfect Pl P3 => "áÿõà" ;
VPerfect aform => regAdjective "áèë" ! aform ;
VPluPerfect aform => regAdjective "áèë" ! aform ;
VPassive aform => regAdjective "áúäåí" ! aform ;
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VGerund => "áèäåéêè"
} ;
auxWould : Str -> VForm => Str = \se ->
auxWould : VTable =
table {
VPres Sg P1 => "áúäà" ++ se ;
VPres Sg P2 => "áúäåø" ++ se ;
VPres Sg P3 => se ++ "áúäå" ;
VPres Pl P1 => "áúäåì" ++ se ;
VPres Pl P2 => "áúäåòå" ++ se ;
VPres Pl P3 => "áúäàò" ++ se ;
VAorist Sg P1 => "áèõ" ++ se ;
VAorist Sg _ => "áè" ++ se ;
VAorist Pl P1 => "áèõìå" ++ se ;
VAorist Pl P2 => "áèõòå" ++ se ;
VAorist Pl P3 => "áèõà" ++ se ;
VImperfect Sg P1 => "áúäåõ" ++ se ;
VImperfect Sg _ => "áúäåøå" ++ se ;
VImperfect Pl P1 => "áúäåõìå" ++ se ;
VImperfect Pl P2 => "áúäåõòå" ++ se ;
VImperfect Pl P3 => "áúäåõà" ++ se ;
VPerfect aform => regAdjective "áèë" ! aform ++ se ;
VPluPerfect aform => regAdjective "áúäåë" ! aform ++ se ;
VPassive aform => regAdjective "áúäåí" ! aform ++ se ;
VPresPart aform => regAdjective "áúäåù" ! aform ++ se ;
VImperative Sg => "áúäè" ++ se ;
VImperative Pl => "áúäåòå" ++ se ;
VGerund => "áúäåéêè" ++ se
VPres Sg P1 => "áúäà" ;
VPres Sg P2 => "áúäåø" ;
VPres Sg P3 => "áúäå" ;
VPres Pl P1 => "áúäåì" ;
VPres Pl P2 => "áúäåòå" ;
VPres Pl P3 => "áúäàò" ;
VAorist Sg P1 => "áèõ" ;
VAorist Sg _ => "áè" ;
VAorist Pl P1 => "áèõìå" ;
VAorist Pl P2 => "áèõòå" ;
VAorist Pl P3 => "áèõà" ;
VImperfect Sg P1 => "áúäåõ" ;
VImperfect Sg _ => "áúäåøå" ;
VImperfect Pl P1 => "áúäåõìå" ;
VImperfect Pl P2 => "áúäåõòå" ;
VImperfect Pl P3 => "áúäåõà" ;
VPerfect aform => regAdjective "áèë" ! aform ;
VPluPerfect aform => regAdjective "áúäåë" ! aform ;
VPassive aform => regAdjective "áúäåí" ! aform ;
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VGerund => "áúäåéêè"
} ;
verbBe : Verb = {s=auxBe []; vtype=VNormal} ;
verbBe : Verb = {s=\\_=>auxBe ; vtype=VNormal} ;
verbWould : Verb = {s=\\_=>auxWould ; vtype=VNormal} ;
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"} ;
@@ -382,23 +408,23 @@ resource ResBul = ParamX ** open Prelude in {
-- For $Sentence$.
Clause : Type = {
s : Tense => Anteriority => Polarity => Order => Str
} ;
Clause : Type = {
s : Tense => Anteriority => Polarity => Order => Str
} ;
mkClause : Str -> Agr -> VP -> Clause =
\subj,agr,vp -> {
s = \\t,a,b,o =>
let
verb : Bool => Str
= \\q => vp.ad ! q ++ vp.s ! t ! a ! b ! agr ! q ;
compl = vp.s2 ! agr
in case o of {
Main => subj ++ verb ! False ++ compl ;
Inv => verb ! False ++ compl ++ subj ;
Quest => subj ++ verb ! True ++ compl
}
} ;
mkClause : Str -> Agr -> VP -> Clause =
\subj,agr,vp -> {
s = \\t,a,p,o =>
let
verb : Bool => Str
= \\q => vp.ad ! q ++ vp.s ! t ! a ! p ! agr ! q ! Perf ;
compl = vp.s2 ! agr
in case o of {
Main => subj ++ verb ! False ++ compl ;
Inv => verb ! False ++ compl ++ subj ;
Quest => subj ++ verb ! True ++ compl
}
} ;
-- For $Numeral$.

View File

@@ -10,7 +10,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
ImpVP vp = {
s = \\p,gn =>
let agr = {gn = gn ; p = P2} ;
verb = vp.imp ! p ! numGenNum gn ;
verb = vp.imp ! p ! numGenNum gn ! Perf ;
compl = vp.s2 ! agr
in
verb ++ compl
@@ -22,10 +22,10 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
SlashVVV2 np vv v2 =
mkClause (np.s ! RSubj) np.a
(let vp = predV vv
in { s = \\t,a,p,agr,q => vp.s ! t ! a ! p ! agr ! q ++ "äà" ++ v2.s ! (VPres (numGenNum agr.gn) agr.p) ;
in { s = \\t,a,p,agr,q,asp => vp.s ! t ! a ! p ! agr ! q ! asp ++ "äà" ++ v2.s ! Perf ! (VPres (numGenNum agr.gn) agr.p) ;
imp = vp.imp ;
ad = vp.ad ;
s2 = vp.s2 ;
ad = vp.ad ;
s2 = vp.s2 ;
subjRole = vp.subjRole
}) **
{c2 = v2.c2} ;
@@ -44,7 +44,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
EmbedS s = {s = "," ++ "֌" ++ s.s} ;
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = vp.ad ! False ++ "äà" ++ vp.s ! Pres ! Simul ! Pos ! {gn=GSg Masc; p=P1} ! False} ;
EmbedVP vp = {s = vp.ad ! False ++ "äà" ++ vp.s ! Pres ! Simul ! Pos ! {gn=GSg Masc; p=P1} ! False ! Perf} ;
UseCl t a p cl = {
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! Main

View File

@@ -19,7 +19,7 @@ concrete StructuralBul of Structural = CatBul **
but_PConj = ss "íî" ;
by8agent_Prep = mkPrep "÷ðåç" Acc ;
by8means_Prep = mkPrep "÷ðåç" Acc ;
can8know_VV, can_VV = mkVV (mkV166 "ìîãà") ;
can8know_VV, can_VV = mkVV (stateV (mkV166 "ìîãà")) ;
during_Prep = mkPrep ["ïî âðåìå íà"] Acc ;
either7or_DConj = sd2 "èëè" "èëè" ** {n = Sg} ;
everybody_NP = mkNP "âñåêè" (GSg Masc) P3 ;
@@ -48,22 +48,23 @@ concrete StructuralBul of Structural = CatBul **
more_CAdv = {s=[]; sn="ïîâå÷å"} ;
most_Predet = {s = \\_ => "ïîâå÷åòî"} ;
much_Det = mkDeterminerSg "ìíîãî" "ìíîãî" "ìíîãî";
must_VV = mkVV {
s = table {
VPres _ _ => "òðÿáâà" ;
VAorist _ _ => "òðÿáâàøå" ;
VImperfect _ _ => "òðÿáâàëî" ;
VPerfect _ => "òðÿáâàëî" ;
VPluPerfect _ => "òðÿáâàëî" ;
VPassive _ => "òðÿáâàëî" ;
VPresPart _ => "òðÿáâàëî" ;
VImperative Sg => "òðÿáâàé" ;
VImperative Pl => "òðÿáâàéòå" ;
VGerund => "òðÿáâàéêè"
} ;
vtype=VNormal ;
lock_V=<>
} ;
must_VV =
mkVV {
s = \\_=>table {
VPres _ _ => "òðÿáâà" ;
VAorist _ _ => "òðÿáâàøå" ;
VImperfect _ _ => "òðÿáâàëî" ;
VPerfect aform => regAdjective "òðÿáâàë" ! aform ;
VPluPerfect aform => regAdjective "òðÿáâàë" ! aform ;
VPassive aform => regAdjective "òðÿáâàë" ! aform ;
VPresPart aform => regAdjective "òðÿáâàë" ! aform ;
VImperative Sg => "òðÿáâàé" ;
VImperative Pl => "òðÿáâàéòå" ;
VGerund => "òðÿáâàéêè"
} ;
vtype=VNormal ;
lock_V=<>
} ;
no_Phr = ss "íå" ;
on_Prep = mkPrep "íà" Acc ;
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
@@ -77,7 +78,7 @@ concrete StructuralBul of Structural = CatBul **
she_Pron = mkPron "òÿ" "íåÿ" "è" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) P3 ;
so_AdA = ss "òîëêîâà" ;
somebody_NP = mkNP "íÿêîé" (GSg Masc) P3 ;
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîå" "íÿêîÿ" ;
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîÿ" "íÿêîå" ;
somePl_Det = mkDeterminerPl "íÿêîè" ;
something_NP = mkNP "íåùî" (GSg Neut) P3 ;
somewhere_Adv = ss "íÿêúäå" ;
@@ -97,7 +98,7 @@ concrete StructuralBul of Structural = CatBul **
to_Prep = mkPrep "äî" Acc ;
under_Prep = mkPrep "ïîä" Acc ;
very_AdA = ss "ìíîãî" ;
want_VV = mkVV (mkV186 "èñêàì") ;
want_VV = mkVV (stateV (mkV186 "èñêàì")) ;
we_Pron = mkPron "íèå" "íàñ" "íè" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl P1 ;
whatPl_IP = mkIP "êàêâè" "êàêâè" GPl ;
whatSg_IP = mkIP "êàêúâ" "êàêúâ" (GSg Masc) ;

View File

@@ -9,7 +9,9 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
insertObj (\\_ => v.c2.s ++ np.s ! RObj v.c2.c ++ v.c3.s ++ np2.s ! RObj v.c3.c) (predV v) ;
ComplVV vv vp = {
s = \\t,a,p,agr,q => (predV vv).s ! t ! a ! p ! agr ! q ++ vp.ad ! False ++ "äà" ++ vp.s ! Pres ! Simul ! Pos ! agr ! False ;
s = \\t,a,p,agr,q,asp => let vv_verb = (predV vv).s ! t ! a ! p ! agr ! q ! asp ;
vp_verb = vp.s ! Pres ! Simul ! Pos ! agr ! False ! Perf ;
in vv_verb ++ vp.ad ! False ++ "äà" ++ vp_verb ;
imp = vp.imp ;
ad = \\_ => [] ;
s2 = vp.s2 ;
@@ -28,7 +30,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
AdVVP adv vp = {
s = \\t,a,p,agr,q => vp.s ! t ! a ! p ! agr ! False ;
s = \\t,a,p,agr,q,asp => vp.s ! t ! a ! p ! agr ! False ! asp ;
imp = vp.imp ;
ad = \\q => vp.ad ! q ++ adv.s ++ case q of {True => "ëè"; False => []} ;
s2 = vp.s2 ;
@@ -37,7 +39,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
ReflV2 v = predV (reflV (v ** {lock_V=<>}) v.c2.c) ;
PassV2 v = insertObj (\\a => v.s ! VPassive (aform a.gn Indef (RObj Acc))) (predV verbBe) ;
PassV2 v = insertObj (\\a => v.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc))) (predV verbWould) ;
UseVS, UseVQ = \vv -> {s = vv.s; c2 = noPrep; vtype = vv.vtype} ; -- no "to"