From 69356d8c9b47712a4b370b969e796c3784459935 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 21 Mar 2023 16:27:05 +0800 Subject: [PATCH 01/17] add PassAgentVPSlash to May --- src/malay/AdverbMay.gf | 4 ++++ src/malay/ExtendMay.gf | 14 ++++++++++++++ src/malay/LexiconMay.gf | 2 +- src/malay/ParadigmsMay.gf | 6 ++++-- src/malay/StructuralMay.gf | 2 +- src/malay/VerbMay.gf | 25 ++++++++++++++++--------- src/malay/unittest/questions.gftest | 9 ++++++++- 7 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/malay/AdverbMay.gf b/src/malay/AdverbMay.gf index d7b65fd70..15465cab1 100644 --- a/src/malay/AdverbMay.gf +++ b/src/malay/AdverbMay.gf @@ -20,9 +20,13 @@ lin --AdAdv : AdA -> Adv -> Adv ; -- very quickly -- AdAdv ada adv = adv ** -- Like adverbs, adadjectives can be produced by adjectives. + AdAdv ada adv = adv ** { + s = ada.s ++ adv.s ; + } ; -- : A -> AdA ; -- extremely -- PositAdAAdj a = { } ; + -- PositAdAAdj a = {s = a.s} ; -- Subordinate clauses can function as adverbs. diff --git a/src/malay/ExtendMay.gf b/src/malay/ExtendMay.gf index 85fec8244..60806f363 100644 --- a/src/malay/ExtendMay.gf +++ b/src/malay/ExtendMay.gf @@ -8,6 +8,7 @@ concrete ExtendMay of Extend = CatMay , ListVPI -- infinitive VP's (TODO: with anteriority and polarity) , MkVPS , PredVPS, RelVPS, QuestVPS, SQuestVPS + , PassVPSlash, PassAgentVPSlash -- excluded because RGL funs needed for them not implemented yet , PredAPVP @@ -78,6 +79,7 @@ concrete ExtendMay of Extend = CatMay PastPartAP vp = { s = linVP vp } ; + -- GenModNP : Num -> NP -> CN -> NP ; -- this man's car(s) GenModNP n np cn = variants {}; @@ -98,6 +100,18 @@ concrete ExtendMay of Extend = CatMay GerundAdv vp = ss (linVP vp) ; + -- PassVPSlash : VPS -> VP ; + -- be forced to sleep + PassVPSlash vps = vps ** { + s = \\vf,pol => vps.s ! Passive ! pol ; + }; + + -- PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go + PassAgentVPSlash vps np = { + s = \\vf,pol => vps.s ! Passive ! pol ++ (applyPrep by8agent_Prep np) ; + }; + + -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved -- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates -- ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index effc63b48..2e832dd4b 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -27,7 +27,7 @@ lin bank_N = mkN "bank" ; lin beautiful_A = mkA "cantik" ; -- lin become_VA = mkVA "jadi" ; lin beer_N = mkN "bir" ; --- lin beg_V2V = mkV2 "" ; +lin beg_V2V = mkV2 "seru" ; -- lin belly_N = mkN "" ; lin big_A = mkA "besar" ; lin bike_N = mkN "basikal" ; diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index dd22ff332..58aa653ed 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -79,8 +79,10 @@ oper -- -- mkV2A : Str -> V2A -- = \s -> lin V2A (regV s ** {c2 = noPrep}) ; - -- mkV2Q : Str -> V2Q - -- = \s -> lin V2Q (regV s ** {c2 = noPrep}) ; + mkV2Q : overload { + mkV2Q : Str -> V2Q ; + mkV2Q : V -> Prep -> V2Q ; + } ; ----- diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 9dea37153..a5b058d59 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -104,7 +104,7 @@ lin by8agent_Prep = mkPrep "oleh" ; -- for pronoun agent, see Mintz p. 170, 5.4. lin by8means_Prep = mkPrep "dengan" ; -- lin during_Prep = mkPrep ; -- lin except_Prep = mkPrep ; --- lin for_Prep = mkPrep ; +lin for_Prep = mkPrep "untuk" ; -- lin from_Prep = mkPrep "" ; -- lin in8front_Prep = mkPrep "" ; lin in_Prep = mkPrep "di" ; diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 64b6ccbb4..1f77440ab 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -1,4 +1,4 @@ -concrete VerbMay of Verb = CatMay ** open ResMay, AdverbMay, Prelude in { +concrete VerbMay of Verb = CatMay ** open ResMay, AdverbMay, StructuralMay, Prelude in { lin @@ -72,11 +72,11 @@ lin } ; -- : V2V -> VP -> VPSlash ; -- beg (her) to go - SlashV2V v2 vp = vp ** useV { - s = \\vf => v2.s ! vf ++ (linVP vp); + SlashV2V v2 vp = useV { + s = \\vf => v2.s ! vf ++ for_Prep.s ++ vp.s ! Root ! Pos; } ** { c2 = v2.c2; - adjCompl = [] ; + adjCompl = []; } ; @@ -86,6 +86,11 @@ lin adjCompl = "yang" ++ s.s ; -- TODO check /Inari } ; + -- : V2Q -> QS -> VPSlash ; -- ask (him) who came + -- SlashV2Q v2q qs = useV v2q ** { + -- s = + -- }; + {- -- : V2S -> S -> VPSlash ; -- answer (to him) that it is good @@ -102,12 +107,9 @@ lin -- : VPSlash -> NP -> VP ComplSlash vps np = vps ** { s = \\vf,pol => - vps.s ! vf ! pol - ++ applyPrep vps.c2 np ++ vps.adjCompl - -- s = \\vf,pol => vps.s ! vf ! pol ++ applyPrep vps.c2 np + vps.s ! vf ! pol ++ vps.adjCompl ++ applyPrep vps.c2 np } ; - -- : VV -> VPSlash -> VPSlash ; SlashVV vv vps = ComplVV vv vps ** { c2 = vps.c2 ; -- like ComplVV except missing object @@ -141,7 +143,12 @@ lin AdVVPSlash adv vps = vps ** { adv = adv.s ++ vps.adv } ; -} -- : VP -> Prep -> VPSlash ; -- live in (it) - -- VPSlashPrep vp prep = vp ** {c2 = prep} ; + VPSlashPrep vp prep = vp ** { + s = \\vf,pol => vp.s ! vf ! pol ; + } ** { + c2 = prep ; + adjCompl =[] ; + } ; --2 Complements to copula diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 76c478363..8c45c2d55 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -70,4 +70,11 @@ LangMay: mengapa dia makan daging Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestVP whatSg_IP (UseComp (CompNP (DetCN (DetQuant DefArt NumSg) (RelCN (UseN meat_N) (UseRCl (TTAnt TPast ASimul) PPos (RelVP IdRP (PassV2 eat_V2)))))))) LangEng: what was the meat that was eaten -LangMay: apa daging yang dimakan \ No newline at end of file +LangMay: apa daging yang dimakan + +AllEngAbs: (PastPartAP (VPSlashPrep (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) by8agent_Prep)) +AllEng: begged by me to go +AllMay: diseru aku untuk pergi + +AllEngAbs: l (PassAgentVPSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) +AllEng: be begged to go by me \ No newline at end of file From 3446c192ba2cfeab1c0b56725eb2dde77a65db21 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 21 Mar 2023 16:35:34 +0800 Subject: [PATCH 02/17] add PassVPSlash to May --- src/malay/ExtendMay.gf | 2 +- src/malay/LexiconMay.gf | 2 +- src/malay/unittest/questions.gftest | 11 ++++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/malay/ExtendMay.gf b/src/malay/ExtendMay.gf index 60806f363..fde823226 100644 --- a/src/malay/ExtendMay.gf +++ b/src/malay/ExtendMay.gf @@ -101,7 +101,7 @@ concrete ExtendMay of Extend = CatMay -- PassVPSlash : VPS -> VP ; - -- be forced to sleep + -- be begged to sleep PassVPSlash vps = vps ** { s = \\vf,pol => vps.s ! Passive ! pol ; }; diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 2e832dd4b..0f41d4043 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -336,7 +336,7 @@ lin sing_V = mkV "nyanyi" ; -- lin sit_V = mkV "" ; -- lin skin_N = mkN "" ; -- lin sky_N = mkN "" ; --- lin sleep_V = mkV "" ; +lin sleep_V = mkV "tidur" ; lin small_A = mkA "kecil" ; -- lin smell_V = mkV "" ; -- lin smoke_N = mkN "" ; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 8c45c2d55..b490f9bd6 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -72,9 +72,10 @@ Lang: UseQCl (TTAnt TPast ASimul) PPos (QuestVP whatSg_IP (UseComp (CompNP (DetC LangEng: what was the meat that was eaten LangMay: apa daging yang dimakan -AllEngAbs: (PastPartAP (VPSlashPrep (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) by8agent_Prep)) -AllEng: begged by me to go -AllMay: diseru aku untuk pergi +AllEngAbs: (PassAgentVPSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) +AllEng: be begged to go by me +AllMay: diseru untuk pergi olehku -AllEngAbs: l (PassAgentVPSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) -AllEng: be begged to go by me \ No newline at end of file +AllEngAbs: (PassVPSlash (SlashV2V beg_V2V (UseV sleep_V))) +AllEng: be begged to sleep +AllMay: diseru untuk tidur \ No newline at end of file From b55abfc8fe7a984dde71c1378a7d25ba78f2ecc3 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 22 Mar 2023 13:46:32 +0800 Subject: [PATCH 03/17] fixed slash3v3 prepositions; verb tense in ComplVV --- src/malay/VerbMay.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 1f77440ab..a7439a7b3 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -16,7 +16,7 @@ lin -- : VV -> VP -> VP ; ComplVV vv vp = vp ** useV { - s = \\vf => vv.s ++ linVP vp + s = \\vf => vv.s ++ vp.s ! Root! Pos; } ; -- : VA -> AP -> VP ; -- they become red @@ -56,7 +56,7 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ applyPrep v3.c3 emptyNP ++ iobj.s ! Bare; + s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ applyPrep v3.c3 emptyNP ; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object From 6e16add239cf4bb6f87d78a582118bad31b45934 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 22 Mar 2023 18:59:41 +0800 Subject: [PATCH 04/17] add passives for eat, drink, like --- src/malay/LexiconMay.gf | 16 ++++++++++------ src/malay/VerbMay.gf | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 0f41d4043..33eb7c11a 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -95,8 +95,9 @@ lin day_N = mkN "hari" ; -- lin doctor_N = mkN "" ; lin dog_N = mkN "anjing" ; lin door_N = mkN "pintu" ; -lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** { - s = \\_ => "minum" ; +lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** { s = table { + Passive => "diminum" ; + _ => "minum"} ; }; -- lin dry_A = mkA "" ; -- lin dull_A = mkA "" ; @@ -108,7 +109,9 @@ lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** { -- lin ear_N = mkN "" ; -- lin earth_N = mkN "" ; lin eat_V2 = let eat' : V2 = mkV2 "makan" in eat' ** { - s = \\_ => "makan" ; + s = table { + Passive => "dimakan" ; + _ => "makan"} ; }; -- lin egg_N = mkN "" ; -- lin empty_A = mkA "" ; @@ -214,9 +217,10 @@ lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; -- lin leg_N = mkN "" ; -- lin lie_V = mkV "" ; lin like_V2 = let like' : V2 = mkV2 "suka" in like' ** { - s = \\_ => "suka" ; - passive = "disukai" ; -} ; + s = table { + Passive => "disukai" ; + _ => "suka"} ; +}; -- lin listen_V2 = mkV2 "" ; -- lin live_V = mkV ""; -- lin liver_N = mkN "" ; diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index a7439a7b3..3492bc345 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -107,7 +107,7 @@ lin -- : VPSlash -> NP -> VP ComplSlash vps np = vps ** { s = \\vf,pol => - vps.s ! vf ! pol ++ vps.adjCompl ++ applyPrep vps.c2 np + vps.s ! vf ! pol ++ applyPrep vps.c2 np ++ vps.adjCompl } ; -- : VV -> VPSlash -> VPSlash ; From 83aadfaaf97359c7dbb1cfe8c550074411cf969d Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 26 May 2023 15:03:11 +0800 Subject: [PATCH 05/17] add Idet to Malay RGL --- src/malay/AdjectiveMay.gf | 1 + src/malay/NounMay.gf | 2 +- src/malay/QuestionMay.gf | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/malay/AdjectiveMay.gf b/src/malay/AdjectiveMay.gf index bee168c43..e203fec28 100644 --- a/src/malay/AdjectiveMay.gf +++ b/src/malay/AdjectiveMay.gf @@ -59,6 +59,7 @@ concrete AdjectiveMay of Adjective = CatMay ** open ResMay, Prelude in { -- : AdA -> AP -> AP ; -- AdAP ada ap = ap ** { } ; + -- It can also be postmodified by an adverb, typically a prepositional phrase. diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 90f0b7d5f..b2f665b4d 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -13,7 +13,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- TODO classifier is necessary if numeral comes after noun. See Mintz p. 298. -- ++ if_then_Str (isNum det.n) "buah" [] -- TODO store classifier in CN ++ case det.poss of { - Bare => cn.s ! NF (toNum det.n) poss ; + Bare => cn.s ! NF (toNum det.n) det.poss ; _ => cn.s ! NF (toNum det.n) det.poss -- TODO check if this make sense } ++ det.s ++ cn.heavyMod ; } ; diff --git a/src/malay/QuestionMay.gf b/src/malay/QuestionMay.gf index 17d03521c..42a5fa39e 100644 --- a/src/malay/QuestionMay.gf +++ b/src/malay/QuestionMay.gf @@ -8,9 +8,18 @@ concrete QuestionMay of Question = CatMay ** open -- determiners, with or without a noun. lin -- : IDet -> CN -> IP ; -- which five songs - IdetCN idet cn = NM.DetCN idet cn ** { - sp = \\nf => idet.sp ! nf ++ cn.s ! nf - } ; +-- IdetCN idet cn = NM.DetCN idet cn ** { +-- sp = \\nf => idet.sp ! nf ++ cn.s ! nf +-- } ; + IdetCN idet cn = emptyNP ** { + s = \\poss => + idet.pr + ++ case idet.poss of { + Bare => cn.s ! NF (toNum idet.n) idet.poss ; + _ => cn.s ! NF (toNum idet.n) idet.poss -- TODO check if this make sense + } ++ idet.s ++ cn.heavyMod ; + sp = \\nf => idet.sp ! nf ++ cn.s ! nf; + } ; -- : IDet -> IP ; -- which five IdetIP idet = NM.DetNP idet ** {sp = idet.sp}; From f773272437ebd3495a7b98d223ccbdfd455fcfea Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 14 Jul 2023 10:41:57 +0800 Subject: [PATCH 06/17] add speak and but to Malay --- src/malay/LexiconMay.gf | 3 ++- src/malay/ParadigmsMay.gf | 4 +++- src/malay/StructuralMay.gf | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 33eb7c11a..d3101bcd2 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -349,7 +349,8 @@ lin small_A = mkA "kecil" ; -- lin snow_N = mkN "" ; -- lin sock_N = mkN "" ; lin song_N = mkN "lagu" ; --- lin speak_V2 = mkV2 "" ; +lin speak_V2 = mkV2 (prefixV (mkV "cakap" Ber)) emptyPrep ; + -- lin spit_V = mkV "" ; -- lin split_V2 = mkV2 "" ; -- lin squeeze_V2 = mkV2 "" ; diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 58aa653ed..18cb71f78 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -75,7 +75,9 @@ oper -- mkVQ : Str -> VQ -- = \s -> lin VQ (regV s) ; - + mkV2A : overload { + mkV2A : Str -> V2A ; + } ; -- -- mkV2A : Str -> V2A -- = \s -> lin V2A (regV s ** {c2 = noPrep}) ; diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index a5b058d59..3018932f5 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -47,7 +47,7 @@ lin or_Conj = {s2 = "atau" ; s1 = [] ; n = Sg} ; -- lin both7and_DConj = mkConj "" "" pl ; -- lin either7or_DConj = {s2 = \\_ => "" ; s1 = "" ; n = Sg} ; -- --- lin but_PConj = ss "" ; +lin but_PConj = ss "tetapi" ; -- lin otherwise_PConj = ss "" ; -- lin therefore_PConj = ss "" ; From be41a945f55bbb3eb04a180aff3111b68a54157a Mon Sep 17 00:00:00 2001 From: Meowyam Date: Fri, 14 Jul 2023 10:42:17 +0800 Subject: [PATCH 07/17] add therefore to Malay --- src/malay/StructuralMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/StructuralMay.gf b/src/malay/StructuralMay.gf index 3018932f5..3d26332c2 100644 --- a/src/malay/StructuralMay.gf +++ b/src/malay/StructuralMay.gf @@ -49,7 +49,7 @@ lin or_Conj = {s2 = "atau" ; s1 = [] ; n = Sg} ; -- lin but_PConj = ss "tetapi" ; -- lin otherwise_PConj = ss "" ; --- lin therefore_PConj = ss "" ; +lin therefore_PConj = ss "oleh itu" ; ----------------- From 293b87e4c6a5894de944d700f9b9708509764099 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Jan 2024 03:13:48 +0800 Subject: [PATCH 08/17] correct Slash3V3 for Malay, remove Prep --- src/malay/VerbMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 3492bc345..50f3bc6f9 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -56,7 +56,7 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ applyPrep v3.c3 emptyNP ; + s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object From fdfa7f33bf2a836eef17c41f6d32bc30493b6e70 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Jan 2024 04:13:41 +0800 Subject: [PATCH 09/17] add passive for cinta --- src/malay/LexiconMay.gf | 11 ++++++----- src/malay/unittest/passive.gftest | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index d3101bcd2..2a83e96df 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -228,11 +228,12 @@ lin long_A = mkA "panjang" ; -- lin lose_V2 = mkV2 "" ; -- lin louse_N = mkN "" ; -- lin love_N = mkN "" ; --- lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** { --- s = \\_ => "mencintai" ; --- passive = "dicintai" ; --- } ; -lin love_V2 = mkV4 "cinta" "i"; +lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** { + s = table { + Passive => "dicintai" ; + _ => "mencintai" }; +}; +-- lin love_V2 = mkV4 "cinta" "i"; ---- -- M diff --git a/src/malay/unittest/passive.gftest b/src/malay/unittest/passive.gftest index d0df9e0fa..23d192a7f 100644 --- a/src/malay/unittest/passive.gftest +++ b/src/malay/unittest/passive.gftest @@ -16,4 +16,4 @@ LangMay: buku itu dibaca Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN book_N)) (AdvVP (PassV2 read_V2) (PrepNP to_Prep (UsePron youSg_Pron)))) LangEng: that book is read to you -LangMay: buku itu dibacakan kepada kamu \ No newline at end of file +LangMay: buku itu dibaca kepadamu \ No newline at end of file From 0ca01061838cfd86a4d4f6ed96d41f49ac534190 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Jan 2024 04:44:34 +0800 Subject: [PATCH 10/17] correct UttIP for Malay for how many cats --- src/malay/PhraseMay.gf | 2 +- src/malay/unittest/questions.gftest | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 45e296443..0209f32fd 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -7,7 +7,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttQS qs = qs ; UttIAdv iadv = iadv ; UttNP np = {s = np.s ! Bare} ; - UttIP ip = {s = ip.sp ! NF Sg Bare} ; + UttIP ip = {s = ip.s ! Bare} ; UttImpSg pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p } ; UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; UttImpPl pol imp = {s = pol.s ++ imp.s ! Pl ! pol.p} ; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index b490f9bd6..865fb5321 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -8,7 +8,7 @@ LangMay: kamu suka lagu-lagu yang mana Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN how8many_IDet (UseN cat_N)) (SlashVP (UsePron youPl_Pron) (SlashV2a have_V2))))) NoVoc LangEng: how many cats do you have -LangMay: kamu ada berapa kucing +LangMay: kamu ada berapa banyak kucing Lang: PhrUtt NoPConj (UttIP (IdetCN how8many_IDet (UseN cat_N))) NoVoc LangEng: how many cats From 9c111ba0bc0fcc5ec2455c4eacf9d8ad2d8e5ef9 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 17 Jan 2024 04:58:44 +0800 Subject: [PATCH 11/17] reinstated kepada Prep in Slash3V3 --- src/malay/VerbMay.gf | 2 +- src/malay/unittest/complements.gftest | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 50f3bc6f9..3492bc345 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -56,7 +56,7 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ; + s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ applyPrep v3.c3 emptyNP ; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object diff --git a/src/malay/unittest/complements.gftest b/src/malay/unittest/complements.gftest index 9e07837e7..152149c59 100644 --- a/src/malay/unittest/complements.gftest +++ b/src/malay/unittest/complements.gftest @@ -2,8 +2,8 @@ Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash2V3 give_V3 (MassNP (UseN cat_N))) (UsePron i_Pron)))) LangMay: dia memberi kucing kepadaku -Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron i_Pron)) (MassNP (UseN cat_N))))) -LangMay: dia memberi aku kucing +-- Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron i_Pron)) (MassNP (UseN cat_N))))) +-- LangMay: dia memberi aku kucing -- Sentence complements From 87f6e70456298d116ad2ad045acb38bf27203314 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 23 Jan 2024 15:10:23 +0800 Subject: [PATCH 12/17] make some fixes to Malay prefixes --- src/malay/LexiconMay.gf | 8 ++++---- src/malay/ParamMay.gf | 8 +++++--- src/malay/VerbMay.gf | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 2a83e96df..1865aaeb5 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -211,7 +211,7 @@ lin king_N = mkN "raja" ; -- lin language_N = mkN "" ; -- lin laugh_V = mkV "" ; -- lin leaf_N = mkN "" ; -lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ; +lin learn_V2 = mkV2 (prefixV (mkV "belajar" NoPrefix)) emptyPrep ; -- lin leather_N = mkN "" ; -- lin leave_V2 = mkV2 "" ; -- lin leg_N = mkN "" ; @@ -293,7 +293,7 @@ lin queen_N = mkN "ratu" ; -- lin radio_N = mkN "" ; lin rain_N = mkN "hujan" ; lin rain_V0 = mkV "hujan" ; -lin read_V2 = mkV2 "baca" ; +lin read_V2 = mkV2 (prefixV (mkV "baca" Meng)) emptyPrep ; -- lin ready_A = mkA "" ; -- lin reason_N = mkN "" ; -- lin red_A = mkA "" ; @@ -378,7 +378,7 @@ lin stop_V = mkV "henti" ; -- lin table_N = mkN "" ; -- lin tail_N = mkN "" ; lin talk_V3 = mkV3 (mkV "cakap" Ber) (mkPrep "tentang") (mkPrep "dengan") ; -lin teach_V2 = mkV2 "ajar" ; +lin teach_V2 = mkV2 (prefixV (mkV "ajar" Meng)) emptyPrep; -- lin teacher_N = mkN "" ; -- lin television_N = mkN "" ; -- lin thick_A = mkA "" ; @@ -408,7 +408,7 @@ lin ugly_A = mkA "jelek" ; -- W - Y -- lin wait_V2 = mkV2 "" ; -lin walk_V = mkV "jalan" ; +lin walk_V = (prefixV (mkV "jalan" Ber)) ; -- lin war_N = mkN "" ; -- lin warm_A = mkA "" ; -- lin wash_V2 = mkV2 "" ; diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index 5ea50b375..af9f0cd3b 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -27,8 +27,11 @@ oper prefix : Prefix -> Str -> Str = \p -> case p of { Meng => prefixMeng ; - Ber => prefixBer + Ber => prefixBer ; + NoPrefix => prefixNone } ; + + prefixNone : Str -> Str = \belajar -> belajar ; prefixMeng : Str -> Str = \makan -> case makan of { @@ -63,8 +66,6 @@ oper } ; prefixBer : Str -> Str = \jalan -> case jalan of { - -- Exception - "ajar" => "belajar" ; -- Drop the r (#c + "er" + _ -- be+kerja @@ -149,6 +150,7 @@ param Prefix = Meng | Ber + | NoPrefix ; -- TODO more? -------------------------------------------------------------------------------- diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 3492bc345..4f969449b 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -56,7 +56,8 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ applyPrep v3.c3 emptyNP ; + s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ + applyPrep v3.c3 emptyNP ; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object From 9b675c308ef49e45721da575710023eebcc0390e Mon Sep 17 00:00:00 2001 From: Meowyam Date: Tue, 23 Jan 2024 16:46:50 +0800 Subject: [PATCH 13/17] UttImp, polite and non-polite forms for Malay --- src/malay/PhraseMay.gf | 2 +- src/malay/ResMay.gf | 4 ++-- src/malay/unittest/verbal_affixes.gftest | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/malay/PhraseMay.gf b/src/malay/PhraseMay.gf index 0209f32fd..6bba6689d 100644 --- a/src/malay/PhraseMay.gf +++ b/src/malay/PhraseMay.gf @@ -9,7 +9,7 @@ concrete PhraseMay of Phrase = CatMay ** open Prelude, ResMay in { UttNP np = {s = np.s ! Bare} ; UttIP ip = {s = ip.s ! Bare} ; UttImpSg pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p } ; - UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ; + UttImpPol pol imp = {s = "tolong" ++ pol.s ++ imp.s ! Sg ! pol.p} ; UttImpPl pol imp = {s = pol.s ++ imp.s ! Pl ! pol.p} ; UttVP vp = {s = linVP vp} ; UttAP ap = {s = ap.s} ; diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 65863162b..3a4d60676 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -230,7 +230,7 @@ oper -- VV : Type = Verb ** {vvtype : VVForm} ; regVerb : Str -> Prefix -> Verb = \str,p -> - mkVerb str (prefix p str) ("di" + str) (str + "kan") ; + mkVerb str (prefix p str) ("di" + str) (str ++ BIND ++ "kan") ; mkVerb : (makan, memakan, dimakan, makankan : Str) -> Verb = \rt,act,pass,imp -> { s = table { @@ -251,7 +251,7 @@ oper mkVerb4 : Verb -> Preposition -> Str -> Verb4 = \v,pr,str -> v ** { s = \\_ => v.s ! Active ++ str; c2 = pr ; - passive = "di" ++ BIND ++ v.s ! Root ++ str + -- passive = "di" ++ BIND ++ v.s ! Root ++ str } ; copula : Verb = {s = \\_ => "ada"} ; -- TODO diff --git a/src/malay/unittest/verbal_affixes.gftest b/src/malay/unittest/verbal_affixes.gftest index 26e1c5dfd..d9e17d4d6 100644 --- a/src/malay/unittest/verbal_affixes.gftest +++ b/src/malay/unittest/verbal_affixes.gftest @@ -108,14 +108,14 @@ LangMay: sekiranya tidak hujan sekarang , aku akan berjalan Lang: UttImpSg PPos (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) LangEng: open the door -LangMay: buka pintu +LangMay: bukakan pintu Lang: UttImpSg PNeg (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) LangEng: don't open the door -LangMay: jangan buka pintu +LangMay: jangan bukakan pintu Lang: UttImpPol PPos (ImpVP (ComplSlash (SlashV2a open_V2) (DetCN (DetQuant DefArt NumSg) (UseN door_N)))) LangEng: open the door -LangMay: bukakan pintu +LangMay: tolong bukakan pintu ---------------------------------------- -- Questions From 23adb5a4936d75225bc46cc9a883de230116ff21 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 24 Jan 2024 11:03:49 +0800 Subject: [PATCH 14/17] fix order in Malay AdvS --- src/malay/SentenceMay.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/malay/SentenceMay.gf b/src/malay/SentenceMay.gf index d09387f9c..ddda07696 100644 --- a/src/malay/SentenceMay.gf +++ b/src/malay/SentenceMay.gf @@ -95,7 +95,7 @@ lin oper advS : (comma : Str) -> Adverb -> S -> S = \comma,a,sent -> sent ** { - s = sent.s ++ comma ++ a.s + s = a.s ++ comma ++ sent.s } ; } From 2ec3bdc80e771bfb4ab4101d59acd058170ee2b3 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 24 Jan 2024 13:44:45 +0800 Subject: [PATCH 15/17] correct position of adjCompl in PassVPSlash, PassAgentVPSlash and SlashV2V in Malay --- src/malay/ExtendMay.gf | 8 ++++++-- src/malay/LexiconMay.gf | 2 +- src/malay/VerbMay.gf | 7 +++---- src/malay/unittest/questions.gftest | 4 ++-- src/malay/unittest/tenses.gftest | 3 ++- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/malay/ExtendMay.gf b/src/malay/ExtendMay.gf index f26063b61..d72a25ce9 100644 --- a/src/malay/ExtendMay.gf +++ b/src/malay/ExtendMay.gf @@ -105,13 +105,17 @@ concrete ExtendMay of Extend = CatMay -- PassVPSlash : VPS -> VP ; -- be begged to sleep PassVPSlash vps = vps ** { - s = \\vf,pol => vps.s ! Passive ! pol ; + s = \\vf,pol => vps.s ! Passive ! pol ++ vps.adjCompl; }; -- PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go PassAgentVPSlash vps np = { - s = \\vf,pol => vps.s ! Passive ! pol ++ (applyPrep by8agent_Prep np) ; + s = \\vf,pol => vps.s ! Passive ! pol ++ vps.adjCompl ++ (applyPrep by8agent_Prep np); }; + -- PassAgentVPSlash vps np = { + -- s = \\vf,pol => vps.s ! Passive ! pol ++ (applyPrep by8agent_Prep np) ; + -- }; + -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 1865aaeb5..6ca8163b7 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -27,7 +27,7 @@ lin bank_N = mkN "bank" ; lin beautiful_A = mkA "cantik" ; -- lin become_VA = mkVA "jadi" ; lin beer_N = mkN "bir" ; -lin beg_V2V = mkV2 "seru" ; +lin beg_V2V = mkV2 "rayu" ; -- lin belly_N = mkN "" ; lin big_A = mkA "besar" ; lin bike_N = mkN "basikal" ; diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 4f969449b..ed54f19b8 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -74,13 +74,12 @@ lin -- : V2V -> VP -> VPSlash ; -- beg (her) to go SlashV2V v2 vp = useV { - s = \\vf => v2.s ! vf ++ for_Prep.s ++ vp.s ! Root ! Pos; + s = \\vf => v2.s ! vf; } ** { - c2 = v2.c2; - adjCompl = []; + c2 = v2.c2 ; + adjCompl = for_Prep.s ++ vp.s ! Root ! Pos; } ; - -- : V2S -> S -> VPSlash ; -- answer (to him) that it is good SlashV2S v2 s = useV v2 ** { c2 = v2.c2; diff --git a/src/malay/unittest/questions.gftest b/src/malay/unittest/questions.gftest index 865fb5321..78634e9d7 100644 --- a/src/malay/unittest/questions.gftest +++ b/src/malay/unittest/questions.gftest @@ -74,8 +74,8 @@ LangMay: apa daging yang dimakan AllEngAbs: (PassAgentVPSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron i_Pron)) AllEng: be begged to go by me -AllMay: diseru untuk pergi olehku +AllMay: dirayu untuk pergi olehku AllEngAbs: (PassVPSlash (SlashV2V beg_V2V (UseV sleep_V))) AllEng: be begged to sleep -AllMay: diseru untuk tidur \ No newline at end of file +AllMay: dirayu untuk tidur \ No newline at end of file diff --git a/src/malay/unittest/tenses.gftest b/src/malay/unittest/tenses.gftest index da1b8df10..c0f5df543 100644 --- a/src/malay/unittest/tenses.gftest +++ b/src/malay/unittest/tenses.gftest @@ -13,8 +13,9 @@ Lang: UseCl (TTAnt TFut ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (Use LangEng: the cat will walk LangMay: kucing akan berjalan -Lang: PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron she_Pron)) +Lang: UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (DetNP (DetQuant (PossPron she_Pron) NumPl))))) LangEng: I begged her to go +LangMay: aku merayu dia untuk pergi ------------- -- Conditions From 12bc4ccdf58a472a03a02390ba61cbaecfb7b95a Mon Sep 17 00:00:00 2001 From: Meowyam Date: Wed, 24 Jan 2024 13:56:28 +0800 Subject: [PATCH 16/17] add correct negation for AP --- src/malay/ResMay.gf | 5 ++++- src/malay/VerbMay.gf | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 3a4d60676..9fd534333 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -292,8 +292,11 @@ oper useV : Verb -> VerbPhrase = \v -> v ** { s = \\vf,pol => verbneg pol ++ v.s ! vf } ; - + useComp : Str -> VerbPhrase = \s -> { + s = \\vf,pol => verbneg pol ++ s ; + } ; + useCompN : Str -> VerbPhrase = \s -> { s = \\vf,pol => nounneg pol ++ s ; } ; diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index ed54f19b8..48863c0eb 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -159,10 +159,10 @@ lin CompAP ap = useComp ap.s ; -- : CN -> Comp ; - CompCN cn = useComp (cn.s ! NF Sg Bare) ; + CompCN cn = useCompN (cn.s ! NF Sg Bare) ; -- NP -> Comp ; - CompNP np = useComp (np.s ! Bare) ; + CompNP np = useCompN (np.s ! Bare) ; -- : Adv -> Comp ; --"Both bukan and tidak may negate prepositional phrases. The choice of either From b3e13c29af09c52429fb847234f4bec36a276204 Mon Sep 17 00:00:00 2001 From: Meowyam Date: Thu, 25 Jan 2024 18:47:00 +0800 Subject: [PATCH 17/17] correct order for Malay Slash3V3 --- src/malay/VerbMay.gf | 9 +++++++-- src/malay/unittest/complements.gftest | 5 +++-- src/malay/unittest/relative.gftest | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index 48863c0eb..4ab5da38d 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -56,8 +56,13 @@ lin -- : V3 -> NP -> VPSlash ; -- give (it) to her Slash3V3 v3 iobj = useV { - s = \\vf => v3.s ! vf ++ applyPrep v3.c2 iobj ++ - applyPrep v3.c3 emptyNP ; + s = \\vf => v3.s ! vf ++ + case iobj.a of { + IsPron p => applyPrep v3.c2 emptyNP ++ applyPrep v3.c3 iobj ; + _ => applyPrep v3.c2 iobj ++ applyPrep v3.c3 emptyNP + } + -- ++ applyPrep v3.c2 iobj ++ + -- applyPrep v3.c3 emptyNP ; --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not } ** { c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object diff --git a/src/malay/unittest/complements.gftest b/src/malay/unittest/complements.gftest index 152149c59..f5becfcbe 100644 --- a/src/malay/unittest/complements.gftest +++ b/src/malay/unittest/complements.gftest @@ -2,8 +2,9 @@ Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash2V3 give_V3 (MassNP (UseN cat_N))) (UsePron i_Pron)))) LangMay: dia memberi kucing kepadaku --- Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron i_Pron)) (MassNP (UseN cat_N))))) --- LangMay: dia memberi aku kucing +Lang: UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron i_Pron)) (MassNP (UseN cat_N))))) +LangMay: dia memberi aku kucing +-- dia memberi aku kepada kucing -- Sentence complements diff --git a/src/malay/unittest/relative.gftest b/src/malay/unittest/relative.gftest index be6748d60..552309cca 100644 --- a/src/malay/unittest/relative.gftest +++ b/src/malay/unittest/relative.gftest @@ -49,7 +49,7 @@ LangMay: bapanya memberi buku kepadanya -- 2. A book that her father gave her -- TODO: would it be better as "buku yang bapanya beri kepadanya"? (Or any other variation?) Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron she_Pron))) (Slash3V3 give_V3 (UsePron she_Pron)))))) -LangMay: buku yang bapanya memberi kepada dia +LangMay: buku yang bapanya memberi kepadanya -- The preposition "kepada" comes from the definition of give_V3 in LexiconMay.gf. -- If "buku yang bapanya beri kepadanya" is correct in general, but sometimes @@ -64,7 +64,7 @@ LangMay: buku yang bapanya memberi kepada dia -- I want to read the book that my father gave me -- TODO check: would "aku mahu baca buku yang bapaku beri kepadaku" be better? Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a read_V2)) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron i_Pron))) (Slash3V3 give_V3 (UsePron i_Pron))))))))) -LangMay: aku mahu membaca buku yang bapaku memberi kepada aku +LangMay: aku mahu membaca buku yang bapaku memberi kepadaku -- I want to read the book that my father read Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a read_V2)) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (ComplN2 father_N2 (UsePron i_Pron))) (SlashV2a read_V2))))))))