forked from GitHub/gf-rgl
Merge branch 'master' into fix-must-dolzhen
This commit is contained in:
@@ -487,7 +487,7 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
||||
_ + "í" => jarniAdjForms s ;
|
||||
_ + "ův" => otcuvAdjForms s ;
|
||||
_ + "in" => matcinAdjForms s ;
|
||||
_ => matcinAdjForms ("??" + s) -- Predef.error ("no mkA for" ++ s)
|
||||
_ => matcinAdjForms ("" + s) -- Predef.error ("no mkA for" ++ s)
|
||||
} ;
|
||||
|
||||
-- hard declension
|
||||
|
||||
@@ -3,38 +3,37 @@ concrete AdverbJpn of Adverb = CatJpn ** open ResJpn, ParadigmsJpn, Prelude in {
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
|
||||
PositAdvAdj a = {s = \\st => a.adv ! Pos ; prepositive = False} ;
|
||||
|
||||
PrepNP prep np = {s = \\st => np.s ! st ++ prep.s ;
|
||||
|
||||
PrepNP prep np = {s = \\st => np.s ! st ++ prep.s ;
|
||||
prepositive = False} ;
|
||||
|
||||
|
||||
ComparAdvAdj cadv a np = {
|
||||
s = \\st => case cadv.less of {
|
||||
True => np.s ! st ++ cadv.s ++ a.adv ! Neg ;
|
||||
False => np.s ! st ++ cadv.s ++ a.adv ! Pos
|
||||
} ;
|
||||
False => np.s ! st ++ cadv.s ++ a.adv ! Pos
|
||||
} ;
|
||||
prepositive = False} ;
|
||||
|
||||
|
||||
ComparAdvAdjS cadv a s = {
|
||||
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
|
||||
} ;
|
||||
prepositive = False} ;
|
||||
|
||||
AdAdv ada adv = {s = \\st => ada.s ++ adv.s ! st ;
|
||||
prepositive = adv.prepositive} ;
|
||||
|
||||
|
||||
AdAdv ada adv = adv ** {s = \\st => ada.s ++ adv.s ! st} ;
|
||||
|
||||
PositAdAAdj a = {s = a.adv ! Pos } ;
|
||||
|
||||
|
||||
SubjS subj s = {
|
||||
s = \\st => case subj.type of {
|
||||
If => s.ba ! Wa ! st ++ subj.s ;
|
||||
_ => s.s ! Wa ! st ++ subj.s
|
||||
} ;
|
||||
} ;
|
||||
prepositive = True
|
||||
} ;
|
||||
|
||||
|
||||
AdnCAdv cadv = {s = cadv.s_adn ; postposition = True} ;
|
||||
}
|
||||
|
||||
@@ -52,16 +52,12 @@ flags coding = utf8 ;
|
||||
anim = pron.anim
|
||||
} ;
|
||||
|
||||
PredetNP p np = {
|
||||
PredetNP p np = np ** {
|
||||
s = \\st => p.s ++ np.s ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
needPart = np.needPart ;
|
||||
changePolar = case p.not of {
|
||||
True => True ;
|
||||
False => np.changePolar
|
||||
} ;
|
||||
meaning = np.meaning ;
|
||||
anim = np.anim
|
||||
} ;
|
||||
|
||||
PPartNP np v2 = np ** {
|
||||
@@ -180,13 +176,11 @@ flags coding = utf8 ;
|
||||
|
||||
DefArt = {s = \\st => "" ; sp = \\st => "これ" ; no = False} ;
|
||||
|
||||
MassNP cn = {
|
||||
MassNP cn = cn ** {
|
||||
s = \\st => cn.object ! st ++ cn.s ! Pl ! st ;
|
||||
prepositive = cn.prepositive ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
meaning = SomeoneElse ;
|
||||
anim = cn.anim
|
||||
} ;
|
||||
|
||||
PossPron pron = {
|
||||
@@ -245,8 +239,8 @@ flags coding = utf8 ;
|
||||
False => adv.s ! st ++ cn.object ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
True => adv.s ! st ++ cn.prepositive ! st ;
|
||||
False => cn.prepositive ! st
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
|
||||
|
||||
UseV v = {
|
||||
verb = \\sp,a,st,t,p => v.s ! st ! t ! p ;
|
||||
te = \\sp,a,st => v.te ;
|
||||
@@ -11,61 +11,52 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
i_stem = \\sp,a,st => v.i_stem ;
|
||||
ba = \\sp,a,st => v.ba ;
|
||||
prep = [] ;
|
||||
obj = \\st => [] ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
needSubject = v.needSubject
|
||||
} ;
|
||||
|
||||
|
||||
ComplVV v vp = case v.sense of {
|
||||
Abil => {
|
||||
verb = \\sp,a,st,t,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
Abil => vp ** {
|
||||
verb = \\sp,a,st,t,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ことが" ++ v.s ! sp ! st ! t ! p ;
|
||||
te = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.te ! sp ! p ;
|
||||
a_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
te = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.te ! sp ! p ;
|
||||
a_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ことが" ++ v.a_stem ! sp ;
|
||||
i_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
i_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ことが" ++ v.i_stem ! sp ;
|
||||
ba = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
ba = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.ba ! sp ! p ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
needSubject = True
|
||||
} ;
|
||||
Oblig => {
|
||||
Oblig => vp ** {
|
||||
verb = \\sp,a,st,t => table {
|
||||
Pos => vp.a_stem ! sp ! a ! st ++ "なければ" ++ v.s ! sp ! st ! t ! Neg ;
|
||||
Neg => vp.te ! sp ! a ! st ! Pos ++ "は" ++ v.s ! sp ! st ! t ! Neg
|
||||
} ;
|
||||
te = \\sp,a,st => table {
|
||||
Pos => vp.a_stem ! sp ! a ! st ++ "なければ" ++ v.te ! sp ! Pos ;
|
||||
Neg => vp.te ! sp ! a ! st ! Pos ++ "は" ++ v.te ! sp ! Pos
|
||||
Neg => vp.te ! sp ! a ! st ! Pos ++ "は" ++ v.te ! sp ! Pos
|
||||
} ;
|
||||
a_stem = \\sp,a,st => vp.a_stem ! sp ! a ! st ++ "なければ" ++ v.a_stem ! sp ;
|
||||
i_stem = \\sp,a,st => vp.a_stem ! sp ! a ! st ++ "なければ" ++ v.i_stem ! sp ;
|
||||
ba = \\sp,a,st => table {
|
||||
Pos => vp.a_stem ! sp ! a ! st ++ "なければ" ++ v.ba ! sp ! Pos ;
|
||||
Neg => vp.te ! sp ! a ! st ! Pos ++ "は" ++ v.ba ! sp ! Pos
|
||||
Neg => vp.te ! sp ! a ! st ! Pos ++ "は" ++ v.ba ! sp ! Pos
|
||||
} ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
needSubject = True
|
||||
} ;
|
||||
Wish => {
|
||||
Wish => vp ** {
|
||||
verb = \\sp,a,st,t,p => vp.i_stem ! sp ! a ! st ++ v.s ! sp ! st ! t ! p ;
|
||||
te = \\sp,a,st,p => vp.i_stem ! sp ! a ! st ++ v.te ! sp ! p ;
|
||||
a_stem = \\sp,a,st => vp.i_stem ! sp ! a ! st ++ v.a_stem ! sp ;
|
||||
i_stem = \\sp,a,st => vp.i_stem ! sp ! a ! st ++ v.i_stem ! sp ;
|
||||
ba = \\sp,a,st,p => vp.i_stem ! sp ! a ! st ++ v.ba ! sp ! p ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
needSubject = True
|
||||
}
|
||||
} ;
|
||||
|
||||
}
|
||||
} ;
|
||||
|
||||
ComplVS vs sent = {
|
||||
verb = \\sp,a,st,t,p => vs.s ! st ! t ! p ;
|
||||
te = \\sp,a,st => vs.te ;
|
||||
@@ -77,7 +68,7 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prepositive = \\st => [] ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
ComplVQ vq qs = {
|
||||
verb = \\sp,a,st,t,p => vq.s ! st ! t ! p ;
|
||||
te = \\sp,a,st => vq.te ;
|
||||
@@ -89,7 +80,7 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prepositive = \\st => [] ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
ComplVA va ap = {
|
||||
verb = \\sp,a,st,t,p => va.s ! st ! t ! p ;
|
||||
te = \\sp,a,st => va.te ;
|
||||
@@ -113,7 +104,7 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
te = \\sp => v2.te ;
|
||||
v2vType = False
|
||||
} ;
|
||||
|
||||
|
||||
Slash2V3 v3 np = {
|
||||
s = \\sp,st,t,p => v3.s ! np.meaning ! st ! t ! p ;
|
||||
a_stem = \\sp => v3.a_stem ! np.meaning ;
|
||||
@@ -125,26 +116,25 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
te = \\sp,p => v3.te ! np.meaning ! p ;
|
||||
v2vType = False
|
||||
} ;
|
||||
|
||||
|
||||
Slash3V3 = Slash2V3 ;
|
||||
|
||||
SlashV2V v2v vp = {
|
||||
s = \\sp,st,t,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように"
|
||||
|
||||
SlashV2V v2v vp = vp ** {
|
||||
s = \\sp,st,t,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように"
|
||||
++ v2v.s ! st ! t ! p ;
|
||||
a_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++
|
||||
a_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ように" ++ v2v.a_stem ;
|
||||
i_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++
|
||||
i_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ように" ++ v2v.i_stem ;
|
||||
ba = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++
|
||||
ba = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++
|
||||
v2v.ba ! p ;
|
||||
prep = "に" ;
|
||||
obj = \\st => vp.obj ! st ++ vp.prep ;
|
||||
te = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++
|
||||
v2v.te ! p ;
|
||||
prepositive = vp.prepositive ;
|
||||
te = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++
|
||||
v2v.te ! p ;
|
||||
v2vType = True
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2S v2s s = {
|
||||
s = \\sp,st,t,p => v2s.s ! st ! t ! p ;
|
||||
a_stem = \\sp => v2s.a_stem ;
|
||||
@@ -153,10 +143,10 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prep = "に" ;
|
||||
obj = \\st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "と" ;
|
||||
prepositive = \\st => [] ;
|
||||
te = \\sp => v2s.te ;
|
||||
te = \\sp => v2s.te ;
|
||||
v2vType = False
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2Q v2q qs = {
|
||||
s = \\sp,st,t,p => v2q.s ! st ! t ! p ;
|
||||
a_stem = \\sp => v2q.a_stem ;
|
||||
@@ -165,10 +155,10 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prep = "に" ;
|
||||
obj = \\st => qs.s_plain_pred ! Ga ! st ;
|
||||
prepositive = \\st => [] ;
|
||||
te = \\sp => v2q.te ;
|
||||
te = \\sp => v2q.te ;
|
||||
v2vType = True
|
||||
} ;
|
||||
|
||||
|
||||
SlashV2A v2a ap = {
|
||||
s = \\sp,st,t,p => v2a.s ! st ! t ! p ;
|
||||
a_stem = \\sp => v2a.a_stem ;
|
||||
@@ -177,14 +167,14 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prep = "を" ;
|
||||
obj = ap.adv ;
|
||||
prepositive = ap.prepositive ;
|
||||
te = \\sp => v2a.te ;
|
||||
te = \\sp => v2a.te ;
|
||||
v2vType = True
|
||||
} ;
|
||||
|
||||
|
||||
ComplSlash vpslash np = {
|
||||
verb = \\sp,a,st,t,p => case np.changePolar of {
|
||||
True => vpslash.s ! sp ! st ! t ! Neg ;
|
||||
False => vpslash.s ! sp ! st ! t ! p
|
||||
False => vpslash.s ! sp ! st ! t ! p
|
||||
} ;
|
||||
a_stem = \\sp,a,st => vpslash.a_stem ! sp ;
|
||||
i_stem = \\sp,a,st => vpslash.i_stem ! sp ;
|
||||
@@ -192,40 +182,37 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prep = case np.needPart of {
|
||||
True => case vpslash.v2vType of {
|
||||
True => [] ;
|
||||
False => vpslash.prep
|
||||
False => vpslash.prep
|
||||
} ;
|
||||
False => []
|
||||
False => []
|
||||
} ;
|
||||
obj = \\st => case vpslash.v2vType of {
|
||||
True => np.s ! st ++ vpslash.prep ++ vpslash.obj ! st ;
|
||||
False => vpslash.obj ! st ++ np.s ! st
|
||||
False => vpslash.obj ! st ++ np.s ! st
|
||||
} ;
|
||||
te = \\sp,a,st,p => vpslash.te ! sp ! p ;
|
||||
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
SlashVV v vpslash = case v.sense of {
|
||||
Abil => {
|
||||
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++
|
||||
Abil => vpslash ** {
|
||||
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++
|
||||
"ことが" ++ v.s ! sp ! st ! t ! p ;
|
||||
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.te ! sp ! p ;
|
||||
a_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.te ! sp ! p ;
|
||||
a_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.a_stem ! sp ;
|
||||
i_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
i_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.i_stem ! sp ;
|
||||
ba = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
ba = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ことが" ++
|
||||
v.ba ! sp ! p ;
|
||||
prep = vpslash.prep ;
|
||||
obj = vpslash.obj ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False
|
||||
} ;
|
||||
Oblig => {
|
||||
Oblig => vpslash ** {
|
||||
s = \\sp,st,t => table {
|
||||
Pos => vpslash.a_stem ! sp ++ "なければ" ++ v.s ! sp ! st ! t ! Neg ;
|
||||
Neg => vpslash.te ! sp ! Pos ++ "は" ++ v.s ! sp ! st ! t ! Neg
|
||||
Neg => vpslash.te ! sp ! Pos ++ "は" ++ v.s ! sp ! st ! t ! Neg
|
||||
} ;
|
||||
te = \\sp => table {
|
||||
Pos => vpslash.a_stem ! sp ++ "なければ" ++ v.te ! sp ! Pos ;
|
||||
@@ -237,38 +224,32 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
Pos => vpslash.a_stem ! sp ++ "なければ" ++ v.ba ! sp ! Pos ;
|
||||
Neg => vpslash.te ! sp ! Pos ++ "は" ++ v.ba ! sp ! Pos
|
||||
} ;
|
||||
prep = vpslash.prep ;
|
||||
obj = vpslash.obj ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False
|
||||
} ;
|
||||
Wish => {
|
||||
Wish => vpslash ** {
|
||||
s = \\sp,st,t,p => vpslash.i_stem ! sp ++ v.s ! sp ! st ! t ! p ;
|
||||
te = \\sp,p => vpslash.i_stem ! sp ++ v.te ! sp ! p ;
|
||||
a_stem = \\sp => vpslash.i_stem ! sp ++ v.a_stem ! sp ;
|
||||
i_stem = \\sp => vpslash.i_stem ! sp ++ v.i_stem ! sp ;
|
||||
ba = \\sp,p => vpslash.i_stem ! sp ++ v.ba ! sp ! p ;
|
||||
prep = vpslash.prep ;
|
||||
obj = vpslash.obj ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False
|
||||
}
|
||||
} ;
|
||||
}
|
||||
} ;
|
||||
|
||||
SlashV2VNP v2v np vpslash = {
|
||||
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように"
|
||||
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように"
|
||||
++ v2v.s ! st ! t ! p ;
|
||||
a_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++ v2v.a_stem ;
|
||||
i_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++ v2v.i_stem ;
|
||||
ba = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++ v2v.ba ! p ;
|
||||
prep = vpslash.prep ;
|
||||
obj = \\st => np.s ! st ++ "に" ++ vpslash.obj ! st ;
|
||||
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++ v2v.te ! p ;
|
||||
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJpn.Pos ++ "ように" ++ v2v.te ! p ;
|
||||
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ;
|
||||
v2vType = True
|
||||
} ;
|
||||
|
||||
ReflVP vpslash = {
|
||||
ReflVP vpslash = vpslash ** {
|
||||
verb = \\sp,a,st,t,p => vpslash.s ! sp ! st ! t ! p ;
|
||||
a_stem = \\sp,a,st => vpslash.a_stem ! sp ;
|
||||
i_stem = \\sp,a,st => vpslash.i_stem ! sp ;
|
||||
@@ -276,24 +257,21 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prep = vpslash.prep ;
|
||||
obj = \\st => vpslash.obj ! st ++ "自分" ; -- "jibun"
|
||||
te = \\sp,a,st,p => vpslash.te ! sp ! p ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
UseComp comp = {
|
||||
verb = \\sp,a,st,t,p => comp.verb ! a ! st ! t ! p;
|
||||
UseComp comp = comp ** {
|
||||
verb = \\sp,a,st,t,p => comp.verb ! a ! st ! t ! p;
|
||||
te = \\sp => comp.te ;
|
||||
a_stem = \\sp,a,st => comp.a_stem ! a ! st ;
|
||||
i_stem = \\sp,a,st => comp.i_stem ! a ! st ;
|
||||
ba = \\sp => comp.ba ;
|
||||
prep = [] ;
|
||||
obj = comp.obj ;
|
||||
prepositive = comp.prepositive ;
|
||||
needSubject = comp.needSubject
|
||||
obj = comp.obj ;
|
||||
} ;
|
||||
|
||||
|
||||
PassV2 v2 = {
|
||||
verb = \\sp,a,st,t,p => v2.pass ! st ! t ! p ;
|
||||
verb = \\sp,a,st,t,p => v2.pass ! st ! t ! p ;
|
||||
te = \\sp,a,st => v2.pass_te ;
|
||||
a_stem = \\sp,a,st => v2.pass_a_stem ;
|
||||
i_stem = \\sp,a,st => v2.pass_i_stem ;
|
||||
@@ -303,69 +281,41 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prepositive = \\st => [] ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
AdvVP vp adv = {
|
||||
verb = vp.verb ;
|
||||
te = vp.te ;
|
||||
a_stem = vp.a_stem ;
|
||||
i_stem = vp.i_stem ;
|
||||
ba = vp.ba ;
|
||||
prep = vp.prep ;
|
||||
|
||||
AdvVP vp adv = vp ** {
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => vp.obj ! st ;
|
||||
False => adv.s ! st ++ vp.obj ! st
|
||||
False => adv.s ! st ++ vp.obj ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => vp.prepositive ! st ++ adv.s ! st ;
|
||||
True => vp.prepositive ! st ++ adv.s ! st ;
|
||||
False => vp.prepositive ! st
|
||||
} ;
|
||||
needSubject = vp.needSubject
|
||||
} ;
|
||||
|
||||
|
||||
ExtAdvVP = AdvVP ;
|
||||
|
||||
AdVVP adv vp = {
|
||||
verb = vp.verb ;
|
||||
te = vp.te ;
|
||||
a_stem = vp.a_stem ;
|
||||
i_stem = vp.i_stem ;
|
||||
ba = vp.ba ;
|
||||
prep = vp.prep ;
|
||||
AdVVP adv vp = vp ** {
|
||||
obj = \\st => adv.s ++ vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
needSubject = vp.needSubject
|
||||
} ;
|
||||
|
||||
AdvVPSlash vpslash adv = {
|
||||
s = vpslash.s ;
|
||||
te = vpslash.te ;
|
||||
a_stem = vpslash.a_stem ;
|
||||
i_stem = vpslash.i_stem ;
|
||||
ba = vpslash.ba ;
|
||||
prep = vpslash.prep ;
|
||||
|
||||
AdvVPSlash vpslash adv = vpslash ** {
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => vpslash.obj ! st ;
|
||||
False => adv.s ! st ++ vpslash.obj ! st
|
||||
False => adv.s ! st ++ vpslash.obj ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => vpslash.prepositive ! st ++ adv.s ! st ;
|
||||
True => vpslash.prepositive ! st ++ adv.s ! st ;
|
||||
False => vpslash.prepositive ! st
|
||||
} ;
|
||||
v2vType = False
|
||||
} ;
|
||||
|
||||
AdVVPSlash adv vpslash = {
|
||||
s = vpslash.s ;
|
||||
te = vpslash.te ;
|
||||
a_stem = vpslash.a_stem ;
|
||||
i_stem = vpslash.i_stem ;
|
||||
ba = vpslash.ba ;
|
||||
prep = vpslash.prep ;
|
||||
|
||||
AdVVPSlash adv vpslash = vpslash ** {
|
||||
obj = \\st => adv.s ++ vpslash.obj ! st ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False
|
||||
} ;
|
||||
|
||||
|
||||
VPSlashPrep vp prep = {
|
||||
s = \\sp,st,t,p => vp.verb ! sp ! Anim ! st ! t ! p ;
|
||||
a_stem = \\sp => vp.a_stem ! sp ! Anim ! Plain ;
|
||||
@@ -379,16 +329,16 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
} ;
|
||||
|
||||
CompAP ap = {
|
||||
verb = \\a,st,t,p => ap.pred ! st ! t ! p ;
|
||||
verb = \\a,st,t,p => ap.pred ! st ! t ! p ;
|
||||
te = \\a => ap.te ;
|
||||
a_stem = \\a,st => ap.attr ! st ++ "では" ;
|
||||
i_stem = \\a,st => ap.adv ! st ++ "なり" ;
|
||||
ba = \\a => ap.ba ;
|
||||
obj = \\st => [] ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = ap.prepositive ;
|
||||
needSubject = ap.needSubject
|
||||
} ;
|
||||
|
||||
|
||||
CompNP np = {
|
||||
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
|
||||
te = \\a,st => mkCopula.te ;
|
||||
@@ -399,7 +349,7 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prepositive = np.prepositive ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
CompAdv adv = {
|
||||
verb = mkExistV.verb ! SomeoneElse ;
|
||||
te = mkExistV.te ! SomeoneElse ;
|
||||
@@ -408,15 +358,15 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
i_stem = mkExistV.i_stem ! SomeoneElse ;
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => [] ;
|
||||
False => adv.s ! st
|
||||
False => adv.s ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
CompCN cn = {
|
||||
verb = \\a => mkCopula.s ;
|
||||
te = \\a,st => mkCopula.te ;
|
||||
@@ -427,17 +377,16 @@ concrete VerbJpn of Verb = CatJpn ** open ResJpn, Prelude in {
|
||||
prepositive = cn.prepositive ;
|
||||
needSubject = True
|
||||
} ;
|
||||
|
||||
|
||||
UseCopula = {
|
||||
verb = \\sp,a => mkCopula.s ;
|
||||
verb = \\sp,a => mkCopula.s ;
|
||||
te = \\sp,a,st => mkCopula.te ;
|
||||
ba = \\sp,a,st => mkCopula.ba ;
|
||||
a_stem = \\sp,a,st => "では" ;
|
||||
i_stem = \\sp,a,st => "なり" ; -- "become" - for wishes
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
prep = [] ;
|
||||
needSubject = True
|
||||
} ;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,11 +8,13 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
PassVPSlash, PassAgentVPSlash, UttVPShort, ByVP, InOrderToVP,
|
||||
MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
||||
MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
|
||||
MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
|
||||
ICompAP,ProDrop,EmbedSSlash,
|
||||
AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP,
|
||||
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP,
|
||||
Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP,
|
||||
CompoundN, CompoundAP, AdvIsNP
|
||||
CompoundN, CompoundAP, AdvIsNP,
|
||||
UttAccNP
|
||||
]
|
||||
with (Grammar = GrammarSwe)
|
||||
**
|
||||
@@ -120,6 +122,56 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
|
||||
ConjVPS = conjunctDistrTable2 Order Agr ;
|
||||
|
||||
lincat
|
||||
VPS2 = {s : Order => Agr => Str ; c2 : {s : Str; hasPrep : Prelude.Bool}} ;
|
||||
[VPS2] = {s1,s2 : Order => Agr => Str ; c2 : {s : Str; hasPrep : Prelude.Bool}} ;
|
||||
|
||||
lin
|
||||
BaseVPS2 x y = twoTable2 Order Agr x y ** {c2 = y.c2} ;
|
||||
ConsVPS2 x xs = consrTable2 Order Agr comma x xs ** {c2 = xs.c2};
|
||||
|
||||
|
||||
MkVPS2 t p vp = {
|
||||
s = \\o,a =>
|
||||
let
|
||||
verb = vp.s ! Act ! VPFinite t.t t.a ;
|
||||
neg = verb.a1 ! p.p ! a ;
|
||||
compl = vp.n2 ! a ++ vp.a2 ++ vp.ext ;
|
||||
pron = vp.n1 ! a
|
||||
in t.s ++ p.s ++ case o of {
|
||||
Main => verb.fin ++ neg.p1 ++ verb.inf ++ pron ++ neg.p2 ++ compl ;
|
||||
Inv => verb.fin ++ neg.p1 ++ verb.inf ++ pron ++ neg.p2 ++ compl ; ----
|
||||
Sub => neg.p1 ++ neg.p2 ++ verb.fin ++ verb.inf ++ pron ++ compl
|
||||
} ;
|
||||
c2 = vp.c2
|
||||
} ;
|
||||
|
||||
ComplVPS2 vps2 np = {
|
||||
s = \\o,a => vps2.s !o ! a ++ vps2.c2.s ++ np.s ! NPAcc
|
||||
} ;
|
||||
|
||||
ConjVPS2 c xs = conjunctDistrTable2 Order Agr c xs ** {c2 = xs.c2} ;
|
||||
|
||||
lincat
|
||||
VPI2 = {s : VPIForm => Agr => Str ; c2 : {s : Str; hasPrep : Prelude.Bool}} ;
|
||||
[VPI2] = {s1,s2 : VPIForm => Agr => Str ; c2 : {s : Str; hasPrep : Prelude.Bool}} ;
|
||||
|
||||
lin
|
||||
BaseVPI2 x y = twoTable2 VPIForm Agr x y ** {c2 = y.c2} ;
|
||||
ConsVPI2 x xs = consrTable2 VPIForm Agr comma x xs ** {c2 = xs.c2} ;
|
||||
|
||||
MkVPI2 vp = {
|
||||
s = \\v,a => infVP vp a ; ---- no sup
|
||||
c2 = vp.c2
|
||||
} ;
|
||||
ConjVPI2 c xs = conjunctDistrTable2 VPIForm Agr c xs ** {c2 = xs.c2} ;
|
||||
|
||||
ComplVPI2 vpi2 np = {
|
||||
s = \\t,a => vpi2.s ! t ! a ++ vpi2.c2.s ++ np.s ! NPAcc
|
||||
} ;
|
||||
|
||||
-----------
|
||||
|
||||
ICompAP ap = {s = \\a => hur_IAdv.s ++ ap.s ! a} ;
|
||||
|
||||
ProDrop pro = pro ** {s = \\_ => []} ;
|
||||
@@ -234,4 +286,6 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a ; isPron = False} (UseComp (CompNP np)) ;
|
||||
|
||||
EmbedSSlash ss = {s = "det" ++ ss.s ! Main ++ ss.c2.s ++ ss.n3 ! agrUSgP3} ;
|
||||
|
||||
UttAccNP np = {s = np.s ! NPAcc} ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user