mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-14 23:39:32 -06:00
Japanese RGL by Liza Zimina - almost complete!
This commit is contained in:
134
lib/src/japanese/AdjectiveJap.gf
Normal file
134
lib/src/japanese/AdjectiveJap.gf
Normal file
@@ -0,0 +1,134 @@
|
||||
concrete AdjectiveJap of Adjective = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
PositA adj = {
|
||||
pred = adj.pred ;
|
||||
attr = \\st => adj.attr ;
|
||||
te = \\st => adj.te ;
|
||||
tara = \\st => adj.tara ;
|
||||
adv = \\st => adj.adv ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
ComparA adj np = {
|
||||
pred = \\st,t,p => np.s ! st ++ "より" ++ adj.pred ! st ! t ! p ;
|
||||
attr = \\st => np.s ! st ++ "より" ++ adj.attr ;
|
||||
te = \\st => np.s ! st ++ "より" ++ adj.te ;
|
||||
tara = \\st => np.s ! st ++ "より" ++ adj.tara ;
|
||||
adv = \\st => np.s ! st ++ "より" ++ adj.adv ;
|
||||
prepositive = np.prepositive ;
|
||||
compar = More
|
||||
} ;
|
||||
|
||||
ComplA2 a2 np = {
|
||||
pred = \\st,t,p => np.s ! st ++ a2.prep ++ a2.pred ! st ! t ! p ;
|
||||
attr = \\st => np.s ! st ++ a2.prep ++ a2.attr ;
|
||||
te = \\st => np.s ! st ++ a2.prep ++ a2.te ;
|
||||
tara = \\st => np.s ! st ++ a2.prep ++ a2.tara ;
|
||||
prepositive = np.prepositive ;
|
||||
adv = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
ReflA2 a2 = {
|
||||
pred = \\st,t,p => "自分" ++ a2.prep ++ a2.pred ! st ! t ! p ; -- "jibun"
|
||||
attr = \\st => "自分" ++ a2.prep ++ a2.attr ;
|
||||
te = \\st => "自分" ++ a2.prep ++ a2.te ;
|
||||
tara = \\st => "自分" ++ a2.prep ++ a2.tara ;
|
||||
adv = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
UseA2 a2 = {
|
||||
pred = a2.pred ;
|
||||
attr = \\st => a2.attr ;
|
||||
te = \\st => a2.te ;
|
||||
tara = \\st => a2.tara ;
|
||||
adv = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
UseComparA adj = {
|
||||
pred = \\st,t,p => "もっと" ++ adj.pred ! st ! t ! p ;
|
||||
attr = \\st => "もっと" ++ adj.attr ;
|
||||
te = \\st => "もっと" ++ adj.te ;
|
||||
tara = \\st => "もっと" ++ adj.tara ;
|
||||
adv = \\st => "もっと" ++ adj.adv ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar -- "motto" does not change the main NP's particle
|
||||
} ;
|
||||
|
||||
CAdvAP cadv ap np = {
|
||||
pred = \\st,t,p => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! p ;
|
||||
attr = \\st => np.s ! st ++ cadv.s ++ ap.attr ! st ;
|
||||
te = \\st => np.s ! st ++ cadv.s ++ ap.te ! st ;
|
||||
tara = \\st => np.s ! st ++ cadv.s ++ ap.tara ! st ;
|
||||
adv = \\st => np.s ! st ++ cadv.s ++ ap.adv ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
compar = cadv.compar
|
||||
} ;
|
||||
|
||||
AdjOrd ord = {
|
||||
pred = ord.pred ;
|
||||
attr = \\st => ord.attr ;
|
||||
te = \\st => ord.te ;
|
||||
tara = \\st => ord.tara ;
|
||||
adv = \\st => ord.adv ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
pred = \\st,t,p => sc.s ! Ga ! st ++ "ことを" ++ ap.pred ! st ! t ! p ;
|
||||
attr = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.attr ! st ;
|
||||
te = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.te ! st ;
|
||||
tara = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.tara ! st ;
|
||||
adv = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.adv ! st ;
|
||||
prepositive = ap.prepositive ;
|
||||
compar = ap.compar
|
||||
} ;
|
||||
|
||||
AdAP ada ap = {
|
||||
pred = \\st,t,p => ada.s ++ ap.pred ! st ! t ! p ;
|
||||
attr = \\st => ada.s ++ ap.attr ! st ;
|
||||
te = \\st => ada.s ++ ap.te ! st ;
|
||||
tara = \\st => ada.s ++ ap.tara ! st ;
|
||||
adv = \\st => ada.s ++ ap.adv ! st ;
|
||||
prepositive = ap.prepositive ;
|
||||
compar = ap.compar
|
||||
} ;
|
||||
|
||||
AdvAP ap adv = {
|
||||
pred = \\st,t,p => case adv.prepositive of {
|
||||
True => ap.pred ! st ! t ! p ;
|
||||
False => adv.s ! st ++ ap.pred ! st ! t ! p
|
||||
} ;
|
||||
attr = \\st => case adv.prepositive of {
|
||||
True => ap.attr ! st ;
|
||||
False => adv.s ! st ++ ap.attr ! st
|
||||
} ;
|
||||
te = \\st => case adv.prepositive of {
|
||||
True => ap.te ! st ;
|
||||
False => adv.s ! st ++ ap.te ! st
|
||||
} ;
|
||||
tara = \\st => case adv.prepositive of {
|
||||
True => ap.tara ! st ;
|
||||
False => adv.s ! st ++ ap.tara ! st
|
||||
} ;
|
||||
adv = \\st => case adv.prepositive of {
|
||||
True => ap.adv ! st ;
|
||||
False => adv.s ! st ++ ap.adv ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
compar = ap.compar
|
||||
} ;
|
||||
}
|
||||
40
lib/src/japanese/AdverbJap.gf
Normal file
40
lib/src/japanese/AdverbJap.gf
Normal file
@@ -0,0 +1,40 @@
|
||||
concrete AdverbJap of Adverb = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
PositAdvAdj a = {s = \\st => a.adv ; prepositive = False ; compar = NoCompar} ;
|
||||
|
||||
PrepNP prep np = {s = \\st => np.s ! st ++ prep.s ;
|
||||
prepositive = False ; compar = NoCompar} ;
|
||||
|
||||
ComparAdvAdj cadv a np = {s = \\st => np.s ! st ++ cadv.s ++ a.adv ;
|
||||
prepositive = False ; compar = cadv.compar} ;
|
||||
|
||||
ComparAdvAdjS cadv a s = {s = \\st => s.s ! Ga ! Plain ++ "こと" ++ cadv.s ++ a.adv ;
|
||||
prepositive = False ; compar = cadv.compar} ;
|
||||
|
||||
AdAdv ada adv = {s = \\st => ada.s ++ adv.s ! st ;
|
||||
prepositive = adv.prepositive ; compar = NoCompar} ;
|
||||
|
||||
PositAdAAdj a = {s = a.adv} ;
|
||||
|
||||
SubjS subj s = {
|
||||
s = \\st => case subj.when of {
|
||||
True => s.tara ! (Wa | Ga) ! st ;
|
||||
False => s.s ! (Wa | Ga) ! st ++ subj.s
|
||||
} ;
|
||||
prepositive = True ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
AdnCAdv cadv = {
|
||||
s = case cadv.compar of {
|
||||
More => "以上" ; -- "ijou"
|
||||
Less => "以下" ; -- "ika" ;
|
||||
NoCompar => "もの"
|
||||
} ;
|
||||
postposition = True
|
||||
} ;
|
||||
}
|
||||
108
lib/src/japanese/CatJap.gf
Normal file
108
lib/src/japanese/CatJap.gf
Normal file
@@ -0,0 +1,108 @@
|
||||
concrete CatJap of Cat = CommonJap ** open ResJap, Prelude in {
|
||||
|
||||
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
|
||||
|
||||
lincat
|
||||
|
||||
S = {s : Particle => Style => Str ;
|
||||
te : Particle => Style => Str ;
|
||||
tara : Particle => Style => Str ;
|
||||
subj : Particle => Style => Str ;
|
||||
pred : Style => Str ;
|
||||
} ;
|
||||
QS = {s : Particle => Style => Str} ;
|
||||
RS = {s : Animateness => Style => Str ;
|
||||
te : Animateness => Style => Str ;
|
||||
subj : Particle => Style => Str ;
|
||||
pred : Animateness => Style => Str ;
|
||||
pred_te : Animateness => Style => Str ;
|
||||
pred_tara : Animateness => Style => Str ;
|
||||
missingSubj : Bool} ;
|
||||
Cl = {s : Particle => Style => TTense => Polarity => Str ;
|
||||
te : Particle => Style => Str ;
|
||||
tara : Particle => Style => Str ;
|
||||
subj : Particle => Style => Str ;
|
||||
pred : Style => TTense => Polarity => Str ;
|
||||
pred_te : Style => Str ;
|
||||
pred_tara : Style => Str ;
|
||||
changePolar : Bool} ;
|
||||
ClSlash = {s : Style => TTense => Polarity => Str ;
|
||||
te : Style => Str ;
|
||||
subj : Particle => Style => Str ;
|
||||
pred : Style => TTense => Polarity => Str ;
|
||||
pred_te : Style => Str ;
|
||||
pred_tara : Style => Str ;
|
||||
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} ;
|
||||
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 : Animateness => Style => Str ;
|
||||
pred_tara : Animateness => Style => Str ;
|
||||
changePolar : Bool ;
|
||||
missingSubj : Bool} ;
|
||||
RP = {s : Style => Str ; prep : Str} ;
|
||||
VP = ResJap.VP ; -- {verb : Animateness => Style => TTense => Polarity => Str ;
|
||||
-- te : Animateness => Style => Str; a_stem : Animateness => Style => Str ;
|
||||
-- i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ;
|
||||
-- prep : Str ; obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ;
|
||||
Comp = {verb : Animateness => Style => TTense => Polarity => Str ;
|
||||
te : Animateness => Style => Str ; a_stem : Animateness => Style => Str ;
|
||||
i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ;
|
||||
obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ;
|
||||
VPSlash = Verb ** {prep : Str ; obj : Style => Str ; prepositive : Style => Str ;
|
||||
v2vType : Bool ; compar : ComparSense} ;
|
||||
AP = {pred : Style => TTense => Polarity => Str ; attr : Style => Str ; te : Style => Str ;
|
||||
tara : Style => Str ; adv : Style => Str ; prepositive : Style => Str ;
|
||||
compar : ComparSense} ;
|
||||
NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ;
|
||||
-- changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ;
|
||||
CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ;
|
||||
Pron = Pronoun ; -- {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
|
||||
Det = Determiner ; -- {quant : Style => Str ; num : Str ; postpositive : Str ;
|
||||
-- n : Number ; inclCard : Bool} ;
|
||||
Predet = {s : Str} ;
|
||||
Quant = {s : Style => Str} ;
|
||||
Num = ResJap.Num ; -- {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ;
|
||||
Card = {s : Str ; postpositive : Str ; n : Number} ;
|
||||
Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ;
|
||||
-- attr : Str; te : Str ; tara : Str ; adv : Str} ;
|
||||
Numeral = {s : Str ; n : Number} ;
|
||||
Digits = {s : Str ; n : Number} ;
|
||||
Conj = Conjunction ;
|
||||
Subj = {s : Str ; when : Bool} ;
|
||||
Prep = Preposition ; -- {s : Str ; relPrep : Str} ;
|
||||
V = Verb ; -- {s : Style => TTense => Polarity => Str ; te : Str ;
|
||||
-- a_stem : Str ; i_stem : Str ; tara : Str}
|
||||
V2 = Verb ** {pass: Style => TTense => Polarity => Str ; pass_te : Str ; pass_a_stem : Str ;
|
||||
pass_i_stem : Str ; pass_tara : Str ; prep : Str} ;
|
||||
V3 = Verb ** {prep1 : Str ; prep2 : Str ; give : Bool} ; -- "give" is a special case
|
||||
VV = Verb ** {sense : ModSense} ;
|
||||
VS = Verb ** {prep : Str} ;
|
||||
VQ = Verb ** {prep : Str} ;
|
||||
VA = Verb ;
|
||||
V2V = Verb ;
|
||||
V2S = Verb ;
|
||||
V2Q = Verb ;
|
||||
V2A = Verb ;
|
||||
A = Adj ; -- {pred : Style => TTense => Polarity => Str ;
|
||||
-- attr : Str; te : Str ; tara : Str ; adv : Str} ;
|
||||
A2 = Adj2 ; -- Adj ** {prep : Str} ;
|
||||
N = Noun ; -- {s : Number => Style => Str ; anim : Animateness ;
|
||||
-- counter : Str ; counterReplace : Bool} ;
|
||||
N2 = Noun ** {prep : Str; object : Style => Str} ;
|
||||
N3 = Noun ** {prep1 : Str; prep2 : Str} ;
|
||||
PN = PropNoun ; -- {s : Style => Str} ;
|
||||
|
||||
}
|
||||
28
lib/src/japanese/CommonJap.gf
Normal file
28
lib/src/japanese/CommonJap.gf
Normal file
@@ -0,0 +1,28 @@
|
||||
concrete CommonJap of Common = open ResJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lincat
|
||||
|
||||
Text, Phr, PConj, Interj, AdV, AdA = {s : Str} ;
|
||||
|
||||
Utt = {s : Style => Str} ;
|
||||
|
||||
Voc = {s : Style => Str ; please : Bool} ;
|
||||
|
||||
SC = {s : Particle => Style => Str ; isVP : Bool} ;
|
||||
|
||||
Adv = Adverb ; -- {s : Style => Str ; prepositive : Bool ; compar : ComparSense} ;
|
||||
|
||||
AdN = {s : Str ; postposition : Bool} ;
|
||||
|
||||
IAdv = {s : Style => Str ; particle : Str} ;
|
||||
|
||||
CAdv = {s : Str ; compar : ComparSense} ;
|
||||
|
||||
Temp = {s : Str ; t : TTense ; a : Anteriority} ;
|
||||
Tense = {s : Str ; t : TTense} ;
|
||||
Pol = {s : Str ; b : Polarity} ;
|
||||
Ant = {s : Str ; a : Anteriority} ;
|
||||
|
||||
}
|
||||
17
lib/src/japanese/GrammarJap.gf
Normal file
17
lib/src/japanese/GrammarJap.gf
Normal file
@@ -0,0 +1,17 @@
|
||||
concrete GrammarJap of Grammar =
|
||||
NounJap,
|
||||
VerbJap,
|
||||
AdjectiveJap,
|
||||
AdverbJap,
|
||||
NumeralJap,
|
||||
SentenceJap,
|
||||
QuestionJap,
|
||||
RelativeJap,
|
||||
-- ConjunctionJap,
|
||||
PhraseJap,
|
||||
TextJap,
|
||||
StructuralJap,
|
||||
IdiomJap,
|
||||
TenseJap --,
|
||||
-- TransferJap
|
||||
;
|
||||
225
lib/src/japanese/IdiomJap.gf
Normal file
225
lib/src/japanese/IdiomJap.gf
Normal file
@@ -0,0 +1,225 @@
|
||||
concrete IdiomJap of Idiom = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
changePolar = False
|
||||
} ;
|
||||
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 ;
|
||||
tara = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
subj = \\part,st => vp.prepositive ! st ++ "これより" ;
|
||||
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ;
|
||||
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ;
|
||||
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
changePolar = False
|
||||
} ;
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
changePolar = False
|
||||
}
|
||||
} ;
|
||||
|
||||
GenericCl vp = case vp.compar of {
|
||||
More => {
|
||||
s = table {
|
||||
Wa => \\st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ -- "dareka"
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Anim ! st ;
|
||||
Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! 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 ;
|
||||
tara = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Anim ! st ;
|
||||
subj = \\part,st => vp.prepositive ! st ++ "誰かより" ;
|
||||
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
|
||||
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ;
|
||||
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ;
|
||||
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 ;
|
||||
tara = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Anim ! st ;
|
||||
subj = \\part,st => vp.prepositive ! st ++ "誰か" ;
|
||||
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ;
|
||||
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ;
|
||||
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ;
|
||||
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 ++ "だって" ;
|
||||
tara = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
|
||||
rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "だったら" ;
|
||||
subj = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++
|
||||
rs.pred ! np.anim ! Plain ++ "のは" ;
|
||||
pred = \\st,t,p => np.s ! st ++ mkCopula.s ! st ! t ! p ;
|
||||
pred_te = \\st => np.s ! st ++ "だって" ;
|
||||
pred_tara = \\st => np.s ! st ++ "だったら" ;
|
||||
changePolar = np.changePolar
|
||||
} ;
|
||||
|
||||
CleftAdv adv s = {
|
||||
s = \\part,st,t,p => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
|
||||
mkCopula.s ! st ! t ! p ;
|
||||
te = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ "だって" ;
|
||||
tara = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++
|
||||
"だったら" ;
|
||||
subj = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ;
|
||||
pred = \\st,t,p => adv.s ! st ++ mkCopula.s ! st ! t ! p ;
|
||||
pred_te = \\st => adv.s ! st ++ "だって" ;
|
||||
pred_tara = \\st => adv.s ! st ++ "だったら" ;
|
||||
changePolar = False
|
||||
} ;
|
||||
|
||||
ExistNP np = case np.needPart of {
|
||||
True => {
|
||||
s = table {
|
||||
Wa => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "は" ++
|
||||
mkExistV.verb ! np.anim ! st ! t ! p ;
|
||||
Ga => \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++
|
||||
mkExistV.verb ! 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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.tara ! np.anim ! st ;
|
||||
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.tara ! np.anim ! st
|
||||
} ;
|
||||
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_tara = \\st => mkExistV.tara ! np.anim ! st ;
|
||||
changePolar = np.changePolar
|
||||
} ;
|
||||
False => {
|
||||
s = \\part,st,t,p => np.prepositive ! st ++ np.s ! st ++
|
||||
mkExistV.verb ! np.anim ! st ! t ! p ;
|
||||
te = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.te ! np.anim ! st ;
|
||||
tara = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.tara ! np.anim ! st ;
|
||||
subj = \\part,st => np.prepositive ! st ++ np.s ! st ;
|
||||
pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ;
|
||||
pred_te = \\st => mkExistV.te ! np.anim ! st ;
|
||||
pred_tara = \\st => mkExistV.tara ! np.anim ! st ;
|
||||
changePolar = np.changePolar
|
||||
}
|
||||
} ;
|
||||
|
||||
ExistIP ip = {
|
||||
s = \\part,st,t,p => ip.s ! st ++ "が" ++ mkExistV.verb ! ip.anim ! st ! 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 ++ "い" ;
|
||||
tara = \\a,st => vp.te ! a ! st ++ "いたら" ;
|
||||
prep = vp.prep ;
|
||||
obj = vp.obj ;
|
||||
prepositive = vp.prepositive ;
|
||||
compar = vp.compar
|
||||
} ;
|
||||
|
||||
ImpPl1 vp = {s = \\st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
|
||||
vp.i_stem ! Anim ! st ++ "ましょう"} ;
|
||||
|
||||
ImpP3 np vp = {s = \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "に" ++
|
||||
vp.obj ! st ++ vp.prep ++ vp.a_stem ! Anim ! st ++ "せて"} ;
|
||||
}
|
||||
7
lib/src/japanese/LangJap.gf
Normal file
7
lib/src/japanese/LangJap.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
concrete LangJap of Lang =
|
||||
GrammarJap,
|
||||
LexiconJap
|
||||
;
|
||||
|
||||
355
lib/src/japanese/LexiconJap.gf
Normal file
355
lib/src/japanese/LexiconJap.gf
Normal file
@@ -0,0 +1,355 @@
|
||||
concrete LexiconJap of Lexicon = GrammarJap ** open ParadigmsJap, ResJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
add_V3 = mkV3 "加え" "加え" "加える" "加えた" "に" "を" False ; -- "kuwaeru" "ni" "o"
|
||||
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"
|
||||
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"
|
||||
back_N = mkN "背" Inanim ; -- "se"
|
||||
bad_A = mkA "悪い" ; -- "warui"
|
||||
bank_N = mkN "銀行" Inanim ; -- "ginkou"
|
||||
bark_N = mkN "木皮" Inanim ; -- "kohada" Inanim ;
|
||||
beautiful_A = mkA "美しい" ; -- "utsukushii"
|
||||
become_VA = mkV "なら" "なり" "なる" "なった" ; -- "naru"
|
||||
beer_N = mkN "ビール" Inanim "杯" False ; -- "biiru" "hai"
|
||||
beg_V2V = mkV "請い願わ" "請い願い" "請い願う" "請い願った" ; -- "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"
|
||||
black_A = mkA "黒い" ; -- "kuroi" ;
|
||||
blood_N = mkN "血液" Inanim ; -- "ketsueki"
|
||||
blow_V = mkV "吹か" "吹き" "吹く" "吹いた" ; -- "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"
|
||||
bread_N = mkN "パン" Inanim "斤" False ; -- "pan" "kin"
|
||||
break_V2 = mkV2 "破ら" "破り" "破る" "破った" "を" ; -- "yaburu" "o"
|
||||
breast_N = mkN "胸" Inanim ; -- "mune"
|
||||
breathe_V = mkV "息し" "息し" "息する" "息した" ; -- "ikisuru"
|
||||
broad_A = mkA "広い" ; -- "hiroi"
|
||||
brother_N2 = mkN2 "男の兄弟" "の" Anim "人" False ; -- ("otoko" ++ "no" ++ "kyodai") "no" "nin"
|
||||
brown_A = mkA "ブラウンの" ; -- "buraunno"
|
||||
burn_V = mkV "焼けら" "焼けり" "焼ける" "焼けた" ; -- "yakeru"
|
||||
butter_N = mkN "バター" Inanim ; -- "bataa"
|
||||
buy_V2 = mkV2 "買わ" "買い" "買う" "買った" "を" ; -- "kau"
|
||||
camera_N = mkN "カメラ" Inanim ; -- "kamera"
|
||||
cap_N = mkN "キャップ" Inanim ; -- "kyappu"
|
||||
car_N = mkN "車" Inanim "車" True ; -- "kuruma" "sha"
|
||||
carpet_N = mkN "絨毯" Inanim ; -- "juutan"
|
||||
cat_N = mkN "猫" Anim "匹" False ; -- "neko" "hiki"
|
||||
ceiling_N = mkN "天井" Inanim ; -- "tenjou"
|
||||
chair_N = mkN "椅子" Inanim "脚" False ; -- "isu" "kyaku"
|
||||
cheese_N = mkN "チーズ" Inanim ; -- "chiizu"
|
||||
child_N = mkN "子" Anim "人" False ; -- "ko" "nin"
|
||||
church_N = mkN "教会" Inanim "軒" False ; -- "kyoukai" "ken"
|
||||
city_N = mkN "都市" Inanim ; -- "toshi"
|
||||
clean_A = mkA "奇麗な" ; -- "kireina" ;
|
||||
clever_A = mkA "賢い" ; -- "kashikoi" ;
|
||||
close_V2 = mkV2 "閉め" "閉め" "閉める" "閉めた" "を" ; -- "shimeru"
|
||||
cloud_N = mkN "雲" Inanim ; -- "kumo"
|
||||
coat_N = mkN "コート" Inanim ; -- "kouto"
|
||||
cold_A = mkA "寒い" ; -- "samui" ;
|
||||
come_V = mkV "来" "来" "来る" "来た" ; -- "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"
|
||||
cow_N = mkN "牛" Anim "頭" False ; -- "ushi" "tou"
|
||||
cut_V2 = mkV2 "切ら" "切り" "切る" "切った" "を" ; -- "kiru"
|
||||
day_N = mkN "日" Inanim "日" True ; -- "hi" "ka";
|
||||
die_V = mkV "死な" "死に" "死ぬ" "死んだ" ; -- "shinu"
|
||||
dig_V = mkV "掘ら" "掘り" "掘る" "掘った" ; -- "horu"
|
||||
dirty_A = mkA "汚い" ; -- "kitanai" ;
|
||||
distance_N3 = mkN3 "距離" "から" "まで" Inanim ; -- "kyori" "kara" "made"
|
||||
doctor_N = mkN "医者" Anim "人" False ; -- "isha" "nin"
|
||||
dog_N = mkN "犬" Anim "匹" False ; -- "inu" "hiki"
|
||||
door_N = mkN "ドア" Inanim ; -- "doa"
|
||||
do_V2 = mkV2 "し" "し" "する" "した" "を" ; -- "suru"
|
||||
drink_V2 = mkV2 "飲ま" "飲み" "飲む" "飲んだ" "を" ; -- "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"
|
||||
egg_N = mkN "卵" Inanim ; -- "tamago"
|
||||
empty_A = mkA "虚しい" ; -- "munashii" ;
|
||||
enemy_N = mkN "敵" Anim "人" False ; -- "teki" "nin"
|
||||
eye_N = mkN "目" Inanim ; -- "me"
|
||||
factory_N = mkN "工場" Inanim ; -- "koujou"
|
||||
fall_V = mkV "落ち" "落ち" "落ちる" "落ちた" ; -- "ochiru"
|
||||
far_Adv = mkAdv "遠くに" ; -- "tookuni"
|
||||
father_N2 = mkN2 "お父さん" "の" Anim "人" False ; -- "otousan" "no" Anim "nin" False ;
|
||||
fat_N = mkN "脂" Inanim ; -- "abura"
|
||||
fear_VS = mkV2 "恐れ" "恐れ" "恐れる" "恐れた" "ことを" ; -- "osoreru" ("koto" ++ "o") ;
|
||||
fear_V2 = mkV2 "恐れ" "恐れ" "恐れる" "恐れた" "を" ; -- "osoreru"
|
||||
feather_N = mkN "羽" Inanim ; -- "hane"
|
||||
fight_V2 = mkV2 "戦わ" "戦い" "戦う" "戦った" "と" ; -- "tatakau"
|
||||
find_V2 = mkV2 "拾わ" "拾い" "拾う" "拾った" "を" ; -- "hirou"
|
||||
fingernail_N = mkN "爪" Inanim ; -- "tsume"
|
||||
fire_N = mkN "火" Inanim ; -- "hi"
|
||||
fish_N = mkN "魚" Anim "匹" False ; -- "sakana" "hiki"
|
||||
float_V = mkV "浮か" "浮き" "浮く" "浮いた" ; -- "uku"
|
||||
floor_N = mkN "床" Inanim ; -- "yuka"
|
||||
flower_N = mkN "花" Inanim "輪" False ; -- "sakana" "rin"
|
||||
flow_V = mkV "流れ" "流れ" "流れる" "流れた" ; -- "nagareru"
|
||||
fly_V = mkV "飛ば" "飛び" "飛ぶ" "飛んだ" ; -- "tobu"
|
||||
fog_N = mkN "霧" Inanim ; -- "kiri"
|
||||
foot_N = mkN "足" Inanim ; -- "ashi"
|
||||
forest_N = mkN "森" Inanim ; -- "mori"
|
||||
forget_V2 = mkV2 "忘れ" "忘れ" "忘れる" "忘れた" "を" ; -- "wasureru"
|
||||
freeze_V = mkV "凍らさ" "凍らし" "凍らす" "凍らした" ; -- "kourasu"
|
||||
fridge_N = mkN "冷蔵庫" Inanim ; -- "reizouko"
|
||||
friend_N = mkN "友だち" Anim "人" False ; -- "tomodachi" "nin"
|
||||
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"
|
||||
glove_N = mkN "手袋" Inanim ; -- "tebukuro"
|
||||
gold_N = mkN "金" Inanim ; -- "kin"
|
||||
good_A = mkA "良い" ; -- "ii" ;
|
||||
go_V = mkV "行か" "行き" "行く" "行った" ; -- "iku"
|
||||
grammar_N = mkN "文法" Inanim ; -- "bumpou"
|
||||
grass_N = mkN "草" Inanim ; -- "kusa"
|
||||
green_A = mkA "緑の" ; -- "midorino" ;
|
||||
guts_N = mkN "腸" Inanim ; -- "harawata"
|
||||
hair_N = mkN "髪" Inanim ; -- "kami"
|
||||
hand_N = mkN "手" Inanim ; -- "te"
|
||||
harbour_N = mkN "港" Inanim ; -- "minato"
|
||||
hate_V2 = mkV2 "憎ま" "憎み" "憎む" "憎んだ" "を" ; -- "nikumu"
|
||||
hat_N = mkN "帽子" Inanim ; -- "boushi"
|
||||
head_N = mkN "頭" Inanim ; -- "atama"
|
||||
heart_N = mkN "心" Inanim ; -- "kokoro"
|
||||
hear_V2 = mkV2 "聞か" "聞き" "聞く" "聞いた" "を" ; -- "kiku"
|
||||
heavy_A = mkA "重い" ; -- "omoi" ;
|
||||
hill_N = mkN "丘" Inanim ; -- "oka"
|
||||
hit_V2 = mkV2 "打た" "打ち" "打つ" "打った" "を" ; -- "utsu"
|
||||
hold_V2 = mkV2 "持た" "持ち" "持つ" "持った" "を" ; -- "motsu"
|
||||
hope_VS = mkV2 "期待し" "期待し" "期待する" "期待した" "ことを" ; -- "kitaisuru" ("koto" ++ "o") ;
|
||||
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"
|
||||
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"
|
||||
knee_N = mkN "心" Inanim ; -- "kokoro"
|
||||
know_V2 = mkV2 "知ら" "知り" "知る" "知った" "を" ; -- "shiru" "o"
|
||||
know_VQ = mkV2 "知ら" "知り" "知る" "知った" "を" ; -- "shiru" "o"
|
||||
know_VS = mkV2 "知ら" "知り" "知る" "知った" "ことを" ; -- "shiru" ("koto" ++ "o") ;
|
||||
lake_N = mkN "湖" Inanim ; -- "mizuumi"
|
||||
lamp_N = mkN "電灯" Inanim ; -- "dentou"
|
||||
language_N = mkN "言語" Inanim "語" True ; -- "gengo" "go"
|
||||
laugh_V = mkV "笑わ" "笑い" "笑う" "笑った" ; -- "warau"
|
||||
leaf_N = mkN "葉" Inanim "葉" True ; -- "ha" "ha"
|
||||
learn_V2 = mkV2 "学ば" "学び" "学ぶ" "学んだ" "を" ; -- "manabu" "o"
|
||||
leather_N = mkN "皮革" Inanim ; -- "hikaku"
|
||||
leave_V2 = mkV2 "残さ" "残し" "残す" "残した" "を" ; -- "nokosu" "o"
|
||||
left_Ord = mkA "左の" ; -- "hidarino" ;
|
||||
leg_N = mkN "足" Inanim ; -- "ashi"
|
||||
lie_V = mkV "横になら" "横になり" "横になる" "横になった" ; -- "yokoninaru"
|
||||
like_V2 = mkV2 "好か" "好き" "好く" "好いた" "を" ; -- "suku" "o"
|
||||
listen_V2 = mkV2 "聞か" "聞き" "聞く" "聞いた" "を" ; -- "kiku"
|
||||
liver_N = mkN "肝臓" Inanim ; -- "kanzou"
|
||||
live_V = mkV "生き" "生き" "生きる" "生きた" ; -- "ikiru"
|
||||
long_A = mkA "長い" ; -- "nagai"
|
||||
lose_V2 = mkV2 "失わ" "失い" "失う" "失った" "を" ; -- "ushinau" "o"
|
||||
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" ;
|
||||
meat_N = mkN "肉" Inanim ; -- "niku"
|
||||
milk_N = mkN "ミルク" Inanim ; -- "miruku"
|
||||
moon_N = mkN "月" Inanim ; -- "tsuki"
|
||||
mother_N2 = mkN2 "お母さん" "の" Anim "人" False ; -- "okaasan" "no" "nin"
|
||||
mountain_N = mkN "山" Inanim "座" False ; -- "yama" "za"
|
||||
mouth_N = mkN "口" Inanim ; -- "kuchi"
|
||||
music_N = mkN "音楽" Inanim ; -- "ongaku"
|
||||
name_N = mkN "名前" "お名前" Inanim ; -- "namae" "onamae"
|
||||
narrow_A = mkA "狭い" ; -- "semai"
|
||||
near_A = mkA "近い" ; -- "chikai"
|
||||
neck_N = mkN "首" Inanim ; -- "kubi"
|
||||
new_A = mkA "新しい" ; -- "atarashii"
|
||||
newspaper_N = mkN "新聞" Inanim "部" False ; -- "shimbun" "bu"
|
||||
night_N = mkN "夜" Inanim "夜" True ; -- "yoru" "ya"
|
||||
nose_N = mkN "鼻" Inanim ; -- "hana"
|
||||
now_Adv = mkAdv "今" ; -- "ima"
|
||||
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"
|
||||
paper_N = mkN "紙" Inanim "葉" False ; -- "kami" "you"
|
||||
paris_PN = mkPN "パリ" ; -- "pari"
|
||||
peace_N = mkN "平和" Inanim ; -- "heiwa"
|
||||
pen_N = mkN "ペン" Inanim "本" False ; -- "pen" "hon"
|
||||
person_N = mkN "人" Anim "人" True ; -- "hito" "nin"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
ready_A = mkA "準備ができている" "準備ができて" ; -- "jumbigadekiteiru"
|
||||
reason_N = mkN "理由" Inanim ; -- "riyuu"
|
||||
red_A = mkA "赤い" ; -- "akai"
|
||||
religion_N = mkN "宗教" Inanim ; -- "shuukyou"
|
||||
restaurant_N = mkN "レストラン" Inanim ; -- "resutoran"
|
||||
right_Ord = mkA "右の" ; -- "migino"
|
||||
river_N = mkN "川" Inanim "本" False ; -- "kawa" "hon"
|
||||
road_N = mkN "道路" Inanim "本" False ; -- "douro" "hon"
|
||||
rock_N = mkN "岩" Inanim ; -- "iwa"
|
||||
roof_N = mkN "屋根" Inanim ; -- "yane"
|
||||
root_N = mkN "根" Inanim ; -- "ne"
|
||||
rope_N = mkN "縄" Inanim "本" False ; -- "nawa"
|
||||
rotten_A = mkA "腐っている" "腐った" ; -- "kusatteiru"
|
||||
round_A = mkA "丸い" ; -- "marui"
|
||||
rubber_N = mkN "ゴム" Inanim ; -- "gomu" - material
|
||||
rub_V2 = mkV2 "摩ら" "摩り" "摩る" "摩った" "を" ; -- "suru" "o"
|
||||
rule_N = mkN "定め" Inanim "則" True ; -- "sadame" "soku"
|
||||
run_V = mkV "走ら" "走り" "走る" "走った" ; -- "hashiru"
|
||||
salt_N = mkN "塩" Inanim ; -- "shio"
|
||||
sand_N = mkN "砂" Inanim ; -- "suna"
|
||||
say_VS = mkV2 "言わ" "言い" "言う" "言った" "と" ; -- "iu" "to"
|
||||
school_N = mkN "学校" Inanim ; -- "gakkou"
|
||||
science_N = mkN "科学" Inanim ; -- "kagaku"
|
||||
scratch_V2 = mkV2 "掻か" "掻き" "掻く" "掻いた" "を" ; -- "kaku" "o"
|
||||
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"
|
||||
sharp_A = mkA "鋭い" ; -- "surudoi"
|
||||
sheep_N = mkN "羊" Anim "頭" False ; -- "hitsuji" "tou"
|
||||
ship_N = mkN "船" Inanim "杯" False ; -- "fune" "hai"
|
||||
shirt_N = mkN "シャツ" Inanim ; -- "shatsu"
|
||||
shoe_N = mkN "靴" Inanim ; -- "kutsu"
|
||||
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"
|
||||
skin_N = mkN "皮膚" Inanim ; -- "hifu"
|
||||
sky_N = mkN "空" Inanim ; -- "sora"
|
||||
sleep_V = mkV "寝" "寝" "寝る" "寝た" ; -- "neru"
|
||||
small_A = mkA "小さい" ; -- "chisai"
|
||||
smell_V = mkV "匂わ" "匂い" "匂う" "匂った" ; -- "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"
|
||||
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"
|
||||
stove_N = mkN "ストーブ" Inanim ; -- "sutobu"
|
||||
straight_A = mkA "直な" ; -- "chokuna"
|
||||
student_N = mkN "学生" Anim "人" False ; -- "gakusei" "nin"
|
||||
stupid_A = mkA "愚かな" ; -- "orokana"
|
||||
suck_V2 = mkV2 "吸わ" "吸い" "吸う" "吸った" "を" ; -- "suu" "o"
|
||||
sun_N = mkN "太陽" Inanim ; -- "taiyou"
|
||||
swell_V = mkV "膨らま" "膨らみ" "膨らむ" "膨らんだ" ; -- "fukuramu"
|
||||
swim_V = mkV "泳が" "泳ぎ" "泳ぐ" "泳いだ" ; -- "oyogu"
|
||||
switch8off_V2 = mkV2 "スイッチを切ら" "スイッチを切り" "スイッチを切る" "スイッチを切った" "の" ; -- "suitchiokiru" "o"
|
||||
switch8on_V2 = mkV2 "スイッチを入れ" "スイッチを入れ" "スイッチを入れる" "スイッチを入れた" "の" ; -- "suitchioireru" "o"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
tree_N = mkN "木" Inanim "樹" True ; -- "ki" "ju"
|
||||
turn_V = mkV "回ら" "回り" "回る" "回った" ; -- "mawaru"
|
||||
ugly_A = mkA "醜い" ; -- "mnikui"
|
||||
uncertain_A = mkA "危なっかしい" ; -- "abunakkashii"
|
||||
understand_V2 = mkV2 "理解し" "理解し" "理解する" "理解した" "を" ; -- "rikaisuru" "o"
|
||||
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"
|
||||
warm_A = mkA "暖かい" ; -- "atatakai"
|
||||
war_N = mkN "戦争" Inanim ; -- "sensou"
|
||||
wash_V2 = mkV2 "洗わ" "洗い" "洗う" "洗った" "を" ; -- "arau" "o"
|
||||
watch_V2 = mkV2 "見" "見" "見る" "見た" "を" ; -- "miru" "o"
|
||||
water_N = mkN "水" Inanim ; -- "mizu"
|
||||
wet_A = mkA "濡れている" "濡れた" ; -- "nureteiru"
|
||||
white_A = mkA "白い" ; -- "shiroi"
|
||||
wide_A = mkA "広い" ; -- "hiroi"
|
||||
wife_N = mkN "妻" Anim "人" False ; -- "tsuma" "nin"
|
||||
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"
|
||||
wood_N = mkN "木材" Inanim ; -- "mokuzai"
|
||||
worm_N = mkN "ワーム" Anim "匹" False ; -- "waamu" "hiki"
|
||||
write_V2 = mkV2 "書か" "書き" "書く" "書いた" "を" ; -- "kaku" "o"
|
||||
year_N = mkN "年" Inanim "年" True ; -- "toshi" "nen"
|
||||
yellow_A = mkA "黄色の" ; -- "kiirono"
|
||||
young_A = mkA "若い" ; -- "wakai"
|
||||
}
|
||||
291
lib/src/japanese/NounJap.gf
Normal file
291
lib/src/japanese/NounJap.gf
Normal file
@@ -0,0 +1,291 @@
|
||||
concrete NounJap of Noun = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
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
|
||||
} ;
|
||||
False => cn.object ! st ++ det.quant ! st ++ det.num ++ cn.s ! det.n ! st
|
||||
} ;
|
||||
prepositive = cn.prepositive ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
Pron1Sg = False ;
|
||||
anim = cn.anim
|
||||
} ;
|
||||
|
||||
UsePN pn = {
|
||||
s = \\st => pn.s ! st ;
|
||||
prepositive = \\st => [] ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
Pron1Sg = False ;
|
||||
anim = pn.anim
|
||||
} ;
|
||||
|
||||
UsePron pron = {
|
||||
s = pron.s ;
|
||||
prepositive = \\st => [] ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
Pron1Sg = pron.Pron1Sg ;
|
||||
anim = pron.anim
|
||||
} ;
|
||||
|
||||
PredetNP p np = {
|
||||
s = \\st => p.s ++ np.s ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
needPart = np.needPart ;
|
||||
changePolar = np.changePolar ;
|
||||
Pron1Sg = np.Pron1Sg ;
|
||||
anim = np.anim
|
||||
} ;
|
||||
|
||||
PPartNP np v2 = {
|
||||
s = \\st => v2.pass ! Plain ! TPast ! Pos ++ np.s ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
needPart = np.needPart ;
|
||||
changePolar = np.changePolar ;
|
||||
Pron1Sg = np.Pron1Sg ;
|
||||
anim = np.anim
|
||||
} ;
|
||||
|
||||
AdvNP np adv = {
|
||||
s = \\st => case adv.prepositive of {
|
||||
True => np.s ! st ;
|
||||
False => adv.s ! st ++ np.s ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
needPart = np.needPart ;
|
||||
changePolar = np.changePolar ;
|
||||
Pron1Sg = np.Pron1Sg ;
|
||||
anim = np.anim
|
||||
} ;
|
||||
|
||||
RelNP np rs = {
|
||||
s = \\st => rs.s ! np.anim ! st ++ np.s ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
needPart = np.needPart ;
|
||||
changePolar = np.changePolar ;
|
||||
Pron1Sg = np.Pron1Sg ;
|
||||
anim = np.anim
|
||||
} ;
|
||||
|
||||
DetNP det = {
|
||||
s = \\st => case det.inclCard of {
|
||||
True => det.quant ! st ++ det.num ++ "つ" ++ det.postpositive ;
|
||||
False => det.quant ! st ++ det.num
|
||||
} ;
|
||||
prepositive = \\st => [] ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
Pron1Sg = False ;
|
||||
anim = Inanim -- not always, depends on the context
|
||||
} ;
|
||||
|
||||
DetQuant quant num = {
|
||||
quant = quant.s ;
|
||||
postpositive = num.postpositive ;
|
||||
num = num.s ;
|
||||
n = num.n ;
|
||||
inclCard = num.inclCard
|
||||
} ;
|
||||
|
||||
DetQuantOrd quant num ord = {
|
||||
quant = \\st => quant.s ! st ++ ord.attr ;
|
||||
postpositive = num.postpositive ;
|
||||
num = num.s ;
|
||||
n = num.n ;
|
||||
inclCard = num.inclCard
|
||||
} ;
|
||||
|
||||
NumSg = mkNum "" Sg False ;
|
||||
|
||||
NumPl = mkNum "" Pl False ;
|
||||
|
||||
NumCard card = card ** {inclCard = True} ;
|
||||
|
||||
NumDigits num = num ** {postpositive = []} ;
|
||||
|
||||
NumNumeral num = num ** {postpositive = []} ;
|
||||
|
||||
AdNum adn card = case adn.postposition of {
|
||||
True => {
|
||||
s = card.s ;
|
||||
postpositive = adn.s ;
|
||||
n = card.n
|
||||
} ;
|
||||
False => {
|
||||
s = adn.s ++ card.s ;
|
||||
postpositive = [] ;
|
||||
n = card.n
|
||||
}
|
||||
} ;
|
||||
|
||||
OrdDigits d = {
|
||||
pred = \\st,t,p => d.s ++ "番目" ++ mkCopula.s ! st ! t ! p ; -- "banme"
|
||||
attr = d.s ++ "番目の" ;
|
||||
te = d.s ++ "番目" ++ mkCopula.te ;
|
||||
tara = d.s ++ "番目" ++ mkCopula.tara ;
|
||||
adv = d.s ++ "番目"
|
||||
} ;
|
||||
|
||||
OrdNumeral num = {
|
||||
pred = \\st,t,p => num.s ++ "番目" ++ mkCopula.s ! st ! t ! p ;
|
||||
attr = num.s ++ "番目の" ;
|
||||
te = num.s ++ "番目" ++ mkCopula.te ;
|
||||
tara = num.s ++ "番目" ++ mkCopula.tara ;
|
||||
adv = num.s ++ "番目"
|
||||
} ;
|
||||
|
||||
OrdSuperl a = {
|
||||
pred = \\st,t,p => "一番" ++ a.pred ! st ! t ! p ; -- "ichiban"
|
||||
attr = "一番" ++ a.attr ;
|
||||
te = "一番" ++ a.te ;
|
||||
tara = "一番" ++ a.tara ;
|
||||
adv = "一番" ++ a.adv
|
||||
} ;
|
||||
|
||||
IndefArt = {s = \\st => ""} ;
|
||||
|
||||
DefArt = {s = \\st => ""} ;
|
||||
|
||||
MassNP cn = {
|
||||
s = \\st => cn.object ! st ++ cn.s ! Pl ! st ;
|
||||
prepositive = cn.prepositive ;
|
||||
needPart = True ;
|
||||
changePolar = False ;
|
||||
Pron1Sg = False ;
|
||||
anim = cn.anim
|
||||
} ;
|
||||
|
||||
PossPron pron = {
|
||||
s = \\st => pron.s ! st ++ "の" ;
|
||||
} ;
|
||||
|
||||
UseN n = {
|
||||
s = n.s ;
|
||||
object = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
hasAttr = False ;
|
||||
anim = n.anim ;
|
||||
counter = n.counter ;
|
||||
counterReplace = n.counterReplace
|
||||
} ;
|
||||
|
||||
ComplN2 n2 np = {
|
||||
s = n2.s ;
|
||||
object = \\st => n2.object ! st ++ np.s ! st ++ n2.prep ;
|
||||
prepositive = np.prepositive ;
|
||||
hasAttr = False ;
|
||||
anim = n2.anim ;
|
||||
counter = n2.counter ;
|
||||
counterReplace = n2.counterReplace
|
||||
} ;
|
||||
|
||||
ComplN3 n3 np = {
|
||||
s = n3.s ;
|
||||
object = \\st => np.s ! st ++ n3.prep1 ;
|
||||
prepositive = np.prepositive ;
|
||||
prep = n3.prep2 ;
|
||||
anim = n3.anim ;
|
||||
counter = n3.counter ;
|
||||
counterReplace = n3.counterReplace
|
||||
} ;
|
||||
|
||||
UseN2 n2 = {
|
||||
s = n2.s ;
|
||||
object = n2.object ;
|
||||
prepositive = \\st => [] ;
|
||||
hasAttr = False ;
|
||||
anim = n2.anim ;
|
||||
counter = n2.counter ;
|
||||
counterReplace = n2.counterReplace
|
||||
} ;
|
||||
|
||||
Use2N3 n3 = {
|
||||
s = n3.s ;
|
||||
object = \\st => [] ;
|
||||
prep = n3.prep1 ;
|
||||
anim = n3.anim ;
|
||||
counter = n3.counter ;
|
||||
counterReplace = n3.counterReplace
|
||||
} ;
|
||||
|
||||
Use3N3 n3 = {
|
||||
s = n3.s ;
|
||||
object = \\st => [] ;
|
||||
prep = n3.prep2 ;
|
||||
anim = n3.anim ;
|
||||
counter = n3.counter ;
|
||||
counterReplace = n3.counterReplace
|
||||
} ;
|
||||
|
||||
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
|
||||
} ;
|
||||
object = cn.object ;
|
||||
prepositive = cn.prepositive ;
|
||||
hasAttr = True ;
|
||||
anim = cn.anim ;
|
||||
counter = cn.counter ;
|
||||
counterReplace = cn.counterReplace
|
||||
} ;
|
||||
|
||||
RelCN cn rs = {
|
||||
s = cn.s ;
|
||||
anim = cn.anim ;
|
||||
counter = cn.counter ;
|
||||
counterReplace = cn.counterReplace ;
|
||||
object = \\st => rs.s ! cn.anim ! st ++ cn.object ! st ;
|
||||
prepositive = cn.prepositive ;
|
||||
hasAttr = cn.hasAttr
|
||||
} ;
|
||||
|
||||
AdvCN cn adv = {
|
||||
s = cn.s ;
|
||||
object = \\st => case adv.prepositive of {
|
||||
True => cn.object ! st ;
|
||||
False => adv.s ! st ++ cn.object ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
hasAttr = cn.hasAttr ;
|
||||
anim = cn.anim ;
|
||||
counter = cn.counter ;
|
||||
counterReplace = cn.counterReplace
|
||||
} ;
|
||||
|
||||
SentCN cn sc = {
|
||||
s = cn.s ;
|
||||
object = \\st => sc.s ! Ga ! st ++ cn.object ! st ;
|
||||
prepositive = cn.prepositive ;
|
||||
hasAttr = cn.hasAttr ;
|
||||
anim = cn.anim ;
|
||||
counter = cn.counter ;
|
||||
counterReplace = cn.counterReplace
|
||||
} ;
|
||||
|
||||
ApposCN cn np = {
|
||||
s = \\n,st => cn.s ! n ! st ++ np.s ! st ;
|
||||
object = cn.object ;
|
||||
prepositive = cn.prepositive ;
|
||||
hasAttr = cn.hasAttr ;
|
||||
anim = cn.anim ;
|
||||
counter = cn.counter ;
|
||||
counterReplace = cn.counterReplace
|
||||
} ;
|
||||
}
|
||||
140
lib/src/japanese/NumeralJap.gf
Normal file
140
lib/src/japanese/NumeralJap.gf
Normal file
@@ -0,0 +1,140 @@
|
||||
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} ;
|
||||
|
||||
lin
|
||||
num dig = dig ;
|
||||
|
||||
n2 = {s = "二" ; n = Pl} ; -- "ni"
|
||||
n3 = {s = "三" ; n = Pl} ; -- "san"
|
||||
n4 = {s = "四" ; n = Pl} ; -- "yon"
|
||||
n5 = {s = "五" ; n = Pl} ; -- "go"
|
||||
n6 = {s = "六" ; n = Pl} ; -- "roku"
|
||||
n7 = {s = "七" ; n = Pl} ; -- "shichi"
|
||||
n8 = {s = "八" ; n = Pl} ; -- "hachi"
|
||||
n9 = {s = "九" ; n = Pl} ; -- "kyuu"
|
||||
|
||||
pot01 = {s = "一" ; n = Sg ; is1 = True} ; -- "ichi"
|
||||
|
||||
pot0 d = d ** {is1 = False} ;
|
||||
|
||||
pot110 = {
|
||||
s = "十" ; -- "juu"
|
||||
n = Pl ;
|
||||
numType = Tens ;
|
||||
digit1 = "1" ;
|
||||
digit2 = "0"
|
||||
} ;
|
||||
|
||||
pot111 = {
|
||||
s = "十一" ;
|
||||
n = Pl ;
|
||||
numType = TensPlus ;
|
||||
digit1 = "1" ;
|
||||
digit2 = "1"
|
||||
} ;
|
||||
|
||||
pot1to19 d = {
|
||||
s = "十" ++ d.s ;
|
||||
n = Pl ;
|
||||
numType = TensPlus ;
|
||||
digit1 = "1" ;
|
||||
digit2 = d.s
|
||||
} ;
|
||||
|
||||
pot0as1 d = {
|
||||
s = d.s ;
|
||||
n = Pl ;
|
||||
numType = Other ;
|
||||
digit1 = [] ;
|
||||
digit2 = []
|
||||
} ;
|
||||
|
||||
pot1 d = {
|
||||
s = d.s ++ "十" ;
|
||||
n = Pl ;
|
||||
numType = Tens ;
|
||||
digit1 = d.s ;
|
||||
digit2 = "0"
|
||||
} ;
|
||||
|
||||
pot1plus d n = {
|
||||
s = d.s ++ "十" ++ n.s ;
|
||||
n = Pl ;
|
||||
numType = TensPlus ;
|
||||
digit1 = d.s ;
|
||||
digit2 = n.s
|
||||
} ;
|
||||
|
||||
pot1as2 d = d ;
|
||||
|
||||
pot2 d = {
|
||||
s = case d.is1 of {
|
||||
True => "百" ; -- "hyaku"
|
||||
False => d.s ++ "百"
|
||||
} ;
|
||||
n = Pl ;
|
||||
numType = Other ;
|
||||
digit1 = [] ;
|
||||
digit2 = []
|
||||
} ;
|
||||
|
||||
pot2plus d n = {
|
||||
s = case d.is1 of {
|
||||
True => "百" ++ n.s ;
|
||||
False => d.s ++ "百" ++ n.s
|
||||
} ;
|
||||
n = Pl ;
|
||||
numType = Other ;
|
||||
digit1 = [] ;
|
||||
digit2 = []
|
||||
} ;
|
||||
|
||||
pot2as3 d = d ;
|
||||
|
||||
pot3 d = {
|
||||
s = case d.numType of {
|
||||
Tens => d.digit1 ++ "万" ; -- "man"
|
||||
TensPlus => d.digit1 ++ "万" ++ d.digit2 ++ "千" ; -- "sen"
|
||||
Other => d.s ++ "千"
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
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
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
lincat
|
||||
Dig = {s : Str ; n : Number} ;
|
||||
|
||||
lin
|
||||
IDig d = d ;
|
||||
|
||||
IIDig d n = {
|
||||
s = d.s ++ n.s ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
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} ;
|
||||
}
|
||||
64
lib/src/japanese/ParadigmsJap.gf
Normal file
64
lib/src/japanese/ParadigmsJap.gf
Normal file
@@ -0,0 +1,64 @@
|
||||
resource ParadigmsJap = CatJap **
|
||||
open ResJap, CatJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
oper
|
||||
|
||||
mkN = overload {
|
||||
mkN : (man : Str) -> (anim : Animateness) -> N
|
||||
= \n,a -> lin N (regNoun n a "つ" False) ;
|
||||
mkN : (kane,okane : Str) -> (anim : Animateness) -> N
|
||||
= \kane,okane,a -> lin N (styleNoun kane okane a "つ" False) ;
|
||||
mkN : (man : Str) -> (anim : Animateness) -> (counter : Str) -> (counterReplace : Bool) -> N
|
||||
= \n,a,c,b -> lin N (regNoun n a c b) ;
|
||||
mkN : (kane,okane : Str) -> (anim : Animateness) -> (counter : Str) ->
|
||||
(counterReplace : Bool) -> N
|
||||
= \kane,okane,a,c,b -> lin N (styleNoun kane okane a c b)
|
||||
} ;
|
||||
|
||||
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 => []} ;
|
||||
|
||||
mkN3 : (distance : Str) -> (prep1: Str) -> (prep2: Str) -> (anim : Animateness) -> N3
|
||||
= \n,p1,p2,a -> lin N3 (regNoun n a "つ" False) ** {prep1 = p1; prep2 = p2} ;
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : (paris : Str) -> PN
|
||||
= \n -> lin PN (regPN n) ;
|
||||
mkPN : (jon,jonsan : Str) -> PN
|
||||
= \jon,jonsan -> lin PN (personPN jon jonsan)
|
||||
} ;
|
||||
|
||||
mkPron = overload {
|
||||
mkPron : (kare : Str) -> (Pron1Sg : Bool) -> (anim : Animateness) -> Pron
|
||||
= \kare,b,a -> lin Pron (regPron kare b a) ;
|
||||
mkPron : (boku,watashi : Str) -> (Pron1Sg : Bool) -> (anim : Animateness) -> Pron
|
||||
= \boku,watashi,b,a -> lin Pron (stylePron boku watashi b a)
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : (ookina : Str) -> A = \a -> lin A (regAdj a) ;
|
||||
mkA : (kekkonshiteiru,kikonno : Str) -> A = \pred,attr -> lin A (VerbalA pred attr)
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
mkA2 : (yasui : Str) -> (prep : Str) -> A2 = \a,p -> lin A2 (regAdj a) ** {prep = p} ;
|
||||
mkA2 : (pred : Str) -> (attr : Str) -> (prep : Str) -> A2 =
|
||||
\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) ;
|
||||
|
||||
mkV2 : (yoma, yomi, yomu, yonda, prep : Str) -> V2
|
||||
= \yoma,yomi,yomu,yonda,p ->
|
||||
lin V2 (mkVerb2 yoma yomi yomu yonda p) ;
|
||||
|
||||
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} ;
|
||||
}
|
||||
|
||||
|
||||
52
lib/src/japanese/PhraseJap.gf
Normal file
52
lib/src/japanese/PhraseJap.gf
Normal file
@@ -0,0 +1,52 @@
|
||||
concrete PhraseJap of Phrase = CatJap
|
||||
** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
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)
|
||||
}
|
||||
} ;
|
||||
|
||||
UttS sent = {s = \\st => sent.s ! (Wa|Ga) ! st} ;
|
||||
|
||||
UttQS s = {s = \\st => s.s ! (Wa | Ga) ! st ++ "か"} ;
|
||||
|
||||
UttImpSg p imp = {s = \\st => p.s ++ imp.s ! st ! p.b} ;
|
||||
|
||||
UttImpPl = UttImpSg ;
|
||||
|
||||
UttImpPol p imp = {s = \\st => p.s ++ imp.s ! Resp ! p.b} ;
|
||||
|
||||
UttIP ip = {s = \\st => ip.s ! st ++ "ですか"} ;
|
||||
|
||||
UttIAdv iadv = {s = \\st => iadv.s ! st ++ "ですか"} ;
|
||||
|
||||
UttNP np = {s = \\st => np.prepositive ! st ++ np.s ! st} ;
|
||||
|
||||
UttAdv adv = {s = \\st => adv.s ! st} ;
|
||||
|
||||
UttVP vp = {s = \\st => vp.prepositive ! st ++ vp.obj ! st ++ vp.prep ++
|
||||
vp.verb ! (Anim | Inanim) ! st ! (TPres | TPast | TFut) ! (Pos | Neg)} ;
|
||||
|
||||
UttCN cn = {s = \\st => cn.prepositive ! st ++ cn.object ! st ++ cn.s ! (Sg | Pl) ! st} ;
|
||||
|
||||
UttCard card = {s = \\st => card.s ++ card.postpositive} ;
|
||||
|
||||
UttAP ap = {s = \\st => ap.prepositive ! st ++ ap.attr ! st} ;
|
||||
|
||||
UttInterj interj = {s = \\st => interj.s} ;
|
||||
|
||||
NoPConj = ss "" ;
|
||||
|
||||
PConjConj conj = {s = conj.pconj} ;
|
||||
|
||||
NoVoc = {s = \\st => [] ; please = False} ;
|
||||
|
||||
VocNP np = {s = \\st => np.prepositive ! st ++ np.s ! st ; please = False} ;
|
||||
}
|
||||
114
lib/src/japanese/QuestionJap.gf
Normal file
114
lib/src/japanese/QuestionJap.gf
Normal file
@@ -0,0 +1,114 @@
|
||||
concrete QuestionJap of Question = CatJap
|
||||
** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
QuestCl cl = { -- ending "ka" is added at the utterance level
|
||||
s = cl.s ;
|
||||
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
|
||||
} ;
|
||||
changePolar = False
|
||||
} ;
|
||||
|
||||
QuestSlash ip clslash = {
|
||||
s = \\part,st,t,p => clslash.subj ! part ! st ++ ip.s ! st ++ clslash.pred ! st ! 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 ;
|
||||
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
|
||||
} ;
|
||||
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
|
||||
}
|
||||
} ;
|
||||
changePolar = np.changePolar
|
||||
} ;
|
||||
|
||||
IdetCN idet cn = {
|
||||
s = \\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
|
||||
} ;
|
||||
anim = cn.anim ;
|
||||
how8many = idet.how8many
|
||||
} ;
|
||||
|
||||
IdetIP idet = {
|
||||
s = \\st => case idet.inclCard of {
|
||||
True => idet.s ++ "つ" ;
|
||||
False => idet.s
|
||||
} ;
|
||||
anim = Inanim ; -- can be Anim, depending on the context
|
||||
how8many = False -- "how many" alone behaves as other IPs
|
||||
} ;
|
||||
|
||||
AdvIP ip adv = {
|
||||
s = \\st => adv.s ! st ++ ip.s ! st ;
|
||||
anim = ip.anim ;
|
||||
how8many = ip.how8many
|
||||
} ;
|
||||
|
||||
IdetQuant iquant num = {
|
||||
s = iquant.s ++ num.s ;
|
||||
n = num.n ;
|
||||
how8many = False ;
|
||||
inclCard = num.inclCard
|
||||
} ;
|
||||
|
||||
PrepIP prep ip = {s = \\st => ip.s ! st ++ prep.s ; particle = ""} ;
|
||||
|
||||
AdvIAdv iadv adv = {s = \\st => adv.s ! st ++ iadv.s ! st ; particle = iadv.particle} ;
|
||||
|
||||
CompIAdv iadv = {s = iadv.s} ;
|
||||
|
||||
CompIP ip = {s = ip.s} ;
|
||||
|
||||
lincat
|
||||
|
||||
QVP = {s : Animateness => Style => TTense => Polarity => Str ; prepositive : Style => Str} ;
|
||||
|
||||
lin
|
||||
|
||||
ComplSlashIP vpslash ip = {
|
||||
s = \\a,st,t,p => vpslash.obj ! st ++ ip.s ! st ++ vpslash.prep ++ vpslash.s ! 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 ;
|
||||
prepositive = vp.prepositive
|
||||
} ;
|
||||
|
||||
AddAdvQVP qvp iadv = {
|
||||
s = \\a,st,t,p => iadv.s ! st ++ iadv.particle ++ qvp.s ! a ! st ! t ! p ;
|
||||
prepositive = qvp.prepositive
|
||||
} ;
|
||||
|
||||
QuestQVP ip qvp = {
|
||||
s = \\part,st,t,p => qvp.prepositive ! st ++ ip.s ! st ++ "が" ++
|
||||
qvp.s ! ip.anim ! st ! t ! p ;
|
||||
changePolar = False
|
||||
} ;
|
||||
}
|
||||
48
lib/src/japanese/RelativeJap.gf
Normal file
48
lib/src/japanese/RelativeJap.gf
Normal file
@@ -0,0 +1,48 @@
|
||||
concrete RelativeJap of Relative = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
RelCl cl = {
|
||||
s = \\_,st,t,p => cl.s ! Ga ! st ! t ! p ;
|
||||
te = \\_,st => cl.te ! Ga ! st ;
|
||||
changePolar = cl.changePolar ;
|
||||
subj = cl.subj ;
|
||||
pred = \\_,st,t,p => cl.pred ! st ! t ! p ;
|
||||
pred_te = \\a,st => cl.pred_te ! st ;
|
||||
pred_tara = \\a,st => cl.pred_tara ! st ;
|
||||
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 ;
|
||||
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_tara = \\a,st => vp.obj ! st ++ vp.prep ++ vp.tara ! a ! st ++ rp.prep ;
|
||||
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 ;
|
||||
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_tara = \\a,st => clslash.pred_tara ! st ++ rp.prep ;
|
||||
missingSubj = False
|
||||
} ;
|
||||
|
||||
IdRP = {s = \\st => [] ; prep = []} ;
|
||||
|
||||
FunRP prep np rp = {
|
||||
s = \\st => np.prepositive ! st ++ np.s ! st ;
|
||||
prep = prep.relPrep
|
||||
} ;
|
||||
}
|
||||
505
lib/src/japanese/ResJap.gf
Normal file
505
lib/src/japanese/ResJap.gf
Normal file
@@ -0,0 +1,505 @@
|
||||
resource ResJap = open Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
param
|
||||
Number = Sg | Pl ;
|
||||
Style = Plain | Resp ;
|
||||
Animateness = Anim | Inanim ;
|
||||
Mood = Ind | Con ;
|
||||
TTense = TPres | TPast | TFut ;
|
||||
Polarity = Pos | Neg ;
|
||||
ModSense = Abil | Oblig | Wish ;
|
||||
Particle = Wa | Ga ;
|
||||
Anteriority = Simul | Anter ;
|
||||
NumeralType = Tens | TensPlus | Other ;
|
||||
ComparSense = Less | More | NoCompar ;
|
||||
|
||||
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 ; tara : Animateness => Style => Str ;
|
||||
prep : Str ; obj : Style => Str ; prepositive : Style => Str ;
|
||||
compar : ComparSense} ;
|
||||
|
||||
Noun : Type = {s : Number => Style => Str ; anim : Animateness ;
|
||||
counter : Str ; counterReplace : Bool} ;
|
||||
PropNoun : Type = {s : Style => Str ; anim : Animateness} ;
|
||||
Adj : Type = {pred : Style => TTense => Polarity => Str;
|
||||
attr : Str; te : Str ; tara : Str ; adv : Str} ;
|
||||
Adj2 : Type = {pred : Style => TTense => Polarity => Str;
|
||||
attr : Str; te : Str ; tara : Str ; adv : Str ; prep : Str} ;
|
||||
Adverb : Type = {s : Style => Str ; prepositive : Bool ; compar : ComparSense} ;
|
||||
Pronoun : Type = {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ;
|
||||
Determiner : Type = {quant : Style => Str ; postpositive : Str ;
|
||||
num : Str ; n : Number ; inclCard : Bool} ;
|
||||
Num : Type = {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ;
|
||||
Preposition : Type = {s : Str ; relPrep : Str} ;
|
||||
Verb : Type = {s : Style => TTense => Polarity => Str ; te : Str ;
|
||||
a_stem : Str ; i_stem : Str ; tara : Str} ;
|
||||
Verb2 : Type = {s : Style => TTense => Polarity => Str ; te : Str ;
|
||||
a_stem : Str ; i_stem : Str ; tara : Str ;
|
||||
pass : Style => TTense => Polarity => Str ; pass_te : Str ;
|
||||
pass_a_stem : Str ; pass_i_stem : Str ; pass_tara : Str ;
|
||||
prep : Str} ;
|
||||
Conjunction : Type = {s : Str ; pconj : Str ; disj : Bool} ;
|
||||
|
||||
mkNoun : Str -> Str -> Str -> Str -> Animateness -> Str -> Bool -> Noun =
|
||||
\man1,man2,man3,man4,a,c,b -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Plain => man1 ;
|
||||
Resp => man2
|
||||
} ;
|
||||
Pl => table {
|
||||
Plain => man3 ;
|
||||
Resp => man4
|
||||
}
|
||||
} ;
|
||||
anim = a ;
|
||||
counter = c ;
|
||||
counterReplace = b
|
||||
} ;
|
||||
|
||||
regNoun : Str -> Animateness -> Str -> Bool -> Noun = \s,a,c,b -> mkNoun s s s s a c b ;
|
||||
|
||||
styleNoun : Str -> Str -> Animateness -> Str -> Bool -> Noun = \kane,okane,a,c,b ->
|
||||
mkNoun kane okane kane okane a c b ;
|
||||
|
||||
regAdj : Str -> Adj = \a -> case a of {
|
||||
chiisa + "い" => i_mkAdj a ;
|
||||
ooki + ("な"|"の") => na_mkAdj a
|
||||
} ;
|
||||
|
||||
i_mkAdj : Str -> Adj = \chiisai ->
|
||||
let
|
||||
chiisa = init chiisai ;
|
||||
in {
|
||||
pred = table {
|
||||
Resp => table {
|
||||
TPres => table {
|
||||
Pos => chiisai ++ "です" ;
|
||||
Neg => (chiisa + "くありません" |
|
||||
chiisa + "くないです")
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => chiisa + "かったです" ;
|
||||
Neg => (chiisa + "くありませんでした" |
|
||||
chiisa + "くなかったです")
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => chiisai ++ "です" ;
|
||||
Neg => (chiisa + "くありません" |
|
||||
chiisa + "くないです")
|
||||
}
|
||||
} ;
|
||||
Plain => table {
|
||||
TPres => table {
|
||||
Pos => chiisai ;
|
||||
Neg => chiisa + "くない"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => chiisa + "かった" ;
|
||||
Neg => chiisa + "くなかった"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => chiisai ;
|
||||
Neg => chiisa + "くない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
attr = chiisai ;
|
||||
te = chiisa + "くて" ;
|
||||
tara = chiisa + "かったら" ;
|
||||
adv = chiisa + "く"
|
||||
} ;
|
||||
|
||||
na_mkAdj : Str -> Adj = \ookina ->
|
||||
let
|
||||
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 ++ "ではない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
attr = ookina ;
|
||||
te = ooki + "で" ;
|
||||
tara = ooki + "だったら" ;
|
||||
adv = ooki + "に"
|
||||
} ;
|
||||
|
||||
VerbalA : Str -> Str -> Adj = \kekkonshiteiru,kikonno ->
|
||||
let
|
||||
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 + "いない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
attr = kikonno ;
|
||||
te = kekkonshite + "いて" ;
|
||||
tara = kekkonshite + "いたら" ;
|
||||
adv = kekkonshite + "に"
|
||||
} ;
|
||||
|
||||
mkVerb : Str -> Str -> Str -> Str -> Verb =
|
||||
\yoma,yomi,yomu,yonda ->
|
||||
let yon = init yonda ;
|
||||
in {
|
||||
s = table {
|
||||
Resp => table {
|
||||
TPres => table {
|
||||
Pos => yomi + "ます" ;
|
||||
Neg => yomi + "ません"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => yomi + "ました" ;
|
||||
Neg => yomi + "ませんでした"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => yomi + "ます" ;
|
||||
Neg => yomi + "ません"
|
||||
}
|
||||
} ;
|
||||
Plain => table {
|
||||
TPres => table {
|
||||
Pos => yomu ;
|
||||
Neg => yoma + "ない"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => yonda ;
|
||||
Neg => yoma + "なかった"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => yomu ;
|
||||
Neg => yoma + "ない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = case yonda of {
|
||||
yon + "だ" => yon + "で" ;
|
||||
yon + "た" => yon + "て"
|
||||
} ;
|
||||
a_stem = yoma ;
|
||||
i_stem = yomi ;
|
||||
tara = yomi + "たら"
|
||||
} ;
|
||||
|
||||
mkVerb2 : Str -> Str -> Str -> Str -> Str -> Verb2 =
|
||||
\yoma,yomi,yomu,yonda,p ->
|
||||
let yon = init yonda ;
|
||||
in {
|
||||
s = table {
|
||||
Resp => table {
|
||||
TPres => table {
|
||||
Pos => yomi + "ます" ;
|
||||
Neg => yomi + "ません"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => yomi + "ました" ;
|
||||
Neg => yomi + "ませんでした"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => yomi + "ます" ;
|
||||
Neg => yomi + "ません"
|
||||
}
|
||||
} ;
|
||||
Plain => table {
|
||||
TPres => table {
|
||||
Pos => yomu ;
|
||||
Neg => yoma + "ない"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => yonda ;
|
||||
Neg => yoma + "なかった"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => yomu ;
|
||||
Neg => yoma + "ない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = case yonda of {
|
||||
yon + "だ" => yon + "で" ;
|
||||
yon + "た" => yon + "て"
|
||||
} ;
|
||||
a_stem = yoma ;
|
||||
i_stem = yomi ;
|
||||
tara = yomi + "たら" ;
|
||||
prep = p ;
|
||||
pass = table {
|
||||
Resp => table {
|
||||
TPres => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "されます" ;
|
||||
_ => yoma + "れます"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されません" ;
|
||||
_ => yoma + "れません"
|
||||
}
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "されました" ;
|
||||
_ => yoma + "れました"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されませんでした" ;
|
||||
_ => yoma + "れませんでした"
|
||||
}
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "されます" ;
|
||||
_ => yoma + "れます"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されません" ;
|
||||
_ => yoma + "れません"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Plain => table {
|
||||
TPres => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "される" ;
|
||||
_ => yoma + "れる"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されない" ;
|
||||
_ => yoma + "れない"
|
||||
}
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "された" ;
|
||||
_ => yoma + "れた"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されなかった" ;
|
||||
_ => yoma + "れなかった"
|
||||
}
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => case yomu of {
|
||||
x + "する" => x + "される" ;
|
||||
_ => yoma + "れる"
|
||||
} ;
|
||||
Neg => case yomu of {
|
||||
x + "する" => x + "されない" ;
|
||||
_ => yoma + "れない"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
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_tara = case yomu of {
|
||||
x + "する" => x + "されたら" ;
|
||||
_ => yoma + "れたら"
|
||||
}
|
||||
} ;
|
||||
|
||||
mkCopula : Verb = {
|
||||
s = table {
|
||||
Resp => table {
|
||||
TPres => table {
|
||||
Pos => "です" ;
|
||||
Neg => "ではありません"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => "でした" ;
|
||||
Neg => "ではありませんでした"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => "です" ;
|
||||
Neg => "ではありません"
|
||||
}
|
||||
} ;
|
||||
Plain => table {
|
||||
TPres => table {
|
||||
Pos => "だ" ;
|
||||
Neg => "ではない"
|
||||
} ;
|
||||
TPast => table {
|
||||
Pos => "だった" ;
|
||||
Neg => "ではなかった"
|
||||
} ;
|
||||
TFut => table {
|
||||
Pos => "だ" ;
|
||||
Neg => "ではない"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = "だって" ;
|
||||
a_stem = "で" ;
|
||||
i_stem = "で" ;
|
||||
tara = "だったら"
|
||||
} ;
|
||||
|
||||
mkExistV : VP = {
|
||||
verb = table {
|
||||
Anim => \\st,t,p => (mkVerb "い" "い" "いる" "いた").s ! st ! t ! p ;
|
||||
Inanim => \\st,t,p => (mkVerb "" "あり" "ある" "あった").s ! st ! t ! p
|
||||
} ;
|
||||
te = table {
|
||||
Anim => \\st => "いて" ;
|
||||
Inanim => \\st => "あって"
|
||||
} ;
|
||||
a_stem = table {
|
||||
Anim => \\st => "い" ;
|
||||
Inanim => \\st => ""
|
||||
} ;
|
||||
i_stem = table {
|
||||
Anim => \\st => "い" ;
|
||||
Inanim => \\st => "あり"
|
||||
} ;
|
||||
tara = table {
|
||||
Anim => \\st => "いたら" ;
|
||||
Inanim => \\st => "あったら"
|
||||
} ;
|
||||
prep = [] ;
|
||||
prepositive, obj = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
mkNum : Str -> Number -> Bool -> Num = \s,n,b -> {
|
||||
s = s ;
|
||||
postpositive = [] ;
|
||||
n = n ;
|
||||
inclCard = b
|
||||
} ;
|
||||
|
||||
regPron : Str -> Bool -> Animateness -> Pronoun = \kare,b,a -> {
|
||||
s = \\st => kare ;
|
||||
Pron1Sg = b ;
|
||||
anim = a
|
||||
} ;
|
||||
|
||||
mkDet : Str -> Number -> Determiner = \q,n -> {
|
||||
quant = \\st => q ;
|
||||
postpositive = [] ;
|
||||
num = [] ;
|
||||
n = n ;
|
||||
inclCard = False
|
||||
} ;
|
||||
|
||||
stylePron : Str -> Str -> Bool -> Animateness -> Pronoun = \boku,watashi,b,a -> {
|
||||
s = table {
|
||||
Plain => boku ;
|
||||
Resp => watashi
|
||||
} ;
|
||||
Pron1Sg = b ;
|
||||
anim = a
|
||||
} ;
|
||||
|
||||
regPN : Str -> PropNoun = \paris -> {
|
||||
s = table {
|
||||
Plain => paris ;
|
||||
Resp => paris
|
||||
} ;
|
||||
anim = Inanim
|
||||
} ;
|
||||
|
||||
personPN : Str -> Str -> PropNoun = \jon,jonsan -> {
|
||||
s = table {
|
||||
Plain => jon ;
|
||||
Resp => jonsan
|
||||
} ;
|
||||
anim = Anim
|
||||
} ;
|
||||
|
||||
mkAdv : Str -> Adverb = \adv -> {
|
||||
s = \\st => adv ;
|
||||
prepositive = False ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
mkNP : Str -> Bool -> Bool -> Animateness -> NP = \np,b1,b2,a -> {
|
||||
s = \\st => np ;
|
||||
prepositive = \\st => [] ;
|
||||
needPart = b1 ;
|
||||
changePolar = b2 ;
|
||||
Pron1Sg = False ;
|
||||
anim = a
|
||||
} ;
|
||||
|
||||
mkConj : Str -> Str -> Bool -> Conjunction = \c,p,b -> {
|
||||
s = c ;
|
||||
pconj = p ;
|
||||
disj = b
|
||||
} ;
|
||||
|
||||
mkPrep : Str -> Str -> Preposition = \p,r -> {
|
||||
s = p ;
|
||||
relPrep = r ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
454
lib/src/japanese/SentenceJap.gf
Normal file
454
lib/src/japanese/SentenceJap.gf
Normal file
@@ -0,0 +1,454 @@
|
||||
concrete SentenceJap of Sentence = CatJap
|
||||
** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
PredVP np vp = case vp.compar of {
|
||||
More => {
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
|
||||
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++
|
||||
vp.obj ! st ++ vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
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 ;
|
||||
tara = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
|
||||
"より" ++ vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "より" ;
|
||||
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
|
||||
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
|
||||
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
|
||||
vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
|
||||
vp.obj ! st ++ vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! 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.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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! np.anim ! st
|
||||
} ;
|
||||
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ;
|
||||
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ;
|
||||
pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ;
|
||||
pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ;
|
||||
changePolar = np.changePolar
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
PredSCVP sc vp = case sc.isVP of {
|
||||
True => {
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
|
||||
vp.prep ++ vp.tara ! 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_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ;
|
||||
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 ;
|
||||
tara = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
|
||||
vpslash.obj ! st ++ vpslash.prep ++ vpslash.tara ;
|
||||
subj = table {
|
||||
Wa => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "は" ;
|
||||
Ga => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が"
|
||||
} ;
|
||||
pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! st ! t ! p ;
|
||||
pred_te = \\st => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ;
|
||||
pred_tara = \\st => vpslash.obj ! st ++ vpslash.tara ;
|
||||
changePolar = np.changePolar
|
||||
} ;
|
||||
|
||||
AdvSlash clslash adv = {
|
||||
s = \\st,t,p => adv.s ! st ++ clslash.s ! st ! t ! p ;
|
||||
te = \\st => adv.s ! st ++ clslash.te ! st ;
|
||||
tara = \\st => adv.s ! st ++ clslash.tara ! st ;
|
||||
subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ;
|
||||
pred = clslash.pred ;
|
||||
pred_te = clslash.pred_te ;
|
||||
pred_tara = clslash.pred_tara ;
|
||||
changePolar = clslash.changePolar
|
||||
} ;
|
||||
|
||||
SlashPrep cl prep = {
|
||||
s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.relPrep ;
|
||||
te = \\st => cl.te ! Ga ! st ++ prep.relPrep ;
|
||||
tara = \\st => cl.tara ! Ga ! st ++ prep.relPrep ;
|
||||
subj = cl.subj ;
|
||||
pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.relPrep ;
|
||||
pred_te = \\st => cl.pred_te ! st ++ prep.relPrep ;
|
||||
pred_tara = \\st => cl.pred_tara ! st ++ prep.relPrep ;
|
||||
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 ;
|
||||
tara = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
|
||||
vs.prep ++ vs.tara ;
|
||||
subj = table {
|
||||
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
|
||||
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が"
|
||||
} ;
|
||||
pred = \\st,t,p => sslash.s ! st ++ vs.prep ++ vs.s ! st ! t ! p ;
|
||||
pred_te = \\st => sslash.s ! st ++ vs.prep ++ vs.te ;
|
||||
pred_tara = \\st => sslash.s ! st ++ vs.prep ++ vs.tara ;
|
||||
changePolar = np.changePolar
|
||||
} ;
|
||||
|
||||
ImpVP vp = {
|
||||
s = table {
|
||||
Resp => table {
|
||||
Pos => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
|
||||
vp.te ! Anim ! Resp ;
|
||||
Neg => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
|
||||
vp.verb ! Anim ! Plain ! TPres ! Neg ++ "で"
|
||||
} ;
|
||||
Plain => table {
|
||||
Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
|
||||
vp.i_stem ! Anim ! Plain ++ "なさい" ;
|
||||
Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
|
||||
vp.verb ! Anim ! Plain ! TPres ! Pos ++ "な"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
EmbedS sent = {s = \\part,st => sent.subj ! part ! st ++ sent.pred ! Plain ; isVP = False} ;
|
||||
|
||||
EmbedQS qs = {s = \\part,st => qs.s ! part ! Plain ; isVP = False} ;
|
||||
|
||||
EmbedVP vp = {s = \\part,st => vp.verb ! Inanim ! Plain ! TPres ! Pos ; isVP = True} ;
|
||||
|
||||
UseCl t p cl = {
|
||||
s = \\part,st => case t.a of {
|
||||
Simul => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ;
|
||||
tara = \\part,st => t.s ++ p.s ++ cl.tara ! part ! st ;
|
||||
subj = cl.subj ;
|
||||
pred = \\st => case t.a of {
|
||||
Simul => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.pred ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.pred ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.pred ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.pred ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.pred ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.pred ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.pred ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.pred ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
UseQCl t p cl = {
|
||||
s = \\part,st => case t.a of {
|
||||
Simul => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case cl.changePolar of {
|
||||
False => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ cl.s ! part ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
UseRCl t p rcl = {
|
||||
s = \\a,st => case t.a of {
|
||||
Simul => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.s ! a ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.s ! a ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.s ! a ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.s ! a ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.s ! a ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = \\a,st => rcl.te ! a ! st ;
|
||||
subj = rcl.subj ;
|
||||
pred = \\a,st => case t.a of {
|
||||
Simul => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.pred ! a ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.pred ! a ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case rcl.changePolar of {
|
||||
False => t.s ++ p.s ++ rcl.pred ! a ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ rcl.pred ! a ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
} ;
|
||||
pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ;
|
||||
pred_tara = \\a,st => t.s ++ p.s ++ rcl.pred_tara ! a ! st ;
|
||||
missingSubj = rcl.missingSubj
|
||||
} ;
|
||||
|
||||
UseSlash t p clslash = {
|
||||
s = \\st => case t.a of {
|
||||
Simul => case clslash.changePolar of {
|
||||
False => t.s ++ p.s ++ clslash.s ! st ! t.t ! p.b ;
|
||||
True => t.s ++ p.s ++ clslash.s ! st ! t.t ! Neg
|
||||
} ;
|
||||
Anter => case t.t of {
|
||||
TPres => case clslash.changePolar of {
|
||||
False => t.s ++ p.s ++ clslash.s ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ clslash.s ! st ! TPast ! Neg
|
||||
} ;
|
||||
TPast => case clslash.changePolar of {
|
||||
False => t.s ++ p.s ++ clslash.s ! st ! TPast ! p.b ;
|
||||
True => t.s ++ p.s ++ clslash.s ! st ! TPast ! Neg
|
||||
} ;
|
||||
TFut => case clslash.changePolar of {
|
||||
False => t.s ++ p.s ++ clslash.s ! st ! TPres ! p.b ;
|
||||
True => t.s ++ p.s ++ clslash.s ! st ! TPres ! Neg
|
||||
}
|
||||
}
|
||||
} ;
|
||||
te = \\st => clslash.te ! st
|
||||
} ;
|
||||
|
||||
AdvS adv s = {
|
||||
s = \\part,st => adv.s ! st ++ s.s ! part ! st ;
|
||||
te = \\part,st => adv.s ! st ++ s.te ! part ! st ;
|
||||
tara = \\part,st => adv.s ! st ++ s.tara ! part ! st ;
|
||||
subj = \\part,st => adv.s ! st ++ s.subj ! part ! st ;
|
||||
pred = s.pred
|
||||
} ;
|
||||
|
||||
ExtAdvS adv s = {
|
||||
s = \\part,st => adv.s ! st ++ "," ++ s.s ! part ! st ;
|
||||
te = \\part,st => adv.s ! st ++ "," ++ s.te ! part ! st ;
|
||||
tara = \\part,st => adv.s ! st ++ "," ++ s.tara ! part ! st ;
|
||||
subj = \\part,st => adv.s ! st ++ "," ++ s.subj ! part ! st ;
|
||||
pred = s.pred
|
||||
} ;
|
||||
|
||||
SSubjS s1 subj s2 = case subj.when of {
|
||||
True => {
|
||||
s = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.s ! Ga ! st ;
|
||||
te = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.te ! Ga ! st ;
|
||||
tara = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.tara ! Ga ! st ;
|
||||
subj = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ;
|
||||
pred = s2.pred
|
||||
} ;
|
||||
False => {
|
||||
s = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.s ! Ga ! st ;
|
||||
te = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.te ! Ga ! st ;
|
||||
tara = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.tara ! Ga ! st ;
|
||||
subj = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.subj ! Ga ! st ;
|
||||
pred = s2.pred
|
||||
}
|
||||
} ;
|
||||
|
||||
RelS sent rs = case rs.missingSubj of {
|
||||
True => {
|
||||
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 ;
|
||||
tara = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
||||
"ことが" ++ rs.pred_tara ! Inanim ! st ;
|
||||
subj = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
||||
"ことが" ;
|
||||
pred = \\st => rs.pred ! 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
|
||||
} ;
|
||||
tara = table {
|
||||
Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
||||
"ことを" ++ rs.pred_tara ! Inanim ! st ;
|
||||
Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
||||
"ことを" ++ rs.pred_tara ! Inanim ! st
|
||||
} ;
|
||||
subj = \\part,st => rs.subj ! part ! st ;
|
||||
pred = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
|
||||
rs.pred ! Inanim ! st ;
|
||||
}
|
||||
} ;
|
||||
}
|
||||
108
lib/src/japanese/StructuralJap.gf
Normal file
108
lib/src/japanese/StructuralJap.gf
Normal file
@@ -0,0 +1,108 @@
|
||||
concrete StructuralJap of Structural = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
above_Prep = mkPrep "の上に" "上に" ; -- "noueni" "ueni"
|
||||
after_Prep = mkPrep "の後に" "後" ; -- "noatoni" "ato"
|
||||
all_Predet = ss "全部" ; -- "zembu"
|
||||
almost_AdA = ss "殆ど" ; -- "hotondo" ;
|
||||
although_Subj = {s = "のに" ; when = False} ;
|
||||
almost_AdN = {s = "殆ど" ; postposition = False} ;
|
||||
always_AdV = ss "いつも" ;
|
||||
and_Conj = mkConj "と" "そして" False ;
|
||||
because_Subj = {s = "から" ; when = False} ;
|
||||
before_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
|
||||
behind_Prep = mkPrep "後ろに" "後ろに" ; -- "ushironi" "ushironi"
|
||||
between_Prep = mkPrep "の間に" "間に" ; -- "noaidani" "aidani"
|
||||
by8agent_Prep = mkPrep "に" "" ;
|
||||
by8means_Prep = mkPrep "によって" "" ;
|
||||
but_PConj = ss "けれども" ;
|
||||
can8know_VV = mkVerb "でき" "でき" "できる" "できた" ** {sense = Abil} ;
|
||||
can_VV = can8know_VV ;
|
||||
during_Prep = mkPrep "の間に" "" ; -- "noaidani"
|
||||
every_Det = mkDet "各自の" Sg ; -- "kakujino"
|
||||
everybody_NP = mkNP "皆" True False Anim ; -- "minna"
|
||||
everything_NP = mkNP "全て" True False Inanim ; -- "subete"
|
||||
everywhere_Adv = mkAdv "どこでも" ; -- "dokodemo" ;
|
||||
first_Ord = {pred = \\st,t,p => "一番目" ++ mkCopula.s ! st ! t ! p ;
|
||||
attr = "一番目の" ; te = "一番目" ++ mkCopula.te ;
|
||||
tara = "一番目" ++ mkCopula.tara ; adv = "一番目"} ; -- "ichibanme"
|
||||
few_Det = mkDet "少数" Pl ; -- "shoosuuno"
|
||||
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 = ""} ;
|
||||
how8many_IDet = {s = "いくつ" ; n = Pl ; how8many = True ; inclCard = False} ;
|
||||
how8much_IAdv = {s = \\st => "いくら" ; particle = ""} ;
|
||||
i_Pron = mkPron ("僕"|"私") "私" True Anim ; -- "boku"|"watashi"
|
||||
in8front_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni"
|
||||
in_Prep = mkPrep "に" "" ;
|
||||
it_Pron = mkPron "それ" False Inanim ;
|
||||
less_CAdv = {s = "のほうが" ; compar = Less} ;
|
||||
many_Det = mkDet "多くの" Pl ; -- "ookuno"
|
||||
more_CAdv = {s = "より" ; compar = More} ; -- "yori"
|
||||
most_Predet = ss "ほとんどの" ;
|
||||
much_Det = mkDet "多くの" Sg ; -- "ookuno"
|
||||
must_VV = {s = (mkVerb "なら" "なり" "なる" "なった").s ; te = "なって" ;
|
||||
tara = "なったら" ; a_stem = "なら" ; i_stem = "なり" ; sense = Oblig} ;
|
||||
no_Phr = ss "いいえ" ;
|
||||
no_Utt = {s = \\st => "いいえ"} ;
|
||||
on_Prep = mkPrep "の上に" "" ;
|
||||
only_Predet = ss "ほんの" ;
|
||||
or_Conj = mkConj "か" "それとも" True ;
|
||||
otherwise_PConj = ss "そうしなければ" ;
|
||||
please_Voc = {s = table {Resp => "ください" ; Plain => "" } ; please = True} ;
|
||||
possess_Prep = mkPrep "の" "" ;
|
||||
quite_Adv = ss "可成" ;
|
||||
she_Pron = mkPron "彼女" False Anim ; -- "kanojo"
|
||||
so_AdA = ss "非常に" ; -- "hijooni"
|
||||
someSg_Det = mkDet "多少の" Sg ; -- "tashoono"
|
||||
somePl_Det = mkDet "いくつかの" Pl ;
|
||||
somebody_NP = mkNP "誰か" False False Anim ; -- "dareka"
|
||||
something_NP = mkNP "何か" False False Inanim ; -- "nanika"
|
||||
somewhere_Adv = mkAdv "どこかに" ;
|
||||
that_Quant = {s = \\st => "その"} ;
|
||||
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 => "この"} ;
|
||||
through_Prep = mkPrep "を通じて" "通じて" ; -- "otsuujite"
|
||||
to_Prep = mkPrep "に" "" ;
|
||||
too_AdA = ss "あまりにも" ;
|
||||
under_Prep = mkPrep "の下に" "下に" ; -- "noshitani"
|
||||
very_AdA = ss "とても" ;
|
||||
want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ;
|
||||
tara = "いったら" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ;
|
||||
we_Pron = mkPron "私達" False Anim ; -- "watashitachi"
|
||||
whatPl_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ; -- "nani"
|
||||
whatSg_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ;
|
||||
when_IAdv = {s = \\st => "いつ" ; particle = ""} ;
|
||||
when_Subj = {s = [] ; when = True} ;
|
||||
where_IAdv = {s = \\st => "どこ" ; particle = "で"} ;
|
||||
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")
|
||||
youPl_Pron = mkPron "あなた達" "あなた方" False Anim ; -- "anatatachi" "anatagata"
|
||||
youPol_Pron = mkPron "あなた" False Anim ;
|
||||
|
||||
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"
|
||||
}
|
||||
23
lib/src/japanese/TenseJap.gf
Normal file
23
lib/src/japanese/TenseJap.gf
Normal file
@@ -0,0 +1,23 @@
|
||||
concrete TenseJap of Tense = CatJap ** open ResJap, ParadigmsJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
TTAnt t a = {
|
||||
s = t.s ++ a.s ;
|
||||
t = t.t ;
|
||||
a = a.a
|
||||
} ;
|
||||
|
||||
PPos = {s = [] ; b = Pos} ;
|
||||
PNeg = {s = [] ; b = Neg} ;
|
||||
|
||||
TPres, TCond = {s = [] ; t = ResJap.TPres} ;
|
||||
TPast = {s = [] ; t = ResJap.TPast} ;
|
||||
TFut = {s = [] ; t = ResJap.TFut} ;
|
||||
|
||||
ASimul = {s = [] ; a = Simul} ;
|
||||
AAnter = {s = [] ; a = Anter} ;
|
||||
|
||||
}
|
||||
14
lib/src/japanese/TextJap.gf
Normal file
14
lib/src/japanese/TextJap.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete TextJap of Text = CatJap ** open ResJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
lin
|
||||
|
||||
TEmpty = ss "" ;
|
||||
|
||||
TFullStop phr txt = {s = phr.s ++ "." ++ txt.s} ;
|
||||
|
||||
TQuestMark phr txt = {s = phr.s ++ "?" ++ txt.s} ;
|
||||
|
||||
TExclMark phr txt = {s = phr.s ++ "!" ++ txt.s} ;
|
||||
}
|
||||
426
lib/src/japanese/VerbJap.gf
Normal file
426
lib/src/japanese/VerbJap.gf
Normal file
@@ -0,0 +1,426 @@
|
||||
concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => v.tara ;
|
||||
prep = [] ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
Oblig => {
|
||||
verb = \\a,st,t,p => vp.a_stem ! Anim ! st ++ "なければ" ++ v.s ! st ! t ! p ;
|
||||
te = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.te ;
|
||||
a_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.a_stem ;
|
||||
i_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.i_stem ;
|
||||
tara = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.tara ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
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 ;
|
||||
tara = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.tara ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
compar = NoCompar
|
||||
}
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => vs.tara ;
|
||||
prep = vs.prep ;
|
||||
obj = \\st => sent.s ! Ga ! Plain ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => vq.tara ;
|
||||
prep = vq.prep ;
|
||||
obj = \\st => qs.s ! Ga ! Plain ++ "こと" ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => va.tara ;
|
||||
prep = [] ;
|
||||
obj = \\st => ap.adv ! st ;
|
||||
prepositive = ap.prepositive ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
SlashV2a v2 = {
|
||||
s = \\st,t,p => v2.s ! st ! t ! p ;
|
||||
a_stem = v2.a_stem ;
|
||||
i_stem = v2.i_stem ;
|
||||
tara = v2.tara ;
|
||||
prep = v2.prep ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
te = v2.te ;
|
||||
v2vType = False ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
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 => "上げ"
|
||||
} ;
|
||||
tara = case np.Pron1Sg of {
|
||||
True => "呉れたら" ;
|
||||
False => "上げたら"
|
||||
} ;
|
||||
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 ;
|
||||
tara = v3.tara ;
|
||||
prep = v3.prep2 ;
|
||||
obj = \\st => np.s ! st ++ v3.prep1 ;
|
||||
prepositive = np.prepositive ;
|
||||
te = v3.te ;
|
||||
v2vType = False ;
|
||||
compar = NoCompar
|
||||
}
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ;
|
||||
prep = "に" ;
|
||||
obj = \\st => vp.obj ! st ++ vp.prep ;
|
||||
te = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ;
|
||||
prepositive = vp.prepositive ;
|
||||
v2vType = True ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
SlashV2S v2s s = {
|
||||
s = v2s.s ;
|
||||
a_stem = v2s.a_stem ;
|
||||
i_stem = v2s.i_stem ;
|
||||
tara = v2s.tara ;
|
||||
prep = "に" ;
|
||||
obj = \\st => s.s ! Ga ! Plain ++ "と" ;
|
||||
prepositive = \\st => [] ;
|
||||
te = v2s.te ;
|
||||
v2vType = False ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
SlashV2Q v2q qs = {
|
||||
s = v2q.s ;
|
||||
a_stem = v2q.a_stem ;
|
||||
i_stem = v2q.i_stem ;
|
||||
tara = v2q.tara ;
|
||||
prep = "に" ;
|
||||
obj = \\st => qs.s ! Ga ! Plain ++ "ことを" ;
|
||||
prepositive = \\st => [] ;
|
||||
te = v2q.te ;
|
||||
v2vType = True ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
SlashV2A v2a ap = {
|
||||
s = v2a.s ;
|
||||
a_stem = v2a.a_stem ;
|
||||
i_stem = v2a.i_stem ;
|
||||
tara = v2a.tara ;
|
||||
prep = "を" ;
|
||||
obj = ap.adv ;
|
||||
prepositive = ap.prepositive ;
|
||||
te = v2a.te ;
|
||||
v2vType = True ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
ComplSlash vpslash np = {
|
||||
verb = \\a,st,t,p => case np.changePolar of {
|
||||
True => vpslash.s ! st ! t ! Neg ;
|
||||
False => vpslash.s ! st ! t ! p
|
||||
} ;
|
||||
a_stem = \\a,st => vpslash.a_stem ;
|
||||
i_stem = \\a,st => vpslash.i_stem ;
|
||||
tara = \\a,st => vpslash.tara ;
|
||||
prep = case np.needPart of {
|
||||
True => case vpslash.v2vType of {
|
||||
True => [] ;
|
||||
False => vpslash.prep
|
||||
} ;
|
||||
False => []
|
||||
} ;
|
||||
obj = \\st => case vpslash.v2vType of {
|
||||
True => np.s ! st ++ vpslash.prep ++ vpslash.obj ! st ;
|
||||
False => vpslash.obj ! st ++ np.s ! st
|
||||
} ;
|
||||
te = \\a,st => vpslash.te ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
compar = vpslash.compar
|
||||
} ;
|
||||
|
||||
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
|
||||
} ;
|
||||
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
|
||||
} ;
|
||||
a_stem = [] ;
|
||||
i_stem = [] ;
|
||||
tara = case v.sense of {
|
||||
Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ;
|
||||
Oblig => vpslash.a_stem ++ "なければ" ++ v.tara ;
|
||||
Wish => vpslash.i_stem ++ "たがって" ++ v.tara
|
||||
} ;
|
||||
prep = vpslash.prep ;
|
||||
obj = vpslash.obj ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False ;
|
||||
compar = vpslash.compar
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ;
|
||||
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
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => vpslash.tara ;
|
||||
prep = vpslash.prep ;
|
||||
obj = \\st => "自分" ; -- "jibun"
|
||||
te = \\a,st => vpslash.te ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
compar = vpslash.compar
|
||||
} ;
|
||||
|
||||
UseComp comp = {
|
||||
verb = comp.verb ;
|
||||
te = comp.te ;
|
||||
a_stem = comp.a_stem ;
|
||||
i_stem = comp.i_stem ;
|
||||
tara = comp.tara ;
|
||||
prep = [] ;
|
||||
obj = comp.obj ;
|
||||
prepositive = comp.prepositive ;
|
||||
compar = comp.compar
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
tara = \\a,st => v2.pass_tara ;
|
||||
prep = [] ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
AdvVP vp adv = {
|
||||
verb = vp.verb ;
|
||||
te = vp.te ;
|
||||
a_stem = vp.a_stem ;
|
||||
i_stem = vp.i_stem ;
|
||||
tara = vp.tara ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => vp.obj ! st ;
|
||||
False => adv.s ! st ++ vp.obj ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
compar = adv.compar
|
||||
} ;
|
||||
|
||||
AdVVP adv vp = {
|
||||
verb = vp.verb ;
|
||||
te = vp.te ;
|
||||
a_stem = vp.a_stem ;
|
||||
i_stem = vp.i_stem ;
|
||||
tara = vp.tara ;
|
||||
prep = vp.prep ;
|
||||
obj = \\st => adv.s ++ vp.obj ! st ;
|
||||
prepositive = vp.prepositive ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
AdvVPSlash vpslash adv = {
|
||||
s = vpslash.s ;
|
||||
te = vpslash.te ;
|
||||
a_stem = vpslash.a_stem ;
|
||||
i_stem = vpslash.i_stem ;
|
||||
tara = vpslash.tara ;
|
||||
prep = vpslash.prep ;
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => vpslash.obj ! st ;
|
||||
False => adv.s ! st ++ vpslash.obj ! st
|
||||
} ;
|
||||
prepositive = \\st => case adv.prepositive of {
|
||||
True => adv.s ! st ;
|
||||
False => []
|
||||
} ;
|
||||
v2vType = False ;
|
||||
compar = adv.compar
|
||||
} ;
|
||||
|
||||
AdVVPSlash adv vpslash = {
|
||||
s = vpslash.s ;
|
||||
te = vpslash.te ;
|
||||
a_stem = vpslash.a_stem ;
|
||||
i_stem = vpslash.i_stem ;
|
||||
tara = vpslash.tara ;
|
||||
prep = vpslash.prep ;
|
||||
obj = \\st => adv.s ++ vpslash.obj ! st ;
|
||||
prepositive = vpslash.prepositive ;
|
||||
v2vType = False ;
|
||||
compar = vpslash.compar
|
||||
} ;
|
||||
|
||||
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!
|
||||
tara = \\a,st => ap.tara ! st ;
|
||||
obj = \\st => [] ;
|
||||
prepositive = ap.prepositive ;
|
||||
compar = ap.compar
|
||||
} ;
|
||||
|
||||
CompNP np = {
|
||||
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
|
||||
te = \\a,st => "だって" ;
|
||||
tara = \\a,st => "だったら" ;
|
||||
a_stem = \\a,st => "で" ;
|
||||
i_stem = \\a,st => "で" ; -- for wishes - not correct!
|
||||
obj = \\st => np.s ! st ;
|
||||
prepositive = np.prepositive ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
|
||||
CompAdv adv = {
|
||||
verb = mkExistV.verb ;
|
||||
te = mkExistV.te ;
|
||||
tara = mkExistV.tara ;
|
||||
a_stem = mkExistV.a_stem ;
|
||||
i_stem = mkExistV.i_stem ;
|
||||
obj = \\st => case adv.prepositive of {
|
||||
True => [] ;
|
||||
False => adv.s ! st
|
||||
} ;
|
||||
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 => "だって" ;
|
||||
tara = \\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
|
||||
} ;
|
||||
|
||||
UseCopula = {
|
||||
verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ;
|
||||
te = \\a,st => "だって" ;
|
||||
tara = \\a,st => "だったら" ;
|
||||
a_stem = \\a,st => "で" ;
|
||||
i_stem = \\a,st => "で" ; -- for wishes - not correct!
|
||||
obj = \\st => [] ;
|
||||
prepositive = \\st => [] ;
|
||||
prep = [] ;
|
||||
compar = NoCompar
|
||||
} ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user