mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
=made changes to UseCl by correcting tense linearization. Added some extras. Peparing to extend GF
This commit is contained in:
@@ -16,6 +16,11 @@ lin
|
||||
{-Assumed that a PrepNP is always Acc-}
|
||||
PrepNP prep np = {s = prep.s ++ np.s ! Acc; agr = AgrNo}; -- aha meza
|
||||
|
||||
-- Subordinate clauses can function as adverbs.
|
||||
|
||||
--SubjS : Subj -> S -> Adv ; -- when she sleeps
|
||||
SubjS subjunctive sent = {s=subjunctive.s ++ sent.s; agr=AgrNo};
|
||||
|
||||
--PositAdvAdj : A -> Adv ; -- warmly
|
||||
--"Impossible to implement because each is lexically different word."
|
||||
{-
|
||||
|
||||
@@ -20,6 +20,9 @@ lincat
|
||||
[CN] = {s1,s2 : Number => Case => Str};
|
||||
[DAP] = {s1,s2 : Str ; n : Number};
|
||||
-}
|
||||
|
||||
|
||||
|
||||
{-
|
||||
--1 Conjunction: Coordination
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ lin
|
||||
bread_N = mkN "omugati" MU_MI;
|
||||
car_N = mkN "emootoka" N_N ;
|
||||
cat_N = mkN "enjangu" N_N ;
|
||||
--chair_N = mkN "entebbe" N_N ;
|
||||
chair_N = mkN "entebbe" N_N ;
|
||||
child_N = mkN "omwana" MU_BA ;
|
||||
city_N = mkN "ekibúga" KI_BI; --orurêmbo pl endêmbo
|
||||
cloud_N = mkN "ekikyu" KI_BI ;
|
||||
@@ -25,6 +25,7 @@ lin
|
||||
cow_N = mkN "ente" N_N ;
|
||||
dog_N = mkN "embwa" N_N ;
|
||||
--person_N = mkN "omuntu" "abantu" MU_BA ;
|
||||
eye_N = mkN "eriisho" RI_MA;
|
||||
fire_N = mkN "omuriro" MU_MI ;
|
||||
fish_N = mkN "eky'ényanja" KI_BI ;
|
||||
flower_N = mkN "ekimuri" KI_BI ;
|
||||
@@ -44,9 +45,11 @@ lin
|
||||
horse_N = mkN "embaráàsi" N_N ;
|
||||
house_N = mkN "enju" N_N ;
|
||||
language_N = mkN "orurími" "endími" RU_N ;
|
||||
meat_N = mkN "enyama" N_N;
|
||||
man_N = mkN "omushaija" MU_BA ;
|
||||
milk_N = mkN "amate" ZERO_MA ;
|
||||
music_N = mkN "music" ZERO_ZERO ; -- I have not found the translation
|
||||
rule_N = mkN "akiragiro" KI_BI;
|
||||
river_N = mkN "omugyera" MU_MI ; --omurîndi,
|
||||
sea_N = mkN "enyanja" N_N ;
|
||||
ship_N = mkN "ekyombo" KI_BI ; -- eméèri [NC_n_n]
|
||||
@@ -56,7 +59,9 @@ lin
|
||||
water_N = mkN "amáìzi" ZERO_MA ;
|
||||
wine_N = mkN "víìnyo" ZERO_ZERO ;
|
||||
woman_N = mkN "omwishiki" MU_BA ;
|
||||
|
||||
reason_N = mkN "enshoonga" N_N;
|
||||
sheep_N = mkN "entaama" N_N;
|
||||
hat_N = mkN "enkofira" N_N;
|
||||
--Proper Nouns
|
||||
john_PN = mkPN "Yohana" (AgP3 Sg MU_BA) False;
|
||||
paris_PN = mkPN "Paris" (AgP3 Sg N_N) True; --Noun class for places???
|
||||
@@ -68,20 +73,22 @@ lin
|
||||
black_A = mkAdjective "kwirangura" Post False False;
|
||||
blue_A = mkAdjective "buuru" Post True True ;
|
||||
clean_A = mkAdjective "yonjo" Post False False; --: A ;
|
||||
cold_A = mkAdjective "rikufuka" Post False False; --: A ;
|
||||
cold_A = mkAdjective "kufuka" Post False False; --: A ;
|
||||
correct_A = mkAdjective "hikire" Post False False; --: A ;
|
||||
good_A =mkAdjective "rungi" Post False False; --: A ;
|
||||
heavy_A = mkAdjective "rikuremeera" Post False False; --: A ; --notice ri as a verb is
|
||||
hot_A = mkAdjective "rikwotsya" Post False False; -- rikutagata -- problematic words like hot we need a new set of clitics
|
||||
heavy_A = mkAdjective "kuremeera" Post False False; --: A ; --notice ri as a verb is
|
||||
hot_A = mkAdjective "kwosya" Post False False; -- rikutagata -- problematic words like hot we need a new set of clitics
|
||||
new_A = mkAdjective "sya" Post False False; --: A ;
|
||||
old_A = mkAdjective "kúru" Post False False; --: A ;
|
||||
ready_A = mkAdjective "eteekateekire" Post False False; --: A ;
|
||||
red_A = mkAdjective "ríkutukura" Post False False; --: A ;
|
||||
red_A = mkAdjective "kutukura" Post False False; --: A ;
|
||||
small_A = mkAdjective "kye" Post False False;
|
||||
warm_A = mkAdjective "rikutagata" Post False False;--: A ;
|
||||
warm_A = mkAdjective "kutagata" Post False False;--: A ;
|
||||
white_A = mkAdjective "rikwera" Post False False;--: A ;
|
||||
yellow_A = mkAdjective "kinekye" Post True True;--: A ; or yero, or kyenju
|
||||
young_A = mkAdjective "to" Post False False;--: A ;
|
||||
green_A =mkAdjective "kijubwe" Post False True;
|
||||
thin_A = mkAdjective "kye" Post False False;
|
||||
|
||||
--ditransitive verbs
|
||||
bite_V2 = mkV2 "rum";
|
||||
@@ -96,7 +103,7 @@ lin
|
||||
fear_V2 = mkV2 "tiin";
|
||||
find_V2 = mkV2 "bon" ; --: V2 ; -- many words; kureeba, kubóna,kushanga, kumamya,kujumbura
|
||||
kill_V2 = mkV2 "it"; --: V2 ;
|
||||
love_V2 = mkV2 "kûnd"; --: V2 ;
|
||||
love_V2 = mkV2 "kûnd" "da" "zire"; --: V2 ;
|
||||
read_V2 = mkV2 "shom";--: V2 ;
|
||||
see_V2 = mkV2 "reeb"; --: V2 ;
|
||||
teach_V2 = mkV2 "shomes" ; --: V2 ; or kwegyesa
|
||||
@@ -113,12 +120,13 @@ lin
|
||||
|
||||
-- Intransitive verbs
|
||||
come_V = mkV "ij";
|
||||
go_V = mkV "gyend"; --: V ; -- Many words: kuza, kuraba,kutoora, kugyenda=go away, kushuma=go down
|
||||
die_V = mkV "f";
|
||||
go_V = mkV "gyen" "da" "zire"; --: V ; -- Many words: kuza, kuraba,kutoora, kugyenda=go away, kushuma=go down
|
||||
jump_V = mkV "guruk" ;
|
||||
play_V = mkV "záàn"; --: V ;
|
||||
live_V = mkV "tuur" ; --manyF: kutuura i.e. live somewhere, stay = kuráàra
|
||||
run_V = mkV "íruk"; -- : V ;
|
||||
sleep_V = mkV "nyama" ; --: V ;--Kugwejegyera, kubyama
|
||||
sleep_V = mkV "gwejegyer" ; --: V ;--Kugwejegyera, kubyama
|
||||
swim_V = mkV "og"; --: V ;
|
||||
travel_V = mkV "gyen" "da" "zire" ;--: V ;
|
||||
walk_V = mkV "ribá" "ta" "si"; --: V ; or kuribata Runynakore it is different
|
||||
@@ -143,7 +151,7 @@ lin
|
||||
now_Adv = mkAdv "hati" AgrNo;
|
||||
--far_Adv = mkAdv "hare";
|
||||
|
||||
--today_Adv = mkAdv "erizooba" AgrNo;
|
||||
today_Adv = mkAdv "erizooba" AgrNo;
|
||||
|
||||
father_N2 = mkN2 (mkN "tata" ZERO_BAA) (lin Prep (mkPrep [] [] True)) ;
|
||||
|
||||
@@ -151,6 +159,247 @@ lin
|
||||
|
||||
alas_Interj ={s="ryakareeba"; }; --: Interj ;
|
||||
|
||||
|
||||
-- New Lexicon
|
||||
switch8off_V2 = mkV2 "raza" "za" "riize";
|
||||
television_N = mkN "TV" N_N;
|
||||
doctor_N = mkN "omushaho" MU_BA;
|
||||
clever_A =mkAdjective "amagyezi" Post False True;
|
||||
laugh_V = mkV "sheka";
|
||||
|
||||
airplane_N = mkN "endegye" N_N;
|
||||
{--
|
||||
answer_V2S
|
||||
apartment_N
|
||||
art_N
|
||||
ashes_N
|
||||
ask_V2Q
|
||||
back_N
|
||||
bank_N
|
||||
bark_N
|
||||
beautiful_A
|
||||
beg_V2V
|
||||
belly_N
|
||||
blow_V
|
||||
bone_N
|
||||
boot_N
|
||||
boss_N
|
||||
breast_N
|
||||
breathe_V
|
||||
broad_A
|
||||
brother_N2
|
||||
brown_A
|
||||
burn_V
|
||||
butter_N
|
||||
camera_N
|
||||
cap_N
|
||||
carpet_N
|
||||
ceiling_N
|
||||
cheese_N
|
||||
church_N
|
||||
coat_N
|
||||
country_N
|
||||
cousin_N
|
||||
day_N
|
||||
dig_V
|
||||
dirty_A
|
||||
doctor_N
|
||||
door_N
|
||||
dry_A
|
||||
dull_A
|
||||
dust_N
|
||||
ear_N
|
||||
earth_N
|
||||
easy_A2V
|
||||
egg_N
|
||||
empty_A
|
||||
enemy_N
|
||||
factory_N
|
||||
fall_V
|
||||
far_Adv
|
||||
fat_N
|
||||
feather_N
|
||||
fight_V2
|
||||
fingernail_N
|
||||
float_V
|
||||
floor_N
|
||||
flow_V
|
||||
fly_V
|
||||
fog_N
|
||||
foot_N
|
||||
forest_N
|
||||
forget_V2
|
||||
freeze_V
|
||||
fridge_N
|
||||
fruit_N
|
||||
full_A
|
||||
fun_AV
|
||||
garden_N
|
||||
glove_N
|
||||
gold_N
|
||||
grass_N
|
||||
guts_N
|
||||
hair_N
|
||||
hand_N
|
||||
harbour_N
|
||||
hat_N
|
||||
hate_V2
|
||||
head_N
|
||||
hear_V2
|
||||
heart_N
|
||||
hill_N
|
||||
hit_V2
|
||||
hold_V2
|
||||
horn_N
|
||||
hunt_V2
|
||||
husband_N
|
||||
ice_N
|
||||
important_A
|
||||
industry_N
|
||||
iron_N
|
||||
king_N
|
||||
knee_N
|
||||
know_V2
|
||||
lake_N
|
||||
lamp_N
|
||||
leaf_N
|
||||
learn_V2
|
||||
leather_N
|
||||
leave_V2
|
||||
left_Ord
|
||||
leg_N
|
||||
lie_V
|
||||
like_V2
|
||||
listen_V2
|
||||
liver_N
|
||||
long_A
|
||||
lose_V2
|
||||
louse_N
|
||||
love_N
|
||||
married_A2
|
||||
moon_N
|
||||
mother_N2
|
||||
mountain_N
|
||||
mouth_N
|
||||
name_N
|
||||
narrow_A
|
||||
near_A
|
||||
neck_N
|
||||
newspaper_N
|
||||
night_N
|
||||
nose_N
|
||||
number_N
|
||||
oil_N
|
||||
open_V2
|
||||
paint_V2A
|
||||
paper_N
|
||||
peace_N
|
||||
pen_N
|
||||
person_N
|
||||
planet_N
|
||||
plastic_N
|
||||
play_V2
|
||||
policeman_N
|
||||
priest_N
|
||||
probable_AS
|
||||
pull_V2
|
||||
push_V2
|
||||
put_V2
|
||||
queen_N
|
||||
question_N
|
||||
radio_N
|
||||
rain_N
|
||||
rain_V0
|
||||
religion_N
|
||||
restaurant_N
|
||||
right_Ord
|
||||
road_N
|
||||
rock_N
|
||||
roof_N
|
||||
root_N
|
||||
rope_N
|
||||
rotten_A
|
||||
round_A
|
||||
rub_V2
|
||||
rubber_N
|
||||
salt_N
|
||||
sand_N
|
||||
school_N
|
||||
science_N
|
||||
scratch_V2
|
||||
seed_N
|
||||
seek_V2
|
||||
sew_V
|
||||
sharp_A
|
||||
shirt_N
|
||||
shoe_N
|
||||
shop_N
|
||||
short_A
|
||||
silver_N
|
||||
sing_V
|
||||
sister_N
|
||||
sit_V
|
||||
skin_N
|
||||
sky_N
|
||||
smell_V
|
||||
smoke_N
|
||||
smooth_A
|
||||
snake_N
|
||||
snow_N
|
||||
sock_N
|
||||
song_N
|
||||
speak_V2
|
||||
spit_V
|
||||
split_V2
|
||||
squeeze_V2
|
||||
stab_V2
|
||||
stand_V
|
||||
steel_N
|
||||
stick_N
|
||||
stone_N
|
||||
stop_V
|
||||
stove_N
|
||||
straight_A
|
||||
student_N
|
||||
stupid_A
|
||||
suck_V2
|
||||
sun_N
|
||||
swell_V
|
||||
switch8on_V2
|
||||
table_N
|
||||
tail_N
|
||||
teacher_N
|
||||
thick_A
|
||||
think_V
|
||||
throw_V2
|
||||
tie_V2
|
||||
tongue_N
|
||||
tooth_N
|
||||
turn_V
|
||||
ugly_A
|
||||
uncertain_A
|
||||
university_N
|
||||
village_N
|
||||
vomit_V
|
||||
war_N
|
||||
wash_V2
|
||||
watch_V2
|
||||
wet_A
|
||||
wide_A
|
||||
wife_N
|
||||
win_V2
|
||||
wind_N
|
||||
window_N
|
||||
wing_N
|
||||
wipe_V2
|
||||
wonder_VQ
|
||||
wood_N
|
||||
worm_N
|
||||
write_V2
|
||||
|
||||
--}
|
||||
year_N = mkN "omwaka" "emyaka" MU_MI;
|
||||
-- End of New Lexicon
|
||||
oper
|
||||
aboutP = mkPrep "about" ;
|
||||
atP = mkPrep "at" ;
|
||||
|
||||
@@ -18,14 +18,8 @@ lin
|
||||
--UsePron pron = pron; -- the result of use pron is a NounPhrase
|
||||
--MassNP : CN -> NP ; -- (beer)
|
||||
MassNP cn = {s = \\_ =>cn.s ! Sg ! Complete; agr = AgP3 Sg cn.gender; nounCat = ComNoun}; --: CN -> NP ; -- milk
|
||||
--DetCN det cn = mkDeterminer det cn; --Should be nemed mkDetCN
|
||||
--DetCN det cn = mkDeterminer det cn; --Should be named mkDetCN
|
||||
DetCN det cn = mkDetCN det cn; -- the man
|
||||
{-
|
||||
case det.pos of{
|
||||
PreDeterminer =>{s = det.s ++ cn.s!det.ntype!det.num} ;
|
||||
PostDeterminer=>{s = cn.s!det.ntype!det.num ++ mkNCParticles!SubjM!AgP3 det.num cn.nc + det.s}
|
||||
}; --use a function because code is becoming long
|
||||
-}
|
||||
UseN noun = noun ;
|
||||
|
||||
--Noun = {s : NounType=>Number => Str ; nc : NClass} ;
|
||||
@@ -39,7 +33,7 @@ lin
|
||||
};
|
||||
<Post, False> => case ap.isPrep of {
|
||||
False => {
|
||||
s = \\ num, ns => cn.s ! num ! ns ++ mkAdjPronIVClitic (AgP3 num cn.gender)
|
||||
s = \\ num, ns => cn.s ! num ! ns ++ mkAdjClitic ! (AgP3 num cn.gender)
|
||||
++ ap.s ! AgP3 Sg KI_BI;
|
||||
gender = cn.gender; nounCat = cn.nounCat
|
||||
};
|
||||
@@ -62,7 +56,8 @@ lin
|
||||
}; -- big house
|
||||
|
||||
--RelCN : CN -> RS -> CN ; -- house that John bought
|
||||
RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat};
|
||||
--RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat};
|
||||
RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ mkRPsNoClitic !RObj ! (AgP3 n cn.gender) ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat};
|
||||
|
||||
{-
|
||||
A predeterminer is any word that modifies a noun Phrase.
|
||||
@@ -95,8 +90,8 @@ lin
|
||||
-- quantifier and an optional numeral can be discerned.
|
||||
--DetQuant : Quant -> Num -> Det ; -- these five
|
||||
DetQuant quant num = case quant.isPron of {
|
||||
True => {s=[]; s2 = quant.s2; ntype = Incomplete; num = num.n; pos=Pre; doesAgree = quant.doesAgree};
|
||||
False => {s= quant.s.s ! Nom; s2 =\\_ =>[]; ntype = Complete; num = num.n; pos=Pre; doesAgree = quant.doesAgree} --
|
||||
False => {s=[]; s2 = quant.s2; ntype = Incomplete; num = num.n; pos=Pre; doesAgree = quant.doesAgree; numeralS = num.s; numeralExists=num.numeralExists;};
|
||||
True => {s= quant.s.s ! Nom; s2 =\\_ =>[]; ntype = Complete; num = num.n; pos=Pre; doesAgree = quant.doesAgree; numeralS = num.s; numeralExists=num.numeralExists;} --
|
||||
};
|
||||
|
||||
--DetQuantOrd : Quant -> Num -> Ord -> Det ; -- these five best
|
||||
@@ -106,13 +101,15 @@ lin
|
||||
ntype = Complete;
|
||||
num = num.n;
|
||||
pos = Pre;
|
||||
doesAgree = True
|
||||
doesAgree = True;
|
||||
numeralS = num.s;
|
||||
numeralExists = num.numeralExists
|
||||
};
|
||||
|
||||
NumSg = {s=\\_=>[]; n=Sg}; --Num
|
||||
NumPl = {s=\\_=>[]; n=Pl}; --Num
|
||||
NumSg = {s=\\_=>[]; n=Sg; numeralExists=False}; --Num
|
||||
NumPl = {s=\\_=>[]; n=Pl; numeralExists=False}; --Num
|
||||
--NumCard : Card -> Num ; -- one/five [explicit numeral]
|
||||
NumCard card = {s =\\agr =>card.s ! agr; n=card.n };
|
||||
NumCard card = {s =\\agr =>card.s ! agr; n=card.n; numeralExists=True; };
|
||||
--Quant = {s : Res.Pronoun; s2 :Res.Agreement => Str; doesAgree : Bool; isPron: Bool} ;
|
||||
IndefArt = {s={s=\\_=>[]; third = \\_,_=>[];agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron=False};
|
||||
DefArt = {s={s =\\_=>[]; third = \\_,_=>[]; agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron = False}; -- noun with initial vowel
|
||||
@@ -151,7 +148,9 @@ lin
|
||||
ntype = dap.ntype ;
|
||||
num = dap.num ;
|
||||
pos = dap.pos;
|
||||
doesAgree= True
|
||||
doesAgree= True;
|
||||
numeralS = dap.numeralS;
|
||||
numeralExists=dap.numeralExists;
|
||||
};
|
||||
|
||||
--DetDAP : Det -> DAP ; -- this (or that)
|
||||
|
||||
@@ -37,6 +37,7 @@ oper
|
||||
mkV3 = overload {
|
||||
mkV3 : Str -> Verb3 = \root ->mkV2 root ** {comp2 =[]};
|
||||
mkV3 : Str -> Str ->Str -> Verb3 = \root ,s1,s2 ->mkV2 root s1 s2 ** {comp2 =[]};
|
||||
--mkV3 : Str -> Str ->Str ->Str ->Verb3 =\root, s1, s2, prep
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ lin
|
||||
--UttAP : AP -> Utt ; -- fine
|
||||
--UttInterj : Interj -> Utt ; -- alas
|
||||
UttInterj interj = let agr = AgMUBAP2 Pl in {s= mkObjClitic agr ++ interj.s};
|
||||
|
||||
{-
|
||||
--1 Phrase: Phrases and Utterances
|
||||
|
||||
|
||||
@@ -64,11 +64,13 @@ param
|
||||
PrepForm = Form1 | Form2; -- omu and omuri, aha, ahari
|
||||
-- for Extra Tenses not implemented
|
||||
-- would be better if I had alliases
|
||||
TensesExtra = RemotePast | ImmediatePast | RemoteFuture;
|
||||
Tenses = RemotePast|NearPast | ImmediatePast |ExPres|NearFut |RemoteFut;
|
||||
|
||||
-- for Extra Aspects not implemented
|
||||
-- would be better if I had alliases
|
||||
Aspect = Performative | Perfect | Resultative | Retrospective | Habitual | Progressive | Persitive;
|
||||
|
||||
|
||||
{-
|
||||
Complete = Nouns with IV,
|
||||
Incomplete = Nouns without IV: important for use with pre-determiners
|
||||
@@ -525,7 +527,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
--Adjective : Type = {s : Str ; post : Str; isPre : Bool; isProper : Bool; isPrep: Bool};
|
||||
Adjective : Type = {s : Str ; position : Position; isProper : Bool; isPrep: Bool};
|
||||
mkAdjective: Str -> Position -> Bool -> Bool -> Adjective = \ a , pos, isProper, isPrep ->
|
||||
{ s = a ; position = pos ; isPre = True; isProper = isProper; isPrep = isPrep};
|
||||
{ s = a ; position = pos ; isPre = False; isProper = isProper; isPrep = isPrep};
|
||||
|
||||
{-
|
||||
TO DO:
|
||||
@@ -642,6 +644,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ;
|
||||
AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ;
|
||||
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga";
|
||||
AgP3 Sg ZERO_MA => mkClitic "aga";
|
||||
AgP3 ( Pl) HA => mkClitic "aha" ; -- of place HA
|
||||
AgP3 ( Pl) MU => mkClitic "omu" ; -- of place MU
|
||||
AgP3 ( Pl) KU => mkClitic "oku" ; -- of place KU
|
||||
@@ -661,6 +664,76 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
_ => mkClitic "XXXThisThese" -- error checking for any case not catered for
|
||||
|
||||
};
|
||||
|
||||
-- TThis is for demonstrative pronouns which can also be use as Quantifiers
|
||||
-- These are self-standing
|
||||
-- How can it be done without code repeation?
|
||||
mkThisNoClitic = table{
|
||||
AgMUBAP1 Sg => "ogu";
|
||||
AgMUBAP1 Pl => "aba" ;
|
||||
AgMUBAP2 Sg => "ogu"; --probably an error check your grammar book
|
||||
AgMUBAP2 Pl => "aba" ;
|
||||
AgP3 Sg MU_BA => "ogu";
|
||||
AgP3 Pl MU_BA => "aba" ;
|
||||
AgP3 Pl ZERO_BU => "obu" ;
|
||||
AgP3 Sg BU_MA => "obu" ;
|
||||
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
|
||||
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
|
||||
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
|
||||
AgP3 Sg ZERO_MA => "aga";
|
||||
AgP3 ( Pl) HA => "aha" ; -- of place HA
|
||||
AgP3 ( Pl) MU => "omu" ; -- of place MU
|
||||
AgP3 ( Pl) KU => "oku" ; -- of place KU
|
||||
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
|
||||
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
|
||||
AgP3 Sg KI_BI => "eki" ;
|
||||
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
|
||||
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
|
||||
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
|
||||
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
|
||||
AgP3 Sg (ZERO_ZERO | N_N) => "egi" ;
|
||||
AgP3 Pl ZERO_MI => "egi" ;
|
||||
AgP3 Pl MU_MI => "egi";
|
||||
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
|
||||
AgP3 Sg GU_GA => "ogu" ;
|
||||
AgP3 Pl GU_GA => "aga" ;
|
||||
_ => "XXXThisThese" -- error checking for any case not catered for
|
||||
|
||||
};
|
||||
|
||||
mkAdjClitic = table{
|
||||
AgMUBAP1 Sg => "ogu";
|
||||
AgMUBAP1 Pl => "aba" ;
|
||||
AgMUBAP2 Sg => "ogu"; --probably an error check your grammar book
|
||||
AgMUBAP2 Pl => "aba" ;
|
||||
AgP3 Sg MU_BA => "ogu";
|
||||
AgP3 Pl MU_BA => "aba" ;
|
||||
AgP3 Pl ZERO_BU => "obu" ;
|
||||
AgP3 Sg BU_MA => "obu" ;
|
||||
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
|
||||
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
|
||||
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
|
||||
AgP3 Sg ZERO_MA => "aga";
|
||||
AgP3 ( Pl) HA => "aha" ; -- of place HA
|
||||
AgP3 ( Pl) MU => "omu" ; -- of place MU
|
||||
AgP3 ( Pl) KU => "oku" ; -- of place KU
|
||||
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
|
||||
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
|
||||
AgP3 Sg KI_BI => "eki" ;
|
||||
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
|
||||
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
|
||||
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
|
||||
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
|
||||
AgP3 Sg (ZERO_ZERO | N_N) => "en" ;
|
||||
AgP3 Pl ZERO_MI => "egi" ;
|
||||
AgP3 Pl MU_MI => "egi";
|
||||
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
|
||||
AgP3 Sg GU_GA => "ogu" ;
|
||||
AgP3 Pl GU_GA => "aga" ;
|
||||
_ => "XXXThisThese" -- error checking for any case not catered for
|
||||
|
||||
};
|
||||
|
||||
{-
|
||||
-- TThis is for demonstrative pronouns which can also be use as Quantifiers
|
||||
-- How can it be done without code repeation?
|
||||
@@ -744,6 +817,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
--AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ;
|
||||
--AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ;
|
||||
--AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga";
|
||||
AgP3 Sg ZERO_MA => mkClitic "agwo";
|
||||
AgP3 (Sg ) HA => mkClitic "aho" ; -- of place HA
|
||||
AgP3 (Sg ) MU => mkClitic "omwo" ; -- of place MU
|
||||
AgP3 (Sg ) KU => mkClitic "okwo" ; -- of place KU
|
||||
@@ -960,6 +1034,71 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
}
|
||||
};
|
||||
|
||||
mkRPsNoClitic : RCase => Agreement =>Str = table{
|
||||
RSubj => table {
|
||||
AgMUBAP1 Sg => "o";
|
||||
AgMUBAP1 Pl => "aba" ;
|
||||
AgMUBAP2 Sg => "o";
|
||||
AgMUBAP2 Pl => "aba" ;
|
||||
AgP3 Sg MU_BA => "o";
|
||||
AgP3 Pl MU_BA => "aba" ;
|
||||
AgP3 Pl ZERO_BU => "obu" ;
|
||||
AgP3 Sg BU_MA => "obu" ;
|
||||
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
|
||||
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
|
||||
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
|
||||
AgP3 (Sg ) HA => "aha" ; -- of place HA
|
||||
AgP3 (Sg ) MU => "aha" ; -- of place MU
|
||||
AgP3 (Sg ) KU => "e" ; -- of place KU
|
||||
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
|
||||
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
|
||||
AgP3 Sg KI_BI => "eki" ;
|
||||
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
|
||||
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
|
||||
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
|
||||
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
|
||||
AgP3 Sg (ZERO_ZERO | N_N) => "e" ;
|
||||
AgP3 Pl ZERO_MI => "e" ;
|
||||
AgP3 Pl MU_MI => "e";
|
||||
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
|
||||
AgP3 Sg GU_GA => "ogu" ;
|
||||
AgP3 Pl GU_GA => "aga" ;
|
||||
_ => "XXXThat" -- error checking for any case not catered for
|
||||
|
||||
};
|
||||
_ => table {
|
||||
AgMUBAP1 Sg => "ou";
|
||||
AgMUBAP1 Pl => "abu" ; --note: abu or abi is used. GF does not allow free variation. However, abu is more natural
|
||||
AgMUBAP2 Sg => "ou"; --probably an error check your grammar book
|
||||
AgMUBAP2 Pl => "abu" ;
|
||||
AgP3 Sg MU_BA => "o";
|
||||
AgP3 Pl MU_BA => "abu" ;
|
||||
AgP3 Pl ZERO_BU => "obu" ;
|
||||
AgP3 Sg BU_MA => "obu" ;
|
||||
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
|
||||
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
|
||||
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "agu";
|
||||
AgP3 (Sg ) HA => "ahu" ; -- of place HA
|
||||
AgP3 (Sg ) MU => "ahu" ; -- of place MU
|
||||
AgP3 (Sg ) KU => "ei" ; -- of place KU
|
||||
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
|
||||
AgP3 Sg (KA_ZERO | KA_BU) => "aku" ;
|
||||
AgP3 Sg KI_BI => "eki" ;
|
||||
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
|
||||
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
|
||||
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
|
||||
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
|
||||
AgP3 Sg (ZERO_ZERO | N_N) => "ei" ;
|
||||
AgP3 Pl ZERO_MI => "ei" ;
|
||||
AgP3 Pl MU_MI => "ei";
|
||||
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
|
||||
AgP3 Sg GU_GA => "ogu" ;
|
||||
AgP3 Pl GU_GA => "agu" ;
|
||||
_ => mkClitic "XXXThat" -- error checking for any case not catered for
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
mkIPPref : Agreement =>Str = table{
|
||||
AgMUBAP1 Sg => mkClitic "o";
|
||||
AgMUBAP1 Pl => mkClitic "ba" ;
|
||||
@@ -1034,7 +1173,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
4. Cardinal numbers
|
||||
6. Ordinal numbers
|
||||
-}
|
||||
Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool};
|
||||
Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool; numeralS:Agreement=>Str; numeralExists : Bool};
|
||||
mkDet : Str -> NounState -> Number -> Position -> Determiner
|
||||
= \ det, ns, num,pos ->
|
||||
{
|
||||
@@ -1043,7 +1182,9 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
ntype = ns;
|
||||
num = num;
|
||||
pos = pos;
|
||||
doesAgree = False
|
||||
doesAgree = False;
|
||||
numeralS = \\_ => []; -- A true determiner is not a quantifier
|
||||
numeralExists = False;
|
||||
};
|
||||
|
||||
-- Pronouns must have agreement because they are used
|
||||
@@ -1097,9 +1238,12 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
let subjClitic = mkSubjClitic (AgP3 det.num cn.gender)
|
||||
in
|
||||
case <det.pos, det.num> of {
|
||||
<Post, Pl> => {s = \\_=> subjClitic ++ cn.s!det.num! det.ntype ++ subjClitic ++ det.s; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
|
||||
<Post, Sg> => {s = \\_=>cn.s!det.num! det.ntype ++ subjClitic ++ det.s; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
|
||||
<Pre, n> => { s =\\_ => det.s ++ cn.s !n ! det.ntype; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat} --;
|
||||
<Post, Pl> => {s = \\_=> subjClitic ++ cn.s!det.num! det.ntype ++ subjClitic ++ det.s2 !AgP3 det.num cn.gender; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
|
||||
<Post, Sg> => {s = \\_=>cn.s!det.num! det.ntype ++ subjClitic ++ det.s2 ! AgP3 det.num cn.gender; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
|
||||
<Pre, n> => case det.numeralExists of {
|
||||
False => { s =\\_ => det.s2 !(AgP3 det.num cn.gender) ++ cn.s !n ! Complete; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
|
||||
True => { s =\\_ => cn.s !n ! Complete ++ det.numeralS ! (AgP3 n cn.gender); agr = AgP3 det.num cn.gender; nounCat = cn.nounCat}
|
||||
}
|
||||
--<PostDeterminer, PFalse> => {s = \\_=> cn.s!det.ntype!det.num; agr = AgP3 det.num cn.gender }
|
||||
};
|
||||
|
||||
@@ -1351,7 +1495,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
|
||||
glueGen: Agreement ->Str = \ a -> mkGenPrepNoIVClitic a ++ BIND ++ mkGenAdjSuffix a;
|
||||
|
||||
--Number determining element
|
||||
Numer : Type = { s: Agreement => Str ; n : Number};
|
||||
Numer : Type = { s: Agreement => Str ; n : Number; numeralExists:Bool};
|
||||
|
||||
--VPSlash : Type = VerbPhrase ** { c : Str };
|
||||
VPSlash : Type = {
|
||||
|
||||
@@ -26,7 +26,7 @@ lin
|
||||
case <temp.t,temp.a, pol.p> of {
|
||||
<Pres,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ compl}
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Pres,Simul, Neg> => case cl.isPresBlank of {
|
||||
@@ -46,32 +46,33 @@ lin
|
||||
|
||||
|
||||
<Past,Simul, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ compl};
|
||||
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
_ => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}--;
|
||||
--False => {s = subj ++ clitic ++ "ka" ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Past,Simul, Neg> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++
|
||||
root ++ pastRestOfVerb ++ compl}
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ Predef.BIND ++ "ra" ++
|
||||
Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ra" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Past,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "kaba" ++Predef.BIND ++ clitic ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "a" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ "ire"++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
<Past,Anter, Neg> =>case cl.isPerfBlank of {
|
||||
True => {s = subj ++ clitic ++ "ka" ++Predef.BIND ++ clitic ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "taa" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ "ire"++ compl};
|
||||
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Fut,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ compl};
|
||||
root ++ "a" ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
@@ -79,23 +80,23 @@ lin
|
||||
|
||||
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
|
||||
<Fut,Simul, Neg> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
|
||||
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raaza ku" ++ Predef.BIND ++
|
||||
root ++ compl};
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++
|
||||
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raaza ku" ++ Predef.BIND ++
|
||||
root ++ BIND ++ presRestOfVerb ++ compl}
|
||||
};
|
||||
<Fut,Anter, Pos> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija
|
||||
True => {s = subj ++ Predef.BIND ++clitic ++ "raaba" ++ clitic ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija
|
||||
False => {s = subj ++ Predef.BIND ++clitic ++ "raaba" ++ clitic ++ --choice of za over ija
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
|
||||
<Fut,Anter, Neg> => case cl.isPerfBlank of {
|
||||
True => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ Predef.BIND ++
|
||||
True => {s = subj ++ Predef.BIND ++ clitic ++ "raaba " ++ clitic ++ "ta"++ Predef.BIND ++
|
||||
root ++ "ire" ++ compl};
|
||||
False => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ "taka" ++ Predef.BIND ++
|
||||
root ++ pastRestOfVerb ++ compl}
|
||||
False => {s = subj ++ Predef.BIND ++ clitic ++ "raaba " ++ clitic ++ "ta" ++ Predef.BIND ++
|
||||
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
|
||||
};
|
||||
<Cond,Simul, Pos> => case cl.isPresBlank of {
|
||||
True => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++ root ++ compl};
|
||||
@@ -142,8 +143,8 @@ lin
|
||||
_ => mkRPs!RSubj! AgP3 Sg MU_BA
|
||||
};
|
||||
robjClitic = case rcl.agr of {
|
||||
AgrYes a => mkRPs!RObj! a;
|
||||
_ => mkRPs!RObj! AgP3 Sg MU_BA
|
||||
AgrYes a => mkRPsNoClitic!RObj! a;
|
||||
_ => mkRPsNoClitic!RObj! AgP3 Sg MU_BA
|
||||
};
|
||||
presSimul = vMorphs ! VFPres; --this is not delivering the string
|
||||
presAnt = vMorphs ! VFPastPart; --this is not delivering the string
|
||||
@@ -186,7 +187,7 @@ lin
|
||||
<Past,Simul, Pos> => {
|
||||
s = table {
|
||||
RF RSubj => subj ++ rsubjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl;
|
||||
RF RObj => subj ++ robjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl;
|
||||
RF RObj => robjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl;
|
||||
Such_That => "kugira ngu" ++ subjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl
|
||||
}
|
||||
};
|
||||
@@ -279,8 +280,9 @@ lin
|
||||
};
|
||||
|
||||
|
||||
PredVP np vp = case vp.isCompApStem of{
|
||||
False => {
|
||||
|
||||
PredVP np vp = case <vp.isCompApStem, vp.containsAdV> of {
|
||||
<False,True> => {
|
||||
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
|
||||
subjAgr = np.agr;
|
||||
pres = vp.pres;
|
||||
@@ -297,9 +299,10 @@ lin
|
||||
pastPart = mkVerbPastPart vp.root; -- subject
|
||||
-}
|
||||
--root = vp.root ;
|
||||
compl = vp.comp
|
||||
compl = vp.adV
|
||||
};
|
||||
True => {
|
||||
|
||||
<_, _> => {
|
||||
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
|
||||
subjAgr = np.agr;
|
||||
pres = vp.pres;
|
||||
@@ -320,8 +323,6 @@ lin
|
||||
}
|
||||
};--: NP -> VP -> Cl ; -- John walks / John does not walk
|
||||
|
||||
|
||||
|
||||
{-
|
||||
Note: It seems mkSubjClitic comes with a Predef.BIND already
|
||||
prepared for the next token to bind.
|
||||
@@ -382,9 +383,25 @@ lin
|
||||
--AdvSlash : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||
--SlashPrep : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
||||
--SlashVS : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
||||
--2 Embedded sentences
|
||||
|
||||
-- Sentences, questions, and infinitival phrases can be used as
|
||||
-- subjects and (adverbial) complements.
|
||||
|
||||
--EmbedS : S -> SC ; -- that she goes
|
||||
--EmbedQS : QS -> SC ; -- who goes
|
||||
--EmbedVP : VP -> SC ; -- to go
|
||||
EmbedVP vp = case vp.isPresBlank of {
|
||||
TRUE => {s= "oku" ++ Predef.BIND ++ vp.s ++ BIND ++ "a"};
|
||||
_ => {s= "oku" ++ Predef.BIND ++ vp.s ++ BIND ++ vp.pres}
|
||||
};
|
||||
|
||||
-- An adverb can be added to the beginning of a sentence, either with comma ("externally")
|
||||
-- or without:
|
||||
|
||||
--AdvS : Adv -> S -> S ; -- then I will go home
|
||||
--ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
||||
ExtAdvS adv s = {s=adv.s ++ "," ++ s.s};
|
||||
|
||||
|
||||
{-
|
||||
|
||||
@@ -15,19 +15,20 @@ concrete StructuralCgg of Structural = CatCgg **
|
||||
|
||||
lin
|
||||
--Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool };
|
||||
a_Det = {s =[] ; s2 = \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False}; --: Det ; indefinite singular ---s
|
||||
aPl_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Pl; pos = Pre; doesAgree = False}; -- : Det ;indefinite plural ---s
|
||||
the_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False}; --: Det ; -- definite singular ---s thePl_Det = {s =[]; ntype = Complete; num = Pl; pos = PreDeterminer}; --: Det ;definite plural ---s
|
||||
a_Det = {s =[] ; s2 = \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; --: Det ; indefinite singular ---s
|
||||
aPl_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Pl; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; -- : Det ;indefinite plural ---s
|
||||
the_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; --: Det ; -- definite singular ---s thePl_Det = {s =[]; ntype = Complete; num = Pl; pos = PreDeterminer}; --: Det ;definite plural ---s
|
||||
|
||||
every_Det = {s ="buri"; s2 = \\_ => []; ntype=Incomplete; num=Sg; pos=Pre; doesAgree = False} ;
|
||||
few_Det = {s="kye"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False} ;
|
||||
many_Det ={s="ingi"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False} ;
|
||||
every_Det = {s ="buri"; s2 = \\_ => []; ntype=Incomplete; num=Sg; pos=Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
|
||||
few_Det = {s="kye"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
|
||||
many_Det ={s="ingi"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
|
||||
|
||||
i_Pron = {s = table{Gen => glueGen (AgMUBAP1 Sg); _=> mkSStand (AgMUBAP1 Sg)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Sg)};--mkPron "nyowe" "nyowe" (AgMUBAP1 Sg);
|
||||
youSg_Pron = {s = table{Gen => glueGen (AgMUBAP2 Sg); _=>mkSStand (AgMUBAP2 Sg)}; third = \\_,_=>[]; agr = AgrYes(AgMUBAP2 Sg)};--mkPron "iwe" "we" (AgMUBAP2 Sg);
|
||||
he_Pron, she_Pron = {s = table{Gen => glueGen (AgP3 Sg MU_BA); _=>mkSStand (AgP3 Sg MU_BA)}; third = \\_,_=>[]; agr = AgrYes(AgP3 Sg MU_BA)};--mkPron "uwe" "uwe" (AgP3 Sg MU_BA);
|
||||
we_Pron = {s = table{Gen => glueGen (AgMUBAP1 Pl); _=>mkSStand (AgMUBAP1 Pl)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Pl)}; --mkPron "itwe" "itwe" (AgMUBAP1 Pl);
|
||||
youPl_Pron = {s = table{Gen => glueGen (AgMUBAP2 Pl); _=>mkSStand (AgMUBAP2 Pl)}; third = \\_,_=>[]; agr =AgrYes (AgMUBAP2 Pl)};--mkPron "imwe" "imwe" (AgMUBAP2 Pl); they_Pron = {s = table{Gen => glueGen AgP3 Pl MU_BA; _=>mkSStand (AgP3 Pl MU_BA)}; third = \\_,_=>[]; itP3Required=False};--mkPron "bo" "bo" (AgP3 Pl MU_BA);
|
||||
they_Pron = {s = table{Gen => glueGen (AgP3 Pl MU_BA); _=>mkSStand (AgP3 Pl MU_BA)}; third = \\_,_=>[]; agr =AgrYes (AgP3 Pl MU_BA)};--mkPron "bo" "bo" (AgP3 Pl MU_BA);
|
||||
-- default implementation Using KI_BI. Use mkmkGenPrepNoIVClitic and
|
||||
it_Pron = {
|
||||
s = \\_=>[];
|
||||
@@ -97,7 +98,7 @@ lin
|
||||
n = Sg
|
||||
};
|
||||
|
||||
have_V2 ={s= "ine"; pres=[]; perf =[]; isPresBlank = False;
|
||||
have_V2 ={s= "in"; pres="e"; perf ="e"; isPresBlank = False;
|
||||
isPerfBlank = False; morphs = mkVerbMorphs; comp = []; isRegular=False}; --: V2 ;
|
||||
|
||||
{-
|
||||
@@ -145,7 +146,7 @@ lin
|
||||
that_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThat; doesAgree = True; isPron = False}; --: Quant ;
|
||||
this_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThis; doesAgree = True; isPron = False}; --: Quant ;
|
||||
|
||||
no_Quant = {s ={s=\\_=>"tihariho";third =\\_,_=>[]; agr=AgrNo}; s2 =\\_=> []; doesAgree = False; isPron = False};--: Quant ;
|
||||
no_Quant = {s ={s=\\_=>"tihariho";third =\\_,_=>[]; agr=AgrNo}; s2 =\\_=> "tihariho"; doesAgree = False; isPron = False};--: Quant ;
|
||||
{-End of Quantifiers-}
|
||||
|
||||
|
||||
@@ -165,7 +166,7 @@ lin
|
||||
whatPl_IP = { s= "ki"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True} ; -- what (plural)
|
||||
whatSg_IP = { s= "ki"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True}; --: IP ; -- what (singular)
|
||||
whoPl_IP = { s= "ha"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux="ni"; endOfSentence = True} ;--: IP ; -- who (plural)
|
||||
whoSg_IP = { s= "ha"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True}; --: IP ; -- who (singular)
|
||||
whoSg_IP = { s= "ha"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux="ni"; endOfSentence = True}; --: IP ; -- who (singular)
|
||||
--You may need to use booleans to indicate that you need these tables rather than carrying them.
|
||||
how_IAdv = {s ="ta"; requiresSubjPrefix = True; endOfSentence =True}; --: IAdv ;
|
||||
--how8much_IAdv = {s ="kwiga"; s2requireSubjPrefix = True};--: IAdv ;
|
||||
@@ -192,7 +193,9 @@ lin
|
||||
ntype = Complete;
|
||||
num = Sg;
|
||||
pos = Pre;
|
||||
doesAgree = True
|
||||
doesAgree = True;
|
||||
numeralS=\\_=>[];
|
||||
numeralExists = False
|
||||
};
|
||||
somePl_Det =
|
||||
{
|
||||
@@ -201,7 +204,9 @@ lin
|
||||
ntype = Complete;
|
||||
num = Pl;
|
||||
pos = Pre;
|
||||
doesAgree = True
|
||||
doesAgree = True;
|
||||
numeralS=\\_=>[];
|
||||
numeralExists = False
|
||||
};--: Det ;
|
||||
|
||||
want_VV = {s = "yend"; pres="da"; perf = "zire"; isPresBlank = False;
|
||||
@@ -219,6 +224,8 @@ lin
|
||||
--somewhere_Adv : Adv ;
|
||||
|
||||
that_Subj = ss "ngu" ;
|
||||
when_Subj = ss "obu";
|
||||
because_Subj = ss "ahabwokuba";
|
||||
|
||||
--Adjective modifying Adverbs
|
||||
almost_AdA = {s="haihi"; position=Pre}; --: AdA ;
|
||||
|
||||
@@ -194,7 +194,7 @@ lin
|
||||
isCompApStem = False;
|
||||
agr = AgrNo;
|
||||
isRegular = vp.isRegular;
|
||||
adv = [];
|
||||
adv = adv.s;
|
||||
containsAdv =True;
|
||||
adV =[];
|
||||
containsAdV = False
|
||||
|
||||
Reference in New Issue
Block a user