From 0ea5455e24c75143b397b5006d226d8a987f9cb3 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 1 Jun 2012 13:43:24 +0000 Subject: [PATCH] fixes to Ja --- lib/src/japanese/AdjectiveJap.gf | 31 +++++++--- lib/src/japanese/AdverbJap.gf | 6 +- lib/src/japanese/CatJap.gf | 17 ++--- lib/src/japanese/ConjunctionJap.gf | 6 +- lib/src/japanese/IdiomJap.gf | 99 +++++++++++++++--------------- lib/src/japanese/NounJap.gf | 10 +-- lib/src/japanese/RelativeJap.gf | 2 +- lib/src/japanese/ResJap.gf | 17 +++-- lib/src/japanese/SentenceJap.gf | 4 +- lib/src/japanese/TextJap.gf | 8 +-- lib/src/japanese/VerbJap.gf | 54 ++++++++++------ 11 files changed, 146 insertions(+), 108 deletions(-) diff --git a/lib/src/japanese/AdjectiveJap.gf b/lib/src/japanese/AdjectiveJap.gf index ef9a7ef6e..fdba1e946 100644 --- a/lib/src/japanese/AdjectiveJap.gf +++ b/lib/src/japanese/AdjectiveJap.gf @@ -11,7 +11,8 @@ flags coding = utf8 ; ba = \\st => adj.ba ; adv = \\st => adj.adv ! Pos ; prepositive = \\st => [] ; - dropNaEnging = \\st => adj.dropNaEnging + dropNaEnging = \\st => adj.dropNaEnging ; + needSubject = True } ; ComparA adj np = { @@ -22,6 +23,7 @@ flags coding = utf8 ; adv = \\st => np.s ! st ++ "より" ++ adj.adv ! Pos ; prepositive = np.prepositive ; dropNaEnging = \\st => np.s ! st ++ "より" ++ adj.dropNaEnging ; + needSubject = True } ; ComplA2 a2 np = { @@ -31,7 +33,8 @@ flags coding = utf8 ; ba = \\st,p => np.s ! st ++ a2.prep ++ a2.ba ! p ; prepositive = np.prepositive ; adv = \\st => np.s ! st ++ a2.prep ++ a2.adv ! Pos ; - dropNaEnging = \\st => np.s ! st ++ a2.prep ++ a2.dropNaEnging + dropNaEnging = \\st => np.s ! st ++ a2.prep ++ a2.dropNaEnging ; + needSubject = True } ; ReflA2 a2 = { @@ -41,7 +44,8 @@ flags coding = utf8 ; ba = \\st,p => "自分" ++ a2.prep ++ a2.ba ! p ; adv = \\st => "自分" ++ a2.prep ++ a2.adv ! Pos ; prepositive = \\st => [] ; - dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging + dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging ; + needSubject = True } ; UseA2 a2 = { @@ -51,7 +55,8 @@ flags coding = utf8 ; ba = \\st => a2.ba ; adv = \\st => a2.adv ! Pos ; prepositive = \\st => [] ; - dropNaEnging = \\st => a2.dropNaEnging + dropNaEnging = \\st => a2.dropNaEnging ; + needSubject = True } ; UseComparA adj = { @@ -61,7 +66,8 @@ flags coding = utf8 ; ba = \\st,p => "もっと" ++ adj.ba ! p ; adv = \\st => "もっと" ++ adj.adv ! Pos ; prepositive = \\st => [] ; - dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging + dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging ; + needSubject = True } ; CAdvAP cadv ap np = { @@ -95,7 +101,8 @@ flags coding = utf8 ; dropNaEnging = \\st => case cadv.less of { True => np.s ! st ++ cadv.s ++ ap.pred ! Plain ! TPres ! Neg ; False => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st - } + } ; + needSubject = True } ; AdjOrd ord = { @@ -105,7 +112,8 @@ flags coding = utf8 ; ba = \\st => ord.ba ; adv = \\st => ord.adv ! Pos ; prepositive = \\st => [] ; - dropNaEnging = \\st => ord.dropNaEnging + dropNaEnging = \\st => ord.dropNaEnging ; + needSubject = True } ; SentAP ap sc = { @@ -115,7 +123,8 @@ flags coding = utf8 ; ba = \\st,p => sc.s ! Wa ! st ++ "ことが" ++ ap.ba ! st ! p ; adv = \\st => sc.s ! Wa ! st ++ "ことが" ++ ap.adv ! st ; prepositive = ap.prepositive ; - dropNaEnging = \\st => sc.s ! Wa ! st ++ "ことが" ++ ap.dropNaEnging ! st + dropNaEnging = \\st => sc.s ! Wa ! st ++ "ことが" ++ ap.dropNaEnging ! st ; + needSubject = False } ; AdAP ada ap = { @@ -125,7 +134,8 @@ flags coding = utf8 ; ba = \\st,p => ada.s ++ ap.ba ! st ! p ; adv = \\st => ada.s ++ ap.adv ! st ; prepositive = ap.prepositive ; - dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st + dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st ; + needSubject = True } ; AdvAP ap adv = { @@ -156,6 +166,7 @@ flags coding = utf8 ; dropNaEnging = \\st => case adv.prepositive of { True => ap.dropNaEnging ! st ; False => adv.s ! st ++ ap.dropNaEnging ! st - } + } ; + needSubject = True } ; } diff --git a/lib/src/japanese/AdverbJap.gf b/lib/src/japanese/AdverbJap.gf index ea634b6ae..a6fd8812a 100644 --- a/lib/src/japanese/AdverbJap.gf +++ b/lib/src/japanese/AdverbJap.gf @@ -18,8 +18,8 @@ flags coding = utf8 ; ComparAdvAdjS cadv a s = { s = \\st => case cadv.less of { - True => s.subj ! Ga ! st ++ s.pred ! Plain ++ cadv.s ++ a.adv ! Neg ; - False => s.subj ! Ga ! st ++ s.pred ! Plain ++ cadv.s ++ a.adv ! Pos + True => s.subj ! Ga ! st ++ s.pred ! Plain ++ "こと" ++ cadv.s ++ a.adv ! Neg ; + False => s.subj ! Ga ! st ++ s.pred ! Plain ++ "こと" ++ cadv.s ++ a.adv ! Pos } ; prepositive = False} ; @@ -38,4 +38,4 @@ flags coding = utf8 ; } ; AdnCAdv cadv = {s = cadv.s_adn ; postposition = True} ; -} \ No newline at end of file +} diff --git a/lib/src/japanese/CatJap.gf b/lib/src/japanese/CatJap.gf index 24e6bcb24..4b40120ee 100644 --- a/lib/src/japanese/CatJap.gf +++ b/lib/src/japanese/CatJap.gf @@ -32,15 +32,16 @@ flags coding = utf8 ; VP = ResJap.VP ; -- {verb : Speaker => Animateness => Style => TTense => Polarity => Str ; -- a_stem, i_stem : Speaker => Animateness => Style => Str ; -- te, ba : Speaker => Animateness => Style => Polarity => Str ; - -- prep : Str ; obj : Style => Str ; prepositive : Style => Str} ; + -- prep : Str ; obj : Style => Str ; prepositive : Style => Str ; + -- needSubject : Bool} ; Comp = {verb : Animateness => Style => TTense => Polarity => Str ; a_stem, i_stem : Animateness => Style => Str ; te, ba : Animateness => Style => Polarity => Str ; - obj : Style => Str ; prepositive : Style => Str} ; + obj : Style => Str ; prepositive : Style => Str ; needSubject : Bool} ; VPSlash = {s : Speaker => Style => TTense => Polarity => Str ; a_stem, i_stem : Speaker => Str ; te, ba : Speaker => Polarity => Str ; prep : Str ; obj : Style => Str ; prepositive : Style => Str ; v2vType : Bool} ; AP = {pred : Style => TTense => Polarity => Str ; attr, adv, dropNaEnging, prepositive : - Style => Str ; te, ba : Style => Polarity => Str} ; + Style => Str ; te, ba : Style => Polarity => Str ; needSubject : Bool} ; NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ; -- changePolar : Bool ; meaning : Speaker ; anim : Animateness} ; CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ; @@ -60,18 +61,18 @@ flags coding = utf8 ; Subj = Subjunction ; -- {s : Str ; type : SubjType} ; Prep = Preposition ; -- {s : Str ; null : Str} ; V = Verb ; -- {s : Style => TTense => Polarity => Str ; a_stem, i_stem : - -- Str ; te, ba : Polarity => Str} + -- Str ; te, ba : Polarity => Str ; needSubject : Bool} V2 = Verb2 ; -- {s, pass : Style => TTense => Polarity => Str ; a_stem, i_stem, -- pass_a_stem, pass_i_stem, prep : Str ; te, ba, pass_te, - -- pass_ba : Polarity => Str} ; + -- pass_ba : Polarity => Str ; needSubject : Bool} ; V3 = Verb3 ; -- {s : Speaker => Style => TTense => Polarity => Str ; a_stem, -- i_stem : Speaker => Str ; te, ba : Speaker => Polarity => -- Str ; prep1, prep2 : Str} ; VV = ResJap.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te, -- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ; -- sense : ModSense} ; - VS = Verb ** {prep : Str} ; - VQ = Verb ; + VS = Verb2 ; + VQ = Verb2 ; VA = Verb ; V2V = Verb ; V2S = Verb ; @@ -86,4 +87,4 @@ flags coding = utf8 ; N3 = Noun ** {prep1 : Str; prep2 : Str} ; PN = PropNoun ; -- {s : Style => Str ; anim : Animateness} ; -} \ No newline at end of file +} diff --git a/lib/src/japanese/ConjunctionJap.gf b/lib/src/japanese/ConjunctionJap.gf index db8cfd184..92e3a2917 100644 --- a/lib/src/japanese/ConjunctionJap.gf +++ b/lib/src/japanese/ConjunctionJap.gf @@ -54,7 +54,8 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in { ba = \\st,p => conj.null ++ ap.s1and ! st ! p ++ ap.s2ba ! st ! p ; adv = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2adv ! st ; dropNaEnging = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2dropNaEnging ! st ; - prepositive = ap.prepositive + prepositive = ap.prepositive ; + needSubject = True } ; Or => { pred = \\st,t,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2pred ! st ! t ! p ; @@ -63,7 +64,8 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in { ba = \\st,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2ba ! st ! p ; adv = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2adv ! st ; dropNaEnging = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2dropNaEnging ! st ; - prepositive = ap.prepositive + prepositive = ap.prepositive ; + needSubject = True } } ; diff --git a/lib/src/japanese/IdiomJap.gf b/lib/src/japanese/IdiomJap.gf index ad0d66484..aba91adef 100644 --- a/lib/src/japanese/IdiomJap.gf +++ b/lib/src/japanese/IdiomJap.gf @@ -4,33 +4,48 @@ flags coding = utf8 ; lin - ImpersCl vp = { - s = table { - Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ - vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; - Ga => \\st,t,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ - vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p + ImpersCl vp = case vp.needSubject of { + True => { + s = table { + Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ + vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; + Ga => \\st,t,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ + vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p + } ; + te = table { + Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ + vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; + Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ + vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p + } ; + ba = table { + Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ + vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; + Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ + vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p + } ; + subj = table { + Wa => \\st => vp.prepositive ! st ++ "これは" ; + Ga => \\st => vp.prepositive ! st ++ "これが" + } ; + pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; + pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; + pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; + changePolar = False } ; - te = table { - Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ - vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; - Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ - vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p - } ; - ba = table { - Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ - vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; - Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ - vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p - } ; - subj = table { - Wa => \\st => vp.prepositive ! st ++ "これは" ; - Ga => \\st => vp.prepositive ! st ++ "これが" - } ; - pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; - pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; - pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; - changePolar = False + False => { + s = \\part,st,t,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++ + vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; + te = \\part,st,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++ + vp.te ! SomeoneElse ! Inanim ! st ! p ; + ba = \\part,st,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++ + vp.ba ! SomeoneElse ! Inanim ! st ! p ; + subj = \\part,st => vp.prepositive ! st ; + pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; + pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; + pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; + changePolar = False + } } ; GenericCl vp = { @@ -79,28 +94,13 @@ flags coding = utf8 ; ExistNP np = case np.needPart of { True => { - s = table { - Wa => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "は" ++ - mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ; - Ga => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ - mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p - } ; - te = table { - Wa => \\st,p => np.prepositive ! st ++ np.s ! st ++ "は" ++ - mkExistV.te ! SomeoneElse ! np.anim ! st ! p ; - Ga => \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ - mkExistV.te ! SomeoneElse ! np.anim ! st ! p - } ; - ba = table { - Wa => \\st,p => np.prepositive ! st ++ np.s ! st ++ "は" ++ - mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ; - Ga => \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ - mkExistV.ba ! SomeoneElse ! np.anim ! st ! p - } ; - subj = table { - Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ; - Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" - } ; + s = \\part,st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ + mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ; + te = \\part,st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ + mkExistV.te ! SomeoneElse ! np.anim ! st ! p ; + ba = \\part,st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ + mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ; + subj = \\part,st => np.prepositive ! st ++ np.s ! st ++ "が" ; pred = \\st,t,p => mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ; pred_te = \\st,p => mkExistV.te ! SomeoneElse ! np.anim ! st ! p ; pred_ba = \\st,p => mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ; @@ -143,7 +143,8 @@ flags coding = utf8 ; ba = \\sp,a,st,p => vp.te ! sp ! a ! st ! Pos ++ mkExistV.ba ! SomeoneElse ! Anim ! st ! p ; prep = vp.prep ; obj = vp.obj ; - prepositive = vp.prepositive + prepositive = vp.prepositive ; + needSubject = vp.needSubject } ; ImpPl1 vp = {s = \\part,st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++ diff --git a/lib/src/japanese/NounJap.gf b/lib/src/japanese/NounJap.gf index 37b92d1a9..fdcb5d5d8 100644 --- a/lib/src/japanese/NounJap.gf +++ b/lib/src/japanese/NounJap.gf @@ -9,10 +9,10 @@ flags coding = utf8 ; True => case cn.counterReplace of { True => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive ; False => case of { - => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++ - "の" ++ det.num ++ det.postpositive ; - _ => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++ "の" ++ - det.num ++ cn.counter ++ det.postpositive + => cn.object ! st ++ det.quant ! st ++ det.num ++ det.postpositive ++ + "の" ++ cn.s ! det.n ! st ; + _ => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive + ++ "の" ++ cn.s ! det.n ! st } } ; False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.s ! det.n ! st @@ -327,7 +327,7 @@ flags coding = utf8 ; } ; ApposCN cn np = { - s = \\n,st => cn.s ! n ! st ++ np.s ! st ; + s = \\n,st => np.s ! st ++ cn.s ! n ! st ; object = cn.object ; prepositive = cn.prepositive ; hasAttr = cn.hasAttr ; diff --git a/lib/src/japanese/RelativeJap.gf b/lib/src/japanese/RelativeJap.gf index ada707d8e..26d0ac7e6 100644 --- a/lib/src/japanese/RelativeJap.gf +++ b/lib/src/japanese/RelativeJap.gf @@ -49,4 +49,4 @@ flags coding = utf8 ; IdRP = {s = \\st => [] ; null = True} ; FunRP prep np rp = {s = \\st => np.prepositive ! st ++ np.s ! st ; null = False} ; -} \ No newline at end of file +} diff --git a/lib/src/japanese/ResJap.gf b/lib/src/japanese/ResJap.gf index dd79e6cec..31bf2ee2d 100644 --- a/lib/src/japanese/ResJap.gf +++ b/lib/src/japanese/ResJap.gf @@ -28,7 +28,8 @@ oper VP : Type = {verb : Speaker => Animateness => Style => TTense => Polarity => Str ; a_stem, i_stem : Speaker => Animateness => Style => Str ; te, ba : Speaker => Animateness => Style => Polarity => Str ; - prep : Str ; obj : Style => Str ; prepositive : Style => Str} ; + prep : Str ; obj : Style => Str ; prepositive : Style => Str ; + needSubject : Bool} ; Noun : Type = {s : Number => Style => Str ; anim : Animateness ; counter : Str ; counterReplace : Bool ; counterTsu : Bool} ; @@ -45,7 +46,7 @@ oper tenPlus : Bool} ; Preposition : Type = {s : Str ; null : Str} ; Verb : Type = {s : Style => TTense => Polarity => Str ; a_stem, i_stem : Str ; - te, ba : Polarity => Str} ; + te, ba : Polarity => Str ; needSubject : Bool} ; Verb2 : Type = {s, pass : Style => TTense => Polarity => Str ; a_stem, i_stem, pass_a_stem, pass_i_stem, prep : Str ; te, ba, pass_te, pass_ba : Polarity => Str} ; Verb3 : Type = {s : Speaker => Style => TTense => Polarity => Str ; a_stem, i_stem : @@ -203,7 +204,8 @@ oper ba = table { Pos => mkBaForm yomu gr ; Neg => yoma + "なければ" - } + } ; + needSubject = True } ; mkVerb2 : Str -> Str -> VerbGroup -> Verb2 = @@ -318,7 +320,8 @@ oper Suru => Predef.tk 2 yomu + "されなければ" ; Kuru => "来られなければ" } - } + } ; + needSubject = True } ; mkVerb3 : Str -> Str -> Str -> VerbGroup -> Verb3 = @@ -420,7 +423,8 @@ oper } } ; prep = [] ; - prepositive, obj = \\st => [] + prepositive, obj = \\st => [] ; + needSubject = True } ; mkWant : VV = { @@ -670,7 +674,8 @@ oper ba = table { Pos => "雨が降れば" ; Neg => "雨が降らなければ" - } + } ; + needSubject = False } ; } diff --git a/lib/src/japanese/SentenceJap.gf b/lib/src/japanese/SentenceJap.gf index 6fb4870ee..c57ae2b24 100644 --- a/lib/src/japanese/SentenceJap.gf +++ b/lib/src/japanese/SentenceJap.gf @@ -58,7 +58,7 @@ flags coding = utf8 ; pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ; pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ; changePolar = np.changePolar - } + } } ; PredSCVP sc vp = case sc.isVP of { @@ -171,7 +171,7 @@ flags coding = utf8 ; } ; Plain => table { Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++ - vp.i_stem ! SomeoneElse ! Anim ! Plain ++ "nasai" ; + vp.i_stem ! SomeoneElse ! Anim ! Plain ++ "なさい" ; Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++ vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Pos ++ "な" } diff --git a/lib/src/japanese/TextJap.gf b/lib/src/japanese/TextJap.gf index 38addace7..4f21fb15f 100644 --- a/lib/src/japanese/TextJap.gf +++ b/lib/src/japanese/TextJap.gf @@ -6,9 +6,9 @@ lin TEmpty = {s = ""} ; - TFullStop phr txt = {s = phr.s ++ "." ++ txt.s} ; + TFullStop phr txt = {s = phr.s ++ "。" ++ txt.s} ; - TQuestMark phr txt = {s = phr.s ++ "?" ++ txt.s} ; + TQuestMark phr txt = {s = phr.s ++ "?" ++ txt.s} ; - TExclMark phr txt = {s = phr.s ++ "!" ++ txt.s} ; -} \ No newline at end of file + TExclMark phr txt = {s = phr.s ++ "!" ++ txt.s} ; +} diff --git a/lib/src/japanese/VerbJap.gf b/lib/src/japanese/VerbJap.gf index 0a9d49552..1d0f9562c 100644 --- a/lib/src/japanese/VerbJap.gf +++ b/lib/src/japanese/VerbJap.gf @@ -12,7 +12,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st => v.ba ; prep = [] ; obj = \\st => [] ; - prepositive = \\st => [] + prepositive = \\st => [] ; + needSubject = v.needSubject } ; ComplVV v vp = case v.sense of { @@ -29,7 +30,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { v.ba ! sp ! p ; prep = vp.prep ; obj = \\st => vp.obj ! st ; - prepositive = vp.prepositive + prepositive = vp.prepositive ; + needSubject = True } ; Oblig => { verb = \\sp,a,st,t => table { @@ -48,7 +50,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { } ; prep = vp.prep ; obj = \\st => vp.obj ! st ; - prepositive = vp.prepositive + prepositive = vp.prepositive ; + needSubject = True } ; Wish => { verb = \\sp,a,st,t,p => vp.i_stem ! sp ! a ! st ++ v.s ! sp ! st ! t ! p ; @@ -58,7 +61,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st,p => vp.i_stem ! sp ! a ! st ++ v.ba ! sp ! p ; prep = vp.prep ; obj = \\st => vp.obj ! st ; - prepositive = vp.prepositive + prepositive = vp.prepositive ; + needSubject = True } } ; @@ -70,7 +74,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st => vs.ba ; prep = vs.prep ; obj = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ; - prepositive = \\st => [] + prepositive = \\st => [] ; + needSubject = True } ; ComplVQ vq qs = { @@ -81,7 +86,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st => vq.ba ; prep = "" ; obj = \\st => qs.s_plain_pred ! Ga ! st ; - prepositive = \\st => [] + prepositive = \\st => [] ; + needSubject = True } ; ComplVA va ap = { @@ -92,7 +98,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st => va.ba ; prep = [] ; obj = \\st => ap.adv ! st ; - prepositive = ap.prepositive + prepositive = ap.prepositive ; + needSubject = True } ; SlashV2a v2 = { @@ -194,7 +201,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { False => vpslash.obj ! st ++ np.s ! st } ; te = \\sp,a,st,p => vpslash.te ! sp ! p ; - prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st + prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ; + needSubject = True } ; SlashVV v vpslash = case v.sense of { @@ -268,7 +276,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { prep = vpslash.prep ; obj = \\st => vpslash.obj ! st ++ "自分" ; -- "jibun" te = \\sp,a,st,p => vpslash.te ! sp ! p ; - prepositive = vpslash.prepositive + prepositive = vpslash.prepositive ; + needSubject = True } ; UseComp comp = { @@ -279,7 +288,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp => comp.ba ; prep = [] ; obj = comp.obj ; - prepositive = comp.prepositive + prepositive = comp.prepositive ; + needSubject = comp.needSubject } ; PassV2 v2 = { @@ -290,7 +300,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = \\sp,a,st => v2.pass_ba ; prep = [] ; obj = \\st => [] ; - prepositive = \\st => [] + prepositive = \\st => [] ; + needSubject = True } ; AdvVP vp adv = { @@ -307,7 +318,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { prepositive = \\st => case adv.prepositive of { True => vp.prepositive ! st ++ adv.s ! st ; False => vp.prepositive ! st - } + } ; + needSubject = vp.needSubject } ; AdVVP adv vp = { @@ -318,7 +330,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ba = vp.ba ; prep = vp.prep ; obj = \\st => adv.s ++ vp.obj ! st ; - prepositive = vp.prepositive + prepositive = vp.prepositive ; + needSubject = vp.needSubject } ; AdvVPSlash vpslash adv = { @@ -358,7 +371,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { i_stem = \\a,st => ap.adv ! st ++ "なり" ; ba = \\a => ap.ba ; obj = \\st => [] ; - prepositive = ap.prepositive + prepositive = ap.prepositive ; + needSubject = ap.needSubject } ; CompNP np = { @@ -368,7 +382,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { a_stem = \\a,st => "では" ; i_stem = \\a,st => "になり" ; -- "become" - for wishes obj = \\st => np.s ! st ; - prepositive = np.prepositive + prepositive = np.prepositive ; + needSubject = True } ; CompAdv adv = { @@ -384,7 +399,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { prepositive = \\st => case adv.prepositive of { True => adv.s ! st ; False => [] - } + } ; + needSubject = True } ; CompCN cn = { @@ -394,7 +410,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { a_stem = \\a,st => "では" ; i_stem = \\a,st => "になり" ; -- "become" - for wishes obj = \\st => cn.s ! Sg ! st ; - prepositive = cn.prepositive + prepositive = cn.prepositive ; + needSubject = True } ; UseCopula = { @@ -405,7 +422,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { i_stem = \\sp,a,st => "なり" ; -- "become" - for wishes obj = \\st => [] ; prepositive = \\st => [] ; - prep = [] + prep = [] ; + needSubject = True } ; }