From 27f7d5397a2a07d2bb508d63bdf219bf7c38e2fa Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 12 Jun 2020 14:00:18 +0200 Subject: [PATCH] (Jpn) Make VerbalA work for other verbs than iru --- src/japanese/ResJpn.gf | 47 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/src/japanese/ResJpn.gf b/src/japanese/ResJpn.gf index 70044fb97..5af987fbd 100644 --- a/src/japanese/ResJpn.gf +++ b/src/japanese/ResJpn.gf @@ -158,19 +158,48 @@ oper dropNaEnging = symb.s ++ "番目の" } ; + -- Added by IL 2020-06. + vp2verb : VP -> Speaker -> Animateness -> Style -> Verb = \vp,sp,an,st -> vp ** { + s = vp.verb ! sp ! an ; -- Style => TTense => Polarity => Str ; + a_stem = vp.a_stem ! sp ! an ! st ; + i_stem = vp.i_stem ! sp ! an ! st ; + te = vp.te ! sp ! an ! st ; + ba = vp.ba ! sp ! an ! st ; + } ; + VerbalA : Str -> Str -> Adj = \kekkonshiteiru,kikonno -> - let - kekkonshite = Predef.tk 2 kekkonshiteiru - in { - pred = \\st,t,p => kekkonshite + mkExistV.verb ! SomeoneElse ! Anim ! st ! t ! p ; + let kikon : Str = case kikonno of { + kikon + ("の"|"な") => kikon ; + _ => kikonno } ; + in case kekkonshiteiru of { + kekkonshite + "いる" + => mkVerbalA kekkonshite kikonno kikon (vp2verb mkExistV SomeoneElse Anim Resp) ; + kekkonshite + "ある" + => mkVerbalA kekkonshite kikonno kikon (vp2verb mkExistV SomeoneElse Inanim Resp) ; + kekkonshite + "する" + => mkVerbalA kekkonshite kikonno kikon (mkVerb "する" Suru) ; + kekkonshite + "来る" + => mkVerbalA kekkonshite kikonno kikon (mkVerb "来る" Kuru) ; + _ + "る" -- The whole kekkonshite+iru is in the verb, prefix is empty + => mkVerbalA [] kikonno kikon (mkVerb kekkonshiteiru Gr2) ; + _ => mkVerbalA [] kikonno kikon (mkVerb kekkonshiteiru Gr1) + } ; + + mkVerbalA : (kekkonshite, -- Predicative without the inflecting part + kikonno, -- Attributive with no or na (if needed) + kikon -- Attributive without no/na. If no の/な, identical to kikonno. + : Str) + -> (iru : Verb) -- The inflecting verb for the predicate + -> Adj = \kekkonshite,kikonno,kikon,iru -> { + pred = \\st,t,p => kekkonshite + iru.s ! st ! t ! p ; attr = kikonno ; - te = \\p => kekkonshite ++ mkExistV.te ! SomeoneElse ! Anim ! Resp ! p ; - ba = \\p => kekkonshite ++ mkExistV.ba ! SomeoneElse ! Anim ! Resp ! p ; + te = \\p => kekkonshite ++ iru.te ! p ; + ba = \\p => kekkonshite ++ iru.ba ! p ; adv = table { - Pos => init kikonno + "で" ; - Neg => init kikonno + "ではなく" + Pos => kikon + "で" ; -- TODO check: 疲れで or 疲れたで (tired_VP) + Neg => kikon + "ではなく" } ; - dropNaEnging = init kikonno + dropNaEnging = kikon } ; mkVerb : Str -> VerbGroup -> Verb =