new japanese from Liza 30 April

This commit is contained in:
aarne
2012-05-07 11:31:05 +00:00
parent 3fed5b1cbc
commit 245a2b0007
15 changed files with 728 additions and 321 deletions

View File

@@ -8,100 +8,110 @@ flags coding = utf8 ;
pred = adj.pred ;
attr = \\st => adj.attr ;
te = \\st => adj.te ;
tara = \\st => adj.tara ;
ba = \\st => adj.ba ;
adv = \\st => adj.adv ;
prepositive = \\st => [] ;
compar = NoCompar
compar = NoCompar ;
dropNaEnging = \\st => adj.dropNaEnging
} ;
ComparA adj np = {
pred = \\st,t,p => np.s ! st ++ "より" ++ adj.pred ! st ! t ! p ;
attr = \\st => np.s ! st ++ "より" ++ adj.attr ;
te = \\st => np.s ! st ++ "より" ++ adj.te ;
tara = \\st => np.s ! st ++ "より" ++ adj.tara ;
ba = \\st => np.s ! st ++ "より" ++ adj.ba ;
adv = \\st => np.s ! st ++ "より" ++ adj.adv ;
prepositive = np.prepositive ;
compar = More
compar = More ;
dropNaEnging = \\st => np.s ! st ++ "より" ++ adj.dropNaEnging ;
} ;
ComplA2 a2 np = {
pred = \\st,t,p => np.s ! st ++ a2.prep ++ a2.pred ! st ! t ! p ;
attr = \\st => np.s ! st ++ a2.prep ++ a2.attr ;
te = \\st => np.s ! st ++ a2.prep ++ a2.te ;
tara = \\st => np.s ! st ++ a2.prep ++ a2.tara ;
ba = \\st => np.s ! st ++ a2.prep ++ a2.ba ;
prepositive = np.prepositive ;
adv = \\st => [] ;
compar = NoCompar
compar = NoCompar ;
dropNaEnging = \\st => np.s ! st ++ a2.prep ++ a2.dropNaEnging
} ;
ReflA2 a2 = {
pred = \\st,t,p => "自分" ++ a2.prep ++ a2.pred ! st ! t ! p ; -- "jibun"
attr = \\st => "自分" ++ a2.prep ++ a2.attr ;
te = \\st => "自分" ++ a2.prep ++ a2.te ;
tara = \\st => "自分" ++ a2.prep ++ a2.tara ;
ba = \\st => "自分" ++ a2.prep ++ a2.ba ;
adv = \\st => [] ;
prepositive = \\st => [] ;
compar = NoCompar
compar = NoCompar ;
dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging
} ;
UseA2 a2 = {
pred = a2.pred ;
attr = \\st => a2.attr ;
te = \\st => a2.te ;
tara = \\st => a2.tara ;
ba = \\st => a2.ba ;
adv = \\st => [] ;
prepositive = \\st => [] ;
compar = NoCompar
compar = NoCompar ;
dropNaEnging = \\st => a2.dropNaEnging
} ;
UseComparA adj = {
pred = \\st,t,p => "もっと" ++ adj.pred ! st ! t ! p ;
attr = \\st => "もっと" ++ adj.attr ;
te = \\st => "もっと" ++ adj.te ;
tara = \\st => "もっと" ++ adj.tara ;
ba = \\st => "もっと" ++ adj.ba ;
adv = \\st => "もっと" ++ adj.adv ;
prepositive = \\st => [] ;
compar = NoCompar -- "motto" does not change the main NP's particle
compar = NoCompar ; -- "motto" does not change the main NP's particle
dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging
} ;
CAdvAP cadv ap np = {
pred = \\st,t,p => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! p ;
attr = \\st => np.s ! st ++ cadv.s ++ ap.attr ! st ;
te = \\st => np.s ! st ++ cadv.s ++ ap.te ! st ;
tara = \\st => np.s ! st ++ cadv.s ++ ap.tara ! st ;
ba = \\st => np.s ! st ++ cadv.s ++ ap.ba ! st ;
adv = \\st => np.s ! st ++ cadv.s ++ ap.adv ! st ;
prepositive = np.prepositive ;
compar = cadv.compar
compar = cadv.compar ;
dropNaEnging = \\st => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st
} ;
AdjOrd ord = {
pred = ord.pred ;
attr = \\st => ord.attr ;
te = \\st => ord.te ;
tara = \\st => ord.tara ;
ba = \\st => ord.ba ;
adv = \\st => ord.adv ;
prepositive = \\st => [] ;
compar = NoCompar
compar = NoCompar ;
dropNaEnging = \\st => ord.dropNaEnging
} ;
SentAP ap sc = {
pred = \\st,t,p => sc.s ! Ga ! st ++ "ことを" ++ ap.pred ! st ! t ! p ;
attr = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.attr ! st ;
te = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.te ! st ;
tara = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.tara ! st ;
ba = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.ba ! st ;
adv = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.adv ! st ;
prepositive = ap.prepositive ;
compar = ap.compar
compar = ap.compar ;
dropNaEnging = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.dropNaEnging ! st
} ;
AdAP ada ap = {
pred = \\st,t,p => ada.s ++ ap.pred ! st ! t ! p ;
attr = \\st => ada.s ++ ap.attr ! st ;
te = \\st => ada.s ++ ap.te ! st ;
tara = \\st => ada.s ++ ap.tara ! st ;
ba = \\st => ada.s ++ ap.ba ! st ;
adv = \\st => ada.s ++ ap.adv ! st ;
prepositive = ap.prepositive ;
compar = ap.compar
compar = ap.compar ;
dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st
} ;
AdvAP ap adv = {
@@ -117,9 +127,9 @@ flags coding = utf8 ;
True => ap.te ! st ;
False => adv.s ! st ++ ap.te ! st
} ;
tara = \\st => case adv.prepositive of {
True => ap.tara ! st ;
False => adv.s ! st ++ ap.tara ! st
ba = \\st => case adv.prepositive of {
True => ap.ba ! st ;
False => adv.s ! st ++ ap.ba ! st
} ;
adv = \\st => case adv.prepositive of {
True => ap.adv ! st ;
@@ -129,6 +139,10 @@ flags coding = utf8 ;
True => adv.s ! st ;
False => []
} ;
compar = ap.compar
compar = ap.compar ;
dropNaEnging = \\st => case adv.prepositive of {
True => ap.dropNaEnging ! st ;
False => adv.s ! st ++ ap.dropNaEnging ! st
}
} ;
}

View File

@@ -21,9 +21,9 @@ flags coding = utf8 ;
PositAdAAdj a = {s = a.adv} ;
SubjS subj s = {
s = \\st => case subj.when of {
True => s.tara ! (Wa | Ga) ! st ;
False => s.s ! (Wa | Ga) ! st ++ subj.s
s = \\st => case subj.type of {
If => s.ba ! (Wa | Ga) ! st ++ subj.s ;
_ => s.s ! (Wa | Ga) ! st ++ subj.s
} ;
prepositive = True ;
compar = NoCompar

View File

@@ -8,34 +8,21 @@ flags coding = utf8 ;
lincat
S = {s : Particle => Style => Str ;
te : Particle => Style => Str ;
tara : Particle => Style => Str ;
subj : Particle => Style => Str ;
pred : Style => Str ;
} ;
S = {s, te, ba, subj : Particle => Style => Str ; pred, pred_te, pred_ba : Style => Str} ;
QS = {s : Particle => Style => Str} ;
RS = {s : Animateness => Style => Str ;
te : Animateness => Style => Str ;
subj : Particle => Style => Str ;
pred : Animateness => Style => Str ;
pred_te : Animateness => Style => Str ;
pred_tara : Animateness => Style => Str ;
missingSubj : Bool} ;
RS = {s, te, pred, pred_te, pred_ba : Animateness => Style => Str ;
subj : Particle => Style => Str ; missingSubj : Bool} ;
Cl = {s : Particle => Style => TTense => Polarity => Str ;
te : Particle => Style => Str ;
tara : Particle => Style => Str ;
subj : Particle => Style => Str ;
te, ba, subj : Particle => Style => Str ;
pred : Style => TTense => Polarity => Str ;
pred_te : Style => Str ;
pred_tara : Style => Str ;
pred_te, pred_ba : Style => Str ;
changePolar : Bool} ;
ClSlash = {s : Style => TTense => Polarity => Str ;
te : Style => Str ;
subj : Particle => Style => Str ;
pred : Style => TTense => Polarity => Str ;
pred_te : Style => Str ;
pred_tara : Style => Str ;
pred_ba : Style => Str ;
changePolar : Bool} ;
SSlash = {s : Style => Str ; te : Style => Str} ;
Imp = {s : Style => Polarity => Str} ;
@@ -48,45 +35,44 @@ flags coding = utf8 ;
te : Animateness => Style => Str ;
subj : Particle => Style => Str ;
pred : Animateness => Style => TTense => Polarity => Str ;
pred_te : Animateness => Style => Str ;
pred_tara : Animateness => Style => Str ;
pred_te, pred_ba : Animateness => Style => Str ;
changePolar : Bool ;
missingSubj : Bool} ;
RP = {s : Style => Str ; prep : Str} ;
VP = ResJap.VP ; -- {verb : Animateness => Style => TTense => Polarity => Str ;
-- te : Animateness => Style => Str; a_stem : Animateness => Style => Str ;
-- i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ;
-- i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ;
-- prep : Str ; obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ;
Comp = {verb : Animateness => Style => TTense => Polarity => Str ;
te : Animateness => Style => Str ; a_stem : Animateness => Style => Str ;
i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ;
i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ;
obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ;
VPSlash = Verb ** {prep : Str ; obj : Style => Str ; prepositive : Style => Str ;
v2vType : Bool ; compar : ComparSense} ;
AP = {pred : Style => TTense => Polarity => Str ; attr : Style => Str ; te : Style => Str ;
tara : Style => Str ; adv : Style => Str ; prepositive : Style => Str ;
compar : ComparSense} ;
ba : Style => Str ; adv : Style => Str ; dropNaEnging : Style => Str ;
prepositive : Style => Str ; compar : ComparSense} ;
NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ;
-- changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ;
Pron = Pronoun ; -- {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
Det = Determiner ; -- {quant : Style => Str ; num : Str ; postpositive : Str ;
-- n : Number ; inclCard : Bool} ;
Predet = {s : Str} ;
Quant = {s : Style => Str} ;
Pron = Pronoun ; -- {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
Det = Determiner ; -- {quant : Style => Str ; num : Str ; postpositive : Str ;
-- n : Number ; inclCard : Bool ; sp : Style => Str ; no : Bool} ;
Predet = {s : Str ; not : Bool} ;
Quant = {s : Style => Str ; sp : Style => Str ; no : Bool} ;
Num = ResJap.Num ; -- {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ;
Card = {s : Str ; postpositive : Str ; n : Number} ;
Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ;
-- attr : Str; te : Str ; tara : Str ; adv : Str} ;
Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr : Str ;
-- te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ;
Numeral = {s : Str ; n : Number} ;
Digits = {s : Str ; n : Number} ;
Conj = Conjunction ;
Subj = {s : Str ; when : Bool} ;
Conj = Conjunction ; -- {s : Str ; null : Str ; type : ConjType} ;
Subj = Subjunction ; -- {s : Str ; type : SubjType} ;
Prep = Preposition ; -- {s : Str ; relPrep : Str} ;
V = Verb ; -- {s : Style => TTense => Polarity => Str ; te : Str ;
-- a_stem : Str ; i_stem : Str ; tara : Str}
-- a_stem : Str ; i_stem : Str ; ba : Str}
V2 = Verb ** {pass: Style => TTense => Polarity => Str ; pass_te : Str ; pass_a_stem : Str ;
pass_i_stem : Str ; pass_tara : Str ; prep : Str} ;
pass_i_stem : Str ; pass_ba : Str ; prep : Str} ;
V3 = Verb ** {prep1 : Str ; prep2 : Str ; give : Bool} ; -- "give" is a special case
VV = Verb ** {sense : ModSense} ;
VS = Verb ** {prep : Str} ;
@@ -96,8 +82,8 @@ flags coding = utf8 ;
V2S = Verb ;
V2Q = Verb ;
V2A = Verb ;
A = Adj ; -- {pred : Style => TTense => Polarity => Str ;
-- attr : Str; te : Str ; tara : Str ; adv : Str} ;
A = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr : Str;
-- te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ;
A2 = Adj2 ; -- Adj ** {prep : Str} ;
N = Noun ; -- {s : Number => Style => Str ; anim : Animateness ;
-- counter : Str ; counterReplace : Bool} ;

View File

@@ -0,0 +1,354 @@
concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
flags coding = utf8 ;
lin
ConjS conj s = case conj.type of {
(And | Both) => {
s = \\part,st => conj.null ++ s.and ! part ! st ;
te = \\part,st => conj.null ++ s.teAnd ! part ! st ;
ba = \\part,st => conj.null ++ s.baAnd ! part ! st ;
subj = \\part,st => conj.null ++ s.subj ! part ! st ;
pred = s.predAnd ;
pred_te = s.pred_teAnd ;
pred_ba = s.pred_baAnd
} ;
Or => {
s = \\part,st => conj.null ++ s.or ! part ! st ;
te = \\part,st => conj.null ++ s.teOr ! part ! st ;
ba = \\part,st => conj.null ++ s.baOr ! part ! st ;
subj = \\part,st => conj.null ++ s.subj ! part ! st ;
pred = s.predOr ;
pred_te = s.pred_teOr ;
pred_ba = s.pred_baOr
}
} ;
ConjRS conj rs = case conj.type of {
(And | Both) => {
s = \\a,st => conj.null ++ rs.and ! a ! st ;
te = \\a,st => conj.null ++ rs.teAnd ! a ! st ;
pred = \\a,st => conj.null ++ rs.predAnd ! a ! st ;
pred_te = \\a,st => conj.null ++ rs.pred_teAnd ! a ! st ;
pred_ba = \\a,st => conj.null ++ rs.pred_baAnd ! a ! st ;
subj = rs.subj ;
missingSubj = rs.missingSubj
} ;
Or => {
s = \\a,st => conj.null ++ rs.or ! a ! st ;
te = \\a,st => conj.null ++ rs.teOr ! a ! st ;
pred = \\a,st => conj.null ++ rs.predOr ! a ! st ;
pred_te = \\a,st => conj.null ++ rs.pred_teOr ! a ! st ;
pred_ba = \\a,st => conj.null ++ rs.pred_baOr ! a ! st ;
subj = rs.subj ;
missingSubj = rs.missingSubj
}
} ;
ConjAP conj ap = case conj.type of {
(And | Both) => {
pred = \\st,t,p => conj.null ++ ap.s1and ! st ++ ap.s2pred ! st ! t ! p ;
attr = \\st => conj.null ++ ap.s1and ! st ++ ap.s2attr ! st ;
te = \\st => conj.null ++ ap.s1and ! st ++ ap.s2te ! st ;
ba = \\st => conj.null ++ ap.s1and ! st ++ ap.s2ba ! st ;
adv = \\st => conj.null ++ ap.s1and ! st ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1and ! st ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive ;
compar = ap.compar
} ;
Or => {
pred = \\st,t,p => conj.null ++ ap.s1or ! st ++ ap.s2pred ! st ! t ! p ;
attr = \\st => conj.null ++ ap.s1or ! st ++ ap.s2attr ! st ;
te = \\st => conj.null ++ ap.s1or ! st ++ ap.s2te ! st ;
ba = \\st => conj.null ++ ap.s1or ! st ++ ap.s2ba ! st ;
adv = \\st => conj.null ++ ap.s1or ! st ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1or ! st ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive ;
compar = ap.compar
}
} ;
ConjAdv conj adv = {
s = \\st => case conj.type of {
(And | Both) => conj.null ++ adv.and ! st ;
Or => conj.null ++ adv.or ! st
} ;
prepositive = adv.prepositive ;
compar = adv.compar
} ;
ConjNP conj np = {
s = \\st => case conj.type of {
And => conj.null ++ np.and ! st ;
Or => conj.null ++ np.or ! st ;
Both => conj.null ++ np.both ! st
} ;
prepositive = np.prepositive ;
needPart = case conj.type of {
(And|Or) => np.needPart ;
Both => False
} ;
changePolar = np.changePolar ;
Pron1Sg = np.Pron1Sg ;
anim = np.anim
} ;
ConjIAdv conj iadv = {
s = \\st => conj.null ++ iadv.s ! st ;
particle = iadv.particle
} ;
ConjCN conj cn = {
s = \\n,st => case conj.type of {
(And|Both) => conj.null ++ cn.and ! n ! st ;
Or => conj.null ++ cn.or ! n ! st
} ;
anim = cn.anim ;
counter = cn.counter ;
counterReplace = cn.counterReplace ;
object = cn.object ;
prepositive = cn.prepositive ;
hasAttr = cn.hasAttr
} ;
BaseS x y = {
and = \\part,st => x.s ! part ! st ++ "," ++ "そして" ++ y.s ! Ga ! st ;
or = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.s ! Ga ! st ;
teAnd = \\part,st => x.te ! part ! st ++ "," ++ y.te ! Ga ! st ;
teOr = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.te ! Ga ! st ;
baAnd = \\part,st => x.ba ! part ! st ++ "," ++ y.ba ! Ga ! st ;
baOr = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.ba ! Ga ! st ;
subj = \\part,st => x.subj ! part ! st ;
predAnd = \\st => x.pred ! st ++ "," ++ "そして" ++ y.s ! Ga ! st ;
predOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.s ! Ga ! st ;
pred_teAnd = \\st => x.pred_te ! st ++ "," ++ y.te ! Ga ! st ;
pred_teOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.te ! Ga ! st ;
pred_baAnd = \\st => x.pred_ba ! st ++ "," ++ y.ba ! Ga ! st ;
pred_baOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.ba ! Ga ! st ;
} ;
ConsS x xs = {
and = \\part,st => xs.and ! part ! st ++ "," ++ "そして" ++ x.s ! Ga ! st ;
or = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.s ! Ga ! st ;
teAnd = \\part,st => xs.teAnd ! part ! st ++ "," ++ x.te ! Ga ! st ;
teOr = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.te ! Ga ! st ;
baAnd = \\part,st => xs.baAnd ! part ! st ++ "," ++ x.ba ! Ga ! st ;
baOr = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.ba ! Ga ! st ;
subj = xs.subj ;
predAnd = \\st => xs.predAnd ! st ++ "," ++ "そして" ++ x.s ! Ga ! st ;
predOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.s ! Ga ! st ;
pred_teAnd = \\st => xs.pred_teAnd ! st ++ "," ++ x.te ! Ga ! st ;
pred_teOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.te ! Ga ! st ;
pred_baAnd = \\st => xs.pred_baAnd ! st ++ "," ++ x.ba ! Ga ! st ;
pred_baOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.ba ! Ga ! st ;
} ;
BaseRS x y = {
and = \\a,st => x.te ! a ! st ++ "," ++ y.s ! a ! st ;
or = \\a,st => case <x.missingSubj, y.missingSubj> of {
<True, True> => x.s ! a ! st ++ "か" ++ "," ++ y.s ! a ! st ;
_ => x.te ! a ! st ++ "," ++ "あるいは" ++ y.s ! a ! st
} ;
teAnd = \\a,st => x.te ! a ! st ++ "," ++ y.te ! a ! st ;
teOr = \\a,st => x.te ! a ! st ++ "," ++ "あるいは" ++ y.te ! a ! st ;
predAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.s ! a ! st ;
predOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.s ! a ! st ;
pred_teAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.te ! a ! st ;
pred_teOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.te ! a ! st ;
pred_baAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.subj ! Ga ! st ++
y.pred_ba ! a ! st ;
pred_baOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.subj ! Ga ! st ++
y.pred_ba ! a ! st ;
subj = x.subj ;
missingSubj = x.missingSubj
} ;
ConsRS x xs = {
and = \\a,st => xs.teAnd ! a ! st ++ "," ++ x.s ! a ! st ;
or = \\a,st => case <xs.missingSubj, x.missingSubj> of {
<True, True> => xs.teOr ! a ! st ++ "か" ++ "," ++ x.s ! a ! st ;
_ => xs.teOr ! a ! st ++ "," ++ "あるいは" ++ x.s ! a ! st
} ;
teAnd = \\a,st => xs.teAnd ! a ! st ++ "," ++ x.te ! a ! st ;
teOr = \\a,st => xs.teOr ! a ! st ++ "," ++ "あるいは" ++ x.te ! a ! st ;
predAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.s ! a ! st ;
predOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.s ! a ! st ;
pred_teAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.te ! a ! st ;
pred_teOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.te ! a ! st ;
pred_baAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.subj ! Ga ! st ++
x.pred_ba ! a ! st ;
pred_baOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.subj ! Ga ! st ++
x.pred_ba ! a ! st ;
subj = xs.subj ;
missingSubj = xs.missingSubj
} ;
BaseAdv x y = {
and = \\st => case <x.prepositive, y.prepositive> of {
<False, False> => x.s ! st ++ y.s ! st ;
_ => x.s ! st ++ "," ++ y.s ! st
} ;
or = \\st => case <x.prepositive, y.prepositive> of {
<False, False> => x.s ! st ++ "か" ++ y.s ! st ;
_ => x.s ! st ++ "," ++ "あるいは" ++ y.s ! st
} ;
prepositive = case <x.prepositive, y.prepositive> of {
<False, False> => False ;
_ => True
} ;
compar = case <x.compar, y.compar> of {
<NoCompar, NoCompar> => NoCompar ;
(<More, _> | <_, More>) => More ;
_ => Less
}
} ;
ConsAdv x xs = {
and = \\st => case <x.prepositive, xs.prepositive> of {
<False, False> => xs.and ! st ++ x.s ! st ;
_ => xs.and ! st ++ "," ++ x.s ! st
} ;
or = \\st => case <x.prepositive, xs.prepositive> of {
<False, False> => xs.or ! st ++ "か" ++ x.s ! st ;
_ => xs.or ! st ++ "," ++ "あるいは" ++ x.s ! st
} ;
prepositive = case <x.prepositive, xs.prepositive> of {
<False, False> => False ;
_ => True
} ;
compar = case <x.compar, xs.compar> of {
<NoCompar, NoCompar> => NoCompar ;
(<More, _> | <_, More>) => More ;
_ => Less
}
} ;
BaseNP x y = {
and = \\st => x.s ! st ++ "と" ++ y.s ! st ;
or = \\st => x.s ! st ++ "か" ++ y.s ! st ;
both = \\st => x.s ! st ++ "も" ++ y.s ! st ++ "も" ;
prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ;
needPart = case <x.needPart, y.needPart> of {
<True, True> => True ;
_ => False
} ;
changePolar = case <x.changePolar, y.changePolar> of {
<False, False> => False ;
_ => True
} ;
Pron1Sg = False ;
anim = case <x.anim, y.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
}
} ;
ConsNP x xs = {
and = \\st => x.s ! st ++ "と" ++ xs.and ! st ;
or = \\st => x.s ! st ++ "か" ++ xs.or ! st ;
both = \\st => x.s ! st ++ "も" ++ xs.both ! st ;
prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ;
needPart = case <xs.needPart, x.needPart> of {
<True, True> => True ;
_ => False
} ;
changePolar = case <xs.changePolar, x.changePolar> of {
<False, False> => False ;
_ => True
} ;
Pron1Sg = False ;
anim = case <xs.anim, x.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
}
} ;
BaseAP x y = {
s1and = x.te ;
s1or = \\st => x.dropNaEnging ! st ++ "か" ;
s2pred = y.pred ;
s2attr = y.attr ;
s2te = y.te ;
s2ba = y.ba ;
s2adv = y.adv ;
s2dropNaEnging = y.dropNaEnging ;
prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ;
compar = y.compar
} ;
ConsAP x xs = {
s1and = \\st => xs.s1and ! st ++ xs.s2te ! st ;
s1or = \\st => xs.s1or ! st ++ xs.s2dropNaEnging ! st ++ "か" ;
s2pred = x.pred ;
s2attr = x.attr ;
s2te = x.te ;
s2ba = x.ba ;
s2adv = x.adv ;
s2dropNaEnging = x.dropNaEnging ;
prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ;
compar = x.compar
} ;
BaseIAdv x y = {
s = \\st => x.s ! st ++ x.particle ++ y.s ! st ;
particle = y.particle
} ;
ConsIAdv x xs = {
s = \\st => x.s ! st ++ x.particle ++ xs.s ! st ;
particle = xs.particle
} ;
BaseCN x y = {
and = \\n,st => x.s ! n ! st ++ "と" ++ y.object ! st ++ y.s ! n ! st ;
or = \\n,st => x.s ! n ! st ++ "か" ++ y.object ! st ++ y.s ! n ! st ;
anim = case <x.anim, y.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
} ;
counter = y.counter ;
counterReplace = y.counterReplace ;
object = x.object ;
prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ;
hasAttr = x.hasAttr
} ;
ConsCN x xs = {
and = \\n,st => x.s ! n ! st ++ "と" ++ xs.object ! st ++ xs.and ! n ! st ;
or = \\n,st => x.s ! n ! st ++ "か" ++ xs.object ! st ++ xs.or ! n ! st ;
anim = case <x.anim, xs.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
} ;
counter = xs.counter ;
counterReplace = xs.counterReplace ;
object = x.object ;
prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ;
hasAttr = x.hasAttr
} ;
lincat
[S] = {and, or, teAnd, teOr, baAnd, baOr, subj : Particle => Style => Str ;
predAnd, predOr, pred_teAnd, pred_teOr, pred_baAnd, pred_baOr : Style => Str} ;
[RS] = {and, or, teAnd, teOr, predAnd, predOr, pred_teAnd, pred_teOr, pred_baAnd,
pred_baOr : Animateness => Style => Str ; subj : Particle => Style => Str ;
missingSubj : Bool} ;
[Adv] = {and, or : Style => Str ; prepositive : Bool ; compar : ComparSense} ;
[NP] = {and, or, both : Style => Str ; prepositive : Style => Str ;
needPart : Bool ; changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
[AP] = {s1and, s1or : Style => Str ; s2pred : Style => TTense => Polarity => Str ;
s2attr, s2te, s2ba, s2adv, s2dropNaEnging, prepositive : Style => Str ;
compar : ComparSense} ;
[IAdv] = {s : Style => Str ; particle : Str} ;
[CN] = {and, or : Number => Style => Str ; anim : Animateness ; counter : Str ;
counterReplace : Bool ; object : Style => Str ; prepositive : Style => Str ;
hasAttr : Bool} ;
}

View File

@@ -7,7 +7,7 @@ concrete GrammarJap of Grammar =
SentenceJap,
QuestionJap,
RelativeJap,
-- ConjunctionJap,
ConjunctionJap,
PhraseJap,
TextJap,
StructuralJap,

View File

@@ -18,11 +18,11 @@ flags coding = utf8 ;
Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
tara = table {
ba = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st ;
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ;
@@ -30,7 +30,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
} ;
Less => {
@@ -38,12 +38,12 @@ flags coding = utf8 ;
vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st ;
tara = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st ;
ba = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st ;
subj = \\part,st => vp.prepositive ! st ++ "これより" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
} ;
NoCompar => {
@@ -59,11 +59,11 @@ flags coding = utf8 ;
Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
tara = table {
ba = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st ;
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ;
@@ -71,7 +71,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
}
} ;
@@ -79,7 +79,7 @@ flags coding = utf8 ;
GenericCl vp = case vp.compar of {
More => {
s = table {
Wa => \\st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ -- "dareka"
Wa => \\st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
Ga => \\st,t,p => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Anim ! st ! t ! p
@@ -90,11 +90,11 @@ flags coding = utf8 ;
Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Anim ! st
} ;
tara = table {
ba = table {
Wa => \\st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Anim ! st ;
vp.prep ++ vp.ba ! Anim ! st ;
Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Anim ! st
vp.prep ++ vp.ba ! Anim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "誰か" ;
@@ -102,7 +102,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
} ;
Less => {
@@ -110,12 +110,12 @@ flags coding = utf8 ;
vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Anim ! st ;
tara = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Anim ! st ;
ba = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Anim ! st ;
subj = \\part,st => vp.prepositive ! st ++ "誰かより" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
} ;
NoCompar => {
@@ -123,12 +123,12 @@ flags coding = utf8 ;
vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Anim ! st ;
tara = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Anim ! st ;
ba = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Anim ! st ;
subj = \\part,st => vp.prepositive ! st ++ "誰か" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
}
} ;
@@ -139,26 +139,27 @@ flags coding = utf8 ;
mkCopula.s ! st ! t ! p ;
te = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "だって" ;
tara = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "だったら" ;
ba = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "であれば" ;
subj = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
rs.pred ! np.anim ! Plain ++ "のは" ;
pred = \\st,t,p => np.s ! st ++ mkCopula.s ! st ! t ! p ;
pred_te = \\st => np.s ! st ++ "だって" ;
pred_tara = \\st => np.s ! st ++ "だったら" ;
pred_ba = \\st => np.s ! st ++ "であれば" ;
changePolar = np.changePolar
} ;
CleftAdv adv s = {
s = \\part,st,t,p => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
mkCopula.s ! st ! t ! p ;
te = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ "だって" ;
tara = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
"だったら" ;
te = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
"だって" ;
ba = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
"であれば" ;
subj = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ;
pred = \\st,t,p => adv.s ! st ++ mkCopula.s ! st ! t ! p ;
pred_te = \\st => adv.s ! st ++ "だって" ;
pred_tara = \\st => adv.s ! st ++ "だったら" ;
pred_ba = \\st => adv.s ! st ++ "であれば" ;
changePolar = False
} ;
@@ -174,9 +175,9 @@ flags coding = utf8 ;
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.te ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.te ! np.anim ! st
} ;
tara = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.tara ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.tara ! np.anim ! st
ba = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.ba ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.ba ! np.anim ! st
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
@@ -184,18 +185,18 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => mkExistV.te ! np.anim ! st ;
pred_tara = \\st => mkExistV.tara ! np.anim ! st ;
pred_ba = \\st => mkExistV.ba ! np.anim ! st ;
changePolar = np.changePolar
} ;
False => {
s = \\part,st,t,p => np.prepositive ! st ++ np.s ! st ++
mkExistV.verb ! np.anim ! st ! t ! p ;
te = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.te ! np.anim ! st ;
tara = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.tara ! np.anim ! st ;
ba = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.ba ! np.anim ! st ;
subj = \\part,st => np.prepositive ! st ++ np.s ! st ;
pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => mkExistV.te ! np.anim ! st ;
pred_tara = \\st => mkExistV.tara ! np.anim ! st ;
pred_ba = \\st => mkExistV.ba ! np.anim ! st ;
changePolar = np.changePolar
}
} ;
@@ -210,7 +211,7 @@ flags coding = utf8 ;
te = \\a,st => vp.te ! a ! st ++ "いて" ;
a_stem = \\a,st => vp.te ! a ! st ++ "い" ;
i_stem = \\a,st => vp.te ! a ! st ++ "い" ;
tara = \\a,st => vp.te ! a ! st ++ "いたら" ;
ba = \\a,st => vp.te ! a ! st ++ "いれば" ;
prep = vp.prep ;
obj = vp.obj ;
prepositive = vp.prepositive ;

View File

@@ -1,4 +1,4 @@
--# -path=.:../common:../abstract
--# -path=.:../abstract:../common:../prelude
concrete LangJap of Lang =
GrammarJap,

View File

@@ -15,7 +15,10 @@ flags coding = utf8 ;
} ;
prepositive = cn.prepositive ;
needPart = True ;
changePolar = False ;
changePolar = case det.no of {
True => True ;
False => False
} ;
Pron1Sg = False ;
anim = cn.anim
} ;
@@ -42,7 +45,10 @@ flags coding = utf8 ;
s = \\st => p.s ++ np.s ! st ;
prepositive = np.prepositive ;
needPart = np.needPart ;
changePolar = np.changePolar ;
changePolar = case p.not of {
True => True ;
False => np.changePolar
} ;
Pron1Sg = np.Pron1Sg ;
anim = np.anim
} ;
@@ -81,13 +87,13 @@ flags coding = utf8 ;
} ;
DetNP det = {
s = \\st => case det.inclCard of {
True => det.quant ! st ++ det.num ++ "つ" ++ det.postpositive ;
False => det.quant ! st ++ det.num
} ;
s = det.sp ;
prepositive = \\st => [] ;
needPart = True ;
changePolar = False ;
changePolar = case det.no of {
True => True ;
False => False
} ;
Pron1Sg = False ;
anim = Inanim -- not always, depends on the context
} ;
@@ -97,7 +103,12 @@ flags coding = utf8 ;
postpositive = num.postpositive ;
num = num.s ;
n = num.n ;
inclCard = num.inclCard
inclCard = num.inclCard ;
sp = \\st => case num.inclCard of {
True => quant.s ! st ++ num.s ++ "つ" ++ num.postpositive ;
False => quant.sp ! st ++ num.s
} ;
no = quant.no
} ;
DetQuantOrd quant num ord = {
@@ -105,7 +116,12 @@ flags coding = utf8 ;
postpositive = num.postpositive ;
num = num.s ;
n = num.n ;
inclCard = num.inclCard
inclCard = num.inclCard ;
sp = \\st => case num.inclCard of {
True => quant.s ! st ++ ord.attr ++ num.s ++ "つ" ++ num.postpositive ;
False => quant.s ! st ++ ord.attr ++ num.s
} ;
no = quant.no
} ;
NumSg = mkNum "" Sg False ;
@@ -133,31 +149,34 @@ flags coding = utf8 ;
OrdDigits d = {
pred = \\st,t,p => d.s ++ "番目" ++ mkCopula.s ! st ! t ! p ; -- "banme"
attr = d.s ++ "番目の" ;
attr = d.s ++ "番目の" ;
te = d.s ++ "番目" ++ mkCopula.te ;
tara = d.s ++ "番目" ++ mkCopula.tara ;
adv = d.s ++ "番目"
ba = d.s ++ "番目" ++ mkCopula.ba ;
adv = d.s ++ "番目" ;
dropNaEnging = d.s ++ "番目の"
} ;
OrdNumeral num = {
pred = \\st,t,p => num.s ++ "番目" ++ mkCopula.s ! st ! t ! p ;
attr = num.s ++ "番目の" ;
te = num.s ++ "番目" ++ mkCopula.te ;
tara = num.s ++ "番目" ++ mkCopula.tara ;
adv = num.s ++ "番目"
ba = num.s ++ "番目" ++ mkCopula.ba ;
adv = num.s ++ "番目" ;
dropNaEnging = num.s ++ "番目の"
} ;
OrdSuperl a = {
pred = \\st,t,p => "一番" ++ a.pred ! st ! t ! p ; -- "ichiban"
attr = "一番" ++ a.attr ;
te = "一番" ++ a.te ;
tara = "一番" ++ a.tara ;
adv = "一番" ++ a.adv
ba = "一番" ++ a.ba ;
adv = "一番" ++ a.adv ;
dropNaEnging = "一番" ++ a.dropNaEnging
} ;
IndefArt = {s = \\st => ""} ;
IndefArt = {s = \\st => "" ; sp = \\st => "何か" ; no = False} ;
DefArt = {s = \\st => ""} ;
DefArt = {s = \\st => "" ; sp = \\st => "これ" ; no = False} ;
MassNP cn = {
s = \\st => cn.object ! st ++ cn.s ! Pl ! st ;
@@ -169,7 +188,8 @@ flags coding = utf8 ;
} ;
PossPron pron = {
s = \\st => pron.s ! st ++ "の" ;
s, sp = \\st => pron.s ! st ++ "の" ;
no = False
} ;
UseN n = {

View File

@@ -44,7 +44,7 @@ flags coding = utf8 ;
NoPConj = ss "" ;
PConjConj conj = {s = conj.pconj} ;
PConjConj conj = {s = conj.s} ;
NoVoc = {s = \\st => [] ; please = False} ;

View File

@@ -32,7 +32,7 @@ flags coding = utf8 ;
QuestIComp icomp np = {
s = table {
Wa => \\st,t,p => case np.needPart of {
True => np.prepositive ! st ++ np.s ! st ++ "" ++ icomp.s ! st ++
True => np.prepositive ! st ++ np.s ! st ++ "" ++ icomp.s ! st ++
mkCopula.s ! st ! t ! p ;
False => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ mkCopula.s ! st ! t ! p
} ;

View File

@@ -11,7 +11,7 @@ flags coding = utf8 ;
subj = cl.subj ;
pred = \\_,st,t,p => cl.pred ! st ! t ! p ;
pred_te = \\a,st => cl.pred_te ! st ;
pred_tara = \\a,st => cl.pred_tara ! st ;
pred_ba = \\a,st => cl.pred_ba ! st ;
missingSubj = False
} ;
@@ -24,7 +24,7 @@ flags coding = utf8 ;
subj = \\part,st => vp.prepositive ! st ++ rp.s ! st ;
pred = \\a,st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! a ! st ! t ! p ++ rp.prep ;
pred_te = \\a,st => vp.obj ! st ++ vp.prep ++ vp.te ! a ! st ++ rp.prep ;
pred_tara = \\a,st => vp.obj ! st ++ vp.prep ++ vp.tara ! a ! st ++ rp.prep ;
pred_ba = \\a,st => vp.obj ! st ++ vp.prep ++ vp.ba ! a ! st ++ rp.prep ;
missingSubj = True
} ;
@@ -35,7 +35,7 @@ flags coding = utf8 ;
subj = \\part,st => rp.s ! st ++ clslash.subj ! part ! st ;
pred = \\_,st,t,p => clslash.pred ! st ! t ! p ++ rp.prep ;
pred_te = \\a,st => clslash.pred_te ! st ++ rp.prep ;
pred_tara = \\a,st => clslash.pred_tara ! st ++ rp.prep ;
pred_ba = \\a,st => clslash.pred_ba ! st ++ rp.prep ;
missingSubj = False
} ;
@@ -45,4 +45,4 @@ flags coding = utf8 ;
s = \\st => np.prepositive ! st ++ np.s ! st ;
prep = prep.relPrep
} ;
}
}

View File

@@ -14,6 +14,8 @@ param
Anteriority = Simul | Anter ;
NumeralType = Tens | TensPlus | Other ;
ComparSense = Less | More | NoCompar ;
ConjType = And | Or | Both ;
SubjType = That | If | OtherSubj ;
oper
@@ -21,7 +23,7 @@ oper
changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
VP : Type = {verb : Animateness => Style => TTense => Polarity => Str ;
te : Animateness => Style => Str; a_stem : Animateness => Style => Str ;
i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ;
i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ;
prep : Str ; obj : Style => Str ; prepositive : Style => Str ;
compar : ComparSense} ;
@@ -29,23 +31,24 @@ oper
counter : Str ; counterReplace : Bool} ;
PropNoun : Type = {s : Style => Str ; anim : Animateness} ;
Adj : Type = {pred : Style => TTense => Polarity => Str;
attr : Str; te : Str ; tara : Str ; adv : Str} ;
Adj2 : Type = {pred : Style => TTense => Polarity => Str;
attr : Str; te : Str ; tara : Str ; adv : Str ; prep : Str} ;
attr : Str; te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ;
Adj2 : Type = {pred : Style => TTense => Polarity => Str ; attr : Str;
te : Str ; ba : Str ; adv : Str ; prep : Str ; dropNaEnging : Str} ;
Adverb : Type = {s : Style => Str ; prepositive : Bool ; compar : ComparSense} ;
Pronoun : Type = {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
Determiner : Type = {quant : Style => Str ; postpositive : Str ;
num : Str ; n : Number ; inclCard : Bool} ;
Determiner : Type = {quant : Style => Str ; postpositive : Str ; num : Str ;
n : Number ; inclCard : Bool ; sp : Style => Str ; no : Bool} ;
Num : Type = {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ;
Preposition : Type = {s : Str ; relPrep : Str} ;
Verb : Type = {s : Style => TTense => Polarity => Str ; te : Str ;
a_stem : Str ; i_stem : Str ; tara : Str} ;
a_stem : Str ; i_stem : Str ; ba : Str} ;
Verb2 : Type = {s : Style => TTense => Polarity => Str ; te : Str ;
a_stem : Str ; i_stem : Str ; tara : Str ;
a_stem : Str ; i_stem : Str ; ba : Str ;
pass : Style => TTense => Polarity => Str ; pass_te : Str ;
pass_a_stem : Str ; pass_i_stem : Str ; pass_tara : Str ;
pass_a_stem : Str ; pass_i_stem : Str ; pass_ba : Str ;
prep : Str} ;
Conjunction : Type = {s : Str ; pconj : Str ; disj : Bool} ;
Conjunction : Type = {s : Str ; null : Str ; type : ConjType} ;
Subjunction : Type = {s : Str ; type : SubjType} ;
mkNoun : Str -> Str -> Str -> Str -> Animateness -> Str -> Bool -> Noun =
\man1,man2,man3,man4,a,c,b -> {
@@ -70,7 +73,7 @@ oper
mkNoun kane okane kane okane a c b ;
regAdj : Str -> Adj = \a -> case a of {
chiisa + "い" => i_mkAdj a ;
chiisa + "い" => i_mkAdj a ;
ooki + ("な"|"の") => na_mkAdj a
} ;
@@ -113,8 +116,9 @@ oper
} ;
attr = chiisai ;
te = chiisa + "くて" ;
tara = chiisa + "かったら" ;
adv = chiisa + "く"
ba = chiisa + "ければ" ;
adv = chiisa + "く" ;
dropNaEnging = chiisai
} ;
na_mkAdj : Str -> Adj = \ookina ->
@@ -153,8 +157,9 @@ oper
} ;
attr = ookina ;
te = ooki + "で" ;
tara = ooki + "だったら" ;
adv = ooki + "に"
ba = ooki + "であれば" ;
adv = ooki + "に" ;
dropNaEnging = ooki
} ;
VerbalA : Str -> Str -> Adj = \kekkonshiteiru,kikonno ->
@@ -193,8 +198,9 @@ oper
} ;
attr = kikonno ;
te = kekkonshite + "いて" ;
tara = kekkonshite + "いたら" ;
adv = kekkonshite + "に"
ba = kekkonshite + "いれば" ;
adv = init kikonno + "で" ;
dropNaEnging = init kikonno
} ;
mkVerb : Str -> Str -> Str -> Str -> Verb =
@@ -237,55 +243,21 @@ oper
} ;
a_stem = yoma ;
i_stem = yomi ;
tara = yomi + "たら"
ba = mkBaForm yomu
} ;
mkVerb2 : Str -> Str -> Str -> Str -> Str -> Verb2 =
\yoma,yomi,yomu,yonda,p ->
let yon = init yonda ;
in {
s = table {
Resp => table {
TPres => table {
Pos => yomi + "ます" ;
Neg => yomi + "ません"
} ;
TPast => table {
Pos => yomi + "ました" ;
Neg => yomi + "ませんでした"
} ;
TFut => table {
Pos => yomi + "ます" ;
Neg => yomi + "ません"
}
} ;
Plain => table {
TPres => table {
Pos => yomu ;
Neg => yoma + "ない"
} ;
TPast => table {
Pos => yonda ;
Neg => yoma + "なかった"
} ;
TFut => table {
Pos => yomu ;
Neg => yoma + "ない"
}
}
} ;
te = case yonda of {
yon + "だ" => yon + "で" ;
yon + "た" => yon + "て"
} ;
a_stem = yoma ;
i_stem = yomi ;
tara = yomi + "たら" ;
prep = p ;
pass = table {
Resp => table {
TPres => table {
Pos => case yomu of {
\yoma,yomi,yomu,yonda,p -> {
s = (mkVerb yoma yomi yomu yonda).s ;
te = (mkVerb yoma yomi yomu yonda).te ;
a_stem = yoma ;
i_stem = yomi ;
ba = mkBaForm yomu ;
prep = p ;
pass = table {
Resp => table {
TPres => table {
Pos => case yomu of {
x + "する" => x + "されます" ;
_ => yoma + "れます"
} ;
@@ -360,9 +332,9 @@ oper
x + "する" => x + "され" ;
_ => yoma + "れ"
} ;
pass_tara = case yomu of {
x + "する" => x + "されたら" ;
_ => yoma + "れたら"
pass_ba = case yomu of {
x + "する" => x + "されれば" ;
_ => yoma + "れれば"
}
} ;
@@ -400,7 +372,7 @@ oper
te = "だって" ;
a_stem = "で" ;
i_stem = "で" ;
tara = "だったら"
ba = "であれば"
} ;
mkExistV : VP = {
@@ -420,9 +392,9 @@ oper
Anim => \\st => "い" ;
Inanim => \\st => "あり"
} ;
tara = table {
Anim => \\st => "いたら" ;
Inanim => \\st => "あったら"
ba = table {
Anim => \\st => "いれば" ;
Inanim => \\st => "あれば"
} ;
prep = [] ;
prepositive, obj = \\st => [] ;
@@ -442,12 +414,14 @@ oper
anim = a
} ;
mkDet : Str -> Number -> Determiner = \q,n -> {
mkDet : Str -> Str -> Number -> Determiner = \q,sp,n -> {
quant = \\st => q ;
postpositive = [] ;
num = [] ;
n = n ;
inclCard = False
inclCard = False ;
sp = \\st => sp ;
no = False
} ;
stylePron : Str -> Str -> Bool -> Animateness -> Pronoun = \boku,watashi,b,a -> {
@@ -490,10 +464,10 @@ oper
anim = a
} ;
mkConj : Str -> Str -> Bool -> Conjunction = \c,p,b -> {
mkConj : Str -> ConjType -> Conjunction = \c,t -> {
s = c ;
pconj = p ;
disj = b
null = "" ;
type = t
} ;
mkPrep : Str -> Str -> Preposition = \p,r -> {
@@ -501,5 +475,22 @@ oper
relPrep = r ;
} ;
mkSubj : Str -> SubjType -> Subjunction = \s,t -> {
s = s ;
type = t ;
} ;
mkBaForm : Str -> Str = \neru ->
case last neru of {
"る" => init neru + "れば" ;
"す" => init neru + "せば" ;
"く" => init neru + "けば" ;
"ぐ" => init neru + "げば" ;
"む" => init neru + "めば" ;
"ぬ" => init neru + "ねば" ;
"ぶ" => init neru + "べば" ;
"つ" => init neru + "てば" ;
_ => init neru + "えば"
} ;
}

View File

@@ -19,11 +19,11 @@ flags coding = utf8 ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st
} ;
tara = table {
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st
vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ;
@@ -31,7 +31,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
} ;
Less => {
@@ -39,12 +39,12 @@ flags coding = utf8 ;
"より" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
te = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "より"
++ vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
tara = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
"より" ++ vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
ba = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
"より" ++ vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "より" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
} ;
NoCompar => case np.needPart of {
@@ -61,11 +61,11 @@ flags coding = utf8 ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st
} ;
tara = table {
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st
vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ;
@@ -73,7 +73,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
} ;
False => {
@@ -89,16 +89,16 @@ flags coding = utf8 ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! np.anim ! st
} ;
tara = table {
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.tara ! np.anim ! st ;
vp.prep ++ vp.ba ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.tara ! np.anim ! st
vp.prep ++ vp.ba ! np.anim ! st
} ;
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
}
}
@@ -118,11 +118,11 @@ flags coding = utf8 ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
tara = table {
ba = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st ;
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ;
@@ -130,7 +130,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
} ;
False => {
@@ -146,11 +146,11 @@ flags coding = utf8 ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
tara = table {
ba = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st ;
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.tara ! Inanim ! st
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ;
@@ -158,7 +158,7 @@ flags coding = utf8 ;
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
}
} ;
@@ -168,37 +168,37 @@ flags coding = utf8 ;
vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! Plain ! t ! p ;
te = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ;
tara = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.prep ++ vpslash.tara ;
ba = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ;
subj = table {
Wa => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "は" ;
Ga => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が"
} ;
pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! st ! t ! p ;
pred_te = \\st => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ;
pred_tara = \\st => vpslash.obj ! st ++ vpslash.tara ;
pred_ba = \\st => vpslash.obj ! st ++ vpslash.ba ;
changePolar = np.changePolar
} ;
AdvSlash clslash adv = {
s = \\st,t,p => adv.s ! st ++ clslash.s ! st ! t ! p ;
te = \\st => adv.s ! st ++ clslash.te ! st ;
tara = \\st => adv.s ! st ++ clslash.tara ! st ;
ba = \\st => adv.s ! st ++ clslash.ba ! st ;
subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ;
pred = clslash.pred ;
pred_te = clslash.pred_te ;
pred_tara = clslash.pred_tara ;
pred_ba = clslash.pred_ba ;
changePolar = clslash.changePolar
} ;
SlashPrep cl prep = {
s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.relPrep ;
te = \\st => cl.te ! Ga ! st ++ prep.relPrep ;
tara = \\st => cl.tara ! Ga ! st ++ prep.relPrep ;
ba = \\st => cl.ba ! Ga ! st ++ prep.relPrep ;
subj = cl.subj ;
pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.relPrep ;
pred_te = \\st => cl.pred_te ! st ++ prep.relPrep ;
pred_tara = \\st => cl.pred_tara ! st ++ prep.relPrep ;
pred_ba = \\st => cl.pred_ba ! st ++ prep.relPrep ;
changePolar = cl.changePolar
} ;
@@ -206,15 +206,15 @@ flags coding = utf8 ;
s = \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
vs.prep ++ vs.s ! Plain ! t ! p ;
te = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++ vs.te ;
tara = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
vs.prep ++ vs.tara ;
ba = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
vs.prep ++ vs.ba ;
subj = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が"
} ;
pred = \\st,t,p => sslash.s ! st ++ vs.prep ++ vs.s ! st ! t ! p ;
pred_te = \\st => sslash.s ! st ++ vs.prep ++ vs.te ;
pred_tara = \\st => sslash.s ! st ++ vs.prep ++ vs.tara ;
pred_ba = \\st => sslash.s ! st ++ vs.prep ++ vs.ba ;
changePolar = np.changePolar
} ;
@@ -263,7 +263,7 @@ flags coding = utf8 ;
}
} ;
te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ;
tara = \\part,st => t.s ++ p.s ++ cl.tara ! part ! st ;
ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ;
subj = cl.subj ;
pred = \\st => case t.a of {
Simul => case cl.changePolar of {
@@ -284,7 +284,9 @@ flags coding = utf8 ;
True => t.s ++ p.s ++ cl.pred ! st ! TPres ! Neg
}
}
}
} ;
pred_te = cl.pred_te ;
pred_ba = cl.pred_ba
} ;
UseQCl t p cl = {
@@ -331,7 +333,7 @@ flags coding = utf8 ;
}
}
} ;
te = \\a,st => rcl.te ! a ! st ;
te = \\a,st => t.s ++ p.s ++ rcl.te ! a ! st ;
subj = rcl.subj ;
pred = \\a,st => case t.a of {
Simul => case rcl.changePolar of {
@@ -354,7 +356,7 @@ flags coding = utf8 ;
}
} ;
pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ;
pred_tara = \\a,st => t.s ++ p.s ++ rcl.pred_tara ! a ! st ;
pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ;
missingSubj = rcl.missingSubj
} ;
@@ -385,33 +387,53 @@ flags coding = utf8 ;
AdvS adv s = {
s = \\part,st => adv.s ! st ++ s.s ! part ! st ;
te = \\part,st => adv.s ! st ++ s.te ! part ! st ;
tara = \\part,st => adv.s ! st ++ s.tara ! part ! st ;
ba = \\part,st => adv.s ! st ++ s.ba ! part ! st ;
subj = \\part,st => adv.s ! st ++ s.subj ! part ! st ;
pred = s.pred
pred = s.pred ;
pred_te = s.pred_te ;
pred_ba = s.pred_ba
} ;
ExtAdvS adv s = {
s = \\part,st => adv.s ! st ++ "," ++ s.s ! part ! st ;
te = \\part,st => adv.s ! st ++ "," ++ s.te ! part ! st ;
tara = \\part,st => adv.s ! st ++ "," ++ s.tara ! part ! st ;
ba = \\part,st => adv.s ! st ++ "," ++ s.ba ! part ! st ;
subj = \\part,st => adv.s ! st ++ "," ++ s.subj ! part ! st ;
pred = s.pred
pred = s.pred ;
pred_te = s.pred_te ;
pred_ba = s.pred_ba
} ;
SSubjS s1 subj s2 = case subj.when of {
True => {
s = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.s ! Ga ! st ;
te = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.te ! Ga ! st ;
tara = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.tara ! Ga ! st ;
subj = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ;
pred = s2.pred
SSubjS s1 subj s2 = case subj.type of {
If => {
s = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.s ! Ga ! st ;
te = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.te ! Ga ! st ;
ba = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.ba ! Ga ! st ;
subj = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ;
pred = s2.pred ;
pred_te = s2.pred_te ;
pred_ba = s2.pred_ba
} ;
False => {
That => {
s = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
subj.s ++ s1.pred ! st ;
te = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
subj.s ++ s1.pred_te ! st ;
ba = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
subj.s ++ s1.pred_ba ! st ;
subj = \\part,st => s1.subj ! part ! st ;
pred = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred ! st ;
pred_te = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_te ! st ;
pred_ba = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_ba ! st
} ;
OtherSubj => {
s = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.s ! Ga ! st ;
te = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.te ! Ga ! st ;
tara = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.tara ! Ga ! st ;
ba = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.ba ! Ga ! st ;
subj = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.subj ! Ga ! st ;
pred = s2.pred
pred = s2.pred ;
pred_te = s2.pred_te ;
pred_ba = s2.pred_ba
}
} ;
@@ -421,11 +443,13 @@ flags coding = utf8 ;
"ことが" ++ rs.pred ! Inanim ! st ;
te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ++ rs.pred_te ! Inanim ! st ;
tara = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ++ rs.pred_tara ! Inanim ! st ;
ba = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ++ rs.pred_ba ! Inanim ! st ;
subj = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ;
pred = \\st => rs.pred ! Inanim ! st
pred = \\st => rs.pred ! Inanim ! st ;
pred_te = \\st => rs.pred_te ! Inanim ! st ;
pred_ba = \\st => rs.pred_ba ! Inanim ! st
} ;
False => {
s = table {
@@ -440,15 +464,19 @@ flags coding = utf8 ;
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_te ! Inanim ! st
} ;
tara = table {
ba = table {
Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_tara ! Inanim ! st ;
"ことを" ++ rs.pred_ba ! Inanim ! st ;
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_tara ! Inanim ! st
"ことを" ++ rs.pred_ba ! Inanim ! st
} ;
subj = \\part,st => rs.subj ! part ! st ;
pred = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
rs.pred ! Inanim ! st ;
pred_te = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
rs.pred_te ! Inanim ! st ;
pred_ba = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
rs.pred_ba ! Inanim ! st
}
} ;
}

View File

@@ -6,32 +6,35 @@ flags coding = utf8 ;
above_Prep = mkPrep "の上に" "上に" ; -- "noueni" "ueni"
after_Prep = mkPrep "の後に" "後" ; -- "noatoni" "ato"
all_Predet = ss "全部" ; -- "zembu"
almost_AdA = ss "殆ど" ; -- "hotondo" ;
although_Subj = {s = "のに" ; when = False} ;
all_Predet = {s = "全部" ; not = False} ;
almost_AdA = ss "殆ど" ; -- "hotondo"
almost_AdN = {s = "殆ど" ; postposition = False} ;
although_Subj = mkSubj "のに" OtherSubj ;
always_AdV = ss "いつも" ;
and_Conj = mkConj "と" "そして" False ;
because_Subj = {s = "から" ; when = False} ;
and_Conj = mkConj "そして" And ;
because_Subj = mkSubj "から" OtherSubj ;
before_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
behind_Prep = mkPrep "後ろに" "後ろに" ; -- "ushironi" "ushironi"
between_Prep = mkPrep "の間に" "間に" ; -- "noaidani" "aidani"
both7and_DConj = mkConj "そして" Both ;
by8agent_Prep = mkPrep "に" "" ;
by8means_Prep = mkPrep "によって" "" ;
but_PConj = ss "けれども" ;
can8know_VV = mkVerb "でき" "でき" "できる" "できた" ** {sense = Abil} ;
can_VV = can8know_VV ;
during_Prep = mkPrep "の間に" "" ; -- "noaidani"
every_Det = mkDet "各自の" Sg ; -- "kakujino"
either7or_DConj = mkConj "それとも" Or ;
every_Det = mkDet "全ての" "全て" Sg ; -- "subeteno"
everybody_NP = mkNP "皆" True False Anim ; -- "minna"
everything_NP = mkNP "全て" True False Inanim ; -- "subete"
everywhere_Adv = mkAdv "どこでも" ; -- "dokodemo" ;
first_Ord = {pred = \\st,t,p => "一番目" ++ mkCopula.s ! st ! t ! p ;
attr = "一番目の" ; te = "一番目" ++ mkCopula.te ;
tara = "一番目" ++ mkCopula.tara ; adv = "一番目"} ; -- "ichibanme"
few_Det = mkDet "少数" Pl ; -- "shoosuuno"
ba = "一番目" ++ mkCopula.ba ; adv = "一番目" ;
dropNaEnging = "一番目"} ;
few_Det = mkDet "少数の" "少数" Pl ; -- "shoosuuno"
for_Prep = mkPrep "のために" "" ;
from_Prep = mkPrep "から" "から" ;
from_Prep = mkPrep "から" "" ;
he_Pron = mkPron "彼" False Anim ; -- "kare"
here_Adv = mkAdv "ここで" ;
here7to_Adv = mkAdv "ここに" ;
@@ -40,51 +43,54 @@ flags coding = utf8 ;
how8many_IDet = {s = "いくつ" ; n = Pl ; how8many = True ; inclCard = False} ;
how8much_IAdv = {s = \\st => "いくら" ; particle = ""} ;
i_Pron = mkPron ("僕"|"私") "私" True Anim ; -- "boku"|"watashi"
if_Subj = mkSubj "" If ;
in8front_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
in_Prep = mkPrep "に" "" ;
it_Pron = mkPron "それ" False Inanim ;
less_CAdv = {s = "のほうが" ; compar = Less} ;
many_Det = mkDet "多くの" Pl ; -- "ookuno"
more_CAdv = {s = "より" ; compar = More} ; -- "yori"
most_Predet = ss "ほとんどの" ;
much_Det = mkDet "多くの" Sg ; -- "ookuno"
must_VV = {s = (mkVerb "なら" "なり" "なる" "なった").s ; te = "なて" ;
tara = "なったら" ; a_stem = "なら" ; i_stem = "なり" ; sense = Oblig} ;
many_Det = mkDet "多くの" "多く" Pl ; -- "ookuno"
more_CAdv = {s = "より" ; compar = More} ;
most_Predet = {s = "ほとんどの" ; not = False} ;
much_Det = mkDet "多くの" "多量" Sg ; -- "ookuno" "taryou"
must_VV = {s = (mkVerb "なら" "なり" "なる" "なった").s ; te = "ならなくて" ;
ba = "ならなければ" ; a_stem = "なら" ; i_stem = "なり" ; sense = Oblig} ;
no_Phr = ss "いいえ" ;
no_Utt = {s = \\st => "いいえ"} ;
on_Prep = mkPrep "の上に" "" ;
only_Predet = ss "ほんの" ;
or_Conj = mkConj "か" "それとも" True ;
only_Predet = {s = "ほんの" ; not = False} ;
or_Conj = mkConj "それとも" Or ;
otherwise_PConj = ss "そうしなければ" ;
part_Prep = mkPrep "の" "" ;
please_Voc = {s = table {Resp => "ください" ; Plain => "" } ; please = True} ;
possess_Prep = mkPrep "の" "" ;
quite_Adv = ss "可成" ;
quite_Adv = ss "可成" ; -- "kanari"
she_Pron = mkPron "彼女" False Anim ; -- "kanojo"
so_AdA = ss "非常に" ; -- "hijooni"
someSg_Det = mkDet "多少の" Sg ; -- "tashoono"
somePl_Det = mkDet "いくつかの" Pl ;
someSg_Det = mkDet "多少の" "幾らか" Sg ; -- "tashoono" "ikuraka"
somePl_Det = mkDet "いくつかの" "幾らか" Pl ; -- "ikuraka"
somebody_NP = mkNP "誰か" False False Anim ; -- "dareka"
something_NP = mkNP "何か" False False Inanim ; -- "nanika"
somewhere_Adv = mkAdv "どこかに" ;
that_Quant = {s = \\st => "その"} ;
that_Quant = {s = \\st => "その" ; sp = \\st => "それ" ; no = False} ;
that_Subj = mkSubj "ことを" That ;
there_Adv = mkAdv "そこに" ;
there7to_Adv = mkAdv "そこに" ;
there7from_Adv = mkAdv "そこから" ;
therefore_PConj = ss "それで" ;
they_Pron = mkPron "彼ら" "あの人達" False Anim ; -- "karera" "ano hito-tachi"
this_Quant = {s = \\st => "この"} ;
this_Quant = {s = \\st => "この" ; sp = \\st => "これ" ; no = False} ;
through_Prep = mkPrep "を通じて" "通じて" ; -- "otsuujite"
to_Prep = mkPrep "に" "" ;
too_AdA = ss "あまりにも" ;
under_Prep = mkPrep "の下に" "下に" ; -- "noshitani"
very_AdA = ss "とても" ;
want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ;
tara = "いったら" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ;
want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ;
ba = "いれば" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ;
we_Pron = mkPron "私達" False Anim ; -- "watashitachi"
whatPl_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ; -- "nani"
whatSg_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ;
when_IAdv = {s = \\st => "いつ" ; particle = ""} ;
when_Subj = {s = [] ; when = True} ;
when_Subj = mkSubj "と" OtherSubj ;
where_IAdv = {s = \\st => "どこ" ; particle = "で"} ;
which_IQuant = ss "どの" ;
whoPl_IP = {s = \\st => "誰" ; anim = Anim ; how8many = False} ;
@@ -98,6 +104,8 @@ flags coding = utf8 ;
youPl_Pron = mkPron "あなた達" "あなた方" False Anim ; -- "anatatachi" "anatagata"
youPol_Pron = mkPron "あなた" False Anim ;
no_Quant = {s = \\st => "" ; sp = \\st => "何も" ; no = True} ;
not_Predet = {s = "" ; not = True} ;
at_least_AdN = {s = "少なくとも" ; postposition = False} ; -- "sukunakutomo"
at_most_AdN = {s = "せいぜい" ; postposition = False} ;
nobody_NP = mkNP "誰も" False True Anim ;
@@ -105,4 +113,8 @@ flags coding = utf8 ;
except_Prep = mkPrep "を除いて" "を除いて" ; -- "onozoite"
as_CAdv = {s = "と同じぐらい" ; compar = NoCompar} ; -- "toonajigurai"
have_V2 = mkV2 "持ってい" "持ってい" "持っている" "持っていた" "を" ;
language_title_Utt = {s = \\st => "日本語"} ; -- "nihongo"
}

View File

@@ -9,7 +9,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => v.te ;
a_stem = \\a,st => v.a_stem ;
i_stem = \\a,st => v.i_stem ;
tara = \\a,st => v.tara ;
ba = \\a,st => v.ba ;
prep = [] ;
obj = \\st => [] ;
prepositive = \\st => [] ;
@@ -23,18 +23,18 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.te ;
a_stem = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.a_stem ;
i_stem = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.i_stem ;
tara = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ;
ba = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.ba ;
prep = vp.prep ;
obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive ;
compar = NoCompar
} ;
Oblig => {
verb = \\a,st,t,p => vp.a_stem ! Anim ! st ++ "なければ" ++ v.s ! st ! t ! p ;
verb = \\a,st,t,p => vp.a_stem ! Anim ! st ++ "なければ" ++ v.s ! st ! t ! Neg ;
te = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.te ;
a_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.a_stem ;
i_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.i_stem ;
tara = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.tara ;
ba = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.ba ;
prep = vp.prep ;
obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive ;
@@ -45,7 +45,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.te ;
a_stem = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.a_stem ;
i_stem = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.i_stem ;
tara = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.tara ;
ba = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.ba ;
prep = vp.prep ;
obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive ;
@@ -58,7 +58,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => vs.te ;
a_stem = \\a,st => vs.a_stem ;
i_stem = \\a,st => vs.i_stem ;
tara = \\a,st => vs.tara ;
ba = \\a,st => vs.ba ;
prep = vs.prep ;
obj = \\st => sent.s ! Ga ! Plain ;
prepositive = \\st => [] ;
@@ -70,7 +70,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => vq.te ;
a_stem = \\a,st => vq.a_stem ;
i_stem = \\a,st => vq.i_stem ;
tara = \\a,st => vq.tara ;
ba = \\a,st => vq.ba ;
prep = vq.prep ;
obj = \\st => qs.s ! Ga ! Plain ++ "こと" ;
prepositive = \\st => [] ;
@@ -82,7 +82,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => va.te ;
a_stem = \\a,st => va.a_stem ;
i_stem = \\a,st => va.i_stem ;
tara = \\a,st => va.tara ;
ba = \\a,st => va.ba ;
prep = [] ;
obj = \\st => ap.adv ! st ;
prepositive = ap.prepositive ;
@@ -93,7 +93,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
s = \\st,t,p => v2.s ! st ! t ! p ;
a_stem = v2.a_stem ;
i_stem = v2.i_stem ;
tara = v2.tara ;
ba = v2.ba ;
prep = v2.prep ;
obj = \\st => [] ;
prepositive = \\st => [] ;
@@ -116,9 +116,9 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
True => "呉れ" ;
False => "上げ"
} ;
tara = case np.Pron1Sg of {
True => "呉れたら" ;
False => "上げたら"
ba = case np.Pron1Sg of {
True => "呉れれば" ;
False => "上げれば"
} ;
prep = v3.prep2 ;
obj = \\st => np.s ! st ++ v3.prep1 ;
@@ -134,7 +134,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
s = \\st,t,p => v3.s ! st ! t ! p ;
a_stem = v3.a_stem ;
i_stem = v3.i_stem ;
tara = v3.tara ;
ba = v3.ba ;
prep = v3.prep2 ;
obj = \\st => np.s ! st ++ v3.prep1 ;
prepositive = np.prepositive ;
@@ -151,7 +151,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
++ v2v.s ! st ! t ! p ;
a_stem = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.a_stem ;
i_stem = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.i_stem ;
tara = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ;
ba = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ;
prep = "に" ;
obj = \\st => vp.obj ! st ++ vp.prep ;
te = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ;
@@ -164,7 +164,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
s = v2s.s ;
a_stem = v2s.a_stem ;
i_stem = v2s.i_stem ;
tara = v2s.tara ;
ba = v2s.ba ;
prep = "に" ;
obj = \\st => s.s ! Ga ! Plain ++ "と" ;
prepositive = \\st => [] ;
@@ -177,7 +177,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
s = v2q.s ;
a_stem = v2q.a_stem ;
i_stem = v2q.i_stem ;
tara = v2q.tara ;
ba = v2q.ba ;
prep = "に" ;
obj = \\st => qs.s ! Ga ! Plain ++ "ことを" ;
prepositive = \\st => [] ;
@@ -190,7 +190,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
s = v2a.s ;
a_stem = v2a.a_stem ;
i_stem = v2a.i_stem ;
tara = v2a.tara ;
ba = v2a.ba ;
prep = "を" ;
obj = ap.adv ;
prepositive = ap.prepositive ;
@@ -206,7 +206,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
} ;
a_stem = \\a,st => vpslash.a_stem ;
i_stem = \\a,st => vpslash.i_stem ;
tara = \\a,st => vpslash.tara ;
ba = \\a,st => vpslash.ba ;
prep = case np.needPart of {
True => case vpslash.v2vType of {
True => [] ;
@@ -219,7 +219,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
False => vpslash.obj ! st ++ np.s ! st
} ;
te = \\a,st => vpslash.te ;
prepositive = vpslash.prepositive ;
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ;
compar = vpslash.compar
} ;
@@ -237,10 +237,10 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
} ;
a_stem = [] ;
i_stem = [] ;
tara = case v.sense of {
Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ;
Oblig => vpslash.a_stem ++ "なければ" ++ v.tara ;
Wish => vpslash.i_stem ++ "たがって" ++ v.tara
ba = case v.sense of {
Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.ba ;
Oblig => vpslash.a_stem ++ "なければ" ++ v.ba ;
Wish => vpslash.i_stem ++ "たがって" ++ v.ba
} ;
prep = vpslash.prep ;
obj = vpslash.obj ;
@@ -254,7 +254,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
++ v2v.s ! st ! t ! p ;
a_stem = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.a_stem ;
i_stem = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.i_stem ;
tara = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ;
ba = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ;
prep = vpslash.prep ;
obj = \\st => np.s ! st ++ "に" ;
te = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ;
@@ -267,7 +267,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
verb = \\a,st,t,p => vpslash.s ! st ! t ! p ;
a_stem = \\a,st => vpslash.a_stem ;
i_stem = \\a,st => vpslash.i_stem ;
tara = \\a,st => vpslash.tara ;
ba = \\a,st => vpslash.ba ;
prep = vpslash.prep ;
obj = \\st => "自分" ; -- "jibun"
te = \\a,st => vpslash.te ;
@@ -280,7 +280,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = comp.te ;
a_stem = comp.a_stem ;
i_stem = comp.i_stem ;
tara = comp.tara ;
ba = comp.ba ;
prep = [] ;
obj = comp.obj ;
prepositive = comp.prepositive ;
@@ -292,7 +292,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => v2.pass_te ;
a_stem = \\a,st => v2.pass_a_stem ;
i_stem = \\a,st => v2.pass_i_stem ;
tara = \\a,st => v2.pass_tara ;
ba = \\a,st => v2.pass_ba ;
prep = [] ;
obj = \\st => [] ;
prepositive = \\st => [] ;
@@ -304,7 +304,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = vp.te ;
a_stem = vp.a_stem ;
i_stem = vp.i_stem ;
tara = vp.tara ;
ba = vp.ba ;
prep = vp.prep ;
obj = \\st => case adv.prepositive of {
True => vp.obj ! st ;
@@ -322,7 +322,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = vp.te ;
a_stem = vp.a_stem ;
i_stem = vp.i_stem ;
tara = vp.tara ;
ba = vp.ba ;
prep = vp.prep ;
obj = \\st => adv.s ++ vp.obj ! st ;
prepositive = vp.prepositive ;
@@ -334,7 +334,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = vpslash.te ;
a_stem = vpslash.a_stem ;
i_stem = vpslash.i_stem ;
tara = vpslash.tara ;
ba = vpslash.ba ;
prep = vpslash.prep ;
obj = \\st => case adv.prepositive of {
True => vpslash.obj ! st ;
@@ -353,7 +353,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = vpslash.te ;
a_stem = vpslash.a_stem ;
i_stem = vpslash.i_stem ;
tara = vpslash.tara ;
ba = vpslash.ba ;
prep = vpslash.prep ;
obj = \\st => adv.s ++ vpslash.obj ! st ;
prepositive = vpslash.prepositive ;
@@ -366,7 +366,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
te = \\a,st => ap.te ! st ;
a_stem = \\a,st => ap.adv ! st ;
i_stem = \\a,st => ap.adv ! st ; -- for wishes - not correct!
tara = \\a,st => ap.tara ! st ;
ba = \\a,st => ap.ba ! st ;
obj = \\st => [] ;
prepositive = ap.prepositive ;
compar = ap.compar
@@ -375,7 +375,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
CompNP np = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
tara = \\a,st => "だったら" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "で" ; -- for wishes - not correct!
obj = \\st => np.s ! st ;
@@ -386,7 +386,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
CompAdv adv = {
verb = mkExistV.verb ;
te = mkExistV.te ;
tara = mkExistV.tara ;
ba = mkExistV.ba ;
a_stem = mkExistV.a_stem ;
i_stem = mkExistV.i_stem ;
obj = \\st => case adv.prepositive of {
@@ -403,7 +403,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
CompCN cn = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
tara = \\a,st => "だったら" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "で" ; -- for wishes - not correct!
obj = \\st => cn.s ! (Sg|Pl) ! st ;
@@ -414,7 +414,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
UseCopula = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
tara = \\a,st => "だったら" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "で" ; -- for wishes - not correct!
obj = \\st => [] ;
@@ -424,3 +424,4 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
} ;
}