diff --git a/lib/src/chunk/ChunkJpn.gf b/lib/src/chunk/ChunkJpn.gf index 51a989700..e28e15983 100644 --- a/lib/src/chunk/ChunkJpn.gf +++ b/lib/src/chunk/ChunkJpn.gf @@ -1,59 +1,144 @@ -concrete ChunkJpn of Chunk = {} ; - -{- - ----- TODO: everything. Since CatJpn.Utt is not {s : Str}, nothing works in the functor - -CatJpn, ExtensionsJpn [VPS,VPI] ** - ChunkFunctor +concrete ChunkJpn of Chunk = CatJpn, ExtensionsJpn [VPS,VPI] ** + ChunkFunctor[Chunk, Chunks, OneChunk, PlusChunk, ChunkPhr, + AdA_Chunk, AdV_Chunk, AdN_Chunk, PConj_Chunk, Symb_Chunk, + fullstop_Chunk, exclmark_Chunk, questmark_Chunk, comma_Chunk, + colon_Chunk, semicolon_Chunk, quote_Chunk, lpar_Chunk, + rpar_Chunk, dash_Chunk] with (Syntax = SyntaxJpn), (Extensions = ExtensionsJpn) ** open SyntaxJpn, (E = ExtensionsJpn), Prelude, ResJpn, (P = ParadigmsJpn) in { -oper - emptyNP : NP = mkNP [] ; +flags coding = utf8 ; --- exceptions to functor +lincat + + VC = {s : Speaker => Style => TTense => Polarity => Str ; + a_stem, i_stem : Speaker => Str ; + te, ba : Speaker => Polarity => Str} ; lin - Conj_Chunk conj = ss (conj.s ! CSent).s2 ; - Numeral_Nom_Chunk num = ss (num.s ++ ge_s) ; - CN_Pl_Chunk cn = cn ; - Subj_Chunk subj = ss (subj.prePart ++ subj.sufPart) ; - Prep_Chunk prep = ss (prep.prepPre ++ prep.prepPost) ; - Predet_Chunk predet = predet ; + AP_Chunk ap = {s = (mkUtt ap).s ! Wa ! Resp} ; + Adv_Chunk adv = {s = adv.s ! Resp} ; + S_Chunk s = {s = s.s ! Wa ! Resp} ; + SSlash_Chunk sslash = {s = sslash.s ! Resp} ; + QS_Chunk qs = {s = qs.s ! Wa ! Resp} ; + CN_Pl_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Pl ! Resp} ; + CN_Sg_Chunk cn = {s = cn.prepositive ! Resp ++ cn.object ! Resp ++ cn.s ! Sg ! Resp} ; + CN_Pl_Gen_Chunk = CN_Pl_Chunk ; + CN_Sg_Gen_Chunk = CN_Sg_Chunk ; + Conj_Chunk conj = {s = conj.s} ; + Det_Chunk det = {s = det.quant ! Resp ++ det.num ++ det.postpositive} ; + IAdv_Chunk iadv = {s = iadv.s ! Resp} ; + IP_Chunk ip = {s = ip.s_subj ! Resp} ; + NP_Nom_Chunk np = {s = (mkUtt np).s ! Wa ! Resp} ; + NP_Acc_Chunk, NP_Gen_Chunk = NP_Nom_Chunk ; + Numeral_Nom_Chunk num = {s = num.s} ; + Numeral_Gen_Chunk = Numeral_Nom_Chunk ; + Ord_Nom_Chunk ord = {s = ord.attr} ; + Ord_Gen_Chunk = Ord_Nom_Chunk ; + Predet_Chunk predet = {s = predet.s} ; + Prep_Chunk prep = {s = prep.s} ; + RP_Nom_Chunk rp = {s = rp.s ! Resp} ; + RP_Gen_Chunk, RP_Acc_Chunk = RP_Nom_Chunk ; + Subj_Chunk subj = {s = subj.s} ; + VPS_Chunk vps = {s = vps.prepositive ! Resp ++ vps.obj ! Resp ++ vps. prep ++ + vps.verb ! SomeoneElse ! Inanim ! Resp} ; + VPI_Chunk vpi = {s = vpi.prepositive ! Resp ++ vpi.obj ! Resp ++ vpi. prep ++ + vpi.verb ! SomeoneElse ! Inanim } ; + refl_SgP1_Chunk, refl_SgP2_Chunk, refl_SgP3_Chunk, + refl_PlP1_Chunk, refl_PlP2_Chunk, refl_PlP3_Chunk = ss "自分" | ss "自分自身" ; -- "jibun" | "jibunjishin" + neg_Chunk = ss "ない" | ss "しない" | ss "ではない" | ss "ません" | ss "ないで" ; + copula_Chunk, future_Chunk = ss "です" | ss "だ" ; + copula_neg_Chunk, future_neg_Chunk = ss "ではない" | ss "ではありません" ; + copula_inf_Chunk = ss "です" | ss "だ" ; + past_copula_Chunk = ss "でした" | ss "だった" ; + past_copula_neg_Chunk = ss "ではありませんでした" | ss "ではなかった" ; + cond_Chunk = copula_Chunk ; -- no "would" in Japanese + cond_neg_Chunk = copula_neg_Chunk ; + perfect_Chunk = past_copula_Chunk ** (ss "てしまった" | ss "ちゃった" | ss "でしまった" | + ss "じゃった" | ss "ことがある" | ss "ことがあります") ; + perfect_neg_Chunk = past_copula_neg_Chunk ** (ss "てしまわない" | ss "でしまわない" | + ss "ことがありません" | ss "ことがない") ; + past_perfect_Chunk = perfect_Chunk ; + past_perfect_neg_Chunk = perfect_neg_Chunk ; + V2_V v2 = lin VC { + s = \\sp => v2.s ; + a_stem = \\sp => v2.a_stem ; + i_stem = \\sp => v2.i_stem ; + te = \\sp => v2.te ; + ba = \\sp => v2.ba + } ; + + VA_V va = lin VC { + s = \\sp => va.s ; + a_stem = \\sp => va.a_stem ; + i_stem = \\sp => va.i_stem ; + te = \\sp => va.te ; + ba = \\sp => va.ba + } ; + + VQ_V, VS_V = V2_V ; + + VV_V vv = lin VC { + s = vv.s ; + a_stem = vv.a_stem ; + i_stem = vv.i_stem ; + te = vv.te ; + ba = vv.ba + } ; + + V3_V v3 = lin VC { + s = v3.s ; + a_stem = v3.a_stem ; + i_stem = v3.i_stem ; + te = v3.te ; + ba = v3.ba + } ; + + V2A_V v2a = lin VC { + s = \\sp => v2a.s ; + a_stem = \\sp => v2a.a_stem ; + i_stem = \\sp => v2a.i_stem ; + te = \\sp => v2a.te ; + ba = \\sp => v2a.ba + } ; + + V2Q_V, V2S_V, V2V_V = V2A_V ; + + UseVC t p vc = lin VPS { + verb = \\sp,a,st => case t.a of { + Simul => vc.s ! sp ! st ! t.t ! p.b ; + Anter => case t.t of { + TFut => vc.s ! sp ! st ! TPres ! p.b ; + _ => vc.s ! sp ! st ! TPast ! p.b + } + } ; + a_stem = \\sp,a,st => vc.a_stem ! sp ; + i_stem = \\sp,a,st => vc.i_stem ! sp ; + te = \\sp,a,st => vc.te ! sp ! p.b ; + ba = \\sp,a,st => vc.ba ! sp ! p.b ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" + } ; + +} + +{- + +emptyNP : NP = lin NP {s = \\st => "" ; + prepositive = \\st => "" ; + needPart = False ; + changePolar = False ; + meaning = SomeoneElse ; + anim = Inanim} ; lin NP_Acc_Chunk np = np ; NP_Gen_Chunk np = ss (np.s ++ de_s) ; VPI_Chunk vpi = vpi ; - - copula_inf_Chunk = ss copula_s ; - - refl_SgP1_Chunk = ss reflPron ; - refl_SgP2_Chunk = ss reflPron ; - refl_SgP3_Chunk = ss reflPron ; - refl_PlP1_Chunk = ss reflPron ; - refl_PlP2_Chunk = ss reflPron ; - refl_PlP3_Chunk = ss reflPron ; - neg_Chunk = ss neg_s ; - copula_Chunk = ss copula_s ; - copula_neg_Chunk = ss (neg_s ++ copula_s) ; - past_copula_Chunk = ss "了" ; - past_copula_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ; - future_Chunk = ss copula_s ; ---- - future_neg_Chunk = ss (neg_s ++ copula_s) ; - cond_Chunk = ss copula_s ; ---- - cond_neg_Chunk = ss (neg_s ++ copula_s) ; - perfect_Chunk = ss "了" ; - perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ; - past_perfect_Chunk = ss "了" ; - past_perfect_neg_Chunk = ss (neg_s ++ copula_s ++ "了") ; - -} - -} diff --git a/lib/src/japanese/AdverbJpn.gf b/lib/src/japanese/AdverbJpn.gf index 8f6843cb9..0b899b99e 100644 --- a/lib/src/japanese/AdverbJpn.gf +++ b/lib/src/japanese/AdverbJpn.gf @@ -30,7 +30,6 @@ flags coding = utf8 ; SubjS subj s = { s = \\st => case subj.type of { - If => s.ba ! Wa ! st ++ subj.s ; _ => s.s ! Wa ! st ++ subj.s } ; diff --git a/lib/src/japanese/CatJpn.gf b/lib/src/japanese/CatJpn.gf index 71e9754e0..0cf0cc74d 100644 --- a/lib/src/japanese/CatJpn.gf +++ b/lib/src/japanese/CatJpn.gf @@ -61,13 +61,13 @@ flags coding = utf8 ; -- 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 ; needSubject : Bool} ; + -- pass_ba : Polarity => Str} ; V3 = Verb3 ; -- {s : Speaker => Style => TTense => Polarity => Str ; a_stem, -- i_stem : Speaker => Str ; te, ba : Speaker => Polarity => -- Str ; prep1, prep2 : Str} ; - VV = ResJpn.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te, - -- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ; - -- sense : ModSense} ; + VV = ResJpn.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; + -- a_stem, i_stem : Speaker => Str ; + -- te, ba : Speaker => Polarity => Str ; sense : ModSense} ; VS = Verb2 ; VQ = Verb2 ; VA = Verb ; diff --git a/lib/src/japanese/ExtraJpn.gf b/lib/src/japanese/ExtraJpn.gf index 05ac3839d..7076f6b84 100644 --- a/lib/src/japanese/ExtraJpn.gf +++ b/lib/src/japanese/ExtraJpn.gf @@ -1,9 +1,31 @@ concrete ExtraJpn of ExtraJpnAbs = CatJpn ** open ResJpn, Prelude, ParadigmsJpn in { +flags coding = utf8 ; + lincat Level = {s : Str ; l : Style} ; Part = {s : Str ; p : Particle} ; - + + VPS = {verb, a_stem, i_stem, te, ba : Speaker => Animateness => Style => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + + [VPS] = {verbAnd, verbOr, verbIf, a_stemAnd, a_stemOr, a_stemIf, + i_stemAnd, i_stemOr, i_stemIf, teAnd, teOr, teIf, + baAnd, baOr, baIf : Speaker => Animateness => Style => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + + VPI = {verb : Speaker => Animateness => Str ; + te, ba : Speaker => Animateness => Style => Polarity => Str ; + a_stem, i_stem : Speaker => Animateness => Style => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + + [VPI] = {verbAnd, verbOr : Speaker => Animateness => Str ; + a_stemAnd, a_stemOr, i_stemAnd, i_stemOr : Speaker => Animateness => Style => Str ; + teAnd, teOr, baAnd, baOr : Speaker => Animateness => Style => Polarity => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + + Foc = {s : Particle => Style => TTense => Polarity => Str ; changePolar : Bool} ; + lin Honorific = {s = [] ; l = Resp} ; Informal = {s = [] ; l = Plain} ; @@ -30,4 +52,530 @@ concrete ExtraJpn of ExtraJpnAbs = CatJpn ** open ResJpn, Prelude, ParadigmsJpn } } } ; - } ; + + GenNP np = { + s,sp = \\st => np.prepositive ! st ++ np.s ! st ++ "の" ; + no = False + } ; + + GenIP ip = {s = ip.s_obj ! Resp ++ "の"} ; + + GenRP num cn = { + s = \\st => num.s ++ cn.s ! num.n ! st ; + null = False + } ; + + CompBareCN cn = { + verb = \\a => mkCopula.s ; + te = \\a,st => mkCopula.te ; + ba = \\a,st => mkCopula.ba ; + a_stem = \\a,st => "では" ; + i_stem = \\a,st => "になり" ; -- "become" - for wishes + obj = \\st => cn.s ! Sg ! st ; + prepositive = cn.prepositive ; + needSubject = True + } ; + + StrandRelSlash rp clslash = { + s = \\_,st,t,p => case rp.null of { + True => rp.s ! st ++ clslash.s ! st ! t ! p ; + False => clslash.subj ! Ga ! st ++ rp.s ! st ++ clslash.pred ! Plain ! t ! p + } ; + te = \\_,st,p => case rp.null of { + True => rp.s ! st ++ clslash.te ! st ! p ; + False => clslash.subj ! Ga ! st ++ rp.s ! st ++ clslash.pred_te ! st ! p + } ; + changePolar = clslash.changePolar ; + subj = \\part,st => rp.s ! st ++ clslash.subj ! part ! st ; + pred = \\_,st,t,p => clslash.pred ! st ! t ! p ; + pred_te = \\a => clslash.pred_te ; + pred_ba = \\a => clslash.pred_ba ; + missingSubj = False + } ; + + EmptyRelSlash clslash = { + s = \\_,st,t,p => clslash.s ! st ! t ! p ; + te = \\_,st,p => clslash.te ! st ! p ; + changePolar = clslash.changePolar ; + subj = \\part,st => clslash.subj ! part ! st ; + pred = \\_,st,t,p => clslash.pred ! st ! t ! p ; + pred_te = \\a => clslash.pred_te ; + pred_ba = \\a => clslash.pred_ba ; + missingSubj = False + } ; + + MkVPI vp = { + verb = \\sp,a => vp.verb ! sp ! a ! Plain ! TPres ! Pos ; + a_stem = vp.a_stem ; + i_stem = vp.i_stem ; + te = vp.te ; + ba = vp.ba ; + prep = vp.prep ; + obj = vp.obj ; + prepositive = vp.prepositive + } ; + + ComplVPIVV v vpi = case v.sense of { + Abil => { + verb = \\sp,a,st,t,p => vpi.verb ! sp ! a ++ "ことが" ++ v.s ! sp ! st ! t ! p ; + te = \\sp,a,st,p => vpi.verb ! sp ! a ++ "ことが" ++ v.te ! sp ! p ; + a_stem = \\sp,a,st => vpi.verb ! sp ! a ++ "ことが" ++ v.a_stem ! sp ; + i_stem = \\sp,a,st => vpi.verb ! sp ! a ++ "ことが" ++ v.i_stem ! sp ; + ba = \\sp,a,st,p => vpi.verb ! sp ! a ++ "ことが" ++ v.ba ! sp ! p ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" ; + needSubject = True + } ; + Oblig => { + verb = \\sp,a,st,t => table { + Pos => vpi.a_stem ! sp ! a ! st ++ "なければ" ++ v.s ! sp ! st ! t ! Neg ; + Neg => vpi.te ! sp ! a ! st ! Pos ++ "は" ++ v.s ! sp ! st ! t ! Neg + } ; + te = \\sp,a,st => table { + Pos => vpi.a_stem ! sp ! a ! st ++ "なければ" ++ v.te ! sp ! Pos ; + Neg => vpi.te ! sp ! a ! st ! Pos ++ "は" ++ v.te ! sp ! Pos + } ; + a_stem = \\sp,a,st => vpi.a_stem ! sp ! a ! st ++ "なければ" ++ v.a_stem ! sp ; + i_stem = \\sp,a,st => vpi.a_stem ! sp ! a ! st ++ "なければ" ++ v.i_stem ! sp ; + ba = \\sp,a,st => table { + Pos => vpi.a_stem ! sp ! a ! st ++ "なければ" ++ v.ba ! sp ! Pos ; + Neg => vpi.te ! sp ! a ! st ! Pos ++ "は" ++ v.ba ! sp ! Pos + } ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" ; + needSubject = True + } ; + Wish => { + verb = \\sp,a,st,t,p => vpi.i_stem ! sp ! a ! st ++ v.s ! sp ! st ! t ! p ; + te = \\sp,a,st,p => vpi.i_stem ! sp ! a ! st ++ v.te ! sp ! p ; + a_stem = \\sp,a,st => vpi.i_stem ! sp ! a ! st ++ v.a_stem ! sp ; + i_stem = \\sp,a,st => vpi.i_stem ! sp ! a ! st ++ v.i_stem ! sp ; + ba = \\sp,a,st,p => vpi.i_stem ! sp ! a ! st ++ v.ba ! sp ! p ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" ; + needSubject = True + } + } ; + + MkVPS t p vp = { + verb = \\sp,a,st => case t.a of { + Simul => vp.verb ! sp ! a ! st ! t.t ! p.b ; + Anter => case t.t of { + TFut => vp.verb ! sp ! a ! st ! TPres ! p.b ; + _ => vp.verb ! sp ! a ! st ! TPast ! p.b + } + } ; + a_stem = vp.a_stem ; + i_stem = vp.i_stem ; + te = \\sp,a,st => vp.te ! sp ! a ! st ! p.b ; + ba = \\sp,a,st => vp.ba ! sp ! a ! st ! p.b ; + prep = vp.prep ; + obj = vp.obj ; + prepositive = vp.prepositive + } ; + + ConjVPI conj vpi = case conj.type of { + (And | Both | IfConj) => { -- "if" is hardly possible + verb = \\sp,a => conj.null ++ vpi.verbAnd ! sp ! a ; + a_stem = \\sp,a,st => conj.null ++ vpi.a_stemAnd ! sp ! a ! st ; + i_stem = \\sp,a,st => conj.null ++ vpi.i_stemAnd ! sp ! a ! st ; + te = \\sp,a,st,p => conj.null ++ vpi.teAnd ! sp ! a ! st ! p ; + ba = \\sp,a,st,p => conj.null ++ vpi.baAnd ! sp ! a ! st ! p ; + prep = vpi.prep ; + obj = vpi.obj ; + prepositive = vpi.prepositive + } ; + Or => { + verb = \\sp,a => conj.null ++ vpi.verbOr ! sp ! a ; + a_stem = \\sp,a,st => conj.null ++ vpi.a_stemOr ! sp ! a ! st ; + i_stem = \\sp,a,st => conj.null ++ vpi.i_stemOr ! sp ! a ! st ; + te = \\sp,a,st,p => conj.null ++ vpi.teOr ! sp ! a ! st ! p ; + ba = \\sp,a,st,p => conj.null ++ vpi.baOr ! sp ! a ! st ! p ; + prep = vpi.prep ; + obj = vpi.obj ; + prepositive = vpi.prepositive + } + } ; + + ConjVPS conj vps = case conj.type of { + (And | Both) => { + verb = \\sp,a,st => conj.null ++ vps.verbAnd ! sp ! a ! st ; + a_stem = \\sp,a,st => conj.null ++ vps.a_stemAnd ! sp ! a ! st ; + i_stem = \\sp,a,st => conj.null ++ vps.i_stemAnd ! sp ! a ! st ; + te = \\sp,a,st => conj.null ++ vps.teAnd ! sp ! a ! st ; + ba = \\sp,a,st => conj.null ++ vps.baAnd ! sp ! a ! st ; + prep = vps.prep ; + obj = vps.obj ; + prepositive = vps.prepositive + } ; + Or => { + verb = \\sp,a,st => conj.null ++ vps.verbOr ! sp ! a ! st ; + a_stem = \\sp,a,st => conj.null ++ vps.a_stemOr ! sp ! a ! st ; + i_stem = \\sp,a,st => conj.null ++ vps.i_stemOr ! sp ! a ! st ; + te = \\sp,a,st => conj.null ++ vps.teOr ! sp ! a ! st ; + ba = \\sp,a,st => conj.null ++ vps.baOr ! sp ! a ! st ; + prep = vps.prep ; + obj = vps.obj ; + prepositive = vps.prepositive + } ; + IfConj => { + verb = \\sp,a,st => conj.null ++ vps.verbIf ! sp ! a ! st ; + a_stem = \\sp,a,st => conj.null ++ vps.a_stemIf ! sp ! a ! st ; + i_stem = \\sp,a,st => conj.null ++ vps.i_stemIf ! sp ! a ! st ; + te = \\sp,a,st => conj.null ++ vps.teIf ! sp ! a ! st ; + ba = \\sp,a,st => conj.null ++ vps.baIf ! sp ! a ! st ; + prep = vps.prep ; + obj = vps.obj ; + prepositive = vps.prepositive + } + } ; + + PredVPS np vps = case np.needPart of { + True => { + s = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "は" ++ + vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "が" ++ + vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st + } ; + te = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "は" ++ + vps.obj ! st ++ vps.prep ++ vps.te ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "が" ++ + vps.obj ! st ++ vps.prep ++ vps.te ! np.meaning ! np.anim ! st + } ; + ba = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "は" ++ + vps.obj ! st ++ vps.prep ++ vps.ba ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "が" ++ + vps.obj ! st ++ vps.prep ++ vps.ba ! np.meaning ! np.anim ! st + } ; + subj = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "は" ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ "が" + } ; + pred = \\st => vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st ; + pred_te = \\st => vps.obj ! st ++ vps.prep ++ vps.te ! np.meaning ! np.anim ! st ; + pred_ba = \\st => vps.obj ! st ++ vps.prep ++ vps.ba ! np.meaning ! np.anim ! st + } ; + False => { + s = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ + vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ + vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st + } ; + te = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ vps.obj ! st ++ + vps.prep ++ vps.te ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ vps.obj ! st ++ + vps.prep ++ vps.te ! np.meaning ! np.anim ! st + } ; + ba = table { + Wa => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ vps.obj ! st ++ + vps.prep ++ vps.ba ! np.meaning ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ++ vps.obj ! st ++ + vps.prep ++ vps.ba ! np.meaning ! np.anim ! st + } ; + subj = \\part,st => np.prepositive ! st ++ vps.prepositive ! st ++ np.s ! st ; + pred = \\st => vps.obj ! st ++ vps.prep ++ vps.verb ! np.meaning ! np.anim ! st ; + pred_te = \\st => vps.obj ! st ++ vps.prep ++ vps.te ! np.meaning ! np.anim ! st ; + pred_ba = \\st => vps.obj ! st ++ vps.prep ++ vps.ba ! np.meaning ! np.anim ! st + } + } ; + + BaseVPI x y = { + verbAnd = \\sp,a => x.prepositive ! Resp ++ x.obj ! Resp ++ x.prep ++ x.te ! sp ! a ! Resp ! Pos ++ + y.prepositive ! Resp ++ y.obj ! Resp ++ y.prep ++ y.verb ! sp ! a ; + verbOr = \\sp,a => x.prepositive ! Resp ++ x.obj ! Resp ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + y.prepositive ! Resp ++ y.obj ! Resp ++ y.prep ++ y.verb ! sp ! a ; + a_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.a_stem ! sp ! a ! st ; + a_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.a_stem ! sp ! a ! st ; + i_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.i_stem ! sp ! a ! st ; + i_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.i_stem ! sp ! a ! st ; + teAnd = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.te ! sp ! a ! st ! p ; + teOr = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.te ! sp ! a ! st ! p ; + baAnd = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.ba ! sp ! a ! st ! p ; + baOr = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.ba ! sp ! a ! st ! p ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" + } ; + + ConsVPI x xs = { + verbAnd = \\sp,a => x.prepositive ! Resp ++ x.obj ! Resp ++ x.prep ++ x.te ! sp ! a ! Resp ! Pos ++ + xs.verbAnd ! sp ! a ; + verbOr = \\sp,a => x.prepositive ! Resp ++ x.obj ! Resp ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + xs.verbOr ! sp ! a ; + a_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + xs.a_stemAnd ! sp ! a ! st ; + a_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + xs.a_stemOr ! sp ! a ! st ; + i_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + xs.i_stemAnd ! sp ! a ! st ; + i_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + xs.i_stemOr ! sp ! a ! st ; + teAnd = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + xs.teAnd ! sp ! a ! st ! p ; + teOr = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + xs.teOr ! sp ! a ! st ! p ; + baAnd = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ! Pos ++ + xs.baAnd ! sp ! a ! st ! p ; + baOr = \\sp,a,st,p => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ++ "か" ++ + xs.baOr ! sp ! a ! st ! p ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" + } ; + + BaseVPS x y = { + verbAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.verb ! sp ! a ! st ; + verbOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.verb ! sp ! a ! st ; + verbIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.verb ! sp ! a ! st ; + a_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.a_stem ! sp ! a ! st ; + a_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.a_stem ! sp ! a ! st ; + a_stemIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.a_stem ! sp ! a ! st ; + i_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.i_stem ! sp ! a ! st ; + i_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.i_stem ! sp ! a ! st ; + i_stemIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.i_stem ! sp ! a ! st ; + teAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.te ! sp ! a ! st ; + teOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.te ! sp ! a ! st ; + teIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.te ! sp ! a ! st ; + baAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.ba ! sp ! a ! st ; + baOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.ba ! sp ! a ! st ; + baIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + y.prepositive ! st ++ y.obj ! st ++ y.prep ++ y.ba ! sp ! a ! st ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" + } ; + + ConsVPS x xs = { + verbAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + xs.verbAnd ! sp ! a ! st ; + verbOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + xs.verbOr ! sp ! a ! st ; + verbIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + xs.verbIf ! sp ! a ! st ; + a_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + xs.a_stemAnd ! sp ! a ! st ; + a_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + xs.a_stemOr ! sp ! a ! st ; + a_stemIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + xs.a_stemIf ! sp ! a ! st ; + i_stemAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + xs.i_stemAnd ! sp ! a ! st ; + i_stemOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + xs.i_stemOr ! sp ! a ! st ; + i_stemIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + xs.i_stemIf ! sp ! a ! st ; + teAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + xs.teAnd ! sp ! a ! st ; + teOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + xs.teOr ! sp ! a ! st ; + teIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + xs.teIf ! sp ! a ! st ; + baAnd = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.te ! sp ! a ! st ++ + xs.baAnd ! sp ! a ! st ; + baOr = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.verb ! sp ! a ! st ++ "か" ++ + xs.baOr ! sp ! a ! st ; + baIf = \\sp,a,st => x.prepositive ! st ++ x.obj ! st ++ x.prep ++ x.ba ! sp ! a ! st ++ "、" ++ + xs.baIf ! sp ! a ! st ; + prep = "" ; + obj = \\st => "" ; + prepositive = \\st => "" + } ; + + ICompAP ap = { + s = \\st => ap.prepositive ! st ++ "どのくらい" ++ ap.dropNaEnging ! st ; + wh8re = False + } ; + + IAdvAdv adv = { + s = \\st => "どの" ++ adv.s ! st ; + particle = "" ; + wh8re = False + } ; + + CompIQuant iquant = { + s = \\st => iquant.s ; + wh8re = False + } ; + + PrepCN prep cn = { + s = \\st => cn.prepositive ! st ++ cn.object ! st ++ cn.s ! Sg ! st ++ prep.s ; + prepositive = False + } ; + + FocObj np clslash = { + s = \\part,st,t,p => clslash.subj ! part ! st ++ np.prepositive ! st ++ + np.s ! st ++ "を" ++ clslash.pred ! st ! t ! p ; + changePolar = np.changePolar + } ; + + FocAdv adv cl = { + s = \\part,st,t,p => adv.s ! st ++ cl.s ! part ! st ! t ! p ; + changePolar = cl.changePolar + } ; + + FocAdV adV cl = { + s = \\part,st,t,p => adV.s ++ cl.s ! part ! st ! t ! p ; + changePolar = cl.changePolar + } ; + + FocAP ap np = { -- no focal constructions in Jpn + s = case np.needPart of { + True => table { + Wa => \\st,t,p => np.prepositive ! st ++ ap.prepositive ! st ++ np.s ! st ++ "は" ++ + ap.pred ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ ap.prepositive ! st ++ np.s ! st ++ "が" ++ + ap.pred ! st ! t ! p + } ; + False => table { + Wa => \\st,t,p => np.prepositive ! st ++ ap.prepositive ! st ++ np.s ! st ++ + ap.pred ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ ap.prepositive ! st ++ np.s ! st ++ + ap.pred ! st ! t ! p + } + } ; + changePolar = np.changePolar + } ; + + FocNeg cl = { + s = \\part,st,t,p => cl.s ! part ! st ! t ! p ; + changePolar = True + } ; + + FocVP vp np = { + s = case np.needPart of { + True => table { + Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ + vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ + vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p + } ; + False => table { + Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p + } + } ; + changePolar = np.changePolar + } ; + + FocVV v vp np = { -- no focal constructions in Jpn + s = case v.sense of { + Abil => case np.needPart of { + True => table { + Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + "は" ++ vp.obj ! st ++ vp.prep ++ + vp.verb ! np.meaning ! np.anim ! Plain ! TPres ! ResJpn.Pos ++ + "ことが" ++ v.s ! np.meaning ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + "が" ++ vp.obj ! st ++ vp.prep ++ + vp.verb ! np.meaning ! np.anim ! Plain ! TPres ! ResJpn.Pos ++ + "ことが" ++ v.s ! np.meaning ! st ! t ! p + } ; + False => \\part,st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ + vp.verb ! np.meaning ! np.anim ! Plain ! TPres ! ResJpn.Pos ++ + "ことが" ++ v.s ! np.meaning ! st ! t ! p + } ; + Oblig => case np.needPart of { + True => table { + Wa => \\st,t => table { + Pos => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ + vp.obj ! st ++ vp.prep ++ vp.a_stem ! np.meaning ! np.anim ! st ++ + "なければ" ++ v.s ! np.meaning ! st ! t ! Neg ; + Neg => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ + vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! Pos ++ + "は" ++ v.s ! np.meaning ! st ! t ! Neg + } ; + Ga => \\st,t => table { + Pos => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ + vp.obj ! st ++ vp.prep ++ vp.a_stem ! np.meaning ! np.anim ! st ++ + "なければ" ++ v.s ! np.meaning ! st ! t ! Neg ; + Neg => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ + vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! Pos ++ + "は" ++ v.s ! np.meaning ! st ! t ! Neg + } + } ; + False => \\part,st,t => table { + Pos => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ vp.a_stem ! np.meaning ! np.anim ! st ++ + "なければ" ++ v.s ! np.meaning ! st ! t ! Neg ; + Neg => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! Pos ++ + "は" ++ v.s ! np.meaning ! st ! t ! Neg + } + } ; + Wish => case np.needPart of { + True => table { + Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + "は" ++ vp.obj ! st ++ vp.prep ++ + vp.i_stem ! np.meaning ! np.anim ! st ++ + v.s ! np.meaning ! st ! t ! p ; + Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + "が" ++ vp.obj ! st ++ vp.prep ++ + vp.i_stem ! np.meaning ! np.anim ! st ++ + v.s ! np.meaning ! st ! t ! p + } ; + False => \\part,st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + vp.obj ! st ++ vp.prep ++ vp.i_stem ! np.meaning ! np.anim ! st ++ + v.s ! np.meaning ! st ! t ! p + } + } ; + changePolar = np.changePolar + } ; + + + UseFoc t p foc = { + s = \\part,st => case t.a of { + Simul => case foc.changePolar of { + False => t.s ++ p.s ++ foc.s ! part ! st ! t.t ! p.b ; + True => t.s ++ p.s ++ foc.s ! part ! st ! t.t ! Neg + } ; + Anter => case t.t of { + TPres => case foc.changePolar of { + False => t.s ++ p.s ++ foc.s ! part ! st ! TPast ! p.b ; + True => t.s ++ p.s ++ foc.s ! part ! st ! TPast ! Neg + } ; + TPast => case foc.changePolar of { + False => t.s ++ p.s ++ foc.s ! part ! st ! TPast ! p.b ; + True => t.s ++ p.s ++ foc.s ! part ! st ! TPast ! Neg + } ; + TFut => case foc.changePolar of { + False => t.s ++ p.s ++ foc.s ! part ! st ! TPres ! p.b ; + True => t.s ++ p.s ++ foc.s ! part ! st ! TPres ! Neg + } + } + } ; + type = NoImp + } ; + } diff --git a/lib/src/translator/DictionaryJpn.gf b/lib/src/translator/DictionaryJpn.gf index 2e55b0de1..bf4fecae8 100644 --- a/lib/src/translator/DictionaryJpn.gf +++ b/lib/src/translator/DictionaryJpn.gf @@ -8132,7 +8132,7 @@ lin neutrality_N = mkN "中立" ; lin neutralization_N = mkN "中和" ; lin neutrino_N = mkN "中性微子" | mkN "ニュートリノ" ; lin neutron_N = mkN "中性子" ; -lin never_Adv = mkAdv "決して" | mkAdv "何時でも" | mkAdv "曾て" | mkAdv "万々" ; +lin never_Adv = mkAdv "決して" | mkAdv "何時でも" | mkAdv "曾て" | mkAdv "万々" | mkAdv "絶対に" ; lin nevertheless_Adv = mkAdv "それでも" | mkAdv "やはり" | mkAdv "それにもかかわらず" | mkAdv "しかも" ; lin new_A = L.new_A | mkA "新しい" ; lin newfangled_A = mkA "新しもの好きの" ; @@ -8370,10 +8370,12 @@ lin official_A = mkA "公式" | mkA "公の" ; lin offline_A = mkA "オフライン" ; lin offshore_A = mkA "オフショア" ; lin offspring_N = mkN "胤" ; -lin often_Adv = mkAdv "よく" | mkAdv "度々" | mkAdv "頻繁に" | mkAdv "しばしば" ; +lin often_Adv = mkAdv "よく" | mkAdv "度々" | mkAdv "頻繁に" | + mkAdv "しばしば" | mkAdv "くらい" ; -- "くらい" for "how often" lin ogre_N = mkN "鬼" ; lin ogress_N = mkN "鬼女" ; -lin oh_Interj = mkInterj "あら" | mkInterj "おや" | mkInterj "まあ" | mkInterj "ああ" | mkInterj "へえ" | mkInterj "お" | mkInterj "あ" ; +lin oh_Interj = mkInterj "あら" | mkInterj "おや" | mkInterj "まあ" | mkInterj "ああ" | + mkInterj "へえ" | mkInterj "お" | mkInterj "あ" ; lin ohm_N = mkN "オーム" ; lin oil_N = L.oil_N | mkN "石油" | mkN "油" ; lin oil_V2 = mkV2 "油を塗る" ; @@ -9186,7 +9188,7 @@ lin plead_V = mkV "嘆願する" ; lin plead_V2 = mkV2 "嘆願する" ; lin plead_VS = mkVS "嘆願する" ; lin pleasant_A = mkA "愉快な" ; -lin please_Adv = mkAdv "...ください" | mkAdv "どうぞ" | mkAdv "お願いします" | mkAdv "...をください" | mkAdv "please]" ; +lin please_Adv = mkAdv "ください" | mkAdv "どうぞ" | mkAdv "お願いします" | mkAdv "をください" ; lin please_V = mkV "喜ばす" ; lin please_V2 = mkV2 "喜ばす" ; lin please_V2V = mkV2V "喜ばす" ; diff --git a/lib/src/translator/ExtensionsJpn.gf b/lib/src/translator/ExtensionsJpn.gf index 0c89fa93d..0c162aa73 100644 --- a/lib/src/translator/ExtensionsJpn.gf +++ b/lib/src/translator/ExtensionsJpn.gf @@ -3,34 +3,65 @@ concrete ExtensionsJpn of Extensions = CatJpn ** open ResJpn, ParadigmsJpn, SyntaxJpn, (G = GrammarJpn), (E = ExtraJpn), Prelude in { -{- ----- TODO: everything. But consult TranslateJpn.gf to see what is not needed - lincat + VPI = E.VPI ; VPS = E.VPS ; + [VPS] = {verbAnd, verbOr, verbIf, a_stemAnd, a_stemOr, a_stemIf, + i_stemAnd, i_stemOr, i_stemIf, teAnd, teOr, teIf, + baAnd, baOr, baIf : Speaker => Animateness => Style => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + [VPI] = {verbAnd, verbOr : Speaker => Animateness => Str ; + a_stemAnd, a_stemOr, i_stemAnd, i_stemOr : Speaker => Animateness => Style => Str ; + teAnd, teOr, baAnd, baOr : Speaker => Animateness => Style => Polarity => Str ; + prep : Str ; obj, prepositive : Style => Str} ; + +lin + + MkVPI = E.MkVPI ; + MkVPS = E.MkVPS ; + + ComplVPIVV = E.ComplVPIVV ; + + PredVPS = E.PredVPS ; + ConjVPS = E.ConjVPS ; + ConjVPI = E.ConjVPI ; + BaseVPS = E.BaseVPS ; + ConsVPS = E.ConsVPS ; + BaseVPI = E.BaseVPI ; + ConsVPI = E.ConsVPI ; + + GenNP = E.GenNP ; + GenIP = E.GenIP ; + GenRP = E.GenRP ; + + CompoundN n1 n2 = { + s = \\n,st => n1.s ! n ! st ++ n2.s ! n ! st ; + anim = n2.anim ; + counter = n2.counter ; + counterReplace = n2.counterReplace ; + counterTsu = n2.counterTsu + } ; + + CompoundAP n a = { + pred = \\st,t,p => n.s ! Sg ! st ++ "に" ++ a.pred ! st ! t ! p ; + attr = \\st => n.s ! Sg ! st ++ "に" ++ a.attr ; + adv = \\st => n.s ! Sg ! st ++ "に" ++ a.adv ! Pos ; + dropNaEnging = \\st => n.s ! Sg ! st ++ "に" ++ a.dropNaEnging ; + prepositive = \\st => "" ; + te = \\st,p => n.s ! Sg ! st ++ "に" ++ a.te ! p ; + ba = \\st,p => n.s ! Sg ! st ++ "に" ++ a.ba ! p ; + needSubject = True + } ; + +{- +---- TODO: everything. But consult TranslateJpn.gf to see what is not needed ListVPI = E.ListVPI ; ListVPS = E.ListVPS ; lin - MkVPI = E.MkVPI ; - ConjVPI = E.ConjVPI ; ----- ComplVPIVV = E.ComplVPIVV ; - - MkVPS = E.MkVPS ; - ConjVPS = E.ConjVPS ; - PredVPS = E.PredVPS ; - - BaseVPI = E.BaseVPI ; - ConsVPI = E.ConsVPI ; - BaseVPS = E.BaseVPS ; - ConsVPS = E.ConsVPS ; - - GenNP = E.GenNP ; ----- GenIP = E.GenIP ; - GenRP = E.GenRP ; PassVPSlash = E.PassVPSlash ; PassAgentVPSlash = E.PassAgentVPSlash ;