From 00a72f907be8b5c0223bc8e0b440052916c0deef Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 20 Aug 2020 13:05:29 +0200 Subject: [PATCH] (May) Word order with determiners and relative clauses --- src/malay/NounMay.gf | 8 ++++---- src/malay/ResMay.gf | 5 ++++- src/malay/unittest/relative.gftest | 32 ++++++++++++++++++++---------- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/malay/NounMay.gf b/src/malay/NounMay.gf index 980d971ad..a4f6556eb 100644 --- a/src/malay/NounMay.gf +++ b/src/malay/NounMay.gf @@ -11,7 +11,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { s = \\poss => case det.poss of { Bare => cn.s ! NF det.n poss ; _ => cn.s ! NF det.n det.poss -- TODO check if this make sense - } ++ det.s ; + } ++ det.s ++ cn.heavyMod ; } ; -- : PN -> NP ; @@ -52,7 +52,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- MassNP : CN -> NP ; MassNP cn = emptyNP ** { - s = \\poss => cn.s ! NF Sg poss + s = \\poss => cn.s ! NF Sg poss ++ cn.heavyMod } ; --2 Determiners @@ -130,7 +130,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { UseN,UseN2 = ResMay.useN ; -- : N2 -> NP -> CN ; - ComplN2 n2 np = { + ComplN2 n2 np = useN n2 ** { s = \\nf => case of { @@ -154,7 +154,7 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in { -- : CN -> RS -> CN ; RelCN cn rs = cn ** { - s = \\nf => cn.s ! nf ++ rs.s ! P3 + heavyMod = cn.heavyMod ++ rs.s ! P3 } ; {- diff --git a/src/malay/ResMay.gf b/src/malay/ResMay.gf index 6df4f1e05..75d8064f2 100644 --- a/src/malay/ResMay.gf +++ b/src/malay/ResMay.gf @@ -11,6 +11,7 @@ oper Noun3 : Type = Noun2 ** {c3 : Preposition} ; CNoun : Type = Noun ** { + heavyMod : Str ; -- heavy stuff like relative clauses after determiner } ; PNoun : Type = Noun ; @@ -22,7 +23,9 @@ oper } } ; - useN : Noun -> CNoun = \n -> n ; + useN : Noun -> CNoun = \n -> n ** { + heavyMod = [] + } ; --------------------------------------------- -- Pronoun diff --git a/src/malay/unittest/relative.gftest b/src/malay/unittest/relative.gftest index ec890f8f3..05f3799be 100644 --- a/src/malay/unittest/relative.gftest +++ b/src/malay/unittest/relative.gftest @@ -1,6 +1,9 @@ -Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV go_V)))) -LangEng: a cat that goes -LangMay: kucing yang pergi +-------------------------------------------------------------- +-- Basics + +Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) +LangEng: a cat that walks +LangMay: kucing yang jalan Lang: DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) LangEng: a cat that drinks milk @@ -10,10 +13,23 @@ Lang: MassNP (RelCN (UseN milk_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash Id LangEng: milk that the cat drinks LangMay: susu yang kucing minum +-- NB. if you feel tempted to rephrase because nobody says this in real life, that's not the point here. +-- We can find another RGL tree that produces the more natural variant. This tree produces this variant. Lang: DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashPrep (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (UseV walk_V)) with_Prep)))) LangEng: the cat that the dog walks with LangMay: kucing yang anjing jalan dengannya +-------------------------------------------------------------- +-- Determiner placement + +Lang: DetCN (DetQuant this_Quant NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV walk_V)))) +LangEng: this cat that walks +LangMay: kucing ini yang jalan + +Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a drink_V2) (MassNP (UseN milk_N)))))) +LangEng: my cat that drinks milk +LangMay: kucing saya yang minum susu + -------------------------------------------------------------- -- Complex example: "the book that his/her father gave him/her" @@ -25,15 +41,11 @@ LangMay: bapanya memberi buku kepadanya 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))) (Slash2V3 give_V3 (UsePron she_Pron)))))) LangMay: buku yang bapanya beri kepadanya --- 3. A book that her father gave to me -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 i_Pron)))))) -LangMay: buku yang bapanya beri kepadaku - -- The preposition "kepada" comes from the definition of give_V3 in LexiconMay.gf. --- If "buku yang bapanya beri kepadaku" is correct in the general sense, but sometimes +-- If "buku yang bapanya beri kepadanya" is correct in general, but sometimes -- we want to say "buku yang bapanya beri", we can create a coercion function -- from V3 to V2: just drop the indirect object preposition. --- This is easy to do in an application grammar. +-- That is easy to do in an application grammar. -- If we want to do this consistently: always drop the indirect object in a relative clause, -- i.e. never say "buku yang bapanya beri kepada(ku/mu/nya)" @@ -49,4 +61,4 @@ LangMay: saya mahu baca buku yang bapaku baca -- bonus tree: we can also generate "bapa saya", not just "bapaku" Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN2 father_N2)) (SlashV2a read_V2))))))))) -LangMay: saya mahu baca buku yang bapa saya baca +LangMay: saya mahu baca buku yang bapa saya baca \ No newline at end of file