fixes to Ja

This commit is contained in:
aarne
2012-06-01 13:43:24 +00:00
parent c1dc5b7355
commit 0ea5455e24
11 changed files with 146 additions and 108 deletions

View File

@@ -11,7 +11,8 @@ flags coding = utf8 ;
ba = \\st => adj.ba ; ba = \\st => adj.ba ;
adv = \\st => adj.adv ! Pos ; adv = \\st => adj.adv ! Pos ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
dropNaEnging = \\st => adj.dropNaEnging dropNaEnging = \\st => adj.dropNaEnging ;
needSubject = True
} ; } ;
ComparA adj np = { ComparA adj np = {
@@ -22,6 +23,7 @@ flags coding = utf8 ;
adv = \\st => np.s ! st ++ "より" ++ adj.adv ! Pos ; adv = \\st => np.s ! st ++ "より" ++ adj.adv ! Pos ;
prepositive = np.prepositive ; prepositive = np.prepositive ;
dropNaEnging = \\st => np.s ! st ++ "より" ++ adj.dropNaEnging ; dropNaEnging = \\st => np.s ! st ++ "より" ++ adj.dropNaEnging ;
needSubject = True
} ; } ;
ComplA2 a2 np = { ComplA2 a2 np = {
@@ -31,7 +33,8 @@ flags coding = utf8 ;
ba = \\st,p => np.s ! st ++ a2.prep ++ a2.ba ! p ; ba = \\st,p => np.s ! st ++ a2.prep ++ a2.ba ! p ;
prepositive = np.prepositive ; prepositive = np.prepositive ;
adv = \\st => np.s ! st ++ a2.prep ++ a2.adv ! Pos ; 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 = { ReflA2 a2 = {
@@ -41,7 +44,8 @@ flags coding = utf8 ;
ba = \\st,p => "自分" ++ a2.prep ++ a2.ba ! p ; ba = \\st,p => "自分" ++ a2.prep ++ a2.ba ! p ;
adv = \\st => "自分" ++ a2.prep ++ a2.adv ! Pos ; adv = \\st => "自分" ++ a2.prep ++ a2.adv ! Pos ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging ;
needSubject = True
} ; } ;
UseA2 a2 = { UseA2 a2 = {
@@ -51,7 +55,8 @@ flags coding = utf8 ;
ba = \\st => a2.ba ; ba = \\st => a2.ba ;
adv = \\st => a2.adv ! Pos ; adv = \\st => a2.adv ! Pos ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
dropNaEnging = \\st => a2.dropNaEnging dropNaEnging = \\st => a2.dropNaEnging ;
needSubject = True
} ; } ;
UseComparA adj = { UseComparA adj = {
@@ -61,7 +66,8 @@ flags coding = utf8 ;
ba = \\st,p => "もっと" ++ adj.ba ! p ; ba = \\st,p => "もっと" ++ adj.ba ! p ;
adv = \\st => "もっと" ++ adj.adv ! Pos ; adv = \\st => "もっと" ++ adj.adv ! Pos ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging ;
needSubject = True
} ; } ;
CAdvAP cadv ap np = { CAdvAP cadv ap np = {
@@ -95,7 +101,8 @@ flags coding = utf8 ;
dropNaEnging = \\st => case cadv.less of { dropNaEnging = \\st => case cadv.less of {
True => np.s ! st ++ cadv.s ++ ap.pred ! Plain ! TPres ! Neg ; True => np.s ! st ++ cadv.s ++ ap.pred ! Plain ! TPres ! Neg ;
False => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st False => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st
} } ;
needSubject = True
} ; } ;
AdjOrd ord = { AdjOrd ord = {
@@ -105,7 +112,8 @@ flags coding = utf8 ;
ba = \\st => ord.ba ; ba = \\st => ord.ba ;
adv = \\st => ord.adv ! Pos ; adv = \\st => ord.adv ! Pos ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
dropNaEnging = \\st => ord.dropNaEnging dropNaEnging = \\st => ord.dropNaEnging ;
needSubject = True
} ; } ;
SentAP ap sc = { SentAP ap sc = {
@@ -115,7 +123,8 @@ flags coding = utf8 ;
ba = \\st,p => sc.s ! Wa ! st ++ "ことが" ++ ap.ba ! st ! p ; ba = \\st,p => sc.s ! Wa ! st ++ "ことが" ++ ap.ba ! st ! p ;
adv = \\st => sc.s ! Wa ! st ++ "ことが" ++ ap.adv ! st ; adv = \\st => sc.s ! Wa ! st ++ "ことが" ++ ap.adv ! st ;
prepositive = ap.prepositive ; 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 = { AdAP ada ap = {
@@ -125,7 +134,8 @@ flags coding = utf8 ;
ba = \\st,p => ada.s ++ ap.ba ! st ! p ; ba = \\st,p => ada.s ++ ap.ba ! st ! p ;
adv = \\st => ada.s ++ ap.adv ! st ; adv = \\st => ada.s ++ ap.adv ! st ;
prepositive = ap.prepositive ; prepositive = ap.prepositive ;
dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st ;
needSubject = True
} ; } ;
AdvAP ap adv = { AdvAP ap adv = {
@@ -156,6 +166,7 @@ flags coding = utf8 ;
dropNaEnging = \\st => case adv.prepositive of { dropNaEnging = \\st => case adv.prepositive of {
True => ap.dropNaEnging ! st ; True => ap.dropNaEnging ! st ;
False => adv.s ! st ++ ap.dropNaEnging ! st False => adv.s ! st ++ ap.dropNaEnging ! st
} } ;
needSubject = True
} ; } ;
} }

View File

@@ -18,8 +18,8 @@ flags coding = utf8 ;
ComparAdvAdjS cadv a s = { ComparAdvAdjS cadv a s = {
s = \\st => case cadv.less of { s = \\st => case cadv.less of {
True => s.subj ! Ga ! st ++ s.pred ! Plain ++ cadv.s ++ a.adv ! Neg ; 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 False => s.subj ! Ga ! st ++ s.pred ! Plain ++ "こと" ++ cadv.s ++ a.adv ! Pos
} ; } ;
prepositive = False} ; prepositive = False} ;
@@ -38,4 +38,4 @@ flags coding = utf8 ;
} ; } ;
AdnCAdv cadv = {s = cadv.s_adn ; postposition = True} ; AdnCAdv cadv = {s = cadv.s_adn ; postposition = True} ;
} }

View File

@@ -32,15 +32,16 @@ flags coding = utf8 ;
VP = ResJap.VP ; -- {verb : Speaker => Animateness => Style => TTense => Polarity => Str ; VP = ResJap.VP ; -- {verb : Speaker => Animateness => Style => TTense => Polarity => Str ;
-- a_stem, i_stem : Speaker => Animateness => Style => Str ; -- a_stem, i_stem : Speaker => Animateness => Style => Str ;
-- te, ba : Speaker => Animateness => Style => Polarity => 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 : Comp = {verb : Animateness => Style => TTense => Polarity => Str ; a_stem, i_stem :
Animateness => Style => Str ; te, ba : Animateness => Style => Polarity => Str ; 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 ; VPSlash = {s : Speaker => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Str ; te, ba : Speaker => Polarity => Str ; a_stem, i_stem : Speaker => Str ; te, ba : Speaker => Polarity => Str ;
prep : Str ; obj : Style => Str ; prepositive : Style => Str ; v2vType : Bool} ; prep : Str ; obj : Style => Str ; prepositive : Style => Str ; v2vType : Bool} ;
AP = {pred : Style => TTense => Polarity => Str ; attr, adv, dropNaEnging, prepositive : 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 ; NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ;
-- changePolar : Bool ; meaning : Speaker ; anim : Animateness} ; -- changePolar : Bool ; meaning : Speaker ; anim : Animateness} ;
CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ; CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ;
@@ -60,18 +61,18 @@ flags coding = utf8 ;
Subj = Subjunction ; -- {s : Str ; type : SubjType} ; Subj = Subjunction ; -- {s : Str ; type : SubjType} ;
Prep = Preposition ; -- {s : Str ; null : Str} ; Prep = Preposition ; -- {s : Str ; null : Str} ;
V = Verb ; -- {s : Style => TTense => Polarity => Str ; a_stem, i_stem : 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, 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} ; -- pass_ba : Polarity => Str ; needSubject : Bool} ;
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 = ResJap.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te, VV = ResJap.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te,
-- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ; -- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ;
-- sense : ModSense} ; -- sense : ModSense} ;
VS = Verb ** {prep : Str} ; VS = Verb2 ;
VQ = Verb ; VQ = Verb2 ;
VA = Verb ; VA = Verb ;
V2V = Verb ; V2V = Verb ;
V2S = Verb ; V2S = Verb ;
@@ -86,4 +87,4 @@ flags coding = utf8 ;
N3 = Noun ** {prep1 : Str; prep2 : Str} ; N3 = Noun ** {prep1 : Str; prep2 : Str} ;
PN = PropNoun ; -- {s : Style => Str ; anim : Animateness} ; PN = PropNoun ; -- {s : Style => Str ; anim : Animateness} ;
} }

View File

@@ -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 ; ba = \\st,p => conj.null ++ ap.s1and ! st ! p ++ ap.s2ba ! st ! p ;
adv = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2adv ! st ; adv = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2dropNaEnging ! st ; dropNaEnging = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive prepositive = ap.prepositive ;
needSubject = True
} ; } ;
Or => { Or => {
pred = \\st,t,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2pred ! st ! t ! p ; 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 ; ba = \\st,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2ba ! st ! p ;
adv = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2adv ! st ; adv = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2dropNaEnging ! st ; dropNaEnging = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive prepositive = ap.prepositive ;
needSubject = True
} }
} ; } ;

View File

@@ -4,33 +4,48 @@ flags coding = utf8 ;
lin lin
ImpersCl vp = { ImpersCl vp = case vp.needSubject of {
s = table { True => {
Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ s = table {
vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ; Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
Ga => \\st,t,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
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 { False => {
Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ s = \\part,st,t,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ; vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ te = \\part,st,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p vp.te ! SomeoneElse ! Inanim ! st ! p ;
} ; ba = \\part,st,p => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
ba = table { vp.ba ! SomeoneElse ! Inanim ! st ! p ;
Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ subj = \\part,st => vp.prepositive ! st ;
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
} ; changePolar = False
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
} ; } ;
GenericCl vp = { GenericCl vp = {
@@ -79,28 +94,13 @@ flags coding = utf8 ;
ExistNP np = case np.needPart of { ExistNP np = case np.needPart of {
True => { True => {
s = table { s = \\part,st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
Wa => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ; te = \\part,st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
Ga => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ba = \\part,st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
} ; mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ;
te = table { subj = \\part,st => np.prepositive ! st ++ np.s ! st ++ "が" ;
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 ++ "が"
} ;
pred = \\st,t,p => mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ; pred = \\st,t,p => mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
pred_te = \\st,p => mkExistV.te ! SomeoneElse ! np.anim ! st ! p ; pred_te = \\st,p => mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
pred_ba = \\st,p => mkExistV.ba ! 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 ; ba = \\sp,a,st,p => vp.te ! sp ! a ! st ! Pos ++ mkExistV.ba ! SomeoneElse ! Anim ! st ! p ;
prep = vp.prep ; prep = vp.prep ;
obj = vp.obj ; 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 ++ ImpPl1 vp = {s = \\part,st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++

View File

@@ -9,10 +9,10 @@ flags coding = utf8 ;
True => case cn.counterReplace of { True => case cn.counterReplace of {
True => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive ; True => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive ;
False => case <det.tenPlus, cn.counterTsu> of { False => case <det.tenPlus, cn.counterTsu> of {
<True, True> => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++ <True, True> => cn.object ! st ++ det.quant ! st ++ det.num ++ det.postpositive ++
"の" ++ det.num ++ det.postpositive ; "の" ++ cn.s ! det.n ! st ;
_ => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++ "の" ++ _ => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive
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 False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.s ! det.n ! st
@@ -327,7 +327,7 @@ flags coding = utf8 ;
} ; } ;
ApposCN cn np = { 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 ; object = cn.object ;
prepositive = cn.prepositive ; prepositive = cn.prepositive ;
hasAttr = cn.hasAttr ; hasAttr = cn.hasAttr ;

View File

@@ -49,4 +49,4 @@ flags coding = utf8 ;
IdRP = {s = \\st => [] ; null = True} ; IdRP = {s = \\st => [] ; null = True} ;
FunRP prep np rp = {s = \\st => np.prepositive ! st ++ np.s ! st ; null = False} ; FunRP prep np rp = {s = \\st => np.prepositive ! st ++ np.s ! st ; null = False} ;
} }

View File

@@ -28,7 +28,8 @@ oper
VP : Type = {verb : Speaker => Animateness => Style => TTense => Polarity => Str ; VP : Type = {verb : Speaker => Animateness => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Animateness => Style => Str ; a_stem, i_stem : Speaker => Animateness => Style => Str ;
te, ba : Speaker => Animateness => Style => Polarity => 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 ; Noun : Type = {s : Number => Style => Str ; anim : Animateness ;
counter : Str ; counterReplace : Bool ; counterTsu : Bool} ; counter : Str ; counterReplace : Bool ; counterTsu : Bool} ;
@@ -45,7 +46,7 @@ oper
tenPlus : Bool} ; tenPlus : Bool} ;
Preposition : Type = {s : Str ; null : Str} ; Preposition : Type = {s : Str ; null : Str} ;
Verb : Type = {s : Style => TTense => Polarity => Str ; a_stem, i_stem : 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, 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} ; 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 : Verb3 : Type = {s : Speaker => Style => TTense => Polarity => Str ; a_stem, i_stem :
@@ -203,7 +204,8 @@ oper
ba = table { ba = table {
Pos => mkBaForm yomu gr ; Pos => mkBaForm yomu gr ;
Neg => yoma + "なければ" Neg => yoma + "なければ"
} } ;
needSubject = True
} ; } ;
mkVerb2 : Str -> Str -> VerbGroup -> Verb2 = mkVerb2 : Str -> Str -> VerbGroup -> Verb2 =
@@ -318,7 +320,8 @@ oper
Suru => Predef.tk 2 yomu + "されなければ" ; Suru => Predef.tk 2 yomu + "されなければ" ;
Kuru => "来られなければ" Kuru => "来られなければ"
} }
} } ;
needSubject = True
} ; } ;
mkVerb3 : Str -> Str -> Str -> VerbGroup -> Verb3 = mkVerb3 : Str -> Str -> Str -> VerbGroup -> Verb3 =
@@ -420,7 +423,8 @@ oper
} }
} ; } ;
prep = [] ; prep = [] ;
prepositive, obj = \\st => [] prepositive, obj = \\st => [] ;
needSubject = True
} ; } ;
mkWant : VV = { mkWant : VV = {
@@ -670,7 +674,8 @@ oper
ba = table { ba = table {
Pos => "雨が降れば" ; Pos => "雨が降れば" ;
Neg => "雨が降らなければ" Neg => "雨が降らなければ"
} } ;
needSubject = False
} ; } ;
} }

View File

@@ -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_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 ; pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
changePolar = np.changePolar changePolar = np.changePolar
} }
} ; } ;
PredSCVP sc vp = case sc.isVP of { PredSCVP sc vp = case sc.isVP of {
@@ -171,7 +171,7 @@ flags coding = utf8 ;
} ; } ;
Plain => table { Plain => table {
Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++ 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 ++ Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Pos ++ "な" vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Pos ++ "な"
} }

View File

@@ -6,9 +6,9 @@ lin
TEmpty = {s = ""} ; 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} ; TExclMark phr txt = {s = phr.s ++ "" ++ txt.s} ;
} }

View File

@@ -12,7 +12,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = \\sp,a,st => v.ba ; ba = \\sp,a,st => v.ba ;
prep = [] ; prep = [] ;
obj = \\st => [] ; obj = \\st => [] ;
prepositive = \\st => [] prepositive = \\st => [] ;
needSubject = v.needSubject
} ; } ;
ComplVV v vp = case v.sense of { ComplVV v vp = case v.sense of {
@@ -29,7 +30,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
v.ba ! sp ! p ; v.ba ! sp ! p ;
prep = vp.prep ; prep = vp.prep ;
obj = \\st => vp.obj ! st ; obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive prepositive = vp.prepositive ;
needSubject = True
} ; } ;
Oblig => { Oblig => {
verb = \\sp,a,st,t => table { verb = \\sp,a,st,t => table {
@@ -48,7 +50,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
} ; } ;
prep = vp.prep ; prep = vp.prep ;
obj = \\st => vp.obj ! st ; obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive prepositive = vp.prepositive ;
needSubject = True
} ; } ;
Wish => { Wish => {
verb = \\sp,a,st,t,p => vp.i_stem ! sp ! a ! st ++ v.s ! sp ! st ! t ! p ; 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 ; ba = \\sp,a,st,p => vp.i_stem ! sp ! a ! st ++ v.ba ! sp ! p ;
prep = vp.prep ; prep = vp.prep ;
obj = \\st => vp.obj ! st ; 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 ; ba = \\sp,a,st => vs.ba ;
prep = vs.prep ; prep = vs.prep ;
obj = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ; obj = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ;
prepositive = \\st => [] prepositive = \\st => [] ;
needSubject = True
} ; } ;
ComplVQ vq qs = { ComplVQ vq qs = {
@@ -81,7 +86,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = \\sp,a,st => vq.ba ; ba = \\sp,a,st => vq.ba ;
prep = "" ; prep = "" ;
obj = \\st => qs.s_plain_pred ! Ga ! st ; obj = \\st => qs.s_plain_pred ! Ga ! st ;
prepositive = \\st => [] prepositive = \\st => [] ;
needSubject = True
} ; } ;
ComplVA va ap = { ComplVA va ap = {
@@ -92,7 +98,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = \\sp,a,st => va.ba ; ba = \\sp,a,st => va.ba ;
prep = [] ; prep = [] ;
obj = \\st => ap.adv ! st ; obj = \\st => ap.adv ! st ;
prepositive = ap.prepositive prepositive = ap.prepositive ;
needSubject = True
} ; } ;
SlashV2a v2 = { SlashV2a v2 = {
@@ -194,7 +201,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
False => vpslash.obj ! st ++ np.s ! st False => vpslash.obj ! st ++ np.s ! st
} ; } ;
te = \\sp,a,st,p => vpslash.te ! sp ! p ; 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 { SlashVV v vpslash = case v.sense of {
@@ -268,7 +276,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
prep = vpslash.prep ; prep = vpslash.prep ;
obj = \\st => vpslash.obj ! st ++ "自分" ; -- "jibun" obj = \\st => vpslash.obj ! st ++ "自分" ; -- "jibun"
te = \\sp,a,st,p => vpslash.te ! sp ! p ; te = \\sp,a,st,p => vpslash.te ! sp ! p ;
prepositive = vpslash.prepositive prepositive = vpslash.prepositive ;
needSubject = True
} ; } ;
UseComp comp = { UseComp comp = {
@@ -279,7 +288,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = \\sp => comp.ba ; ba = \\sp => comp.ba ;
prep = [] ; prep = [] ;
obj = comp.obj ; obj = comp.obj ;
prepositive = comp.prepositive prepositive = comp.prepositive ;
needSubject = comp.needSubject
} ; } ;
PassV2 v2 = { PassV2 v2 = {
@@ -290,7 +300,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = \\sp,a,st => v2.pass_ba ; ba = \\sp,a,st => v2.pass_ba ;
prep = [] ; prep = [] ;
obj = \\st => [] ; obj = \\st => [] ;
prepositive = \\st => [] prepositive = \\st => [] ;
needSubject = True
} ; } ;
AdvVP vp adv = { AdvVP vp adv = {
@@ -307,7 +318,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
prepositive = \\st => case adv.prepositive of { prepositive = \\st => case adv.prepositive of {
True => vp.prepositive ! st ++ adv.s ! st ; True => vp.prepositive ! st ++ adv.s ! st ;
False => vp.prepositive ! st False => vp.prepositive ! st
} } ;
needSubject = vp.needSubject
} ; } ;
AdVVP adv vp = { AdVVP adv vp = {
@@ -318,7 +330,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = vp.ba ; ba = vp.ba ;
prep = vp.prep ; prep = vp.prep ;
obj = \\st => adv.s ++ vp.obj ! st ; obj = \\st => adv.s ++ vp.obj ! st ;
prepositive = vp.prepositive prepositive = vp.prepositive ;
needSubject = vp.needSubject
} ; } ;
AdvVPSlash vpslash adv = { AdvVPSlash vpslash adv = {
@@ -358,7 +371,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
i_stem = \\a,st => ap.adv ! st ++ "なり" ; i_stem = \\a,st => ap.adv ! st ++ "なり" ;
ba = \\a => ap.ba ; ba = \\a => ap.ba ;
obj = \\st => [] ; obj = \\st => [] ;
prepositive = ap.prepositive prepositive = ap.prepositive ;
needSubject = ap.needSubject
} ; } ;
CompNP np = { CompNP np = {
@@ -368,7 +382,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
a_stem = \\a,st => "では" ; a_stem = \\a,st => "では" ;
i_stem = \\a,st => "になり" ; -- "become" - for wishes i_stem = \\a,st => "になり" ; -- "become" - for wishes
obj = \\st => np.s ! st ; obj = \\st => np.s ! st ;
prepositive = np.prepositive prepositive = np.prepositive ;
needSubject = True
} ; } ;
CompAdv adv = { CompAdv adv = {
@@ -384,7 +399,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
prepositive = \\st => case adv.prepositive of { prepositive = \\st => case adv.prepositive of {
True => adv.s ! st ; True => adv.s ! st ;
False => [] False => []
} } ;
needSubject = True
} ; } ;
CompCN cn = { CompCN cn = {
@@ -394,7 +410,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
a_stem = \\a,st => "では" ; a_stem = \\a,st => "では" ;
i_stem = \\a,st => "になり" ; -- "become" - for wishes i_stem = \\a,st => "になり" ; -- "become" - for wishes
obj = \\st => cn.s ! Sg ! st ; obj = \\st => cn.s ! Sg ! st ;
prepositive = cn.prepositive prepositive = cn.prepositive ;
needSubject = True
} ; } ;
UseCopula = { UseCopula = {
@@ -405,7 +422,8 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
i_stem = \\sp,a,st => "なり" ; -- "become" - for wishes i_stem = \\sp,a,st => "なり" ; -- "become" - for wishes
obj = \\st => [] ; obj = \\st => [] ;
prepositive = \\st => [] ; prepositive = \\st => [] ;
prep = [] prep = [] ;
needSubject = True
} ; } ;
} }