mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-25 02:38:55 -06:00
Jpn19.01.15
This commit is contained in:
@@ -1,59 +1,144 @@
|
|||||||
concrete ChunkJpn of Chunk = {} ;
|
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,
|
||||||
---- TODO: everything. Since CatJpn.Utt is not {s : Str}, nothing works in the functor
|
colon_Chunk, semicolon_Chunk, quote_Chunk, lpar_Chunk,
|
||||||
|
rpar_Chunk, dash_Chunk]
|
||||||
CatJpn, ExtensionsJpn [VPS,VPI] **
|
|
||||||
ChunkFunctor
|
|
||||||
with (Syntax = SyntaxJpn), (Extensions = ExtensionsJpn) **
|
with (Syntax = SyntaxJpn), (Extensions = ExtensionsJpn) **
|
||||||
open
|
open
|
||||||
SyntaxJpn, (E = ExtensionsJpn), Prelude,
|
SyntaxJpn, (E = ExtensionsJpn), Prelude,
|
||||||
ResJpn, (P = ParadigmsJpn) in {
|
ResJpn, (P = ParadigmsJpn) in {
|
||||||
|
|
||||||
oper
|
flags coding = utf8 ;
|
||||||
emptyNP : NP = mkNP [] ;
|
|
||||||
|
|
||||||
-- exceptions to functor
|
lincat
|
||||||
|
|
||||||
|
VC = {s : Speaker => Style => TTense => Polarity => Str ;
|
||||||
|
a_stem, i_stem : Speaker => Str ;
|
||||||
|
te, ba : Speaker => Polarity => Str} ;
|
||||||
|
|
||||||
lin
|
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
|
lin
|
||||||
NP_Acc_Chunk np = np ;
|
NP_Acc_Chunk np = np ;
|
||||||
NP_Gen_Chunk np = ss (np.s ++ de_s) ;
|
NP_Gen_Chunk np = ss (np.s ++ de_s) ;
|
||||||
|
|
||||||
VPI_Chunk vpi = vpi ;
|
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 ++ "了") ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
-}
|
-}
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ flags coding = utf8 ;
|
|||||||
|
|
||||||
SubjS subj s = {
|
SubjS subj s = {
|
||||||
s = \\st => case subj.type of {
|
s = \\st => case subj.type of {
|
||||||
|
|
||||||
If => s.ba ! Wa ! st ++ subj.s ;
|
If => s.ba ! Wa ! st ++ subj.s ;
|
||||||
_ => s.s ! Wa ! st ++ subj.s
|
_ => s.s ! Wa ! st ++ subj.s
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -61,13 +61,13 @@ flags coding = utf8 ;
|
|||||||
-- Str ; te, ba : Polarity => Str ; needSubject : Bool}
|
-- Str ; te, ba : Polarity => Str ; needSubject : Bool}
|
||||||
V2 = Verb2 ; -- {s, pass : Style => TTense => Polarity => Str ; a_stem, i_stem,
|
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_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,
|
V3 = Verb3 ; -- {s : Speaker => Style => TTense => Polarity => Str ; a_stem,
|
||||||
-- i_stem : Speaker => Str ; te, ba : Speaker => Polarity =>
|
-- i_stem : Speaker => Str ; te, ba : Speaker => Polarity =>
|
||||||
-- Str ; prep1, prep2 : Str} ;
|
-- Str ; prep1, prep2 : Str} ;
|
||||||
VV = ResJpn.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te,
|
VV = ResJpn.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ;
|
||||||
-- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ;
|
-- a_stem, i_stem : Speaker => Str ;
|
||||||
-- sense : ModSense} ;
|
-- te, ba : Speaker => Polarity => Str ; sense : ModSense} ;
|
||||||
VS = Verb2 ;
|
VS = Verb2 ;
|
||||||
VQ = Verb2 ;
|
VQ = Verb2 ;
|
||||||
VA = Verb ;
|
VA = Verb ;
|
||||||
|
|||||||
@@ -1,9 +1,31 @@
|
|||||||
concrete ExtraJpn of ExtraJpnAbs = CatJpn ** open ResJpn, Prelude, ParadigmsJpn in {
|
concrete ExtraJpn of ExtraJpnAbs = CatJpn ** open ResJpn, Prelude, ParadigmsJpn in {
|
||||||
|
|
||||||
|
flags coding = utf8 ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Level = {s : Str ; l : Style} ;
|
Level = {s : Str ; l : Style} ;
|
||||||
Part = {s : Str ; p : Particle} ;
|
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
|
lin
|
||||||
Honorific = {s = [] ; l = Resp} ;
|
Honorific = {s = [] ; l = Resp} ;
|
||||||
Informal = {s = [] ; l = Plain} ;
|
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
|
||||||
|
} ;
|
||||||
|
}
|
||||||
|
|||||||
@@ -8132,7 +8132,7 @@ lin neutrality_N = mkN "中立" ;
|
|||||||
lin neutralization_N = mkN "中和" ;
|
lin neutralization_N = mkN "中和" ;
|
||||||
lin neutrino_N = mkN "中性微子" | mkN "ニュートリノ" ;
|
lin neutrino_N = mkN "中性微子" | mkN "ニュートリノ" ;
|
||||||
lin neutron_N = 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 nevertheless_Adv = mkAdv "それでも" | mkAdv "やはり" | mkAdv "それにもかかわらず" | mkAdv "しかも" ;
|
||||||
lin new_A = L.new_A | mkA "新しい" ;
|
lin new_A = L.new_A | mkA "新しい" ;
|
||||||
lin newfangled_A = mkA "新しもの好きの" ;
|
lin newfangled_A = mkA "新しもの好きの" ;
|
||||||
@@ -8370,10 +8370,12 @@ lin official_A = mkA "公式" | mkA "公の" ;
|
|||||||
lin offline_A = mkA "オフライン" ;
|
lin offline_A = mkA "オフライン" ;
|
||||||
lin offshore_A = mkA "オフショア" ;
|
lin offshore_A = mkA "オフショア" ;
|
||||||
lin offspring_N = mkN "胤" ;
|
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 ogre_N = mkN "鬼" ;
|
||||||
lin ogress_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 ohm_N = mkN "オーム" ;
|
||||||
lin oil_N = L.oil_N | mkN "石油" | mkN "油" ;
|
lin oil_N = L.oil_N | mkN "石油" | mkN "油" ;
|
||||||
lin oil_V2 = mkV2 "油を塗る" ;
|
lin oil_V2 = mkV2 "油を塗る" ;
|
||||||
@@ -9186,7 +9188,7 @@ lin plead_V = mkV "嘆願する" ;
|
|||||||
lin plead_V2 = mkV2 "嘆願する" ;
|
lin plead_V2 = mkV2 "嘆願する" ;
|
||||||
lin plead_VS = mkVS "嘆願する" ;
|
lin plead_VS = mkVS "嘆願する" ;
|
||||||
lin pleasant_A = mkA "愉快な" ;
|
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_V = mkV "喜ばす" ;
|
||||||
lin please_V2 = mkV2 "喜ばす" ;
|
lin please_V2 = mkV2 "喜ばす" ;
|
||||||
lin please_V2V = mkV2V "喜ばす" ;
|
lin please_V2V = mkV2V "喜ばす" ;
|
||||||
|
|||||||
@@ -3,34 +3,65 @@
|
|||||||
concrete ExtensionsJpn of Extensions =
|
concrete ExtensionsJpn of Extensions =
|
||||||
CatJpn ** open ResJpn, ParadigmsJpn, SyntaxJpn, (G = GrammarJpn), (E = ExtraJpn), Prelude in {
|
CatJpn ** open ResJpn, ParadigmsJpn, SyntaxJpn, (G = GrammarJpn), (E = ExtraJpn), Prelude in {
|
||||||
|
|
||||||
{-
|
|
||||||
---- TODO: everything. But consult TranslateJpn.gf to see what is not needed
|
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|
||||||
VPI = E.VPI ;
|
VPI = E.VPI ;
|
||||||
VPS = E.VPS ;
|
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 ;
|
ListVPI = E.ListVPI ;
|
||||||
|
|
||||||
ListVPS = E.ListVPS ;
|
ListVPS = E.ListVPS ;
|
||||||
|
|
||||||
lin
|
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 ;
|
PassVPSlash = E.PassVPSlash ;
|
||||||
PassAgentVPSlash = E.PassAgentVPSlash ;
|
PassAgentVPSlash = E.PassAgentVPSlash ;
|
||||||
|
|||||||
Reference in New Issue
Block a user