1
0
forked from GitHub/gf-core

Liza's patch to Jap

This commit is contained in:
aarne
2012-05-29 07:18:16 +00:00
parent fa4fcdab35
commit b2206f09d8
22 changed files with 1636 additions and 1394 deletions

View File

@@ -9,42 +9,38 @@ flags coding = utf8 ;
attr = \\st => adj.attr ;
te = \\st => adj.te ;
ba = \\st => adj.ba ;
adv = \\st => adj.adv ;
prepositive = \\st => [] ;
compar = NoCompar ;
adv = \\st => adj.adv ! Pos ;
prepositive = \\st => [] ;
dropNaEnging = \\st => adj.dropNaEnging
} ;
ComparA adj np = {
pred = \\st,t,p => np.s ! st ++ "より" ++ adj.pred ! st ! t ! p ;
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 ;
ba = \\st => np.s ! st ++ "より" ++ adj.ba ;
adv = \\st => np.s ! st ++ "より" ++ adj.adv ;
te = \\st,p => np.s ! st ++ "より" ++ adj.te ! p ;
ba = \\st,p => np.s ! st ++ "より" ++ adj.ba ! p ;
adv = \\st => np.s ! st ++ "より" ++ adj.adv ! Pos ;
prepositive = np.prepositive ;
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 ;
ba = \\st => np.s ! st ++ a2.prep ++ a2.ba ;
te = \\st,p => np.s ! st ++ a2.prep ++ a2.te ! p ;
ba = \\st,p => np.s ! st ++ a2.prep ++ a2.ba ! p ;
prepositive = np.prepositive ;
adv = \\st => [] ;
compar = NoCompar ;
adv = \\st => np.s ! st ++ a2.prep ++ a2.adv ! Pos ;
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 ;
ba = \\st => "自分" ++ a2.prep ++ a2.ba ;
adv = \\st => [] ;
te = \\st,p => "自分" ++ a2.prep ++ a2.te ! p ;
ba = \\st,p => "自分" ++ a2.prep ++ a2.ba ! p ;
adv = \\st => "自分" ++ a2.prep ++ a2.adv ! Pos ;
prepositive = \\st => [] ;
compar = NoCompar ;
dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging
} ;
@@ -53,32 +49,53 @@ flags coding = utf8 ;
attr = \\st => a2.attr ;
te = \\st => a2.te ;
ba = \\st => a2.ba ;
adv = \\st => [] ;
adv = \\st => a2.adv ! Pos ;
prepositive = \\st => [] ;
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 ;
ba = \\st => "もっと" ++ adj.ba ;
adv = \\st => "もっと" ++ adj.adv ;
te = \\st,p => "もっと" ++ adj.te ! p ;
ba = \\st,p => "もっと" ++ adj.ba ! p ;
adv = \\st => "もっと" ++ adj.adv ! Pos ;
prepositive = \\st => [] ;
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 ;
ba = \\st => np.s ! st ++ cadv.s ++ ap.ba ! st ;
pred = \\st,t => case cadv.less of {
True => table {
Pos => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! Neg ;
Neg => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! Pos
} ;
False => \\p => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! p
} ;
attr = \\st => case cadv.less of {
True => np.s ! st ++ cadv.s ++ ap.pred ! Plain ! TPres ! Neg ;
False => np.s ! st ++ cadv.s ++ ap.attr ! st
} ;
te = \\st => case cadv.less of {
True => table {
Pos => np.s ! st ++ cadv.s ++ ap.te ! st ! Neg ;
Neg => np.s ! st ++ cadv.s ++ ap.te ! st ! Pos
} ;
False => \\p => np.s ! st ++ cadv.s ++ ap.te ! st ! p
} ;
ba = \\st => case cadv.less of {
True => table {
Pos => np.s ! st ++ cadv.s ++ ap.ba ! st ! Neg ;
Neg => np.s ! st ++ cadv.s ++ ap.ba ! st ! Pos
} ;
False => \\p => np.s ! st ++ cadv.s ++ ap.ba ! st ! p
} ;
adv = \\st => np.s ! st ++ cadv.s ++ ap.adv ! st ;
prepositive = np.prepositive ;
compar = cadv.compar ;
dropNaEnging = \\st => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st
dropNaEnging = \\st => case cadv.less of {
True => np.s ! st ++ cadv.s ++ ap.pred ! Plain ! TPres ! Neg ;
False => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st
}
} ;
AdjOrd ord = {
@@ -86,31 +103,28 @@ flags coding = utf8 ;
attr = \\st => ord.attr ;
te = \\st => ord.te ;
ba = \\st => ord.ba ;
adv = \\st => ord.adv ;
adv = \\st => ord.adv ! Pos ;
prepositive = \\st => [] ;
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 ;
ba = \\st => sc.s ! Ga ! st ++ "こと" ++ ap.ba ! st ;
adv = \\st => sc.s ! Ga ! st ++ "こと" ++ ap.adv ! st ;
pred = \\st,t,p => sc.s ! Wa ! st ++ "こと" ++ ap.pred ! st ! t ! p ;
attr = \\st => sc.s ! Wa ! st ++ "こと" ++ ap.attr ! st ;
te = \\st,p => sc.s ! Wa ! st ++ "こと" ++ ap.te ! st ! p ;
ba = \\st,p => sc.s ! Wa ! st ++ "こと" ++ ap.ba ! st ! p ;
adv = \\st => sc.s ! Wa ! st ++ "こと" ++ ap.adv ! st ;
prepositive = ap.prepositive ;
compar = ap.compar ;
dropNaEnging = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.dropNaEnging ! st
dropNaEnging = \\st => sc.s ! Wa ! 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 ;
ba = \\st => ada.s ++ ap.ba ! st ;
te = \\st,p => ada.s ++ ap.te ! st ! p ;
ba = \\st,p => ada.s ++ ap.ba ! st ! p ;
adv = \\st => ada.s ++ ap.adv ! st ;
prepositive = ap.prepositive ;
compar = ap.compar ;
dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st
} ;
@@ -125,11 +139,11 @@ flags coding = utf8 ;
} ;
te = \\st => case adv.prepositive of {
True => ap.te ! st ;
False => adv.s ! st ++ ap.te ! st
False => \\p => adv.s ! st ++ ap.te ! st ! p
} ;
ba = \\st => case adv.prepositive of {
True => ap.ba ! st ;
False => adv.s ! st ++ ap.ba ! st
False => \\p => adv.s ! st ++ ap.ba ! st ! p
} ;
adv = \\st => case adv.prepositive of {
True => ap.adv ! st ;
@@ -139,7 +153,6 @@ flags coding = utf8 ;
True => adv.s ! st ;
False => []
} ;
compar = ap.compar ;
dropNaEnging = \\st => case adv.prepositive of {
True => ap.dropNaEnging ! st ;
False => adv.s ! st ++ ap.dropNaEnging ! st

View File

@@ -4,37 +4,38 @@ flags coding = utf8 ;
lin
PositAdvAdj a = {s = \\st => a.adv ; prepositive = False ; compar = NoCompar} ;
PositAdvAdj a = {s = \\st => a.adv ! Pos ; prepositive = False} ;
PrepNP prep np = {s = \\st => np.s ! st ++ prep.s ;
prepositive = False ; compar = NoCompar} ;
prepositive = False} ;
ComparAdvAdj cadv a np = {s = \\st => np.s ! st ++ cadv.s ++ a.adv ;
prepositive = False ; compar = cadv.compar} ;
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
} ;
prepositive = False} ;
ComparAdvAdjS cadv a s = {s = \\st => s.s ! Ga ! Plain ++ "こと" ++ cadv.s ++ a.adv ;
prepositive = False ; compar = cadv.compar} ;
ComparAdvAdjS cadv a s = {
s = \\st => case cadv.less of {
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 ; compar = NoCompar} ;
prepositive = adv.prepositive} ;
PositAdAAdj a = {s = a.adv} ;
PositAdAAdj a = {s = a.adv ! Pos } ;
SubjS subj s = {
s = \\st => case subj.type of {
If => s.ba ! (Wa | Ga) ! st ++ subj.s ;
_ => s.s ! (Wa | Ga) ! st ++ subj.s
If => s.ba ! Wa ! st ++ subj.s ;
_ => s.s ! Wa ! st ++ subj.s
} ;
prepositive = True ;
compar = NoCompar
prepositive = True
} ;
AdnCAdv cadv = {
s = case cadv.compar of {
More => "以上" ; -- "ijou"
Less => "以下" ; -- "ika" ;
NoCompar => "もの"
} ;
postposition = True
} ;
}
AdnCAdv cadv = {s = cadv.s_adn ; postposition = True} ;
}

View File

@@ -1,6 +1,6 @@
--# -path=.:../abstract:../common:../prelude
concrete AllJap of AllJapAbs =
LangJap
-- ExtraJap
** {} ;
--# -path=.:../abstract:../common:../prelude
concrete AllJap of AllJapAbs =
LangJap,
ExtraJap
** {} ;

View File

@@ -1,4 +1,4 @@
abstract AllJapAbs =
Lang
-- ExtraJapAbs
** {} ;
abstract AllJapAbs =
Lang,
ExtraJapAbs
** {} ;

View File

@@ -9,86 +9,81 @@ flags coding = utf8 ;
lincat
S = {s, te, ba, subj : Particle => Style => Str ; pred, pred_te, pred_ba : Style => Str} ;
QS = {s : Particle => Style => Str} ;
QS = {s : Particle => Style => Str ; s_plain_pred : Particle => Style => Str} ;
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, ba, subj : Particle => Style => Str ;
pred : Style => TTense => Polarity => 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_ba : Style => Str ;
changePolar : Bool} ;
Cl = {s : Particle => Style => TTense => Polarity => Str ; subj : Particle => Style => Str ;
te, ba : Particle => Style => Polarity => Str ; pred : Style => TTense => Polarity => Str ;
pred_te, pred_ba : Style => Polarity => Str ; changePolar : Bool} ;
ClSlash = {s, pred : Style => TTense => Polarity => Str ; subj : Particle => Style => Str ;
te, pred_te, pred_ba : Style => Polarity => Str ; changePolar : Bool} ;
SSlash = {s : Style => Str ; te : Style => Str} ;
Imp = {s : Style => Polarity => Str} ;
QCl = {s : Particle => Style => TTense => Polarity => Str ; changePolar : Bool} ;
IP = {s : Style => Str ; anim : Animateness ; how8many : Bool} ;
IComp = {s : Style => Str} ;
QCl = {s : Particle => Style => TTense => Polarity => Str ;
s_plain_pred : Particle => Style => TTense => Polarity => Str ; changePolar : Bool} ;
IP = {s_subj, s_obj : Style => Str ; anim : Animateness ; how8many : Bool} ;
IComp = {s : Style => Str ; wh8re : Bool} ;
IDet = {s : Str ; n : Number ; how8many : Bool ; inclCard : Bool} ;
IQuant = {s : Str} ;
RCl = {s : Animateness => Style => TTense => Polarity => Str ;
te : Animateness => Style => Str ;
subj : Particle => Style => Str ;
pred : Animateness => Style => TTense => Polarity => 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 ; 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 ; 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 ;
ba : Style => Str ; adv : Style => Str ; dropNaEnging : Style => Str ;
prepositive : Style => Str ; compar : ComparSense} ;
RCl = {s, pred : Animateness => Style => TTense => Polarity => Str ;
te, pred_te, pred_ba : Animateness => Style => Polarity => Str ;
subj : Particle => Style => Str ; changePolar : Bool ; missingSubj : Bool} ;
RP = {s : Style => Str ; null : Bool} ;
VP = ResJap.VP ; -- {verb : Speaker => Animateness => Style => TTense => Polarity => Str ;
-- a_stem, i_stem : Speaker => Animateness => Style => Str ;
-- te, ba : Speaker => Animateness => Style => Polarity => Str ;
-- prep : Str ; obj : Style => Str ; prepositive : Style => Str} ;
Comp = {verb : Animateness => Style => TTense => Polarity => Str ; a_stem, i_stem :
Animateness => Style => Str ; te, ba : Animateness => Style => Polarity => Str ;
obj : Style => Str ; prepositive : Style => Str} ;
VPSlash = {s : Speaker => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Str ; te, ba : Speaker => Polarity => Str ;
prep : Str ; obj : Style => Str ; prepositive : Style => Str ; v2vType : Bool} ;
AP = {pred : Style => TTense => Polarity => Str ; attr, adv, dropNaEnging, prepositive :
Style => Str ; te, ba : Style => Polarity => Str} ;
NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ;
-- changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
-- changePolar : Bool ; meaning : Speaker ; 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 ; sp : Style => Str ; no : Bool} ;
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 ; tenPlus : 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 ; ba : Str ; adv : Str ; dropNaEnging : Str} ;
Numeral = {s : Str ; n : Number} ;
Digits = {s : Str ; n : Number} ;
Num = ResJap.Num ; -- {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool ;
-- tenPlus : Bool} ;
Card = {s : Str ; postpositive : Str ; n : Number ; tenPlus : Bool} ;
Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr, adv,
-- dropNaEnging : Str ; te, ba : Polarity => Str} ;
Numeral = {s : Str ; n : Number ; tenPlus : Bool} ;
Digits = {s : Str ; n : Number ; tenPlus : Bool ; tail : DTail} ;
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 ; ba : Str}
V2 = Verb ** {pass: Style => TTense => Polarity => Str ; pass_te : Str ; pass_a_stem : 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} ;
Prep = Preposition ; -- {s : Str ; null : Str} ;
V = Verb ; -- {s : Style => TTense => Polarity => Str ; a_stem, i_stem :
-- Str ; te, ba : Polarity => Str}
V2 = Verb2 ; -- {s, pass : Style => TTense => Polarity => Str ; a_stem, i_stem,
-- pass_a_stem, pass_i_stem, prep : Str ; te, ba, pass_te,
-- pass_ba : Polarity => Str} ;
V3 = Verb3 ; -- {s : Speaker => Style => TTense => Polarity => Str ; a_stem,
-- i_stem : Speaker => Str ; te, ba : Speaker => Polarity =>
-- Str ; prep1, prep2 : Str} ;
VV = ResJap.VV ; -- {s : Speaker => Style => TTense => Polarity => Str ; te,
-- a_stem, i_stem, ba, te_neg, ba_neg : Speaker => Str ;
-- sense : ModSense} ;
VS = Verb ** {prep : Str} ;
VQ = Verb ** {prep : Str} ;
VQ = Verb ;
VA = Verb ;
V2V = Verb ;
V2S = Verb ;
V2Q = Verb ;
V2A = Verb ;
A = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr : Str;
-- te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ;
A = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr,
-- dropNaEnging : Str ; te, ba, adv : Polarity => Str} ;
A2 = Adj2 ; -- Adj ** {prep : Str} ;
N = Noun ; -- {s : Number => Style => Str ; anim : Animateness ;
-- counter : Str ; counterReplace : Bool} ;
-- counter : Str ; counterReplace : Bool ; counterTsu : Bool} ;
N2 = Noun ** {prep : Str; object : Style => Str} ;
N3 = Noun ** {prep1 : Str; prep2 : Str} ;
PN = PropNoun ; -- {s : Style => Str} ;
PN = PropNoun ; -- {s : Style => Str ; anim : Animateness} ;
}

View File

@@ -4,11 +4,13 @@ flags coding = utf8 ;
lincat
Text, Phr, PConj, Interj, AdV, AdA = {s : Str} ;
PConj, Interj, AdV, AdA = {s : Str} ;
Utt = {s : Style => Str} ;
Phr, Text = {s : Str} ;
Voc = {s : Style => Str ; please : Bool} ;
Utt = {s : Particle => Style => Str ; type : UttType} ;
Voc = {s : Style => Str ; type : VocType ; null : Str} ;
SC = {s : Particle => Style => Str ; isVP : Bool} ;
@@ -16,9 +18,9 @@ flags coding = utf8 ;
AdN = {s : Str ; postposition : Bool} ;
IAdv = {s : Style => Str ; particle : Str} ;
IAdv = {s : Style => Str ; particle : Str ; wh8re : Bool} ;
CAdv = {s : Str ; compar : ComparSense} ;
CAdv = {s : Str ; less : Bool ; s_adn : Str} ;
Temp = {s : Str ; t : TTense ; a : Anteriority} ;
Tense = {s : Str ; t : TTense} ;

View File

@@ -48,24 +48,22 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
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
pred = \\st,t,p => conj.null ++ ap.s1and ! st ! p ++ ap.s2pred ! st ! t ! p ;
attr = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2attr ! st ;
te = \\st,p => conj.null ++ ap.s1and ! st ! p ++ ap.s2te ! st ! p ;
ba = \\st,p => conj.null ++ ap.s1and ! st ! p ++ ap.s2ba ! st ! p ;
adv = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1and ! st ! Pos ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive
} ;
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
pred = \\st,t,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2pred ! st ! t ! p ;
attr = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2attr ! st ;
te = \\st,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2te ! st ! p ;
ba = \\st,p => conj.null ++ ap.s1or ! st ! p ++ ap.s2ba ! st ! p ;
adv = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2adv ! st ;
dropNaEnging = \\st => conj.null ++ ap.s1or ! st ! Pos ++ ap.s2dropNaEnging ! st ;
prepositive = ap.prepositive
}
} ;
@@ -74,8 +72,7 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
(And | Both) => conj.null ++ adv.and ! st ;
Or => conj.null ++ adv.or ! st
} ;
prepositive = adv.prepositive ;
compar = adv.compar
prepositive = adv.prepositive
} ;
ConjNP conj np = {
@@ -90,13 +87,14 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
Both => False
} ;
changePolar = np.changePolar ;
Pron1Sg = np.Pron1Sg ;
meaning = SomeoneElse ;
anim = np.anim
} ;
ConjIAdv conj iadv = {
s = \\st => conj.null ++ iadv.s ! st ;
particle = iadv.particle
particle = iadv.particle ;
wh8re = iadv.wh8re
} ;
ConjCN conj cn = {
@@ -109,7 +107,8 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
counterReplace = cn.counterReplace ;
object = cn.object ;
prepositive = cn.prepositive ;
hasAttr = cn.hasAttr
hasAttr = cn.hasAttr ;
counterTsu = cn.counterTsu
} ;
BaseS x y = {
@@ -157,7 +156,7 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
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 ;
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 ;
@@ -196,11 +195,6 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
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
}
} ;
@@ -210,17 +204,12 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
_ => xs.and ! st ++ "," ++ x.s ! st
} ;
or = \\st => case <x.prepositive, xs.prepositive> of {
<False, False> => xs.or ! st ++ "か" ++ x.s ! st ;
<False, False> => x.s ! st ++ "か" ++ xs.or ! 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
}
} ;
@@ -237,7 +226,7 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
<False, False> => False ;
_ => True
} ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = case <x.anim, y.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
@@ -257,47 +246,59 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
<False, False> => False ;
_ => True
} ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = case <xs.anim, x.anim> of {
<Inanim, Inanim> => Inanim ;
_ => Anim
}
} ;
BaseAP x y = {
s1and = x.te ;
s1or = \\st => x.dropNaEnging ! st ++ "か" ;
s1or = \\st => table {
Pos => x.dropNaEnging ! st ++ "か" ;
Neg => x.pred ! Plain ! TPres ! Neg ++ "か"
} ;
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
prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st
} ;
ConsAP x xs = {
s1and = \\st => xs.s1and ! st ++ xs.s2te ! st ;
s1or = \\st => xs.s1or ! st ++ xs.s2dropNaEnging ! st ++ "か" ;
s1and = \\st,p => xs.s1and ! st ! p ++ xs.s2te ! st ! p ;
s1or = \\st => table {
Pos => xs.s1or ! st ! Pos ++ xs.s2dropNaEnging ! st ++ "か" ;
Neg => xs.s1or ! st ! Neg ++ xs.s2pred ! Plain ! TPres ! Neg ++ "か"
} ;
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
prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st
} ;
BaseIAdv x y = {
s = \\st => x.s ! st ++ x.particle ++ y.s ! st ;
particle = y.particle
particle = y.particle ;
wh8re = case <x.wh8re, y.wh8re> of {
<False, False> => False ;
_ => True
}
} ;
ConsIAdv x xs = {
s = \\st => x.s ! st ++ x.particle ++ xs.s ! st ;
particle = xs.particle
particle = xs.particle ;
wh8re = case <x.wh8re, xs.wh8re> of {
<False, False> => False ;
_ => True
}
} ;
BaseCN x y = {
@@ -311,7 +312,8 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
counterReplace = y.counterReplace ;
object = x.object ;
prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ;
hasAttr = x.hasAttr
hasAttr = x.hasAttr ;
counterTsu = y.counterTsu
} ;
ConsCN x xs = {
@@ -325,7 +327,8 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
counterReplace = xs.counterReplace ;
object = x.object ;
prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ;
hasAttr = x.hasAttr
hasAttr = x.hasAttr ;
counterTsu = xs.counterTsu
} ;
lincat
@@ -337,18 +340,19 @@ concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in {
pred_baOr : Animateness => Style => Str ; subj : Particle => Style => Str ;
missingSubj : Bool} ;
[Adv] = {and, or : Style => Str ; prepositive : Bool ; compar : ComparSense} ;
[Adv] = {and, or : Style => Str ; prepositive : Bool} ;
[NP] = {and, or, both : Style => Str ; prepositive : Style => Str ;
needPart : Bool ; changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
needPart : Bool ; changePolar : Bool ; meaning : Speaker ; anim : Animateness} ;
[AP] = {s1and, s1or : Style => Str ; s2pred : Style => TTense => Polarity => Str ;
s2attr, s2te, s2ba, s2adv, s2dropNaEnging, prepositive : Style => Str ;
compar : ComparSense} ;
[AP] = {s1and, s1or : Style => Polarity => Str ; s2pred : Style => TTense => Polarity => Str ;
s2attr, s2adv, s2dropNaEnging, prepositive : Style => Str ;
s2te, s2ba : Style => Polarity => Str} ;
[IAdv] = {s : Style => Str ; particle : Str} ;
[IAdv] = {s : Style => Str ; particle : Str ; wh8re : Bool} ;
[CN] = {and, or : Number => Style => Str ; anim : Animateness ; counter : Str ;
counterReplace : Bool ; object : Style => Str ; prepositive : Style => Str ;
hasAttr : Bool} ;
hasAttr : Bool ; counterTsu : Bool} ;
}

View File

@@ -12,6 +12,5 @@ concrete GrammarJap of Grammar =
TextJap,
StructuralJap,
IdiomJap,
TenseJap --,
-- TransferJap
TenseJap
;

View File

@@ -4,223 +4,158 @@ flags coding = utf8 ;
lin
ImpersCl vp = case vp.compar of {
More => {
s = table {
Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
Ga => \\st,t,p => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Inanim ! st ! t ! p
} ;
te = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
ba = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ;
Ga => \\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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
ImpersCl vp = {
s = table {
Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
Ga => \\st,t,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p
} ;
Less => {
s = \\part,st,t,p => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
vp.prep ++ vp.te ! 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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
te = table {
Wa => \\st,p => vp.prepositive ! st ++ "これ" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
Ga => \\st,p => vp.prepositive ! st ++ "これ" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p
} ;
ba = table {
Wa => \\st,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
Ga => \\st,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p
} ;
NoCompar => {
s = table {
Wa => \\st,t,p => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
Ga => \\st,t,p => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Inanim ! st ! t ! p
} ;
te = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
ba = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ;
Ga => \\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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
changePolar = False
}
subj = table {
Wa => \\st => vp.prepositive ! st ++ "これは" ;
Ga => \\st => vp.prepositive ! st ++ "これが"
} ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
changePolar = False
} ;
GenericCl vp = case vp.compar of {
More => {
s = table {
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
} ;
te = table {
Wa => \\st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Anim ! st ;
Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Anim ! st
} ;
ba = table {
Wa => \\st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Anim ! st ;
Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Anim ! st
} ;
subj = table {
Wa => \\st => vp.prepositive ! st ++ "誰か" ;
Ga => \\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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
} ;
Less => {
s = \\part,st,t,p => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
vp.prep ++ vp.te ! 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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
} ;
NoCompar => {
s = \\part,st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
te = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.te ! 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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ;
changePolar = False
}
GenericCl vp = {
s = \\part,st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ -- "dareka"
vp.prep ++ vp.verb ! SomeoneElse ! Anim ! st ! t ! p ;
te = \\part,st,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Anim ! st ! p ;
ba = \\part,st,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Anim ! st ! p ;
subj = \\part,st => vp.prepositive ! st ++ "誰か" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Anim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Anim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Anim ! st ! p ;
changePolar = False
} ;
CleftNP np rs = {
s = \\part,st,t,p => np.prepositive ! st ++ rs.subj ! Ga ! st ++
rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++
mkCopula.s ! st ! t ! p ;
te = \\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 ++ "であれば" ;
te = \\part,st,p => np.prepositive ! st ++ rs.subj ! Ga ! st ++ rs.pred ! np.anim ! Plain ++
"のは" ++ np.s ! st ++ mkCopula.te ! p ;
ba = \\part,st,p => np.prepositive ! st ++ rs.subj ! Ga ! st ++ rs.pred ! np.anim ! Plain ++
"のは" ++ np.s ! st ++ mkCopula.ba ! p ;
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_ba = \\st => np.s ! st ++ "であれば" ;
pred_te = \\st,p => np.s ! st ++ mkCopula.te ! p ;
pred_ba = \\st,p => np.s ! st ++ mkCopula.ba ! p ;
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 ++
"だって" ;
ba = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
"であれば" ;
te = \\part,st,p => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
mkCopula.te ! p ;
ba = \\part,st,p => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
mkCopula.ba ! p ;
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_ba = \\st => adv.s ! st ++ "であれば" ;
pred_te = \\st,p => adv.s ! st ++ mkCopula.te ! p ;
pred_ba = \\st,p => adv.s ! st ++ mkCopula.ba ! p ;
changePolar = False
} ;
ExistNP np = case np.needPart of {
True => {
s = table {
s = table {
Wa => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "は" ++
mkExistV.verb ! np.anim ! st ! t ! p ;
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
mkExistV.verb ! np.anim ! st ! t ! p
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p
} ;
te = table {
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
Wa => \\st,p => np.prepositive ! st ++ np.s ! st ++ "は" ++
mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
mkExistV.te ! SomeoneElse ! np.anim ! st ! p
} ;
ba = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.ba ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.ba ! np.anim ! st
Wa => \\st,p => np.prepositive ! st ++ np.s ! st ++ "は" ++
mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
mkExistV.ba ! SomeoneElse ! np.anim ! st ! p
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が"
} ;
pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ;
pred_te = \\st => mkExistV.te ! np.anim ! st ;
pred_ba = \\st => mkExistV.ba ! np.anim ! st ;
pred = \\st,t,p => mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
pred_te = \\st,p => mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
pred_ba = \\st,p => mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ;
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 ;
ba = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.ba ! np.anim ! st ;
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
te = \\part,st,p => np.prepositive ! st ++ np.s ! st ++
mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
ba = \\part,st,p => np.prepositive ! st ++ np.s ! st ++
mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ;
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_ba = \\st => mkExistV.ba ! np.anim ! st ;
pred = \\st,t,p => mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ;
pred_te = \\st,p => mkExistV.te ! SomeoneElse ! np.anim ! st ! p ;
pred_ba = \\st,p => mkExistV.ba ! SomeoneElse ! np.anim ! st ! p ;
changePolar = np.changePolar
}
} ;
ExistIP ip = {
s = \\part,st,t,p => ip.s ! st ++ "が" ++ mkExistV.verb ! ip.anim ! st ! t ! p ;
s = \\part,st,t,p => case ip.how8many of {
True => ip.s_subj ! st ++ mkExistV.verb ! SomeoneElse ! ip.anim ! st ! t ! p ++ "か" ;
False => ip.s_subj ! st ++ "が" ++ mkExistV.verb ! SomeoneElse ! ip.anim ! st ! t ! p
++ "か"
} ;
s_plain_pred = \\part,st,t,p => case ip.how8many of {
True => ip.s_subj ! st ++ mkExistV.verb ! SomeoneElse ! ip.anim ! Plain ! t ! p ++ "か" ;
False => ip.s_subj ! st ++ "が" ++ mkExistV.verb ! SomeoneElse ! ip.anim ! Plain ! t ! p
++ "か"
} ;
changePolar = False
} ;
ProgrVP vp = {
verb = \\a,st,t,p => vp.te ! a ! st ++ (mkVerb "い" "い" "いる" "いった").s ! st ! t ! p ;
te = \\a,st => vp.te ! a ! st ++ "いて" ;
a_stem = \\a,st => vp.te ! a ! st ++ "い" ;
i_stem = \\a,st => vp.te ! a ! st ++ "い" ;
ba = \\a,st => vp.te ! a ! st ++ "いれば" ;
verb = \\sp,a,st,t,p => vp.te ! sp ! a ! st ! Pos ++ (mkVerb "いる" Gr2).s ! st ! t ! p ;
te = \\sp,a,st,p => vp.te ! sp ! a ! st ! Pos ++ mkExistV.te ! SomeoneElse ! Anim ! st ! p ;
a_stem = \\sp,a,st => vp.te ! sp ! a ! st ! Pos ++ "い" ;
i_stem = \\sp,a,st => vp.te ! sp ! a ! st ! Pos ++ "い" ;
ba = \\sp,a,st,p => vp.te ! sp ! a ! st ! Pos ++ mkExistV.ba ! SomeoneElse ! Anim ! st ! p ;
prep = vp.prep ;
obj = vp.obj ;
prepositive = vp.prepositive ;
compar = vp.compar
prepositive = vp.prepositive
} ;
ImpPl1 vp = {s = \\st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.i_stem ! Anim ! st ++ "ましょう"} ;
ImpPl1 vp = {s = \\part,st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.i_stem ! SomeoneElse ! Anim ! st ++ "ましょう" ; type = NoImp} ;
ImpP3 np vp = {s = \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "に" ++
vp.obj ! st ++ vp.prep ++ vp.a_stem ! Anim ! st ++ "せて"} ;
ImpP3 np vp = {
s = \\part => table {
Resp => np.prepositive ! Resp ++ vp.prepositive ! Resp ++ np.s ! Resp ++ "を" ++
vp.obj ! Resp ++ vp.prep ++ vp.a_stem ! SomeoneElse ! Anim ! Resp ++ "せて" ;
Plain => np.prepositive ! Plain ++ vp.prepositive ! Plain ++ np.s ! Plain ++ "を" ++
vp.obj ! Plain ++ vp.prep ++ vp.a_stem ! SomeoneElse ! Anim ! Plain ++ "せなさい"
} ;
type = Imper
} ;
}

View File

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

View File

@@ -4,51 +4,51 @@ flags coding = utf8 ;
lin
add_V3 = mkV3 "加え" "加え" "加える" "加えた" "に" "を" False ; -- "kuwaeru" "ni" "o"
add_V3 = mkV3 "加え" "に" "を" Gr2 ; -- "kuwaeru"
airplane_N = mkN "飛行機" Inanim "機" False ; -- "hikouki" "ki"
alas_Interj = ss "残念です" ; -- "zannendesu"
already_Adv = mkAdv "すでに" ; -- "sudeni"
animal_N = mkN "動物" Anim "疋" True ; -- "doubutsu" "hiki"
answer_V2S = mkV "答え" "答え" "答える" "答えた" ; -- "kotaeru"
answer_V2S = mkV "答える" Gr2 ; -- "kotaeru"
apartment_N = mkN "アパート" Inanim ; -- "apaato"
apple_N = mkN "リンゴ" Inanim "個" False ; -- "ringo" "ko"
art_N = mkN "芸術" Inanim ; -- "geijutsu"
ashes_N = mkN "灰" Inanim ; -- "hai"
ask_V2Q = mkV "聞か" "聞き" "聞く" "聞いた" ; -- "kiku"
baby_N = mkN "赤ちゃん" Anim "人" False ; -- "akachan" "nin"
ask_V2Q = mkV "聞く" Gr1 ; -- "kiku"
baby_N = mkN "赤ちゃん" Anim "人" False "赤ちゃんたち" ; -- "akachan"
back_N = mkN "背" Inanim ; -- "se"
bad_A = mkA "悪い" ; -- "warui"
bank_N = mkN "銀行" Inanim ; -- "ginkou"
bark_N = mkN "木皮" Inanim ; -- "kohada" Inanim ;
bark_N = mkN "木皮" Inanim ; -- "kohada"
beautiful_A = mkA "美しい" ; -- "utsukushii"
become_VA = mkV "なら" "なり" "なる" "なった" ; -- "naru"
become_VA = mkV "なる" Gr1 ; -- "naru"
beer_N = mkN "ビール" Inanim "杯" False ; -- "biiru" "hai"
beg_V2V = mkV "請い願わ" "請い願い" "請い願う" "請い願った" ; -- "koinegau"
beg_V2V = mkV "請い願う" Gr1 ; -- "koinegau"
belly_N = mkN "お腹" "腹" Inanim ; -- "onaka" "hara"
big_A = mkA "大きな" ; -- "ookina"
bike_N = mkN "自転車" Inanim "台" False ; -- "jitensha" "dai"
bird_N = mkN "鳥" Anim "羽" False ; -- "tori" "wa"
bite_V2 = mkV2 "噛ま" "噛み" "噛む" "噛んだ" "を" ; -- "kamu" "o"
bite_V2 = mkV2 "噛む" "を" Gr1 ; -- "kamu"
black_A = mkA "黒い" ; -- "kuroi" ;
blood_N = mkN "血液" Inanim ; -- "ketsueki"
blow_V = mkV "吹か" "吹き" "吹く" "吹いた" ; -- "fuku"
blow_V = mkV "吹く" Gr1 ; -- "fuku"
blue_A = mkA "青い" ; -- "aoi" ;
boat_N = mkN "ボート" Inanim "艘" False ; -- "bouto" "sou"
bone_N = mkN "骨" Inanim ; -- "hone"
book_N = mkN "本" Inanim "冊" False ; -- "hon" "satsu"
boot_N = mkN "ブート" Inanim ; -- "buuto"
boss_N = mkN "社長" Anim "人" False ; -- "shachou" "nin"
boy_N = mkN "男の子" Anim "人" False ; -- "otokonoko" "nin"
boss_N = mkN "社長" Anim "人" False "社長たち" ; -- "shachou"
boy_N = mkN "男の子" Anim "人" False "男の子たち" ; -- "otokonoko"
bread_N = mkN "パン" Inanim "斤" False ; -- "pan" "kin"
break_V2 = mkV2 "破ら" "破り" "破る" "破った" "を" ; -- "yaburu" "o"
break_V2 = mkV2 "破る" "を" Gr1 ; -- "yaburu"
breast_N = mkN "胸" Inanim ; -- "mune"
breathe_V = mkV "息し" "息し" "息する" "息した" ; -- "ikisuru"
breathe_V = mkV "息する" Suru ; -- "ikisuru"
broad_A = mkA "広い" ; -- "hiroi"
brother_N2 = mkN2 "男の兄弟" "の" Anim "人" False ; -- ("otoko" ++ "no" ++ "kyodai") "no" "nin"
brother_N2 = mkN2 "男の兄弟" Anim "人" False "男の兄弟たち" "の" ; -- "otokonokyodai"
brown_A = mkA "ブラウンの" ; -- "buraunno"
burn_V = mkV "焼けら" "焼けり" "焼ける" "焼けた" ; -- "yakeru"
burn_V = mkV "焼ける" Gr2 ; -- "yakeru"
butter_N = mkN "バター" Inanim ; -- "bataa"
buy_V2 = mkV2 "買わ" "買い" "買う" "買った" "を" ; -- "kau"
buy_V2 = mkV2 "買う" "を" Gr1 ; -- "kau"
camera_N = mkN "カメラ" Inanim ; -- "kamera"
cap_N = mkN "キャップ" Inanim ; -- "kyappu"
car_N = mkN "車" Inanim "車" True ; -- "kuruma" "sha"
@@ -57,140 +57,140 @@ lin
ceiling_N = mkN "天井" Inanim ; -- "tenjou"
chair_N = mkN "椅子" Inanim "脚" False ; -- "isu" "kyaku"
cheese_N = mkN "チーズ" Inanim ; -- "chiizu"
child_N = mkN "子" Anim "人" False ; -- "ko" "nin"
child_N = mkN "子" Anim "人" False "子供たち" ; -- "kodomo"
church_N = mkN "教会" Inanim "軒" False ; -- "kyoukai" "ken"
city_N = mkN "都市" Inanim ; -- "toshi"
clean_A = mkA "奇麗な" ; -- "kireina" ;
clever_A = mkA "賢い" ; -- "kashikoi" ;
close_V2 = mkV2 "閉め" "閉め" "閉める" "閉めた" "を" ; -- "shimeru"
close_V2 = mkV2 "閉める" "を" Gr2 ; -- "shimeru"
cloud_N = mkN "雲" Inanim ; -- "kumo"
coat_N = mkN "コート" Inanim ; -- "kouto"
cold_A = mkA "寒い" ; -- "samui" ;
come_V = mkV "来" "来" "来る" "来た" ; -- "ko" "ki" "kuru" "kita"
come_V = mkV "来る" Kuru ; -- "ko" "ki" "kuru" "kita"
computer_N = mkN "コンピュータ" Inanim ; -- "konpyuuta"
correct_A = mkA "正しい" ; -- "tadashii" ;
country_N = mkN "国" Inanim "ヶ国" True ; -- "kuni" "kakoku"
count_V2 = mkV2 "数え" "数え" "数える" "数えた" "を" ; -- "kazoeru"
cousin_N = mkN "いとこ" Anim "人" False ; -- "itoko" "nin"
count_V2 = mkV2 "数える" "を" Gr2 ; -- "kazoeru"
cousin_N = mkN "いとこ" Anim "人" False "いとこたち" ; -- "itoko"
cow_N = mkN "牛" Anim "頭" False ; -- "ushi" "tou"
cut_V2 = mkV2 "切ら" "切り" "切る" "切った" "を" ; -- "kiru"
cut_V2 = mkV2 "切る" "を" Gr1 ; -- "kiru"
day_N = mkN "日" Inanim "日" True ; -- "hi" "ka";
die_V = mkV "死な" "死に" "死ぬ" "死んだ" ; -- "shinu"
dig_V = mkV "掘ら" "掘り" "掘る" "掘った" ; -- "horu"
die_V = mkV "死ぬ" Gr1 ; -- "shinu"
dig_V = mkV "掘る" Gr1 ; -- "horu"
dirty_A = mkA "汚い" ; -- "kitanai" ;
distance_N3 = mkN3 "距離" "から" "まで" Inanim ; -- "kyori" "kara" "made"
doctor_N = mkN "医者" Anim "人" False ; -- "isha" "nin"
doctor_N = mkN "医者" Anim "人" False "医者たち" ; -- "isha"
dog_N = mkN "犬" Anim "匹" False ; -- "inu" "hiki"
door_N = mkN "ドア" Inanim ; -- "doa"
do_V2 = mkV2 "し" "し" "する" "した" "を" ; -- "suru"
drink_V2 = mkV2 "飲ま" "飲み" "飲む" "飲んだ" "を" ; -- "nomu"
do_V2 = mkV2 "する" "を" Suru ; -- "suru"
drink_V2 = mkV2 "飲む" "を" Gr1 ; -- "nomu"
dry_A = mkA "乾性の" ; -- "kanseino" ;
dull_A = mkA "詰まらない" ; -- "tsumaranai" ;
dust_N = mkN "塵" Inanim ; -- "chiri"
ear_N = mkN "耳" Inanim ; -- "mimi"
earth_N = mkN "地" Inanim ; -- "chi"
easy_A2V = mkA2 "簡単な" "に" ; -- "kantanna" "ni"
eat_V2 = mkV2 "食べ" "食べ" "食べる" "食べた" "を" ; -- "taberu"
eat_V2 = mkV2 "食べる" "を" Gr2 ; -- "taberu"
egg_N = mkN "卵" Inanim ; -- "tamago"
empty_A = mkA "虚しい" ; -- "munashii" ;
enemy_N = mkN "敵" Anim "人" False ; -- "teki" "nin"
enemy_N = mkN "敵" Anim "人" False "敵たち" ; -- "teki"
eye_N = mkN "目" Inanim ; -- "me"
factory_N = mkN "工場" Inanim ; -- "koujou"
fall_V = mkV "落ち" "落ち" "落ちる" "落ちた" ; -- "ochiru"
fall_V = mkV "落ちる" Gr2 ; -- "ochiru"
far_Adv = mkAdv "遠くに" ; -- "tookuni"
father_N2 = mkN2 "お父さん" "の" Anim "人" False ; -- "otousan" "no" Anim "nin" False ;
father_N2 = mkN2 "お父さん" Anim "人" False "お父さんたち" "の" ; -- "otousan"
fat_N = mkN "脂" Inanim ; -- "abura"
fear_VS = mkV2 "恐れ" "恐れ" "恐れる" "恐れた" "ことを" ; -- "osoreru" ("koto" ++ "o") ;
fear_V2 = mkV2 "恐れ" "恐れ" "恐れる" "恐れた" "を" ; -- "osoreru"
fear_VS = mkV2 "恐れ" "ことを" Gr2 ; -- "osoreru"
fear_V2 = mkV2 "恐れる" "を" Gr2 ; -- "osoreru"
feather_N = mkN "羽" Inanim ; -- "hane"
fight_V2 = mkV2 "戦わ" "戦い" "戦う" "戦った" "と" ; -- "tatakau"
find_V2 = mkV2 "拾わ" "拾い" "拾う" "拾った" "を" ; -- "hirou"
fight_V2 = mkV2 "戦う" "と" Gr1 ; -- "tatakau"
find_V2 = mkV2 "拾う" "を" Gr1 ; -- "hirou"
fingernail_N = mkN "爪" Inanim ; -- "tsume"
fire_N = mkN "火" Inanim ; -- "hi"
fish_N = mkN "魚" Anim "匹" False ; -- "sakana" "hiki"
float_V = mkV "浮か" "浮き" "浮く" "浮いた" ; -- "uku"
float_V = mkV "浮く" Gr1 ; -- "uku"
floor_N = mkN "床" Inanim ; -- "yuka"
flower_N = mkN "花" Inanim "輪" False ; -- "sakana" "rin"
flow_V = mkV "流れ" "流れ" "流れる" "流れた" ; -- "nagareru"
fly_V = mkV "飛ば" "飛び" "飛ぶ" "飛んだ" ; -- "tobu"
flow_V = mkV "流れる" Gr2 ; -- "nagareru"
fly_V = mkV "飛ぶ" Gr1 ; -- "tobu"
fog_N = mkN "霧" Inanim ; -- "kiri"
foot_N = mkN "足" Inanim ; -- "ashi"
forest_N = mkN "森" Inanim ; -- "mori"
forget_V2 = mkV2 "忘れ" "忘れ" "忘れる" "忘れた" "を" ; -- "wasureru"
freeze_V = mkV "凍らさ" "凍らし" "凍らす" "凍らした" ; -- "kourasu"
forget_V2 = mkV2 "忘れる" "を" Gr2 ; -- "wasureru"
freeze_V = mkV "凍らす" Gr1 ; -- "kourasu"
fridge_N = mkN "冷蔵庫" Inanim ; -- "reizouko"
friend_N = mkN "友だち" Anim "人" False ; -- "tomodachi" "nin"
friend_N = mkN "友だち" Anim "人" False ; -- "tomodachi"
fruit_N = mkN "果物" Inanim "個" False ; -- "kudamono" "ko"
full_A = mkA "一杯の" ; -- "ippaino" ;
fun_AV = mkA "可笑しい" ; -- "okashii" ;
garden_N = mkN "庭" Inanim ; -- "niwa"
girl_N = mkN "女の子" Anim "人" False ; -- "onnanoko" "nin"
give_V3 = mkV3 "上げ" "上げ" "上げる" "上げた" "に" "を" True ; -- "ageru" "ni" "o"
girl_N = mkN "女の子" Anim "人" False "女の子たち" ; -- "onnanoko"
give_V3 = mkGive ;
glove_N = mkN "手袋" Inanim ; -- "tebukuro"
gold_N = mkN "金" Inanim ; -- "kin"
good_A = mkA "良い" ; -- "ii" ;
go_V = mkV "行か" "行き" "行く" "行った" ; -- "iku"
go_V = mkV "行く" Gr1 ; -- "iku"
grammar_N = mkN "文法" Inanim ; -- "bumpou"
grass_N = mkN "草" Inanim ; -- "kusa"
green_A = mkA "緑の" ; -- "midorino" ;
green_A = mkA "緑の" ; -- "midoriirono" ;
guts_N = mkN "腸" Inanim ; -- "harawata"
hair_N = mkN "髪" Inanim ; -- "kami"
hand_N = mkN "手" Inanim ; -- "te"
harbour_N = mkN "港" Inanim ; -- "minato"
hate_V2 = mkV2 "憎ま" "憎み" "憎む" "憎んだ" "を" ; -- "nikumu"
hate_V2 = mkV2 "憎む" "を" Gr1 ; -- "nikumu"
hat_N = mkN "帽子" Inanim ; -- "boushi"
head_N = mkN "頭" Inanim ; -- "atama"
heart_N = mkN "心" Inanim ; -- "kokoro"
hear_V2 = mkV2 "聞か" "聞き" "聞く" "聞いた" "を" ; -- "kiku"
hear_V2 = mkV2 "聞く" "を" Gr1 ; -- "kiku"
heavy_A = mkA "重い" ; -- "omoi" ;
hill_N = mkN "丘" Inanim ; -- "oka"
hit_V2 = mkV2 "打た" "打ち" "打つ" "打った" "を" ; -- "utsu"
hold_V2 = mkV2 "持た" "持ち" "持つ" "持った" "を" ; -- "motsu"
hope_VS = mkV2 "期待し" "期待し" "期待する" "期待した" "ことを" ; -- "kitaisuru" ("koto" ++ "o") ;
hit_V2 = mkV2 "打つ" "を" Gr1 ; -- "utsu"
hold_V2 = mkV2 "持つ" "を" Gr1 ; -- "motsu"
hope_VS = mkV2 "期待する" "ことを" Suru ; -- "kitaisuru"
horn_N = mkN "角" Inanim "本" False ; -- "tsuno" "hon"
horse_N = mkN "馬" Anim "頭" False ; -- "uma" "tou"
hot_A = mkA "熱い" ; -- "atsui"
house_N = mkN "家" Inanim "軒" True ; -- "ie" "ken"
hunt_V2 = mkV2 "狩ら" "狩り" "狩る" "狩った" "を" ; -- "karu"
husband_N = mkN "夫" Anim "人" False ; -- "otto" "nin"
hunt_V2 = mkV2 "狩る" "を" Gr1 ; -- "karu"
husband_N = mkN "夫" Anim "人" False "夫たち" ; -- "otto"
ice_N = mkN "氷" Inanim ; -- "kouri"
important_A = mkA "重要な" ; -- "juuyouna" ;
industry_N = mkN "産業" Inanim ; -- "sagyou"
iron_N = mkN "鉄" Inanim ; -- "tetsu"
john_PN = mkPN "ジョン" "ジョンさん" ; -- "Jon" "Jon-san"
jump_V = mkV "躍ら" "躍り" "躍る" "躍った" ; -- "odoru"
kill_V2 = mkV2 "殺さ" "殺し" "殺す" "殺した" "を" ; -- "korosu"
king_N = mkN "王" Anim "人" False ; -- "ou" "nin"
john_PN = mkPN "ジョン" "ジョンさん" ;
jump_V = mkV "躍る" Gr1 ; -- "odoru"
kill_V2 = mkV2 "殺す" "を" Gr1 ; -- "korosu"
king_N = mkN "王" Anim "人" False "王たち" ; -- "ou"
knee_N = mkN "心" Inanim ; -- "kokoro"
know_V2 = mkV2 "知ら" "知り" "知る" "知った" "を" ; -- "shiru" "o"
know_VQ = mkV2 "知ら" "知り" "知る" "知った" "を" ; -- "shiru" "o"
know_VS = mkV2 "知ら" "知り" "知る" "知った" "ことを" ; -- "shiru" ("koto" ++ "o") ;
know_V2 = mkV2 "知る" "を" Gr1 ; -- "shiru"
know_VQ = mkV2 "知る" "を" Gr1 ; -- "shiru"
know_VS = mkV2 "知" "ことを" Gr1 ; -- "shiru"
lake_N = mkN "湖" Inanim ; -- "mizuumi"
lamp_N = mkN "電灯" Inanim ; -- "dentou"
language_N = mkN "言語" Inanim "語" True ; -- "gengo" "go"
laugh_V = mkV "笑わ" "笑い" "笑う" "笑った" ; -- "warau"
laugh_V = mkV "笑う" Gr1 ; -- "warau"
leaf_N = mkN "葉" Inanim "葉" True ; -- "ha" "ha"
learn_V2 = mkV2 "学ば" "学び" "学ぶ" "学んだ" "を" ; -- "manabu" "o"
learn_V2 = mkV2 "学ぶ" "を" Gr1 ; -- "manabu"
leather_N = mkN "皮革" Inanim ; -- "hikaku"
leave_V2 = mkV2 "残さ" "残し" "残す" "残した" "を" ; -- "nokosu" "o"
leave_V2 = mkV2 "残す" "を" Gr1 ; -- "nokosu"
left_Ord = mkA "左の" ; -- "hidarino" ;
leg_N = mkN "足" Inanim ; -- "ashi"
lie_V = mkV "横になら" "横になり" "横になる" "横になった" ; -- "yokoninaru"
like_V2 = mkV2 "好か" "好き" "好く" "好いた" "を" ; -- "suku" "o"
listen_V2 = mkV2 "聞か" "聞き" "聞く" "聞いた" "を" ; -- "kiku"
lie_V = mkV "横になる" Gr1 ; -- "yokoninaru"
like_V2 = mkV2 "好く" "を" Gr1 ; -- "suku"
listen_V2 = mkV2 "聞く" "を" Gr1 ; -- "kiku"
liver_N = mkN "肝臓" Inanim ; -- "kanzou"
live_V = mkV "生き" "生き" "生きる" "生きた" ; -- "ikiru"
live_V = mkV "生きる" Gr2 ; -- "ikiru"
long_A = mkA "長い" ; -- "nagai"
lose_V2 = mkV2 "失わ" "失い" "失う" "失った" "を" ; -- "ushinau" "o"
lose_V2 = mkV2 "失う" "を" Gr1 ; -- "ushinau"
louse_N = mkN "虱" Anim "匹" False ; -- "shirami" "hiki"
love_N = mkN "愛" Inanim ; -- "ai"
love_V2 = mkV2 "愛し" "愛し" "愛する" "愛した" "を" ; -- "aisuru" "o" ;
man_N = mkN "男" Anim "人" False ; -- "otoko" "nin"
married_A2 = mkA2 "結婚している" "既婚の" "と" ; -- "kekkonshiteiru" "kikonno" "to" ;
love_V2 = mkV2 "愛する" "を" Suru ; -- "aisuru"
man_N = mkN "男" Anim "人" False "男たち" ; -- "otoko"
married_A2 = mkA2 "結婚している" "既婚の" "と" ; -- "kekkonshiteiru" "kikonno"
meat_N = mkN "肉" Inanim ; -- "niku"
milk_N = mkN "ミルク" Inanim ; -- "miruku"
moon_N = mkN "月" Inanim ; -- "tsuki"
mother_N2 = mkN2 "お母さん" "の" Anim "人" False ; -- "okaasan" "no" "nin"
mother_N2 = mkN2 "お母さん" Anim "人" False "お母さんたち" "の" ; -- "okaasan"
mountain_N = mkN "山" Inanim "座" False ; -- "yama" "za"
mouth_N = mkN "口" Inanim ; -- "kuchi"
music_N = mkN "音楽" Inanim ; -- "ongaku"
@@ -206,29 +206,29 @@ lin
number_N = mkN "数" Inanim "数" True ; -- "kazu" "suu"
oil_N = mkN "油" Inanim ; -- "abura"
old_A = mkA "古い" ; -- "furui"
open_V2 = mkV2 "開か" "開き" "開く" "開いた" "を" ; -- "hiraku" "o"
paint_V2A = mkV "塗ら" "塗り" "塗る" "塗った" ; -- "nuru"
open_V2 = mkV2 "開く" "を" Gr1 ; -- "hiraku"
paint_V2A = mkV "塗る" Gr1 ; -- "nuru"
paper_N = mkN "紙" Inanim "葉" False ; -- "kami" "you"
paris_PN = mkPN "パリ" ; -- "pari"
paris_PN = mkPN "パリ" ;
peace_N = mkN "平和" Inanim ; -- "heiwa"
pen_N = mkN "ペン" Inanim "本" False ; -- "pen" "hon"
person_N = mkN "人" Anim "人" True ; -- "hito" "nin"
person_N = mkN "人" Anim "人" True "人たち" ; -- "hito"
planet_N = mkN "惑星" Inanim ; -- "wakusei"
plastic_N = mkN "プラスチック" Inanim ; -- "purasutikku"
play_V2 = mkV2 "遊ば" "遊び" "遊ぶ" "遊んだ" "を" ; -- "asobu" "o"
play_V = mkV "遊ば" "遊び" "遊ぶ" "遊んだ" ; -- "asobu"
policeman_N = mkN "警官" Anim "人" False ; -- "keikan" "nin"
priest_N = mkN "神父" Anim "人" False ; -- "shimpu" "nin"
play_V2 = mkV2 "遊ぶ" "を" Gr1 ; -- "asobu"
play_V = mkV "遊ぶ" Gr1 ; -- "asobu"
policeman_N = mkN "警官" Anim "人" False "警官たち" ; -- "keikan" "nin"
priest_N = mkN "神父" Anim "人" False "神父たち" ; -- "shimpu" "nin"
probable_AS = mkA "可能な" ; -- "kanouna"
pull_V2 = mkV2 "引か" "引き" "引く" "引いた" "を" ; -- "hiku" "o"
push_V2 = mkV2 "押さ" "押し" "押す" "押した" "を" ; -- "osu" "o"
put_V2 = mkV2 "置か" "置き" "置く" "置いた" "を" ; -- "oku" "o"
queen_N = mkN "女王" Anim "人" False ; -- "joou" "nin"
pull_V2 = mkV2 "引く" "を" Gr1 ; -- "hiku"
push_V2 = mkV2 "押す" "を" Gr1 ; -- "osu"
put_V2 = mkV2 "置く" "を" Gr1 ; -- "oku"
queen_N = mkN "女王" Anim "人" False "女王たち" ; -- "joou"
question_N = mkN "質問" Inanim "題" True ; -- "shitsumon" "dai"
radio_N = mkN "ラジオ" Inanim ; -- "rajio"
rain_N = mkN "雨" Inanim ; -- "ame"
rain_V0 = mkV "降ら" "降り" "降る" "降った" ; -- "furu" - needs "rain" as a subject!
read_V2 = mkV2 "読ま" "読み" "読む" "読んだ" "を" ; -- "yomu" "o"
rain_V0 = mkRain ;
read_V2 = mkV2 "読む" "を" Gr1 ; -- "yomu"
ready_A = mkA "準備ができている" "準備ができて" ; -- "jumbigadekiteiru"
reason_N = mkN "理由" Inanim ; -- "riyuu"
red_A = mkA "赤い" ; -- "akai"
@@ -244,22 +244,22 @@ lin
rotten_A = mkA "腐っている" "腐った" ; -- "kusatteiru"
round_A = mkA "丸い" ; -- "marui"
rubber_N = mkN "ゴム" Inanim ; -- "gomu" - material
rub_V2 = mkV2 "摩ら" "摩り" "摩る" "摩った" "を" ; -- "suru" "o"
rub_V2 = mkV2 "摩る" "を" Gr1 ; -- "suru"
rule_N = mkN "定め" Inanim "則" True ; -- "sadame" "soku"
run_V = mkV "走ら" "走り" "走る" "走った" ; -- "hashiru"
run_V = mkV "走る" Gr1 ; -- "hashiru"
salt_N = mkN "塩" Inanim ; -- "shio"
sand_N = mkN "砂" Inanim ; -- "suna"
say_VS = mkV2 "言わ" "言い" "言う" "言った" "と" ; -- "iu" "to"
say_VS = mkV2 "言う" "と" Gr1 ; -- "iu"
school_N = mkN "学校" Inanim ; -- "gakkou"
science_N = mkN "科学" Inanim ; -- "kagaku"
scratch_V2 = mkV2 "掻か" "掻き" "掻く" "掻いた" "を" ; -- "kaku" "o"
scratch_V2 = mkV2 "掻く" "を" Gr1 ; -- "kaku"
sea_N = mkN "海" Inanim ; -- "umi"
seed_N = mkN "種" Inanim ; -- "tane"
seek_V2 = mkV2 "探さ" "探し" "探す" "探した" "を" ; -- "sagasu" "o"
see_V2 = mkV2 "見" "見" "見る" "見た" "を" ; -- "miru" "o"
sell_V3 = mkV3 "売ら" "売り" "売る" "売った" "に" "を" False ; -- "uru" "ni" "o"
send_V3 = mkV3 "送ら" "送り" "送る" "送った" "に" "を" False ; -- "okuru" "ni" "o"
sew_V = mkV "縫わ" "縫い" "縫う" "縫った" ; -- "nuu"
seek_V2 = mkV2 "探す" "を" Gr1 ; -- "sagasu"
see_V2 = mkV2 "見る" "を" Gr2 ; -- "miru"
sell_V3 = mkV3 "売" "に" "を" Gr1 ; -- "uru"
send_V3 = mkV3 "送" "に" "を" Gr1 ; -- "okuru"
sew_V = mkV "縫う" Gr1 ; -- "nuu"
sharp_A = mkA "鋭い" ; -- "surudoi"
sheep_N = mkN "羊" Anim "頭" False ; -- "hitsuji" "tou"
ship_N = mkN "船" Inanim "杯" False ; -- "fune" "hai"
@@ -268,87 +268,87 @@ lin
shop_N = mkN "店" Inanim "店" True ; -- "mise" "ten"
short_A = mkA "短い" ; -- "mijikai"
silver_N = mkN "銀" Inanim ; -- "gin"
sing_V = mkV "歌わ" "歌い" "歌う" "歌った" ; -- "utau"
sister_N = mkN "シスター" Anim "人" False ; -- "shisutaa" "nin"
sit_V = mkV "座ら" "座り" "座る" "座った" ; -- "suwaru"
sing_V = mkV "歌う" Gr1 ; -- "utau"
sister_N = mkN "シスター" Anim "人" False "シスターたち" ; -- "shisutaa"
sit_V = mkV "座る" Gr1 ; -- "suwaru"
skin_N = mkN "皮膚" Inanim ; -- "hifu"
sky_N = mkN "空" Inanim ; -- "sora"
sleep_V = mkV "寝" "寝" "寝る" "寝た" ; -- "neru"
sleep_V = mkV "寝る" Gr2 ; -- "neru"
small_A = mkA "小さい" ; -- "chisai"
smell_V = mkV "匂わ" "匂い" "匂う" "匂った" ; -- "niou"
smell_V = mkV "匂う" Gr1 ; -- "niou"
smoke_N = mkN "煙" Inanim ; -- "kemuri"
smooth_A = mkA "平滑な" ; -- "heikatsuna"
snake_N = mkN "蛇" Anim "匹" False ; -- "hebi" "hiki"
snow_N = mkN "雪" Inanim ; -- "yuki"
sock_N = mkN "靴下" Inanim ; -- "kutsushita"
song_N = mkN "歌" Inanim "曲" False ; -- "uta" "kyoku"
speak_V2 = mkV2 "話さ" "話し" "話す" "話した" "について" ; -- "hanasu" "nitsuite" (=about)
spit_V = mkV "唾し" "唾し" "唾する" "唾した" ; -- "tsubakisuru"
split_V2 = mkV2 "分かた" "分かち" "分かつ" "分かった" "を" ; -- "wakatsu" "o"
squeeze_V2 = mkV2 "絞ら" "絞り" "絞る" "絞った" "を" ; -- "shiboru" "o"
stab_V2 = mkV2 "刺さ" "刺し" "刺す" "刺した" "を" ; -- "sasu" "o"
stand_V = mkV "立た" "立ち" "立つ" "立った" ; -- "tatsu"
speak_V2 = mkV2 "話す" "を" Gr1 ; -- "hanasu"
spit_V = mkV "唾する" Suru ; -- "tsubakisuru"
split_V2 = mkV2 "分かつ" "を" Gr1 ; -- "wakatsu"
squeeze_V2 = mkV2 "絞る" "を" Gr1 ; -- "shiboru"
stab_V2 = mkV2 "刺す" "を" Gr1 ; -- "sasu"
stand_V = mkV "立つ" Gr1 ; -- "tatsu"
star_N = mkN "星" Inanim ; -- "hoshi"
steel_N = mkN "鋼" Inanim ; -- "hagane"
stick_N = mkN "棒" Inanim "本" False ; -- "bou" "hon"
stone_N = mkN "石" Inanim ; -- "ishi"
stop_V = mkV "止まら" "止まり" "止まる" "止まった" ; -- "tomaru"
stop_V = mkV "止まる" Gr1 ; -- "tomaru"
stove_N = mkN "ストーブ" Inanim ; -- "sutobu"
straight_A = mkA "直な" ; -- "chokuna"
student_N = mkN "学生" Anim "人" False ; -- "gakusei" "nin"
student_N = mkN "学生" Anim "人" False "学生たち"; -- "gakusei"
stupid_A = mkA "愚かな" ; -- "orokana"
suck_V2 = mkV2 "吸わ" "吸い" "吸う" "吸った" "を" ; -- "suu" "o"
suck_V2 = mkV2 "吸う" "を" Gr1 ; -- "suu"
sun_N = mkN "太陽" Inanim ; -- "taiyou"
swell_V = mkV "膨らま" "膨らみ" "膨らむ" "膨らんだ" ; -- "fukuramu"
swim_V = mkV "泳が" "泳ぎ" "泳ぐ" "泳いだ" ; -- "oyogu"
switch8off_V2 = mkV2 "スイッチを切ら" "スイッチを切り" "スイッチを切る" "スイッチを切った" "の" ; -- "suitchiokiru" "o"
switch8on_V2 = mkV2 "スイッチを入れ" "スイッチを入れ" "スイッチを入れる" "スイッチを入れた" "の" ; -- "suitchioireru" "o"
swell_V = mkV "膨らむ" Gr1 ; -- "fukuramu"
swim_V = mkV "泳ぐ" Gr1 ; -- "oyogu"
switch8off_V2 = mkV2 "スイッチを切る" "の" Gr1 ; -- "suitchiokiru"
switch8on_V2 = mkV2 "スイッチを入れる" "の" Gr2 ; -- "suitchioireru"
table_N = mkN "テーブル" Inanim "脚" False ; -- "teburu" "kyaku"
tail_N = mkN "尾" Inanim ; -- "o"
talk_V3 = mkV3 "話さ" "話し" "話す" "話した" "と" "について" False ; -- "hanasu" "to" "nitsuite"
teacher_N = mkN "先生" Anim "人" False ; -- "sensei" "nin"
teach_V2 = mkV2 "教え" "教え" "教える" "教えた" "を" ; -- "oshieru" "o"
talk_V3 = mkV3 "話" "と" "について" Gr1 ; -- "hanasu"
teacher_N = mkN "先生" Anim "人" False "先生たち" ; -- "sensei"
teach_V2 = mkV2 "教える" "を" Gr2 ; -- "oshieru"
television_N = mkN "テレビ" Inanim ; -- "terebi"
thick_A = mkA "厚い" ; -- "atsui"
thin_A = mkA "薄い" ; -- "usui"
think_V = mkV "考え" "考え" "考える" "考えた" ; -- "kangaeru"
throw_V2 = mkV2 "投げ" "投げ" "投げる" "投げた" "を" ; -- "nageru" "o"
tie_V2 = mkV2 "結ば" "結び" "結ぶ" "結んだ" "を" ; -- "musubu" "o"
think_V = mkV "考える" Gr2 ; -- "kangaeru"
throw_V2 = mkV2 "投げる" "を" Gr2 ; -- "nageru"
tie_V2 = mkV2 "結ぶ" "を" Gr1 ; -- "musubu"
today_Adv = mkAdv "今日" ; -- "kyou" ;
tongue_N = mkN "舌" Inanim ; -- "shita"
tooth_N = mkN "歯" Inanim ; -- "ha"
train_N = mkN "電車" Inanim "列車" True ; -- "densha" "ressha"
travel_V = mkV "旅行し" "旅行し" "旅行する" "旅行した" ; -- "ryokousuru"
travel_V = mkV "旅行する" Suru ; -- "ryokousuru"
tree_N = mkN "木" Inanim "樹" True ; -- "ki" "ju"
turn_V = mkV "回ら" "回り" "回る" "回った" ; -- "mawaru"
turn_V = mkV "回る" Gr1 ; -- "mawaru"
ugly_A = mkA "醜い" ; -- "mnikui"
uncertain_A = mkA "危なっかしい" ; -- "abunakkashii"
understand_V2 = mkV2 "理解し" "理解し" "理解する" "理解した" "を" ; -- "rikaisuru" "o"
understand_V2 = mkV2 "理解する" "を" Suru ; -- "rikaisuru"
university_N = mkN "大学" Inanim ; -- "daigaku"
village_N = mkN "村" Inanim "村" True ; -- "mura" "son"
vomit_V = mkV "吐か" "吐き" "吐く" "吐いた" ; -- "haku"
wait_V2 = mkV2 "待た" "待ち" "待つ" "待った" "を" ; -- "matsu" "o"
walk_V = mkV "歩か" "歩き" "歩く" "歩いた" ; -- "aruku"
vomit_V = mkV "吐く" Gr1 ; -- "haku"
wait_V2 = mkV2 "待つ" "を" Gr1 ; -- "matsu"
walk_V = mkV "歩く" Gr1 ; -- "aruku"
warm_A = mkA "暖かい" ; -- "atatakai"
war_N = mkN "戦争" Inanim ; -- "sensou"
wash_V2 = mkV2 "洗わ" "洗い" "洗う" "洗った" "を" ; -- "arau" "o"
watch_V2 = mkV2 "見" "見" "見る" "見た" "を" ; -- "miru" "o"
wash_V2 = mkV2 "洗う" "を" Gr1 ; -- "arau"
watch_V2 = mkV2 "見る" "を" Gr2 ; -- "miru"
water_N = mkN "水" Inanim ; -- "mizu"
wet_A = mkA "濡れている" "濡れた" ; -- "nureteiru"
white_A = mkA "白い" ; -- "shiroi"
wide_A = mkA "広い" ; -- "hiroi"
wife_N = mkN "妻" Anim "人" False ; -- "tsuma" "nin"
wife_N = mkN "妻" Anim "人" False "妻たち" ; -- "tsuma"
wind_N = mkN "風" Inanim ; -- "kaze"
window_N = mkN "窓" Inanim ; -- "mado"
wine_N = mkN "ワイン" Inanim ; -- "wain"
wing_N = mkN "翼" Inanim ; -- "tsubasa"
win_V2 = mkV2 "勝た" "勝ち" "勝つ" "勝った" "を" ; -- "katsu" "o"
wipe_V2 = mkV2 "拭か" "拭き" "拭く" "拭いた" "を" ; -- "fuku" "o"
woman_N = mkN "女" Anim "人" False ; -- "onna" "nin"
wonder_VQ = mkV2 "質問し" "質問し" "質問する" "質問した" "を" ; -- "shitsumonsuru" "o"
win_V2 = mkV2 "勝つ" "を" Gr1 ; -- "katsu"
wipe_V2 = mkV2 "拭く" "を" Gr1 ; -- "fuku"
woman_N = mkN "女" Anim "人" False "女たち" ; -- "onna"
wonder_VQ = mkV2 "質問する" "を" Suru ; -- "shitsumonsuru"
wood_N = mkN "木材" Inanim ; -- "mokuzai"
worm_N = mkN "ワーム" Anim "匹" False ; -- "waamu" "hiki"
write_V2 = mkV2 "書か" "書き" "書く" "書いた" "を" ; -- "kaku" "o"
write_V2 = mkV2 "書く" "を" Gr1 ; -- "kaku"
year_N = mkN "年" Inanim "年" True ; -- "toshi" "nen"
yellow_A = mkA "黄色の" ; -- "kiirono"
young_A = mkA "若い" ; -- "wakai"

View File

@@ -7,10 +7,14 @@ flags coding = utf8 ;
DetCN det cn = {
s = \\st => case det.inclCard of {
True => case cn.counterReplace of {
True => cn.object ! st ++ det.quant ! st++ det.num ++ cn.counter ++ det.postpositive ;
False => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++
"の" ++ det.num ++ cn.counter ++ det.postpositive
} ;
True => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.counter ++ det.postpositive ;
False => case <det.tenPlus, cn.counterTsu> of {
<True, True> => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++
"の" ++ det.num ++ det.postpositive ;
_ => cn.object ! st ++ det.quant ! st ++ cn.s ! det.n ! st ++ "の" ++
det.num ++ cn.counter ++ det.postpositive
}
} ;
False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.s ! det.n ! st
} ;
prepositive = cn.prepositive ;
@@ -19,7 +23,7 @@ flags coding = utf8 ;
True => True ;
False => False
} ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = cn.anim
} ;
@@ -28,7 +32,7 @@ flags coding = utf8 ;
prepositive = \\st => [] ;
needPart = True ;
changePolar = False ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = pn.anim
} ;
@@ -37,7 +41,10 @@ flags coding = utf8 ;
prepositive = \\st => [] ;
needPart = True ;
changePolar = False ;
Pron1Sg = pron.Pron1Sg ;
meaning = case pron.Pron1Sg of {
True => Me ;
False => SomeoneElse
} ;
anim = pron.anim
} ;
@@ -49,7 +56,7 @@ flags coding = utf8 ;
True => True ;
False => np.changePolar
} ;
Pron1Sg = np.Pron1Sg ;
meaning = np.meaning ;
anim = np.anim
} ;
@@ -58,7 +65,7 @@ flags coding = utf8 ;
prepositive = np.prepositive ;
needPart = np.needPart ;
changePolar = np.changePolar ;
Pron1Sg = np.Pron1Sg ;
meaning = np.meaning ;
anim = np.anim
} ;
@@ -73,7 +80,7 @@ flags coding = utf8 ;
} ;
needPart = np.needPart ;
changePolar = np.changePolar ;
Pron1Sg = np.Pron1Sg ;
meaning = np.meaning ;
anim = np.anim
} ;
@@ -82,7 +89,7 @@ flags coding = utf8 ;
prepositive = np.prepositive ;
needPart = np.needPart ;
changePolar = np.changePolar ;
Pron1Sg = np.Pron1Sg ;
meaning = np.meaning ;
anim = np.anim
} ;
@@ -94,7 +101,7 @@ flags coding = utf8 ;
True => True ;
False => False
} ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = Inanim -- not always, depends on the context
} ;
@@ -105,10 +112,14 @@ flags coding = utf8 ;
n = num.n ;
inclCard = num.inclCard ;
sp = \\st => case num.inclCard of {
True => quant.s ! st ++ num.s ++ "つ" ++ num.postpositive ;
True => case num.tenPlus of {
False => quant.s ! st ++ num.s ++ "つ" ++ num.postpositive ;
True => quant.s ! st ++ num.s ++ num.postpositive
} ;
False => quant.sp ! st ++ num.s
} ;
no = quant.no
no = quant.no ;
tenPlus = num.tenPlus
} ;
DetQuantOrd quant num ord = {
@@ -118,15 +129,19 @@ flags coding = utf8 ;
n = num.n ;
inclCard = num.inclCard ;
sp = \\st => case num.inclCard of {
True => quant.s ! st ++ ord.attr ++ num.s ++ "つ" ++ num.postpositive ;
True => case num.tenPlus of {
False => quant.s ! st ++ ord.attr ++ num.s ++ "つ" ++ num.postpositive ;
True => quant.s ! st ++ ord.attr ++ num.s ++ num.postpositive
} ;
False => quant.s ! st ++ ord.attr ++ num.s
} ;
no = quant.no
no = quant.no ;
tenPlus = num.tenPlus
} ;
NumSg = mkNum "" Sg False ;
NumSg = mkNum "" Sg ;
NumPl = mkNum "" Pl False ;
NumPl = mkNum "" Pl ;
NumCard card = card ** {inclCard = True} ;
@@ -138,39 +153,41 @@ flags coding = utf8 ;
True => {
s = card.s ;
postpositive = adn.s ;
n = card.n
n = card.n ;
tenPlus = card.tenPlus
} ;
False => {
s = adn.s ++ card.s ;
postpositive = [] ;
n = card.n
n = card.n ;
tenPlus = card.tenPlus
}
} ;
OrdDigits d = {
pred = \\st,t,p => d.s ++ "番目" ++ mkCopula.s ! st ! t ! p ; -- "banme"
attr = d.s ++ "番目の" ;
te = d.s ++ "番目" ++ mkCopula.te ;
ba = d.s ++ "番目" ++ mkCopula.ba ;
adv = d.s ++ "番目" ;
te = \\p => d.s ++ "番目" ++ mkCopula.te ! p ;
ba = \\p => d.s ++ "番目" ++ mkCopula.ba ! p ;
adv = \\p => 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 ;
ba = num.s ++ "番目" ++ mkCopula.ba ;
adv = num.s ++ "番目" ;
te = \\p => num.s ++ "番目" ++ mkCopula.te ! p ;
ba = \\p => num.s ++ "番目" ++ mkCopula.ba ! p ;
adv = \\p => num.s ++ "番目" ;
dropNaEnging = num.s ++ "番目の"
} ;
OrdSuperl a = {
pred = \\st,t,p => "一番" ++ a.pred ! st ! t ! p ; -- "ichiban"
attr = "一番" ++ a.attr ;
te = "一番" ++ a.te ;
ba = "一番" ++ a.ba ;
adv = "一番" ++ a.adv ;
te = \\p => "一番" ++ a.te ! p ;
ba = \\p => "一番" ++ a.ba ! p ;
adv = \\p => "一番" ++ a.adv ! p ;
dropNaEnging = "一番" ++ a.dropNaEnging
} ;
@@ -183,7 +200,7 @@ flags coding = utf8 ;
prepositive = cn.prepositive ;
needPart = True ;
changePolar = False ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = cn.anim
} ;
@@ -199,7 +216,8 @@ flags coding = utf8 ;
hasAttr = False ;
anim = n.anim ;
counter = n.counter ;
counterReplace = n.counterReplace
counterReplace = n.counterReplace ;
counterTsu = n.counterTsu
} ;
ComplN2 n2 np = {
@@ -209,7 +227,8 @@ flags coding = utf8 ;
hasAttr = False ;
anim = n2.anim ;
counter = n2.counter ;
counterReplace = n2.counterReplace
counterReplace = n2.counterReplace ;
counterTsu = n2.counterTsu
} ;
ComplN3 n3 np = {
@@ -219,7 +238,8 @@ flags coding = utf8 ;
prep = n3.prep2 ;
anim = n3.anim ;
counter = n3.counter ;
counterReplace = n3.counterReplace
counterReplace = n3.counterReplace ;
counterTsu = n3.counterTsu
} ;
UseN2 n2 = {
@@ -229,7 +249,8 @@ flags coding = utf8 ;
hasAttr = False ;
anim = n2.anim ;
counter = n2.counter ;
counterReplace = n2.counterReplace
counterReplace = n2.counterReplace ;
counterTsu = n2.counterTsu
} ;
Use2N3 n3 = {
@@ -238,7 +259,8 @@ flags coding = utf8 ;
prep = n3.prep1 ;
anim = n3.anim ;
counter = n3.counter ;
counterReplace = n3.counterReplace
counterReplace = n3.counterReplace;
counterTsu = n3.counterTsu
} ;
Use3N3 n3 = {
@@ -247,20 +269,22 @@ flags coding = utf8 ;
prep = n3.prep2 ;
anim = n3.anim ;
counter = n3.counter ;
counterReplace = n3.counterReplace
counterReplace = n3.counterReplace;
counterTsu = n3.counterTsu
} ;
AdjCN ap cn = {
s = \\n,st => case cn.hasAttr of {
False => ap.attr ! st ++ cn.s ! n ! st ;
True => ap.te ! st ++ cn.s ! n ! st
True => ap.te ! st ! Pos ++ cn.s ! n ! st
} ;
object = cn.object ;
prepositive = cn.prepositive ;
hasAttr = True ;
anim = cn.anim ;
counter = cn.counter ;
counterReplace = cn.counterReplace
counterReplace = cn.counterReplace ;
counterTsu = cn.counterTsu
} ;
RelCN cn rs = {
@@ -270,7 +294,8 @@ flags coding = utf8 ;
counterReplace = cn.counterReplace ;
object = \\st => rs.s ! cn.anim ! st ++ cn.object ! st ;
prepositive = cn.prepositive ;
hasAttr = cn.hasAttr
hasAttr = cn.hasAttr ;
counterTsu = cn.counterTsu
} ;
AdvCN cn adv = {
@@ -286,7 +311,8 @@ flags coding = utf8 ;
hasAttr = cn.hasAttr ;
anim = cn.anim ;
counter = cn.counter ;
counterReplace = cn.counterReplace
counterReplace = cn.counterReplace ;
counterTsu = cn.counterTsu
} ;
SentCN cn sc = {
@@ -296,7 +322,8 @@ flags coding = utf8 ;
hasAttr = cn.hasAttr ;
anim = cn.anim ;
counter = cn.counter ;
counterReplace = cn.counterReplace
counterReplace = cn.counterReplace;
counterTsu = cn.counterTsu
} ;
ApposCN cn np = {
@@ -306,6 +333,7 @@ flags coding = utf8 ;
hasAttr = cn.hasAttr ;
anim = cn.anim ;
counter = cn.counter ;
counterReplace = cn.counterReplace
counterReplace = cn.counterReplace ;
counterTsu = cn.counterTsu
} ;
}

View File

@@ -3,10 +3,13 @@ concrete NumeralJap of Numeral = CatJap ** open ResJap, ParadigmsJap, Prelude in
flags coding = utf8 ;
lincat
Digit, Sub1000000 = {s : Str ; n : Number} ;
Sub10 = {s : Str ; n : Number ; is1 : Bool} ;
Sub100, Sub1000 = {s : Str ; n : Number ; numType : NumeralType ;
digit1 : Str ; digit2 : Str} ;
Digit = {s : Str ; n : Number} ;
Sub10 = {s : Str ; n : Number ; is1 : Bool ; null : Str} ;
Sub100 = {s : Str ; n : Number ; numType : NumeralType ; digit1 : Str ; digit2 : Str ;
tenPlus : Bool ; is1 : Bool} ;
Sub1000 = {s_init : Str ; s_mid : Str ; n : Number ; numType : NumeralType ;
man : Str ; sen : Str ; tenPlus : Bool ; is1 : Bool ; null : Str} ;
Sub1000000 = {s : Str ; n : Number ; tenPlus : Bool} ;
lin
num dig = dig ;
@@ -20,121 +23,195 @@ flags coding = utf8 ;
n8 = {s = "八" ; n = Pl} ; -- "hachi"
n9 = {s = "九" ; n = Pl} ; -- "kyuu"
pot01 = {s = "一" ; n = Sg ; is1 = True} ; -- "ichi"
pot01 = {s = "一" ; n = Sg ; is1 = True ; null = ""} ;
pot0 d = d ** {is1 = False} ;
pot0 d = d ** {is1 = False ; null = ""} ;
pot110 = {
s = "十" ; -- "juu"
n = Pl ;
numType = Tens ;
digit1 = "1" ;
digit2 = "0"
numType = EndZero ;
digit1 = "" ;
digit2 = "0" ;
tenPlus = True ;
is1 = False
} ;
pot111 = {
s = "十一" ;
n = Pl ;
numType = TensPlus ;
digit1 = "1" ;
digit2 = "1"
numType = EndNotZero ;
digit1 = "" ;
digit2 = "" ;
tenPlus = True ;
is1 = False
} ;
pot1to19 d = {
s = "十" ++ d.s ;
n = Pl ;
numType = TensPlus ;
digit1 = "1" ;
digit2 = d.s
numType = EndNotZero ;
digit1 = "" ;
digit2 = d.s ;
tenPlus = True ;
is1 = False
} ;
pot0as1 d = {
s = d.s ;
n = Pl ;
numType = Other ;
numType = SingleDigit ;
digit1 = [] ;
digit2 = []
digit2 = d.s ;
tenPlus = False ;
is1 = d.is1
} ;
pot1 d = {
s = d.s ++ "十" ;
n = Pl ;
numType = Tens ;
numType = EndZero ;
digit1 = d.s ;
digit2 = "0"
digit2 = "0" ;
tenPlus = True ;
is1 = False
} ;
pot1plus d n = {
s = d.s ++ "十" ++ n.s ;
n = Pl ;
numType = TensPlus ;
numType = EndNotZero ;
digit1 = d.s ;
digit2 = n.s
digit2 = n.s ;
tenPlus = True ;
is1 = False
} ;
pot1as2 d = d ;
pot1as2 d = {
s_init = d.s ;
s_mid = d.s ;
n = d.n ;
numType = d.numType ;
man = d.digit1 ;
sen = d.digit2 ;
tenPlus = d.tenPlus ;
is1 = d.is1 ;
null = ""
} ;
pot2 d = {
s = case d.is1 of {
True => "百" ; -- "hyaku"
s_init = case d.is1 of {
True => d.null ++ "百" ; -- "hyaku"
False => d.s ++ "百"
} ;
s_mid = d.s ++ "百" ;
n = Pl ;
numType = Other ;
digit1 = [] ;
digit2 = []
numType = EndZero ;
man = case d.is1 of {
True => d.null ++ "十" ;
False => d.s ++ "十"
} ;
sen = [] ;
tenPlus = True ;
is1 = False ;
null = ""
} ;
pot2plus d n = {
s = case d.is1 of {
True => "百" ++ n.s ;
s_init = case d.is1 of {
True => d.null ++ "百" ++ n.s ;
False => d.s ++ "百" ++ n.s
} ;
s_mid = d.s ++ "百" ++ n.s ;
n = Pl ;
numType = Other ;
digit1 = [] ;
digit2 = []
numType = case n.numType of {
EndZero => EndZero ;
_ => EndNotZero
} ;
man = case d.is1 of {
True => d.null ++ "十" ++ n.digit1 ;
False => d.s ++ "十" ++ n.digit1
} ;
sen = n.digit2 ;
tenPlus = True ;
is1 = False ;
null = ""
} ;
pot2as3 d = d ;
pot2as3 d = {
s = d.s_init ;
n = d.n ;
tenPlus = d.tenPlus
} ;
pot3 d = {
s = case d.numType of {
Tens => d.digit1 ++ "万" ; -- "man"
TensPlus => d.digit1 ++ "万" ++ d.digit2 ++ "千" ; -- "sen"
Other => d.s ++ "千"
EndZero => d.man ++ "万" ; -- "man"
EndNotZero => d.man ++ "万" ++ d.sen ++ "千" ; -- "sen"
SingleDigit => case d.is1 of {
True => d.null ++ "千" ;
False => d.s_init ++ "千"
}
} ;
n = Pl
n = Pl;
tenPlus = True
} ;
pot3plus d n = {
s = case d.numType of {
Tens => d.digit1 ++ "万" ++ n.s ;
TensPlus => d.digit1 ++ "万" ++ d.digit2 ++ "千" ++ n.s ;
Other => d.s ++ "千" ++ n.s
EndZero => d.man ++ "万" ++ n.s_mid ;
EndNotZero => d.man ++ "万" ++ d.sen ++ "千" ++ n.s_mid ;
SingleDigit => case d.is1 of {
True => d.null ++ "千" ++ n.s_mid ;
False => d.s_init ++ "千" ++ n.s_mid
}
} ;
n = Pl
n = Pl;
tenPlus = True
} ;
lincat
Dig = {s : Str ; n : Number} ;
Dig = {s : Str ; n : Number ; is0 : Bool} ;
lin
IDig d = d ;
IDig d = {
s = d.s ;
n = d.n ;
tenPlus = False ;
tail = T1
} ;
IIDig d n = {
s = d.s ++ n.s ;
n = Pl
s = d.s ++ commaIf n.tail ++ n.s ;
n = Pl ;
tenPlus = case <d.is0, n.tenPlus> of {
<_, True> => True ;
<True, False> => False ;
_ => True
} ;
tail = inc n.tail
} ;
D_0 = {s = "0" ; n = Sg} ;
D_1 = {s = "1" ; n = Sg} ;
D_2 = {s = "2" ; n = Pl} ;
D_3 = {s = "3" ; n = Pl} ;
D_4 = {s = "4" ; n = Pl} ;
D_5 = {s = "5" ; n = Pl} ;
D_6 = {s = "6" ; n = Pl} ;
D_7 = {s = "7" ; n = Pl} ;
D_8 = {s = "8" ; n = Pl} ;
D_9 = {s = "9" ; n = Pl} ;
D_0 = {s = "0" ; n = Sg ; is0 = True} ;
D_1 = {s = "1" ; n = Sg ; is0 = False} ;
D_2 = {s = "2" ; n = Pl ; is0 = False} ;
D_3 = {s = "3" ; n = Pl ; is0 = False} ;
D_4 = {s = "4" ; n = Pl ; is0 = False} ;
D_5 = {s = "5" ; n = Pl ; is0 = False} ;
D_6 = {s = "6" ; n = Pl ; is0 = False} ;
D_7 = {s = "7" ; n = Pl ; is0 = False} ;
D_8 = {s = "8" ; n = Pl ; is0 = False} ;
D_9 = {s = "9" ; n = Pl ; is0 = False} ;
oper
commaIf : DTail -> Str = \t -> case t of {
T3 => "," ;
_ => []
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
}

View File

@@ -7,22 +7,24 @@ oper
mkN = overload {
mkN : (man : Str) -> (anim : Animateness) -> N
= \n,a -> lin N (regNoun n a "つ" False) ;
= \n,a -> lin N (regNoun n a "つ" False True) ;
mkN : (kane,okane : Str) -> (anim : Animateness) -> N
= \kane,okane,a -> lin N (styleNoun kane okane a "つ" False) ;
= \kane,okane,a -> lin N (styleNoun kane okane a "つ" False True) ;
mkN : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) -> N
= \n,a,c,b -> lin N (regNoun n a c b) ;
= \n,a,c,b -> lin N (regNoun n a c b False) ;
mkN : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) ->
(men : Str) -> N = \n,a,c,b,pl -> lin N (numberNoun n a c b pl False) ;
mkN : (kane,okane : Str) -> (anim : Animateness) -> (counter : Str) ->
(counterReplace : Bool) -> N
= \kane,okane,a,c,b -> lin N (styleNoun kane okane a c b)
= \kane,okane,a,c,b -> lin N (styleNoun kane okane a c b False)
} ;
mkN2 : (mother : Str) -> (prep: Str) -> (anim : Animateness) -> (counter : Str) ->
(counterReplace : Bool) -> N2 = \n,p,a,c,b ->
lin N2 (regNoun n a c b) ** {prep = p; object = \\st => []} ;
mkN2 : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) ->
(men : Str) -> (prep : Str) -> N2 = \n,a,c,b,pl,pr ->
lin N2 (numberNoun n a c b pl False) ** {prep = pr ; object = \\st => []} ;
mkN3 : (distance : Str) -> (prep1: Str) -> (prep2: Str) -> (anim : Animateness) -> N3
= \n,p1,p2,a -> lin N3 (regNoun n a "つ" False) ** {prep1 = p1; prep2 = p2} ;
= \n,p1,p2,a -> lin N3 (regNoun n a "つ" False True) ** {prep1 = p1; prep2 = p2} ;
mkPN = overload {
mkPN : (paris : Str) -> PN
@@ -49,16 +51,15 @@ oper
\pred,attr,pr -> lin A2 (VerbalA pred attr) ** {prep = pr}
} ;
mkV : (yoma, yomi, yomu, yonda : Str) -> V
= \yoma,yomi,yomu,yonda -> lin V (mkVerb yoma yomi yomu yonda) ;
mkV : (yomu : Str) -> (group : VerbGroup) -> V
= \yomu,gr -> lin V (mkVerb yomu gr) ;
mkV2 : (yoma, yomi, yomu, yonda, prep : Str) -> V2
= \yoma,yomi,yomu,yonda,p ->
lin V2 (mkVerb2 yoma yomi yomu yonda p) ;
mkV2 : (yomu, prep : Str) -> (group : VerbGroup) -> V2
= \yomu,p,gr ->
lin V2 (mkVerb2 yomu p gr) ;
mkV3 : (yoma, yomi, yomu, yonda, p1, p2 : Str) -> (give: Bool) -> V3
= \yoma,yomi,yomu,yonda,p1,p2,b ->
lin V3 (mkVerb yoma yomi yomu yonda) ** {prep1 = p1 ; prep2 = p2 ; give = b} ;
mkV3 : (uru, p1, p2 : Str) -> (group : VerbGroup) -> V3 = \uru,p1,p2,gr ->
lin V3 (mkVerb3 uru p1 p2 gr) ;
}

View File

@@ -6,47 +6,58 @@ flags coding = utf8 ;
lin
PhrUtt pconj utt voc = {
s = case voc.please of {
True => pconj.s ++ utt.s ! Resp ++ voc.s ! Resp ;
False => (voc.s ! Resp ++ pconj.s ++ utt.s ! Resp |
voc.s ! Plain ++ pconj.s ++ utt.s ! Plain)
s = case voc.type of {
Please => case utt.type of {
ImpPolite => pconj.s ++ utt.s ! Wa ! Resp ++ voc.null ;
(Imper|NoImp) => pconj.s ++ utt.s ! Wa ! Resp ++ voc.s ! Resp
} ;
VocPres => case utt.type of {
ImpPolite => voc.s ! Resp ++ "," ++ pconj.s ++ utt.s ! Wa ! Resp ;
Imper => voc.s ! Plain ++ "," ++ pconj.s ++ utt.s ! Wa ! Plain ;
NoImp => voc.s ! Plain ++ "," ++ pconj.s ++ utt.s ! Wa ! Plain
} ;
VocAbs => case utt.type of {
(Imper|ImpPolite) => voc.s ! Plain ++ pconj.s ++ utt.s ! Wa ! Plain ;
NoImp => voc.s ! Plain ++ pconj.s ++ utt.s ! Wa ! Plain
}
}
} ;
UttS sent = {s = \\st => sent.s ! (Wa|Ga) ! st} ;
UttS sent = {s = \\part,st => sent.s ! part ! st ; type = NoImp} ;
UttQS s = {s = \\st => s.s ! (Wa | Ga) ! st ++ "か"} ;
UttQS s = {s = \\part,st => s.s ! part ! st ; type = NoImp} ;
UttImpSg p imp = {s = \\st => p.s ++ imp.s ! st ! p.b} ;
UttImpSg p imp = {s = \\part,st => p.s ++ imp.s ! st ! p.b ; type = Imper} ;
UttImpPl = UttImpSg ;
UttImpPol p imp = {s = \\st => p.s ++ imp.s ! Resp ! p.b} ;
UttImpPol p imp = {s = \\part,st => p.s ++ imp.s ! Resp ! p.b ++ "ください" ; type = ImpPolite} ;
UttIP ip = {s = \\st => ip.s ! st ++ "ですか"} ;
UttIP ip = {s = \\part,st => ip.s_subj ! st ; type = NoImp} ;
UttIAdv iadv = {s = \\st => iadv.s ! st ++ "ですか"} ;
UttIAdv iadv = {s = \\part,st => iadv.s ! st ; type = NoImp} ;
UttNP np = {s = \\st => np.prepositive ! st ++ np.s ! st} ;
UttNP np = {s = \\part,st => np.prepositive ! st ++ np.s ! st ; type = NoImp} ;
UttAdv adv = {s = \\st => adv.s ! st} ;
UttAdv adv = {s = \\part,st => adv.s ! st ; type = NoImp} ;
UttVP vp = {s = \\st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.verb ! (Anim | Inanim) ! st ! (TPres | TPast | TFut) ! (Pos | Neg)} ;
UttVP vp = {s = \\part,st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! Inanim ! st ! TPres ! Pos ; type = NoImp} ;
UttCN cn = {s = \\st => cn.prepositive ! st ++ cn.object ! st ++ cn.s ! (Sg | Pl) ! st} ;
UttCN cn = {s = \\part,st => cn.prepositive ! st ++ cn.object ! st ++ cn.s ! Sg ! st ;
type = NoImp} ;
UttCard card = {s = \\st => card.s ++ card.postpositive} ;
UttCard card = {s = \\part,st => card.s ++ card.postpositive ; type = NoImp} ;
UttAP ap = {s = \\st => ap.prepositive ! st ++ ap.attr ! st} ;
UttAP ap = {s = \\part,st => ap.prepositive ! st ++ ap.attr ! st ; type = NoImp} ;
UttInterj interj = {s = \\st => interj.s} ;
UttInterj interj = {s = \\part,st => interj.s ; type = NoImp} ;
NoPConj = ss "" ;
PConjConj conj = {s = conj.s} ;
NoVoc = {s = \\st => [] ; please = False} ;
NoVoc = {s = \\st => [] ; type = VocAbs ; null = ""} ;
VocNP np = {s = \\st => np.prepositive ! st ++ np.s ! st ; please = False} ;
VocNP np = {s = \\st => np.prepositive ! st ++ np.s ! st ; type = VocPres ; null = ""} ;
}

View File

@@ -5,57 +5,107 @@ flags coding = utf8 ;
lin
QuestCl cl = { -- ending "ka" is added at the utterance level
s = cl.s ;
QuestCl cl = {
s = \\part,st,t,p => cl.s ! part ! st ! t ! p ++ "か" ;
s_plain_pred = \\part,st,t,p => cl.subj ! part ! st ++ cl.pred ! Plain ! t ! p ++ "か" ;
changePolar = cl.changePolar
} ;
QuestVP ip vp = {
s = \\part,st,t,p => case ip.how8many of {
True => ip.s ! st ++ vp.obj ! st ++ vp.prep ++ vp.verb ! ip.anim ! st ! t ! p ;
False => ip.s ! st ++ "が" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! ip.anim ! st ! t ! p
True => ip.s_subj ! st ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! ip.anim ! st ! t ! p ++ "か" ;
False => ip.s_subj ! st ++ "が" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! ip.anim ! st ! t ! p ++ "か"
} ;
s_plain_pred = \\part,st,t,p => case ip.how8many of {
True => ip.s_subj ! st ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! ip.anim ! Plain ! t ! p ++ "か" ;
False => ip.s_subj ! st ++ "が" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! ip.anim ! Plain ! t ! p ++ "か"
} ;
changePolar = False
} ;
QuestSlash ip clslash = {
s = \\part,st,t,p => clslash.subj ! part ! st ++ ip.s ! st ++ clslash.pred ! st ! t ! p ;
s = \\part,st,t,p => clslash.subj ! part ! st ++ ip.s_obj ! st ++ clslash.pred ! st ! t ! p
++ "か" ;
s_plain_pred = \\part,st,t,p => clslash.subj ! part ! st ++ ip.s_obj ! st ++
clslash.pred ! Plain ! t ! p ++ "か" ;
changePolar = False
} ;
QuestIAdv iadv cl = {
s = \\part,st,t,p => cl.subj ! part ! st ++ iadv.s ! st ++ iadv.particle ++
cl.pred ! st ! t ! p ;
cl.pred ! st ! t ! p ++ "か" ;
s_plain_pred = \\part,st,t,p => cl.subj ! part ! st ++ iadv.s ! st ++ iadv.particle ++
cl.pred ! Plain ! t ! p ++ "か" ;
changePolar = cl.changePolar
} ;
QuestIComp icomp np = {
s = table {
Wa => \\st,t,p => case np.needPart of {
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
Wa => \\st,t,p => case <np.needPart, icomp.wh8re> of {
<True, True> => np.prepositive ! st ++ np.s ! st ++ "は" ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ++ "か" ;
<False, True> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ++ "か" ;
<True, False> => np.prepositive ! st ++ np.s ! st ++ "は" ++ icomp.s ! st ++
mkCopula.s ! st ! t ! p ++ "か" ;
<False, False> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++
mkCopula.s ! st ! t ! p ++ "か"
} ;
Ga => \\st,t,p => case np.needPart of {
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
Ga => \\st,t,p => case <np.needPart, icomp.wh8re> of {
<True, True> => np.prepositive ! st ++ np.s ! st ++ "が" ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ++ "か" ;
<False, True> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! st ! t ! p ++ "か" ;
<True, False> => np.prepositive ! st ++ np.s ! st ++ "が" ++ icomp.s ! st ++
mkCopula.s ! st ! t ! p ++ "か" ;
<False, False> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++
mkCopula.s ! st ! t ! p ++ "か"
}
} ;
s_plain_pred = table {
Wa => \\st,t,p => case <np.needPart, icomp.wh8re> of {
<True, True> => np.prepositive ! st ++ np.s ! st ++ "は" ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! Plain ! t ! p ++ "か" ;
<False, True> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! Plain ! t ! p ++ "か" ;
<True, False> => np.prepositive ! st ++ np.s ! st ++ "は" ++ icomp.s ! st ++
mkCopula.s ! Plain ! t ! p ++ "か" ;
<False, False> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++
mkCopula.s ! Plain ! t ! p ++ "か"
} ;
Ga => \\st,t,p => case <np.needPart, icomp.wh8re> of {
<True, True> => np.prepositive ! st ++ np.s ! st ++ "が" ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! Plain ! t ! p ++ "か" ;
<False, True> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ "に" ++
mkExistV.verb ! SomeoneElse ! np.anim ! Plain ! t ! p ++ "か" ;
<True, False> => np.prepositive ! st ++ np.s ! st ++ "が" ++ icomp.s ! st ++
mkCopula.s ! Plain ! t ! p ++ "か" ;
<False, False> => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++
mkCopula.s ! Plain ! t ! p ++ "か"
}
} ;
changePolar = np.changePolar
} ;
IdetCN idet cn = {
s = \\st => case idet.how8many of {
s_subj = \\st => case idet.how8many of {
True => cn.prepositive ! st ++ cn.object ! st ++ cn.s ! idet.n ! st ++ "が" ++ idet.s ;
False => cn.prepositive ! st ++ cn.object ! st ++ idet.s ++ cn.s ! idet.n ! st
} ;
s_obj = \\st => case idet.how8many of {
True => cn.prepositive ! st ++ cn.object ! st ++ idet.s ++ "の" ++ cn.s ! idet.n ! st ;
False => cn.prepositive ! st ++ cn.object ! st ++ idet.s ++ cn.s ! idet.n ! st
} ;
anim = cn.anim ;
how8many = idet.how8many
} ;
IdetIP idet = {
s = \\st => case idet.inclCard of {
s_subj, s_obj = \\st => case idet.inclCard of {
True => idet.s ++ "つ" ;
False => idet.s
} ;
@@ -64,7 +114,8 @@ flags coding = utf8 ;
} ;
AdvIP ip adv = {
s = \\st => adv.s ! st ++ ip.s ! st ;
s_subj = \\st => adv.s ! st ++ ip.s_subj ! st ;
s_obj = \\st => adv.s ! st ++ ip.s_obj ! st ;
anim = ip.anim ;
how8many = ip.how8many
} ;
@@ -76,13 +127,14 @@ flags coding = utf8 ;
inclCard = num.inclCard
} ;
PrepIP prep ip = {s = \\st => ip.s ! st ++ prep.s ; particle = ""} ;
PrepIP prep ip = {s = \\st => ip.s_obj ! st ++ prep.s ; particle = "" ; wh8re = False} ;
AdvIAdv iadv adv = {s = \\st => adv.s ! st ++ iadv.s ! st ; particle = iadv.particle} ;
AdvIAdv iadv adv = {s = \\st => adv.s ! st ++ iadv.s ! st ;
particle = iadv.particle ; wh8re = iadv.wh8re} ;
CompIAdv iadv = {s = iadv.s} ;
CompIAdv iadv = {s = iadv.s ; wh8re = iadv.wh8re} ;
CompIP ip = {s = ip.s} ;
CompIP ip = {s = ip.s_obj ; wh8re = False} ;
lincat
@@ -91,13 +143,14 @@ flags coding = utf8 ;
lin
ComplSlashIP vpslash ip = {
s = \\a,st,t,p => vpslash.obj ! st ++ ip.s ! st ++ vpslash.prep ++ vpslash.s ! st ! t ! p ;
s = \\a,st,t,p => vpslash.obj ! st ++ ip.s_obj ! st ++ vpslash.prep ++
vpslash.s ! SomeoneElse ! st ! t ! p ;
prepositive = vpslash.prepositive
} ;
AdvQVP vp iadv = {
s = \\a,st,t,p => iadv.s ! st ++ iadv.particle ++ vp.obj ! st ++ vp.prep ++
vp.verb ! a ! st ! t ! p ;
vp.verb ! SomeoneElse ! a ! st ! t ! p ;
prepositive = vp.prepositive
} ;
@@ -107,8 +160,16 @@ flags coding = utf8 ;
} ;
QuestQVP ip qvp = {
s = \\part,st,t,p => qvp.prepositive ! st ++ ip.s ! st ++ "が" ++
qvp.s ! ip.anim ! st ! t ! p ;
s = \\part,st,t,p => case ip.how8many of {
True => qvp.prepositive ! st ++ ip.s_subj ! st ++ qvp.s ! ip.anim ! st ! t ! p ++ "か" ;
False => qvp.prepositive ! st ++ ip.s_subj ! st ++ "が" ++ qvp.s ! ip.anim ! st ! t ! p
++ "か"
} ;
s_plain_pred = \\part,st,t,p => case ip.how8many of {
True => qvp.prepositive ! st ++ ip.s_subj ! st ++ qvp.s ! ip.anim ! Plain ! t ! p ++ "か" ;
False => qvp.prepositive ! st ++ ip.s_subj ! st ++ "が" ++ qvp.s ! ip.anim ! Plain ! t ! p
++ "か"
} ;
changePolar = False
} ;
}

View File

@@ -6,43 +6,47 @@ flags coding = utf8 ;
RelCl cl = {
s = \\_,st,t,p => cl.s ! Ga ! st ! t ! p ;
te = \\_,st => cl.te ! Ga ! st ;
te = \\_ => cl.te ! Ga ;
changePolar = cl.changePolar ;
subj = cl.subj ;
pred = \\_,st,t,p => cl.pred ! st ! t ! p ;
pred_te = \\a,st => cl.pred_te ! st ;
pred_ba = \\a,st => cl.pred_ba ! st ;
pred_te = \\a => cl.pred_te ;
pred_ba = \\a => cl.pred_ba ;
missingSubj = False
} ;
RelVP rp vp = {
s = \\a,st,t,p => vp.prepositive ! st ++ rp.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.verb ! a ! Plain ! t ! p ++ rp.prep ;
te = \\a,st => vp.prepositive ! st ++ rp.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! a ! st ++ rp.prep ;
vp.prep ++ vp.verb ! SomeoneElse ! a ! Plain ! t ! p ;
te = \\a,st,p => vp.prepositive ! st ++ rp.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! a ! st ! p ;
changePolar = False ;
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_ba = \\a,st => vp.obj ! st ++ vp.prep ++ vp.ba ! a ! st ++ rp.prep ;
pred = \\a,st,t,p => vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! a ! st ! t ! p ;
pred_te = \\a,st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! a ! st ! p ;
pred_ba = \\a,st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! a ! st ! p ;
missingSubj = True
} ;
RelSlash rp clslash = {
s = \\_,st,t,p => rp.s ! st ++ clslash.s ! st ! t ! p ++ rp.prep ;
te = \\_,st => rp.s ! st ++ clslash.te ! st ;
s = \\_,st,t,p => case rp.null of {
True => rp.s ! st ++ clslash.s ! st ! t ! p ;
False => clslash.subj ! Ga ! st ++ rp.s ! st ++ clslash.pred ! Plain ! t ! p
} ;
te = \\_,st,p => case rp.null of {
True => rp.s ! st ++ clslash.te ! st ! p ;
False => clslash.subj ! Ga ! st ++ rp.s ! st ++ clslash.pred_te ! st ! p
} ;
changePolar = clslash.changePolar ;
subj = \\part,st => rp.s ! st ++ clslash.subj ! part ! st ;
pred = \\_,st,t,p => clslash.pred ! st ! t ! p ++ rp.prep ;
pred_te = \\a,st => clslash.pred_te ! st ++ rp.prep ;
pred_ba = \\a,st => clslash.pred_ba ! st ++ rp.prep ;
pred = \\_,st,t,p => clslash.pred ! st ! t ! p ;
pred_te = \\a => clslash.pred_te ;
pred_ba = \\a => clslash.pred_ba ;
missingSubj = False
} ;
IdRP = {s = \\st => [] ; prep = []} ;
IdRP = {s = \\st => [] ; null = True} ;
FunRP prep np rp = {
s = \\st => np.prepositive ! st ++ np.s ! st ;
prep = prep.relPrep
} ;
}
FunRP prep np rp = {s = \\st => np.prepositive ! st ++ np.s ! st ; null = False} ;
}

View File

@@ -9,49 +9,54 @@ param
Mood = Ind | Con ;
TTense = TPres | TPast | TFut ;
Polarity = Pos | Neg ;
VerbGroup = Gr1 | Gr2 | Suru | Kuru ;
ModSense = Abil | Oblig | Wish ;
Speaker = Me | SomeoneElse ;
Particle = Wa | Ga ;
Anteriority = Simul | Anter ;
NumeralType = Tens | TensPlus | Other ;
ComparSense = Less | More | NoCompar ;
NumeralType = EndZero | EndNotZero | SingleDigit ;
DTail = T1 | T2 | T3 ;
ConjType = And | Or | Both ;
SubjType = That | If | OtherSubj ;
VocType = VocPres | Please | VocAbs ;
UttType = Imper | ImpPolite | NoImp ;
oper
NP : Type = {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ;
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 ; ba : Animateness => Style => Str ;
prep : Str ; obj : Style => Str ; prepositive : Style => Str ;
compar : ComparSense} ;
changePolar : Bool ; meaning : Speaker ; anim : Animateness} ;
VP : Type = {verb : Speaker => Animateness => Style => TTense => Polarity => Str ;
a_stem, i_stem : Speaker => Animateness => Style => Str ;
te, ba : Speaker => Animateness => Style => Polarity => Str ;
prep : Str ; obj : Style => Str ; prepositive : Style => Str} ;
Noun : Type = {s : Number => Style => Str ; anim : Animateness ;
counter : Str ; counterReplace : Bool} ;
counter : Str ; counterReplace : Bool ; counterTsu : Bool} ;
PropNoun : Type = {s : Style => Str ; anim : Animateness} ;
Adj : Type = {pred : Style => TTense => Polarity => 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} ;
Adj : Type = {pred : Style => TTense => Polarity => Str ; attr, dropNaEnging : Str ;
te, ba, adv : Polarity => Str} ;
Adj2 : Type = {pred : Style => TTense => Polarity => Str ; attr, dropNaEnging,
prep : Str ; te, ba, adv : Polarity => Str} ;
Adverb : Type = {s : Style => Str ; prepositive : Bool} ;
Pronoun : Type = {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
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 ; ba : Str} ;
Verb2 : Type = {s : Style => TTense => Polarity => Str ; te : 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_ba : Str ;
prep : Str} ;
Determiner : Type = {quant : Style => Str ; postpositive : Str ; num : Str ; n : Number ;
inclCard : Bool ; sp : Style => Str ; no : Bool ; tenPlus : Bool} ;
Num : Type = {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool ;
tenPlus : Bool} ;
Preposition : Type = {s : Str ; null : Str} ;
Verb : Type = {s : Style => TTense => Polarity => Str ; a_stem, i_stem : Str ;
te, ba : Polarity => Str} ;
Verb2 : Type = {s, pass : Style => TTense => Polarity => Str ; a_stem, i_stem, pass_a_stem,
pass_i_stem, prep : Str ; te, ba, pass_te, pass_ba : Polarity => Str} ;
Verb3 : Type = {s : Speaker => Style => TTense => Polarity => Str ; a_stem, i_stem :
Speaker => Str ; te, ba : Speaker => Polarity => Str ; prep1, prep2 : Str} ;
VV : Type = {s : Speaker => Style => TTense => Polarity => Str ; a_stem, i_stem :
Speaker => Str ; te, ba : Speaker => Polarity => Str ; sense : ModSense} ;
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 -> {
mkNoun : Str -> Str -> Str -> Str -> Animateness -> Str -> Bool -> Bool -> Noun =
\man1,man2,man3,man4,a,c,b1,b2 -> {
s = table {
Sg => table {
Plain => man1 ;
@@ -64,13 +69,18 @@ oper
} ;
anim = a ;
counter = c ;
counterReplace = b
counterReplace = b1 ;
counterTsu = b2
} ;
regNoun : Str -> Animateness -> Str -> Bool -> Noun = \s,a,c,b -> mkNoun s s s s a c b ;
regNoun : Str -> Animateness -> Str -> Bool -> Bool -> Noun = \s,a,c,b1,b2 ->
mkNoun s s s s a c b1 b2 ;
styleNoun : Str -> Str -> Animateness -> Str -> Bool -> Noun = \kane,okane,a,c,b ->
mkNoun kane okane kane okane a c b ;
styleNoun : Str -> Str -> Animateness -> Str -> Bool -> Bool -> Noun = \kane,okane,a,c,b1,b2 ->
mkNoun kane okane kane okane a c b1 b2 ;
numberNoun : Str -> Animateness -> Str -> Bool -> Str -> Bool -> Noun = \n,a,c,b1,pl,b2 ->
mkNoun n n pl pl a c b1 b2 ;
regAdj : Str -> Adj = \a -> case a of {
chiisa + "い" => i_mkAdj a ;
@@ -83,329 +93,422 @@ oper
in {
pred = table {
Resp => table {
TPres => table {
(TPres|TFut) => table {
Pos => chiisai ++ "です" ;
Neg => (chiisa + "くありません" |
chiisa + "くないです")
Neg => chiisa + "くありません"
} ;
TPast => table {
Pos => chiisa + "かったです" ;
Neg => (chiisa + "くありませんでした" |
chiisa + "くなかったです")
} ;
TFut => table {
Pos => chiisai ++ "です" ;
Neg => (chiisa + "くありません" |
chiisa + "くないです")
Neg => chiisa + "くありませんでした"
}
} ;
Plain => table {
TPres => table {
(TPres|TFut) => table {
Pos => chiisai ;
Neg => chiisa + "くない"
} ;
TPast => table {
Pos => chiisa + "かった" ;
Neg => chiisa + "くなかった"
} ;
TFut => table {
Pos => chiisai ;
Neg => chiisa + "くない"
}
}
} ;
attr = chiisai ;
te = chiisa + "くて" ;
ba = chiisa + "ければ" ;
adv = chiisa + "く" ;
te = table {
Pos => chiisa + "くて" ;
Neg => chiisa + "くなくて"
} ;
ba = table {
Pos => chiisa + "ければ" ;
Neg => chiisa + "くなければ"
} ;
adv = table {
Pos => chiisa + "く" ;
Neg => chiisa + "くなく"
} ;
dropNaEnging = chiisai
} ;
na_mkAdj : Str -> Adj = \ookina ->
let
ooki = init ookina
ooki = init ookina
in {
pred = table {
Resp => table {
TPres => table {
Pos => ooki ++ "です" ;
Neg => ooki ++ "ではありません"
} ;
TPast => table {
Pos => ooki ++ "でした" ;
Neg => ooki ++ "ではありませんでした"
} ;
TFut => table {
Pos => ooki ++ "です" ;
Neg => ooki ++ "ではありません"
}
} ;
Plain => table {
TPres => table {
Pos => ooki ++ "だ" ;
Neg => ooki ++ "ではない"
} ;
TPast => table {
Pos => ooki ++ "だった" ;
Neg => ooki ++ "ではなかった"
} ;
TFut => table {
Pos => ooki ++ "だ" ;
Neg => ooki ++ "ではない"
}
}
} ;
pred = \\st,t,p => ooki ++ mkCopula.s ! st ! t ! p ;
attr = ookina ;
te = ooki + "で" ;
ba = ooki + "であれば" ;
adv = ooki + "に" ;
te = table {
Pos => ooki + "で" ;
Neg => ooki + "ではなくて"
} ;
ba = \\p => ooki ++ mkCopula.ba ! p ;
adv = table {
Pos => ooki + "に" ;
Neg => ooki + "ではなく"
} ;
dropNaEnging = ooki
} ;
VerbalA : Str -> Str -> Adj = \kekkonshiteiru,kikonno ->
let
kekkonshite = Predef.tk 2 kekkonshiteiru
kekkonshite = Predef.tk 2 kekkonshiteiru
in {
pred = table {
Resp => table {
TPres => table {
Pos => kekkonshite + "います" ;
Neg => kekkonshite + "いません"
} ;
TPast => table {
Pos => kekkonshite + "いました" ;
Neg => kekkonshite + "いませんでした"
} ;
TFut => table {
Pos => kekkonshite + "います" ;
Neg => kekkonshite + "いません"
}
} ;
Plain => table {
TPres => table {
Pos => kekkonshite + "いる" ;
Neg => kekkonshite + "いない"
} ;
TPast => table {
Pos => kekkonshite + "いた" ;
Neg => kekkonshite + "いなかった"
} ;
TFut => table {
Pos => kekkonshite + "いる" ;
Neg => kekkonshite + "いない"
}
}
} ;
pred = \\st,t,p => kekkonshite ++ mkExistV.verb ! SomeoneElse ! Anim ! st ! t ! p ;
attr = kikonno ;
te = kekkonshite + "いて" ;
ba = kekkonshite + "いれば" ;
adv = init kikonno + "で" ;
te = \\p => kekkonshite ++ mkExistV.te ! SomeoneElse ! Anim ! Resp ! p ;
ba = \\p => kekkonshite ++ mkExistV.ba ! SomeoneElse ! Anim ! Resp ! p ;
adv = table {
Pos => init kikonno + "で" ;
Neg => init kikonno + "ではなく"
} ;
dropNaEnging = init kikonno
} ;
mkVerb : Str -> Str -> Str -> Str -> Verb =
\yoma,yomi,yomu,yonda ->
let yon = init yonda ;
mkVerb : Str -> VerbGroup -> Verb =
\yomu,gr ->
let
yoma = mk_a_stem yomu gr ;
yomi = mk_i_stem yomu gr ;
yonda = mk_plain_past yomu gr ;
in {
s = table {
Resp => table {
TPres => table {
(TPres|TFut) => table {
Pos => yomi + "ます" ;
Neg => yomi + "ません"
} ;
TPast => table {
Pos => yomi + "ました" ;
Neg => yomi + "ませんでした"
} ;
TFut => table {
Pos => yomi + "ます" ;
Neg => yomi + "ません"
}
} ;
Plain => table {
TPres => table {
(TPres|TFut) => table {
Pos => yomu ;
Neg => yoma + "ない"
} ;
TPast => table {
Pos => yonda ;
Neg => yoma + "なかった"
} ;
TFut => table {
Pos => yomu ;
Neg => yoma + "ない"
}
}
} ;
te = case yonda of {
te = table {
Pos => case yonda of {
yon + "だ" => yon + "で" ;
yon + "た" => yon + "て"
} ;
a_stem = yoma ;
i_stem = yomi ;
ba = mkBaForm yomu
Neg => yoma + "ないで"
} ;
a_stem = yoma ;
i_stem = yomi ;
ba = table {
Pos => mkBaForm yomu gr ;
Neg => yoma + "なければ"
}
} ;
mkVerb2 : Str -> Str -> Str -> Str -> Str -> Verb2 =
\yoma,yomi,yomu,yonda,p -> {
s = (mkVerb yoma yomi yomu yonda).s ;
te = (mkVerb yoma yomi yomu yonda).te ;
mkVerb2 : Str -> Str -> VerbGroup -> Verb2 =
\yomu,p,gr ->
let
yoma = mk_a_stem yomu gr ;
in {
s = (mkVerb yomu gr).s ;
te = (mkVerb yomu gr).te ;
a_stem = yoma ;
i_stem = yomi ;
ba = mkBaForm yomu ;
i_stem = mk_i_stem yomu gr ;
ba = (mkVerb yomu gr).ba ;
prep = p ;
pass = table {
Resp => table {
TPres => table {
Pos => case yomu of {
x + "する" => x + "れます" ;
_ => yoma + "れます"
(TPres|TFut) => table {
Pos => case gr of {
Gr1 => yoma + "れます" ;
Gr2 => yoma + "れます" ;
Suru => Predef.tk 2 yomu + "されます" ;
Kuru => "来られます"
} ;
Neg => case gr of {
Gr1 => yoma + "れません" ;
Gr2 => yoma + "られません" ;
Suru => Predef.tk 2 yomu + "されません" ;
Kuru => "来られません"
}
} ;
Neg => case yomu of {
x + "する" => x + "されません" ;
_ => yoma + "れません"
TPast => table {
Pos => case gr of {
Gr1 => yoma + "れました" ;
Gr2 => yoma + "られました" ;
Suru => Predef.tk 2 yomu + "されました" ;
Kuru => "来られました"
} ;
Neg => case gr of {
Gr1 => yoma + "れませんでした" ;
Gr2 => yoma + "られませんでした" ;
Suru => Predef.tk 2 yomu + "されませんでした" ;
Kuru => "来られませんでした"
}
}
} ;
TPast => table {
Pos => case yomu of {
x + "する" => x + "されました" ;
_ => yoma + "れました"
Plain => table {
(TPres|TFut) => table {
Pos => case gr of {
Gr1 => yoma + "れ" ;
Gr2 => yoma + "られる" ;
Suru => Predef.tk 2 yomu + "される" ;
Kuru => "来られる"
} ;
Neg => case gr of {
Gr1 => yoma + "れない" ;
Gr2 => yoma + "られない" ;
Suru => Predef.tk 2 yomu + "されない" ;
Kuru => "来られない"
}
} ;
Neg => case yomu of {
x + "する" => x + "されませんでした" ;
_ => yoma + "れませんでした"
}
} ;
TFut => table {
Pos => case yomu of {
x + "する" => x + "されます" ;
_ => yoma + "れます"
} ;
Neg => case yomu of {
x + "する" => x + "されません" ;
_ => yoma + "れません"
TPast => table {
Pos => case gr of {
Gr1 => yoma + "れた" ;
Gr2 => yoma + "られた" ;
Suru => Predef.tk 2 yomu + "された" ;
Kuru => "来られた"
} ;
Neg => case gr of {
Gr1 => yoma + "れなかった" ;
Gr2 => yoma + "られなかった" ;
Suru => Predef.tk 2 yomu + "されなかった" ;
Kuru => "来られなかった"
}
}
}
} ;
Plain => table {
TPres => table {
Pos => case yomu of {
x + "する" => x + "される" ;
_ => yoma + "れる"
} ;
Neg => case yomu of {
x + "する" => x + "されない" ;
_ => yoma + "れない"
}
pass_te = table {
Pos => case gr of {
Gr1 => yoma + "れて" ;
Gr2 => yoma + "られて" ;
Suru => Predef.tk 2 yomu + "されて" ;
Kuru => "来られて"
} ;
TPast => table {
Pos => case yomu of {
x + "する" => x + "された" ;
_ => yoma + "れた"
} ;
Neg => case yomu of {
x + "する" => x + "されなかった" ;
_ => yoma + "れなかった"
}
Neg => case gr of {
Gr1 => yoma + "れないで" ;
Gr2 => yoma + "られないで" ;
Suru => Predef.tk 2 yomu + "されないで" ;
Kuru => "来られないで"
}
} ;
pass_a_stem = case gr of {
Gr1 => yoma + "れ" ;
Gr2 => yoma + "られ" ;
Suru => Predef.tk 2 yomu + "され" ;
Kuru => "来られ"
} ;
pass_i_stem = case gr of {
Gr1 => yoma + "れ" ;
Gr2 => yoma + "られ" ;
Suru => Predef.tk 2 yomu + "され" ;
Kuru => "来られ"
} ;
pass_ba = table {
Pos => case gr of {
Gr1 => yoma + "れれば" ;
Gr2 => yoma + "られれば" ;
Suru => Predef.tk 2 yomu + "されれば" ;
Kuru => "来られれば"
} ;
TFut => table {
Pos => case yomu of {
x + "する" => x + "される" ;
_ => yoma + "れる"
} ;
Neg => case yomu of {
x + "する" => x + "されない" ;
_ => yoma + "れない"
}
}
Neg => case gr of {
Gr1 => yoma + "れなければ" ;
Gr2 => yoma + "られなければ" ;
Suru => Predef.tk 2 yomu + "されなければ" ;
Kuru => "来られなければ"
}
}
} ;
pass_te = case yomu of {
x + "する" => x + "されて" ;
_ => yoma + "れて"
} ;
pass_a_stem = case yomu of {
x + "する" => x + "され" ;
_ => yoma + "れ"
} ;
pass_i_stem = case yomu of {
x + "する" => x + "され" ;
_ => yoma + "れ"
} ;
pass_ba = case yomu of {
x + "する" => x + "されれば" ;
_ => yoma + "れれば"
}
mkVerb3 : Str -> Str -> Str -> VerbGroup -> Verb3 =
\uru,p1,p2,gr -> {
s = \\sp => (mkVerb uru gr).s ;
te = \\sp => (mkVerb uru gr).te ;
a_stem = \\sp => mk_a_stem uru gr ;
i_stem = \\sp => mk_i_stem uru gr ;
ba = \\sp => (mkVerb uru gr).ba ;
prep1 = p1 ;
prep2 = p2
} ;
mkCopula : Verb = {
mkCopula = {
s = table {
Resp => table {
TPres => table {
(TPres|TFut) => table {
Pos => "です" ;
Neg => "ではありません"
} ;
TPast => table {
Pos => "でした" ;
Neg => "ではありませんでした"
} ;
TFut => table {
Pos => "です" ;
Neg => "ではありません"
}
} ;
Plain => table {
TPres => table {
(TPres|TFut) => table {
Pos => "だ" ;
Neg => "ではない"
} ;
TPast => table {
Pos => "だった" ;
Neg => "ではなかった"
} ;
TFut => table {
Pos => "だ" ;
Neg => "ではない"
}
}
} ;
te = table {
Pos => "だって" ;
Neg => "ではなくて"
} ;
te = "だって" ;
a_stem = "で" ;
i_stem = "で" ;
ba = "であれば"
ba = table {
Pos => "であれば" ;
Neg => "でなければ"
}
} ;
mkExistV : VP = {
verb = table {
Anim => \\st,t,p => (mkVerb "い" "い" "いる" "いた").s ! st ! t ! p ;
Inanim => \\st,t,p => (mkVerb "" "あり" "ある" "あった").s ! st ! t ! p
verb = \\sp => table {
Anim => \\st,t,p => (mkVerb "いる" Gr2).s ! st ! t ! p ;
Inanim => table {
Resp => table {
(TPres|TFut) => table {
Pos => "あります" ;
Neg => "ありません"
} ;
TPast => table {
Pos => "ありました" ;
Neg => "ありませんでした"
}
} ;
Plain => table {
(TPres|TFut) => table {
Pos => "ある" ;
Neg => "ない"
} ;
TPast => table {
Pos => "あった" ;
Neg => "なかった"
}
}
}
} ;
te = table {
Anim => \\st => "いて" ;
Inanim => \\st => "あって"
te = \\sp => table {
Anim => \\st => table {
Pos => "いて" ;
Neg => "いないで"
} ;
Inanim => \\st => table {
Pos => "あって" ;
Neg => "ないで"
}
} ;
a_stem = table {
a_stem = \\sp => table {
Anim => \\st => "い" ;
Inanim => \\st => ""
} ;
i_stem = table {
i_stem = \\sp => table {
Anim => \\st => "い" ;
Inanim => \\st => "あり"
} ;
ba = table {
Anim => \\st => "いれば" ;
Inanim => \\st => "れば"
ba = \\sp => table {
Anim => \\st => table {
Pos => "れば" ;
Neg => "いなければ"
} ;
Inanim => \\st => table {
Pos => "あれば" ;
Neg => "なければ"
}
} ;
prep = [] ;
prepositive, obj = \\st => [] ;
compar = NoCompar
prepositive, obj = \\st => []
} ;
mkNum : Str -> Number -> Bool -> Num = \s,n,b -> {
mkWant : VV = {
s = table {
Me => \\st,t,p => (i_mkAdj "たい").pred ! st ! t ! p ;
SomeoneElse => \\st,t,p => "たがって" ++ (mkVerb "いる" Gr2).s ! st ! t ! p
} ;
te = table {
Me => table {
Pos => "たくて" ;
Neg => "たくなくて"
} ;
SomeoneElse => table {
Pos => "たがっていて" ;
Neg => "たがっていないで"
}
} ;
a_stem = table {
Me => "たいで" ;
SomeoneElse => "たがってい"
} ;
i_stem = table {
Me => "たいで" ;
SomeoneElse => "たがってい"
} ;
ba = table {
Me => table {
Pos => "たければ" ;
Neg => "たくなければ"
} ;
SomeoneElse => table {
Pos => "たがっていれば" ;
Neg => "たがっていなければ"
}
} ;
sense = Wish
} ;
mkCan : VV = {
s = \\sp,st,t,p => (mkVerb "できる" Gr2).s ! st ! t ! p ;
te = \\sp => table {
Pos => "できて" ;
Neg => "できないで"
} ;
a_stem, i_stem = \\sp => "でき" ;
ba = \\sp => table {
Pos => "できれば" ;
Neg => "できなければ"
} ;
sense = Abil
} ;
mkMust : VV = {
s = \\sp,st,t,p => (mkVerb "なる" Gr1).s ! st ! t ! Neg ;
te = \\sp,p => "ならなくて" ;
a_stem = \\sp => "なら" ;
i_stem = \\sp => "なり" ;
ba = \\sp,p => "ならなければ" ;
sense = Oblig
} ;
mkGive : Verb3 = {
s = table {
Me => \\st,t,p => (mkVerb "呉れる" Gr2).s ! st ! t ! p ; -- "kureru"
SomeoneElse => \\st,t,p => (mkVerb "上げる" Gr2).s ! st ! t ! p -- "ageru"
} ;
te = table {
Me => (mkVerb "呉れる" Gr2).te ;
SomeoneElse => (mkVerb "上げる" Gr2).te
} ;
a_stem, i_stem = table {
Me => "呉れ" ;
SomeoneElse => "上げ"
} ;
ba = table {
Me => (mkVerb "呉れる" Gr2).ba ;
SomeoneElse => (mkVerb "上げる" Gr2).ba
} ;
prep1 = "に" ;
prep2 = "を"
} ;
mkNum : Str -> Number -> Num = \s,n -> {
s = s ;
postpositive = [] ;
n = n ;
inclCard = b
inclCard = False ;
tenPlus = False
} ;
regPron : Str -> Bool -> Animateness -> Pronoun = \kare,b,a -> {
@@ -421,7 +524,8 @@ oper
n = n ;
inclCard = False ;
sp = \\st => sp ;
no = False
no = False ;
tenPlus = False
} ;
stylePron : Str -> Str -> Bool -> Animateness -> Pronoun = \boku,watashi,b,a -> {
@@ -451,8 +555,7 @@ oper
mkAdv : Str -> Adverb = \adv -> {
s = \\st => adv ;
prepositive = False ;
compar = NoCompar
prepositive = False
} ;
mkNP : Str -> Bool -> Bool -> Animateness -> NP = \np,b1,b2,a -> {
@@ -460,7 +563,7 @@ oper
prepositive = \\st => [] ;
needPart = b1 ;
changePolar = b2 ;
Pron1Sg = False ;
meaning = SomeoneElse ;
anim = a
} ;
@@ -470,27 +573,104 @@ oper
type = t
} ;
mkPrep : Str -> Str -> Preposition = \p,r -> {
mkPrep : Str -> Preposition = \p -> {
s = p ;
relPrep = r ;
null = "" ;
} ;
mkSubj : Str -> SubjType -> Subjunction = \s,t -> {
s = s ;
type = t ;
} ;
mkBaForm : Str -> Str = \neru ->
case last neru of {
mk_a_stem : Str -> VerbGroup -> Str = \neru,gr ->
case gr of {
Gr1 => case last neru of {
"る" => init neru + "ら" ;
"す" => init neru + "さ" ;
"く" => init neru + "か" ;
"ぐ" => init neru + "が" ;
"む" => init neru + "ま" ;
"ぬ" => init neru + "な" ;
"ぶ" => init neru + "ば" ;
"つ" => init neru + "た" ;
_ => init neru + "わ"
} ;
(Gr2 | Kuru) => init neru ;
Suru => Predef.tk 2 neru + "し"
} ;
mk_i_stem : Str -> VerbGroup -> Str = \neru,gr ->
case gr of {
Gr1 => case last neru of {
"る" => init neru + "り" ;
"す" => init neru + "し" ;
"く" => init neru + "き" ;
"ぐ" => init neru + "ぎ" ;
"む" => init neru + "み" ;
"ぬ" => init neru + "に" ;
"ぶ" => init neru + "び" ;
"つ" => init neru + "ち" ;
_ => init neru + "い"
} ;
(Gr2 | Kuru) => init neru ;
Suru => Predef.tk 2 neru + "し"
} ;
mk_plain_past : Str -> VerbGroup -> Str = \neru,gr ->
case gr of {
Gr1 => case last neru of {
"る" => init neru + "った" ;
"す" => init neru + "した" ;
"く" => init neru + "いた" ;
"ぐ" => init neru + "いだ" ;
"む" => init neru + "んだ" ;
"ぬ" => init neru + "んだ" ;
"ぶ" => init neru + "んだ" ;
"つ" => init neru + "った" ;
_ => init neru + "った"
} ;
(Gr2 | Kuru) => init neru + "た" ;
Suru => Predef.tk 2 neru + "した"
} ;
mkBaForm : Str -> VerbGroup -> Str = \neru,gr ->
case last neru of {
"る" => init neru + "れば" ;
"す" => init neru + "せば" ;
"く" => init neru + "けば" ;
"ぐ" => init neru + "げば" ;
"む" => init neru + "めば" ;
"む" => init neru + "めば" ;
"ぬ" => init neru + "ねば" ;
"ぶ" => init neru + "べば" ;
"つ" => init neru + "てば" ;
_ => init neru + "えば"
"つ" => init neru + "てば" ;
_ => init neru + "えば"
} ;
mkFirst : Adj = {
pred = \\st,t,p => "一番目" ++ mkCopula.s ! st ! t ! p ;
attr = "一番目の" ;
te = \\p => "一番目" ++ mkCopula.te ! p ;
ba = \\p => "一番目" ++ mkCopula.ba ! p ;
adv = table {
Pos => "一番目" ;
Neg => "一番目ではなく"
} ;
dropNaEnging = "一番目"
} ;
mkRain : Verb = {
s = \\st,t,p => "雨が" ++ (mkVerb "降る" Gr1).s ! st ! t ! p ; -- "ame ga furu"
te = table {
Pos => "雨が降って" ;
Neg => "雨が降らないで"
} ;
a_stem = "雨が降ら" ;
i_stem = "雨が降り" ;
ba = table {
Pos => "雨が降れば" ;
Neg => "雨が降らなければ"
}
} ;
}

View File

@@ -5,102 +5,59 @@ flags coding = utf8 ;
lin
PredVP np vp = case vp.compar of {
More => {
PredVP np vp = case np.needPart of {
True => {
s = table {
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
"のほうが" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
} ;
te = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
} ;
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! 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.ba ! np.anim ! st
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが"
Ga => \\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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
changePolar = np.changePolar
} ;
Less => {
s = \\part,st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
"より" ++ 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 ;
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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
} ;
NoCompar => case np.needPart of {
True => {
s = table {
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p
} ;
te = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st
} ;
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! 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.ba ! np.anim ! st
} ;
subj = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ;
Ga => \\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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
False => {
s = table {
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
} ;
te = table {
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
} ;
False => {
s = table {
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p
} ;
te = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! np.anim ! st ;
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.te ! np.anim ! st
} ;
ba = table {
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! 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.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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ;
changePolar = np.changePolar
}
ba = table {
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
} ;
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
changePolar = np.changePolar
}
} ;
@@ -108,82 +65,67 @@ flags coding = utf8 ;
True => {
s = table {
Wa => \\st,t,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! Inanim ! st ! t ! p ;
vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
Ga => \\st,t,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! Inanim ! st ! t ! p
vp.verb ! SomeoneElse ! Inanim ! st ! t ! p
} ;
te = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p
} ;
ba = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st
Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p
} ;
subj = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ;
Ga => \\st => sc.s ! Ga ! 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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
changePolar = False
} ;
False => {
s = table {
Wa => \\st,t,p => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! Inanim ! st ! t ! p ;
Ga => \\st,t,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! Inanim ! st ! t ! p
} ;
te = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! Inanim ! st
} ;
ba = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st ;
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! Inanim ! st
} ;
subj = table {
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ;
Ga => \\st => sc.s ! Ga ! 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_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ;
s = \\part,st,t,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
te = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
ba = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
subj = \\part,st => sc.s ! part ! st ++ "ことが" ;
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
changePolar = False
}
} ;
SlashVP np vpslash = {
s = \\st,t,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
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 ;
ba = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ;
vpslash.obj ! st ++ vpslash.s ! np.meaning ! Plain ! t ! p ;
te = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.te ! np.meaning ! p ;
ba = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
vpslash.obj ! st ++ vpslash.ba ! np.meaning ! p ;
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_ba = \\st => vpslash.obj ! st ++ vpslash.ba ;
pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! np.meaning ! st ! t ! p ;
pred_te = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ! np.meaning ! p ;
pred_ba = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ! np.meaning ! p ;
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 ;
ba = \\st => adv.s ! st ++ clslash.ba ! st ;
te = \\st,p => adv.s ! st ++ clslash.te ! st ! p ;
ba = \\st,p => adv.s ! st ++ clslash.ba ! st ! p ;
subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ;
pred = clslash.pred ;
pred_te = clslash.pred_te ;
@@ -192,29 +134,30 @@ flags coding = utf8 ;
} ;
SlashPrep cl prep = {
s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.relPrep ;
te = \\st => cl.te ! Ga ! st ++ prep.relPrep ;
ba = \\st => cl.ba ! Ga ! st ++ prep.relPrep ;
s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.null ;
te = \\st,p => cl.te ! Ga ! st ! p ++ prep.null ;
ba = \\st,p => cl.ba ! Ga ! st ! p ++ prep.null ;
subj = cl.subj ;
pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.relPrep ;
pred_te = \\st => cl.pred_te ! st ++ prep.relPrep ;
pred_ba = \\st => cl.pred_ba ! st ++ prep.relPrep ;
pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.null ;
pred_te = \\st,p => cl.pred_te ! st ! p ++ prep.null ;
pred_ba = \\st,p => cl.pred_ba ! st ! p ++ prep.null ;
changePolar = cl.changePolar
} ;
SlashVS np vs sslash = {
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 ;
ba = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
vs.prep ++ vs.ba ;
te = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++
vs.te ! p ;
ba = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
vs.prep ++ vs.ba ! p ;
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_ba = \\st => sslash.s ! st ++ vs.prep ++ vs.ba ;
pred_te = \\st,p => sslash.s ! st ++ vs.prep ++ vs.te ! p ;
pred_ba = \\st,p => sslash.s ! st ++ vs.prep ++ vs.ba ! p ;
changePolar = np.changePolar
} ;
@@ -222,15 +165,15 @@ flags coding = utf8 ;
s = table {
Resp => table {
Pos => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
vp.te ! Anim ! Resp ;
vp.te ! SomeoneElse ! Anim ! Resp ! Pos ;
Neg => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
vp.verb ! Anim ! Plain ! TPres ! Neg ++ "で"
vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Neg ++ "で"
} ;
Plain => table {
Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
vp.i_stem ! Anim ! Plain ++ "なさい" ;
vp.i_stem ! SomeoneElse ! Anim ! Plain ++ "nasai" ;
Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
vp.verb ! Anim ! Plain ! TPres ! Pos ++ "な"
vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Pos ++ "な"
}
}
} ;
@@ -239,7 +182,8 @@ flags coding = utf8 ;
EmbedQS qs = {s = \\part,st => qs.s ! part ! Plain ; isVP = False} ;
EmbedVP vp = {s = \\part,st => vp.verb ! Inanim ! Plain ! TPres ! Pos ; isVP = True} ;
EmbedVP vp = {s = \\part,st => vp.verb ! SomeoneElse ! Inanim ! Plain ! TPres ! Pos ;
isVP = True} ;
UseCl t p cl = {
s = \\part,st => case t.a of {
@@ -262,8 +206,8 @@ flags coding = utf8 ;
}
}
} ;
te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ;
ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ;
te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ! p.b ;
ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ! p.b ;
subj = cl.subj ;
pred = \\st => case t.a of {
Simul => case cl.changePolar of {
@@ -285,8 +229,8 @@ flags coding = utf8 ;
}
}
} ;
pred_te = cl.pred_te ;
pred_ba = cl.pred_ba
pred_te = \\st => cl.pred_te ! st ! p.b ;
pred_ba = \\st => cl.pred_ba ! st ! p.b
} ;
UseQCl t p cl = {
@@ -309,7 +253,27 @@ flags coding = utf8 ;
True => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! Neg
}
}
}
} ;
s_plain_pred = \\part,st => case t.a of {
Simul => case cl.changePolar of {
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! p.b ;
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! Neg
} ;
Anter => case t.t of {
TPres => case cl.changePolar of {
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
} ;
TPast => case cl.changePolar of {
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
} ;
TFut => case cl.changePolar of {
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! p.b ;
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! Neg
}
}
}
} ;
UseRCl t p rcl = {
@@ -333,7 +297,7 @@ flags coding = utf8 ;
}
}
} ;
te = \\a,st => t.s ++ p.s ++ rcl.te ! a ! st ;
te = \\a,st => t.s ++ p.s ++ rcl.te ! a ! st ! p.b ;
subj = rcl.subj ;
pred = \\a,st => case t.a of {
Simul => case rcl.changePolar of {
@@ -355,8 +319,8 @@ flags coding = utf8 ;
}
}
} ;
pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ;
pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ;
pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ! p.b ;
pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ! p.b ;
missingSubj = rcl.missingSubj
} ;
@@ -381,7 +345,7 @@ flags coding = utf8 ;
}
}
} ;
te = \\st => clslash.te ! st
te = \\st => clslash.te ! st ! p.b
} ;
AdvS adv s = {
@@ -444,7 +408,7 @@ flags coding = utf8 ;
te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ++ rs.pred_te ! Inanim ! st ;
ba = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことが" ++ rs.pred_ba ! Inanim ! st ;
"ことが" ++ 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 ;
@@ -452,24 +416,12 @@ flags coding = utf8 ;
pred_ba = \\st => rs.pred_ba ! Inanim ! st
} ;
False => {
s = table {
Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred ! Inanim ! st ;
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred ! Inanim ! st
} ;
te = table {
Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_te ! Inanim ! st ;
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_te ! Inanim ! st
} ;
ba = table {
Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_ba ! Inanim ! st ;
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_ba ! Inanim ! st
} ;
s = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred ! Inanim ! st ;
te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ rs.pred_te ! Inanim ! st ;
ba = \\part,st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
"ことを" ++ 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 ;

View File

@@ -4,8 +4,8 @@ flags coding = utf8 ;
lin
above_Prep = mkPrep "の上に" "上に" ; -- "noueni" "ueni"
after_Prep = mkPrep "の後に" "後" ; -- "noatoni" "ato"
above_Prep = mkPrep "の上に" ; -- "noueni"
after_Prep = mkPrep "の後に" ; -- "noatoni"
all_Predet = {s = "全部" ; not = False} ;
almost_AdA = ss "殆ど" ; -- "hotondo"
almost_AdN = {s = "殆ど" ; postposition = False} ;
@@ -13,56 +13,52 @@ flags coding = utf8 ;
always_AdV = ss "いつも" ;
and_Conj = mkConj "そして" And ;
because_Subj = mkSubj "から" OtherSubj ;
before_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
behind_Prep = mkPrep "後ろに" "後ろに" ; -- "ushironi" "ushironi"
between_Prep = mkPrep "の間に" "間に" ; -- "noaidani" "aidani"
before_Prep = mkPrep "の前に" ; -- "nomaeni"
behind_Prep = mkPrep "後ろに" ; -- "ushironi"
between_Prep = mkPrep "の間に" ; -- "noaidani"
both7and_DConj = mkConj "そして" Both ;
by8agent_Prep = mkPrep "に" "" ;
by8means_Prep = mkPrep "によって" "" ;
by8agent_Prep = mkPrep "に" ;
by8means_Prep = mkPrep "によって" ;
but_PConj = ss "けれども" ;
can8know_VV = mkVerb "でき" "でき" "できる" "できた" ** {sense = Abil} ;
can8know_VV = mkCan ;
can_VV = can8know_VV ;
during_Prep = mkPrep "の間に" "" ; -- "noaidani"
during_Prep = mkPrep "の間に" ; -- "noaidani"
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 ;
ba = "一番目" ++ mkCopula.ba ; adv = "一番目" ;
dropNaEnging = "一番目"} ;
everywhere_Adv = mkAdv "どこでも" ; -- "dokodemo"
first_Ord = mkFirst ;
few_Det = mkDet "少数の" "少数" Pl ; -- "shoosuuno"
for_Prep = mkPrep "のために" "" ;
from_Prep = mkPrep "から" "" ;
for_Prep = mkPrep "のために" ;
from_Prep = mkPrep "から" ;
he_Pron = mkPron "彼" False Anim ; -- "kare"
here_Adv = mkAdv "ここで" ;
here7to_Adv = mkAdv "ここに" ;
here7from_Adv = mkAdv "ここから" ;
how_IAdv = {s = \\st => "どのように" ; particle = ""} ;
how_IAdv = {s = \\st => "どのように" ; particle = "" ; wh8re = False} ;
how8many_IDet = {s = "いくつ" ; n = Pl ; how8many = True ; inclCard = False} ;
how8much_IAdv = {s = \\st => "いくら" ; particle = ""} ;
i_Pron = mkPron ("僕"|"私") "私" True Anim ; -- "boku"|"watashi"
how8much_IAdv = {s = \\st => "いくら" ; particle = "" ; wh8re = False} ;
i_Pron = mkPron "私" "私" True Anim ; -- "watashi"
if_Subj = mkSubj "" If ;
in8front_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
in_Prep = mkPrep "に" "" ;
in8front_Prep = mkPrep "の前に" ; -- "nomaeni"
in_Prep = mkPrep "に" ;
it_Pron = mkPron "それ" False Inanim ;
less_CAdv = {s = "のほうが" ; compar = Less} ;
less_CAdv = {s = "より" ; less = True ; s_adn = "以下"} ; -- "ika"
many_Det = mkDet "多くの" "多く" Pl ; -- "ookuno"
more_CAdv = {s = "より" ; compar = More} ;
more_CAdv = {s = "より" ; less = False ; s_adn = "以上"} ; -- "ijou"
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 "の上に" "" ;
must_VV = mkMust ;
no_Phr = {s = "いいえ"} ;
no_Utt = {s = \\part,st => "いいえ" ; type = NoImp} ;
on_Prep = mkPrep "の上に" ; -- "noueni"
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 "の" "" ;
part_Prep = mkPrep "の" ;
please_Voc = {s = \\st => "ください" ; type = Please ; null = ""} ;
possess_Prep = mkPrep "の" ;
quite_Adv = ss "可成" ; -- "kanari"
she_Pron = mkPron "彼女" False Anim ; -- "kanojo"
so_AdA = ss "非常に" ; -- "hijooni"
@@ -73,48 +69,47 @@ flags coding = utf8 ;
somewhere_Adv = mkAdv "どこかに" ;
that_Quant = {s = \\st => "その" ; sp = \\st => "それ" ; no = False} ;
that_Subj = mkSubj "ことを" That ;
there_Adv = mkAdv "そこ" ;
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 => "この" ; sp = \\st => "これ" ; no = False} ;
through_Prep = mkPrep "を通じて" "通じて" ; -- "otsuujite"
to_Prep = mkPrep "に" "" ;
through_Prep = mkPrep "を通じて" ; -- "otsuujite"
to_Prep = mkPrep "に" ;
too_AdA = ss "あまりにも" ;
under_Prep = mkPrep "の下に" "下に" ; -- "noshitani"
under_Prep = mkPrep "の下に" ; -- "noshitani"
very_AdA = ss "とても" ;
want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ;
ba = "いれば" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ;
want_VV = mkWant ;
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 = ""} ;
whatPl_IP = {s_subj, s_obj = \\st => "何" ; anim = Inanim ; how8many = False} ; -- "nani"
whatSg_IP = {s_subj, s_obj = \\st => "何" ; anim = Inanim ; how8many = False} ;
when_IAdv = {s = \\st => "いつ" ; particle = "" ; wh8re = False} ;
when_Subj = mkSubj "と" OtherSubj ;
where_IAdv = {s = \\st => "どこ" ; particle = "で"} ;
where_IAdv = {s = \\st => "どこ" ; particle = "で" ; wh8re = True} ;
which_IQuant = ss "どの" ;
whoPl_IP = {s = \\st => "誰" ; anim = Anim ; how8many = False} ;
whoSg_IP = {s = \\st => "誰" ; anim = Anim ; how8many = False} ;
why_IAdv = {s = \\st => "どうして" ; particle = ""} ;
with_Prep = mkPrep "と" "" ;
without_Prep = mkPrep "無しで" "無しで" ; -- "nashide"
yes_Phr = ss "はい" ;
yes_Utt = {s = \\st => "はい"} ;
youSg_Pron = mkPron ("あなた"|"君") "あなた" False Anim ; -- ("anata"|"kimi")
whoPl_IP = {s_subj, s_obj = \\st => "誰" ; anim = Anim ; how8many = False} ; -- "dare"
whoSg_IP = {s_subj, s_obj = \\st => "誰" ; anim = Anim ; how8many = False} ;
why_IAdv = {s = \\st => "どうして" ; particle = "" ; wh8re = False} ;
with_Prep = mkPrep "と" ;
without_Prep = mkPrep "無しで" ; -- "nashide"
yes_Phr = {s = "はい"} ;
yes_Utt = {s = \\part,st => "はい" ; type = NoImp} ;
youSg_Pron = mkPron "あなた" "あなた" False Anim ;
youPl_Pron = mkPron "あなた達" "あなた方" False Anim ; -- "anatatachi" "anatagata"
youPol_Pron = mkPron "あなた" False Anim ;
no_Quant = {s = \\st => "" ; sp = \\st => "何も" ; no = True} ;
no_Quant = {s = \\st => "" ; sp = \\st => "何も" ; no = True} ; -- "nanimo"
not_Predet = {s = "" ; not = True} ;
at_least_AdN = {s = "少なくとも" ; postposition = False} ; -- "sukunakutomo"
at_most_AdN = {s = "せいぜい" ; postposition = False} ;
nobody_NP = mkNP "誰も" False True Anim ;
nothing_NP = mkNP "何も" False True Inanim ;
except_Prep = mkPrep "を除いて" "を除いて" ; -- "onozoite"
as_CAdv = {s = "と同じぐらい" ; compar = NoCompar} ; -- "toonajigurai"
have_V2 = mkV2 "持ってい" "持ってい" "持っている" "持っていた" "を" ;
nobody_NP = mkNP "誰も" False True Anim ; -- "daremo"
nothing_NP = mkNP "何も" False True Inanim ; -- "nanimo"
except_Prep = mkPrep "を除いて" ;
language_title_Utt = {s = \\st => "日本語"} ; -- "nihongo"
as_CAdv = {s = "と同じぐらい" ; less = False ; s_adn = "もの"} ;
have_V2 = mkV2 "持っている" "を" Gr2 ;
language_title_Utt = {s = \\part,st => "日本語" ; type = NoImp} ; -- "nihongo"
}

View File

@@ -4,7 +4,7 @@ flags coding = utf8 ;
lin
TEmpty = ss "" ;
TEmpty = {s = ""} ;
TFullStop phr txt = {s = phr.s ++ "." ++ txt.s} ;

View File

@@ -5,208 +5,183 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
lin
UseV v = {
verb = \\a,st,t,p => v.s ! st ! t ! p ;
te = \\a,st => v.te ;
a_stem = \\a,st => v.a_stem ;
i_stem = \\a,st => v.i_stem ;
ba = \\a,st => v.ba ;
verb = \\sp,a,st,t,p => v.s ! st ! t ! p ;
te = \\sp,a,st => v.te ;
a_stem = \\sp,a,st => v.a_stem ;
i_stem = \\sp,a,st => v.i_stem ;
ba = \\sp,a,st => v.ba ;
prep = [] ;
obj = \\st => [] ;
prepositive = \\st => [] ;
compar = NoCompar
prepositive = \\st => []
} ;
ComplVV v vp = case v.sense of {
Abil => {
verb = \\a,st,t,p => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.s ! st ! t ! p ;
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 ;
ba = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.ba ;
verb = \\sp,a,st,t,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.s ! sp ! st ! t ! p ;
te = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.te ! sp ! p ;
a_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.a_stem ! sp ;
i_stem = \\sp,a,st => vp.verb ! sp ! a ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.i_stem ! sp ;
ba = \\sp,a,st,p => vp.verb ! sp ! a ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.ba ! sp ! p ;
prep = vp.prep ;
obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive ;
compar = NoCompar
prepositive = vp.prepositive
} ;
Oblig => {
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 ;
ba = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.ba ;
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
} ;
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
} ;
prep = vp.prep ;
obj = \\st => vp.obj ! st ;
prepositive = vp.prepositive ;
compar = NoCompar
prepositive = vp.prepositive
} ;
Wish => {
verb = \\a,st,t,p => vp.i_stem ! Anim ! st ++ "たがって" ++ v.s ! st ! t ! p ;
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 ;
ba = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.ba ;
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 ;
compar = NoCompar
prepositive = vp.prepositive
}
} ;
ComplVS vs sent = {
verb = \\a,st,t,p => vs.s ! st ! t ! p ;
te = \\a,st => vs.te ;
a_stem = \\a,st => vs.a_stem ;
i_stem = \\a,st => vs.i_stem ;
ba = \\a,st => vs.ba ;
verb = \\sp,a,st,t,p => vs.s ! st ! t ! p ;
te = \\sp,a,st => vs.te ;
a_stem = \\sp,a,st => vs.a_stem ;
i_stem = \\sp,a,st => vs.i_stem ;
ba = \\sp,a,st => vs.ba ;
prep = vs.prep ;
obj = \\st => sent.s ! Ga ! Plain ;
prepositive = \\st => [] ;
compar = NoCompar
obj = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ;
prepositive = \\st => []
} ;
ComplVQ vq qs = {
verb = \\a,st,t,p => vq.s ! st ! t ! p ;
te = \\a,st => vq.te ;
a_stem = \\a,st => vq.a_stem ;
i_stem = \\a,st => vq.i_stem ;
ba = \\a,st => vq.ba ;
prep = vq.prep ;
obj = \\st => qs.s ! Ga ! Plain ++ "こと" ;
prepositive = \\st => [] ;
compar = NoCompar
verb = \\sp,a,st,t,p => vq.s ! st ! t ! p ;
te = \\sp,a,st => vq.te ;
a_stem = \\sp,a,st => vq.a_stem ;
i_stem = \\sp,a,st => vq.i_stem ;
ba = \\sp,a,st => vq.ba ;
prep = "" ;
obj = \\st => qs.s_plain_pred ! Ga ! st ;
prepositive = \\st => []
} ;
ComplVA va ap = {
verb = \\a,st,t,p => va.s ! st ! t ! p ;
te = \\a,st => va.te ;
a_stem = \\a,st => va.a_stem ;
i_stem = \\a,st => va.i_stem ;
ba = \\a,st => va.ba ;
verb = \\sp,a,st,t,p => va.s ! st ! t ! p ;
te = \\sp,a,st => va.te ;
a_stem = \\sp,a,st => va.a_stem ;
i_stem = \\sp,a,st => va.i_stem ;
ba = \\sp,a,st => va.ba ;
prep = [] ;
obj = \\st => ap.adv ! st ;
prepositive = ap.prepositive ;
compar = NoCompar
prepositive = ap.prepositive
} ;
SlashV2a v2 = {
s = \\st,t,p => v2.s ! st ! t ! p ;
a_stem = v2.a_stem ;
i_stem = v2.i_stem ;
ba = v2.ba ;
s = \\sp,st,t,p => v2.s ! st ! t ! p ;
a_stem = \\sp => v2.a_stem ;
i_stem = \\sp => v2.i_stem ;
ba = \\sp => v2.ba ;
prep = v2.prep ;
obj = \\st => [] ;
prepositive = \\st => [] ;
te = v2.te ;
v2vType = False ;
compar = NoCompar
te = \\sp => v2.te ;
v2vType = False
} ;
Slash2V3 v3 np = case v3.give of {
True => {
s = \\st,t,p => case np.Pron1Sg of {
True => (mkVerb "呉れ" "呉れ" "呉れる" "呉れた").s ! st ! t ! p ; -- "kureru"
False => v3.s ! st ! t ! p
} ;
a_stem = case np.Pron1Sg of {
True => "呉れ" ;
False => "上げ"
} ;
i_stem = case np.Pron1Sg of {
True => "呉れ" ;
False => "上げ"
} ;
ba = case np.Pron1Sg of {
True => "呉れれば" ;
False => "上げれば"
} ;
Slash2V3 v3 np = {
s = \\sp,st,t,p => v3.s ! np.meaning ! st ! t ! p ;
a_stem = \\sp => v3.a_stem ! np.meaning ;
i_stem = \\sp => v3.i_stem ! np.meaning ;
ba = \\sp,p => v3.ba ! np.meaning ! p ;
prep = v3.prep2 ;
obj = \\st => np.s ! st ++ v3.prep1 ;
prepositive = np.prepositive ;
te = case np.Pron1Sg of {
True => "呉れて" ;
False => "上げて"
} ;
v2vType = False ;
compar = NoCompar
} ;
False => {
s = \\st,t,p => v3.s ! st ! t ! p ;
a_stem = v3.a_stem ;
i_stem = v3.i_stem ;
ba = v3.ba ;
prep = v3.prep2 ;
obj = \\st => np.s ! st ++ v3.prep1 ;
prepositive = np.prepositive ;
te = v3.te ;
v2vType = False ;
compar = NoCompar
}
te = \\sp,p => v3.te ! np.meaning ! p ;
v2vType = False
} ;
Slash3V3 = Slash2V3 ;
SlashV2V v2v vp = {
s = \\st,t,p => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように"
++ 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 ;
ba = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ;
s = \\sp,st,t,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように"
++ v2v.s ! st ! t ! p ;
a_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJap.Pos ++
"ように" ++ v2v.a_stem ;
i_stem = \\sp => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJap.Pos ++
"ように" ++ v2v.i_stem ;
ba = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++
v2v.ba ! p ;
prep = "に" ;
obj = \\st => vp.obj ! st ++ vp.prep ;
te = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ;
te = \\sp,p => vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++
v2v.te ! p ;
prepositive = vp.prepositive ;
v2vType = True ;
compar = NoCompar
v2vType = True
} ;
SlashV2S v2s s = {
s = v2s.s ;
a_stem = v2s.a_stem ;
i_stem = v2s.i_stem ;
ba = v2s.ba ;
s = \\sp,st,t,p => v2s.s ! st ! t ! p ;
a_stem = \\sp => v2s.a_stem ;
i_stem = \\sp => v2s.i_stem ;
ba = \\sp => v2s.ba ;
prep = "に" ;
obj = \\st => s.s ! Ga ! Plain ++ "と" ;
obj = \\st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "と" ;
prepositive = \\st => [] ;
te = v2s.te ;
v2vType = False ;
compar = NoCompar
te = \\sp => v2s.te ;
v2vType = False
} ;
SlashV2Q v2q qs = {
s = v2q.s ;
a_stem = v2q.a_stem ;
i_stem = v2q.i_stem ;
ba = v2q.ba ;
s = \\sp,st,t,p => v2q.s ! st ! t ! p ;
a_stem = \\sp => v2q.a_stem ;
i_stem = \\sp => v2q.i_stem ;
ba = \\sp => v2q.ba ;
prep = "に" ;
obj = \\st => qs.s ! Ga ! Plain ++ "ことを" ;
obj = \\st => qs.s_plain_pred ! Ga ! st ;
prepositive = \\st => [] ;
te = v2q.te ;
v2vType = True ;
compar = NoCompar
te = \\sp => v2q.te ;
v2vType = True
} ;
SlashV2A v2a ap = {
s = v2a.s ;
a_stem = v2a.a_stem ;
i_stem = v2a.i_stem ;
ba = v2a.ba ;
s = \\sp,st,t,p => v2a.s ! st ! t ! p ;
a_stem = \\sp => v2a.a_stem ;
i_stem = \\sp => v2a.i_stem ;
ba = \\sp => v2a.ba ;
prep = "を" ;
obj = ap.adv ;
prepositive = ap.prepositive ;
te = v2a.te ;
v2vType = True ;
compar = NoCompar
te = \\sp => v2a.te ;
v2vType = True
} ;
ComplSlash vpslash np = {
verb = \\a,st,t,p => case np.changePolar of {
True => vpslash.s ! st ! t ! Neg ;
False => vpslash.s ! st ! t ! p
verb = \\sp,a,st,t,p => case np.changePolar of {
True => vpslash.s ! sp ! st ! t ! Neg ;
False => vpslash.s ! sp ! st ! t ! p
} ;
a_stem = \\a,st => vpslash.a_stem ;
i_stem = \\a,st => vpslash.i_stem ;
ba = \\a,st => vpslash.ba ;
a_stem = \\sp,a,st => vpslash.a_stem ! sp ;
i_stem = \\sp,a,st => vpslash.i_stem ! sp ;
ba = \\sp,a,st,p => vpslash.ba ! sp ! p ;
prep = case np.needPart of {
True => case vpslash.v2vType of {
True => [] ;
@@ -218,85 +193,104 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
True => np.s ! st ++ vpslash.prep ++ vpslash.obj ! st ;
False => vpslash.obj ! st ++ np.s ! st
} ;
te = \\a,st => vpslash.te ;
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ;
compar = vpslash.compar
te = \\sp,a,st,p => vpslash.te ! sp ! p ;
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st
} ;
SlashVV v vpslash = {
s = \\st,t,p => case v.sense of {
Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.s ! st ! t ! p ;
Oblig => vpslash.a_stem ++ "なければ" ++ v.s ! st ! t ! p ;
Wish => vpslash.i_stem ++ "たがって" ++ v.s ! st ! t ! p
SlashVV v vpslash = case v.sense of {
Abil => {
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++
"ことが" ++ v.s ! sp ! st ! t ! p ;
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.te ! sp ! p ;
a_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.a_stem ! sp ;
i_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.i_stem ! sp ;
ba = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++
v.ba ! sp ! p ;
prep = vpslash.prep ;
obj = vpslash.obj ;
prepositive = vpslash.prepositive ;
v2vType = False
} ;
te = case v.sense of {
Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.te ;
Oblig => vpslash.a_stem ++ "なければ" ++ v.te ;
Wish => vpslash.i_stem ++ "たがって" ++ v.te
Oblig => {
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
} ;
te = \\sp => table {
Pos => vpslash.a_stem ! sp ++ "なければ" ++ v.te ! sp ! Pos ;
Neg => vpslash.te ! sp ! Pos ++ "は" ++ v.te ! sp ! Pos
} ;
a_stem = \\sp => vpslash.a_stem ! sp ++ "なければ" ++ v.a_stem ! sp ;
i_stem = \\sp => vpslash.a_stem ! sp ++ "なければ" ++ v.i_stem ! sp ;
ba = \\sp => table {
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
} ;
a_stem = [] ;
i_stem = [] ;
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 ;
prepositive = vpslash.prepositive ;
v2vType = False ;
compar = vpslash.compar
} ;
Wish => {
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 = \\st,t,p => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように"
++ 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 ;
ba = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ;
s = \\sp,st,t,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ように"
++ v2v.s ! st ! t ! p ;
a_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.a_stem ;
i_stem = \\sp => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.i_stem ;
ba = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ! p ;
prep = vpslash.prep ;
obj = \\st => np.s ! st ++ "に" ;
te = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ;
prepositive = vpslash.prepositive ;
v2vType = True ;
compar = vpslash.compar
obj = \\st => np.s ! st ++ "に" ++ vpslash.obj ! st ;
te = \\sp,p => vpslash.s ! sp ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ! p ;
prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ;
v2vType = True
} ;
ReflVP vpslash = {
verb = \\a,st,t,p => vpslash.s ! st ! t ! p ;
a_stem = \\a,st => vpslash.a_stem ;
i_stem = \\a,st => vpslash.i_stem ;
ba = \\a,st => vpslash.ba ;
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 ;
ba = \\sp,a,st,p => vpslash.ba ! sp ! p ;
prep = vpslash.prep ;
obj = \\st => "自分" ; -- "jibun"
te = \\a,st => vpslash.te ;
prepositive = vpslash.prepositive ;
compar = vpslash.compar
obj = \\st => vpslash.obj ! st ++ "自分" ; -- "jibun"
te = \\sp,a,st,p => vpslash.te ! sp ! p ;
prepositive = vpslash.prepositive
} ;
UseComp comp = {
verb = comp.verb ;
te = comp.te ;
a_stem = comp.a_stem ;
i_stem = comp.i_stem ;
ba = comp.ba ;
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 ;
compar = comp.compar
prepositive = comp.prepositive
} ;
PassV2 v2 = {
verb = \\a,st,t,p => v2.pass ! st ! t ! p ;
te = \\a,st => v2.pass_te ;
a_stem = \\a,st => v2.pass_a_stem ;
i_stem = \\a,st => v2.pass_i_stem ;
ba = \\a,st => v2.pass_ba ;
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 ;
ba = \\sp,a,st => v2.pass_ba ;
prep = [] ;
obj = \\st => [] ;
prepositive = \\st => [] ;
compar = NoCompar
prepositive = \\st => []
} ;
AdvVP vp adv = {
@@ -311,10 +305,9 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
False => adv.s ! st ++ vp.obj ! st
} ;
prepositive = \\st => case adv.prepositive of {
True => adv.s ! st ;
False => []
} ;
compar = adv.compar
True => vp.prepositive ! st ++ adv.s ! st ;
False => vp.prepositive ! st
}
} ;
AdVVP adv vp = {
@@ -325,8 +318,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
ba = vp.ba ;
prep = vp.prep ;
obj = \\st => adv.s ++ vp.obj ! st ;
prepositive = vp.prepositive ;
compar = NoCompar
prepositive = vp.prepositive
} ;
AdvVPSlash vpslash adv = {
@@ -341,11 +333,10 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
False => adv.s ! st ++ vpslash.obj ! st
} ;
prepositive = \\st => case adv.prepositive of {
True => adv.s ! st ;
False => []
True => vpslash.prepositive ! st ++ adv.s ! st ;
False => vpslash.prepositive ! st
} ;
v2vType = False ;
compar = adv.compar
v2vType = False
} ;
AdVVPSlash adv vpslash = {
@@ -357,38 +348,35 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
prep = vpslash.prep ;
obj = \\st => adv.s ++ vpslash.obj ! st ;
prepositive = vpslash.prepositive ;
v2vType = False ;
compar = vpslash.compar
v2vType = False
} ;
CompAP ap = {
verb = \\a,st,t,p => ap.pred ! st ! t ! p ;
te = \\a,st => ap.te ! st ;
a_stem = \\a,st => ap.adv ! st ;
i_stem = \\a,st => ap.adv ! st ; -- for wishes - not correct!
ba = \\a,st => ap.ba ! st ;
te = \\a => ap.te ;
a_stem = \\a,st => ap.attr ! st ++ "では" ;
i_stem = \\a,st => ap.adv ! st ++ "なり" ;
ba = \\a => ap.ba ;
obj = \\st => [] ;
prepositive = ap.prepositive ;
compar = ap.compar
prepositive = ap.prepositive
} ;
CompNP np = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "" ; -- for wishes - not correct!
te = \\a,st => mkCopula.te ;
ba = \\a,st => mkCopula.ba ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "になり" ; -- "become" - for wishes
obj = \\st => np.s ! st ;
prepositive = np.prepositive ;
compar = NoCompar
prepositive = np.prepositive
} ;
CompAdv adv = {
verb = mkExistV.verb ;
te = mkExistV.te ;
ba = mkExistV.ba ;
a_stem = mkExistV.a_stem ;
i_stem = mkExistV.i_stem ;
verb = mkExistV.verb ! SomeoneElse ;
te = mkExistV.te ! SomeoneElse ;
ba = mkExistV.ba ! SomeoneElse ;
a_stem = mkExistV.a_stem ! SomeoneElse ;
i_stem = mkExistV.i_stem ! SomeoneElse ;
obj = \\st => case adv.prepositive of {
True => [] ;
False => adv.s ! st
@@ -396,32 +384,28 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
prepositive = \\st => case adv.prepositive of {
True => adv.s ! st ;
False => []
} ;
compar = NoCompar
}
} ;
CompCN cn = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "" ; -- for wishes - not correct!
obj = \\st => cn.s ! (Sg|Pl) ! st ;
prepositive = cn.prepositive ;
compar = NoCompar
verb = \\a => mkCopula.s ;
te = \\a,st => mkCopula.te ;
ba = \\a,st => mkCopula.ba ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "になり" ; -- "become" - for wishes
obj = \\st => cn.s ! Sg ! st ;
prepositive = cn.prepositive
} ;
UseCopula = {
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
te = \\a,st => "だって" ;
ba = \\a,st => "であれば" ;
a_stem = \\a,st => "で" ;
i_stem = \\a,st => "" ; -- for wishes - not correct!
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 => [] ;
prep = [] ;
compar = NoCompar
prep = []
} ;
}