From 0e065d8005fb82a6b1a3bbd50d148c2508ca2114 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 19 Aug 2020 16:07:35 +0200 Subject: [PATCH] (May) Add PassV2 + new tests --- src/malay/LangMay.gf | 1 + src/malay/LexiconMay.gf | 2 +- src/malay/ParadigmsMay.gf | 10 ++++++---- src/malay/ParamMay.gf | 5 +++-- src/malay/ResMay.gf | 20 +++++++++++++++++--- src/malay/VerbMay.gf | 7 +++++-- src/malay/unittest/passive.gftest | 7 +++++++ 7 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 src/malay/unittest/passive.gftest diff --git a/src/malay/LangMay.gf b/src/malay/LangMay.gf index 30ad3e2c..5b7f25a7 100644 --- a/src/malay/LangMay.gf +++ b/src/malay/LangMay.gf @@ -1,3 +1,4 @@ +--# -path=.:../abstract:../common:../prelude:../api concrete LangMay of Lang = GrammarMay, LexiconMay, diff --git a/src/malay/LexiconMay.gf b/src/malay/LexiconMay.gf index 253091b5..cc55f2db 100644 --- a/src/malay/LexiconMay.gf +++ b/src/malay/LexiconMay.gf @@ -217,7 +217,7 @@ lin learn_V2 = mkV2 (mkV "ajar" Ber) emptyPrep ; -- lin lose_V2 = mkV2 "" ; -- lin louse_N = mkN "" ; -- lin love_N = mkN "" ; --- lin love_V2 = mkV2 "" ; +lin love_V2 = mkV2 "cinta" ; ---- -- M diff --git a/src/malay/ParadigmsMay.gf b/src/malay/ParadigmsMay.gf index 893b456d..e219b90f 100644 --- a/src/malay/ParadigmsMay.gf +++ b/src/malay/ParadigmsMay.gf @@ -109,13 +109,15 @@ oper } ; mkV2 = overload { - mkV2 : Str -> V2 = \v2 -> lin V2 ((mkVerb v2 Meng) ** {c2 = emptyPrep}) ; - mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) + mkV2 : Str -> V2 = \v2 -> lin V2 (mkVerb2 (mkVerb v2 Meng) emptyPrep) ; + mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (mkVerb2 v p) } ; mkV3 = overload { - mkV3 : V -> V3 = \v -> lin V3 (v ** {c2,c3 = emptyPrep}) ; - mkV3 : V -> (p,q : Prep) -> V3 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) + mkV3 : V -> V3 = \v -> + lin V3 (mkVerb3 v emptyPrep emptyPrep) ; + mkV3 : V -> (p,q : Prep) -> V3 = \v,p,q -> + lin V3 (mkVerb3 v p q) } ; -- mkVV = overload { diff --git a/src/malay/ParamMay.gf b/src/malay/ParamMay.gf index 5a06bf75..2614327a 100644 --- a/src/malay/ParamMay.gf +++ b/src/malay/ParamMay.gf @@ -119,12 +119,13 @@ param param VForm = Root -- infinitive, imperative, … - | Active ; + | Active + ; Prefix = Meng | Ber - ; -- TODO more + ; -- TODO more? -------------------------------------------------------------------------------- -- Clauses diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index bc2fcebd..667bca95 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -118,8 +118,14 @@ oper Verb : Type = { s : VForm => Str } ; - Verb2 : Type = Verb ** {c2 : Preposition} ; - Verb3 : Type = Verb2 ** {c3 : Preposition} ; + Verb2 : Type = Verb ** { + c2 : Preposition ; + passive : Str + } ; + + Verb3 : Type = Verb2 ** { + c3 : Preposition + } ; -- VV : Type = Verb ** {vvtype : VVForm} ; @@ -128,7 +134,15 @@ oper Root => str ; Active => prefix p str } - } ; + } ; + + mkVerb2 : Verb -> Preposition -> Verb2 = \v,pr -> v ** { + c2 = pr ; + passive = "di" + v.s ! Root -- TODO check + } ; + + mkVerb3 : Verb -> (p,q : Preposition) -> Verb3 = \v,p,q -> + mkVerb2 v p ** {c3 = q} ; copula : Verb = {s = \\_ => "ada"} ; -- TODO ------------------ diff --git a/src/malay/VerbMay.gf b/src/malay/VerbMay.gf index d0456df4..76738fa6 100644 --- a/src/malay/VerbMay.gf +++ b/src/malay/VerbMay.gf @@ -9,7 +9,10 @@ lin UseV = ResMay.useV ; -- : V2 -> VP ; -- be loved - -- PassV2 = ResMay.passV2 ; + PassV2 v2 = { + s = \\_ => v2.passive + -- Root => v2.s ! Root ; -- TODO: passive + verbal complements = ??? + } ; -- : VPSlash -> VP ; -- ReflVP = ResMay.insertRefl ; @@ -40,7 +43,7 @@ lin SlashV2a v2 = v2 ; -- : V3 -> NP -> VPSlash ; -- give it (to her) - Slash2V3 v3 dobj = { + Slash2V3 v3 dobj = v3 ** { s = \\vf => v3.s ! vf ++ v3.c2.s ++ dobj.s ; c2 = v3.c3 -- Now the VPSlash is missing only the indirect object } ; diff --git a/src/malay/unittest/passive.gftest b/src/malay/unittest/passive.gftest new file mode 100644 index 00000000..f1a8ed1b --- /dev/null +++ b/src/malay/unittest/passive.gftest @@ -0,0 +1,7 @@ +Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (PassV2 love_V2)) +LangEng: the dog is loved +LangMay: anjing dicinta + +Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (PassV2 love_V2)) +LangEng: the dog isn't loved +LangMay: anjing tidak dicinta