mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-18 17:29:32 -06:00
435 lines
21 KiB
Plaintext
435 lines
21 KiB
Plaintext
concrete SentenceJpn of Sentence = CatJpn
|
|
** open ResJpn, ParadigmsJpn, Prelude in {
|
|
|
|
flags coding = utf8 ;
|
|
|
|
lin
|
|
|
|
PredVP np vp = case np.needPart of {
|
|
True => {
|
|
s = table {
|
|
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
|
|
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
|
|
} ;
|
|
te = table {
|
|
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
|
|
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
|
|
} ;
|
|
ba = table {
|
|
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
|
|
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
|
|
} ;
|
|
subj = 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.meaning ! np.anim ! st ! t ! p ;
|
|
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
|
|
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
|
|
changePolar = np.changePolar
|
|
} ;
|
|
False => {
|
|
s = table {
|
|
Wa => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
|
|
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
|
|
Ga => \\st,t,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++
|
|
vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p
|
|
} ;
|
|
te = table {
|
|
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
|
vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
|
|
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
|
vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p
|
|
} ;
|
|
ba = table {
|
|
Wa => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
|
vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
|
|
Ga => \\st,p => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++
|
|
vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p
|
|
} ;
|
|
subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ;
|
|
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.meaning ! np.anim ! st ! t ! p ;
|
|
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! np.meaning ! np.anim ! st ! p ;
|
|
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! np.meaning ! np.anim ! st ! p ;
|
|
changePolar = np.changePolar
|
|
}
|
|
} ;
|
|
|
|
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 ! SomeoneElse ! Inanim ! st ! t ! p ;
|
|
Ga => \\st,t,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
|
|
vp.verb ! SomeoneElse ! Inanim ! st ! t ! p
|
|
} ;
|
|
te = table {
|
|
Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
|
|
Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p
|
|
} ;
|
|
ba = table {
|
|
Wa => \\st,p => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
|
|
Ga => \\st,p => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p
|
|
} ;
|
|
subj = table {
|
|
Wa => \\st => sc.s ! Wa ! st ++ "ことは" ;
|
|
Ga => \\st => sc.s ! Ga ! st ++ "ことが"
|
|
} ;
|
|
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
|
|
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
|
|
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
|
|
changePolar = False
|
|
} ;
|
|
False => {
|
|
s = \\part,st,t,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++
|
|
vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
|
|
te = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
|
|
ba = \\part,st,p => sc.s ! part ! st ++ "ことが" ++ vp.obj ! st ++
|
|
vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
|
|
subj = \\part,st => sc.s ! part ! st ++ "ことが" ;
|
|
pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! SomeoneElse ! Inanim ! st ! t ! p ;
|
|
pred_te = \\st,p => vp.obj ! st ++ vp.prep ++ vp.te ! SomeoneElse ! Inanim ! st ! p ;
|
|
pred_ba = \\st,p => vp.obj ! st ++ vp.prep ++ vp.ba ! SomeoneElse ! Inanim ! st ! p ;
|
|
changePolar = False
|
|
}
|
|
} ;
|
|
|
|
SlashVP np vpslash = {
|
|
s = \\st,t,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vpslash.obj ! st ++ vpslash.s ! np.meaning ! Plain ! t ! p ;
|
|
te = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vpslash.obj ! st ++ vpslash.te ! np.meaning ! p ;
|
|
ba = \\st,p => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++
|
|
vpslash.obj ! st ++ vpslash.ba ! np.meaning ! p ;
|
|
subj = table {
|
|
Wa => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "は" ;
|
|
Ga => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が"
|
|
} ;
|
|
pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! np.meaning ! st ! t ! p ;
|
|
pred_te = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ! np.meaning ! p ;
|
|
pred_ba = \\st,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ! np.meaning ! p ;
|
|
changePolar = np.changePolar
|
|
} ;
|
|
|
|
AdvSlash clslash adv = {
|
|
s = \\st,t,p => adv.s ! st ++ clslash.s ! st ! t ! p ;
|
|
te = \\st,p => adv.s ! st ++ clslash.te ! st ! p ;
|
|
ba = \\st,p => adv.s ! st ++ clslash.ba ! st ! p ;
|
|
subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ;
|
|
pred = clslash.pred ;
|
|
pred_te = clslash.pred_te ;
|
|
pred_ba = clslash.pred_ba ;
|
|
changePolar = clslash.changePolar
|
|
} ;
|
|
|
|
SlashPrep cl prep = {
|
|
s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.null ;
|
|
te = \\st,p => cl.te ! Ga ! st ! p ++ prep.null ;
|
|
ba = \\st,p => cl.ba ! Ga ! st ! p ++ prep.null ;
|
|
subj = cl.subj ;
|
|
pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.null ;
|
|
pred_te = \\st,p => cl.pred_te ! st ! p ++ prep.null ;
|
|
pred_ba = \\st,p => cl.pred_ba ! st ! p ++ prep.null ;
|
|
changePolar = cl.changePolar
|
|
} ;
|
|
|
|
SlashVS np vs sslash = {
|
|
s = \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
|
|
vs.prep ++ vs.s ! Plain ! t ! p ;
|
|
te = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++
|
|
vs.te ! p ;
|
|
ba = \\st,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++
|
|
vs.prep ++ vs.ba ! p ;
|
|
subj = table {
|
|
Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ;
|
|
Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が"
|
|
} ;
|
|
pred = \\st,t,p => sslash.s ! st ++ vs.prep ++ vs.s ! st ! t ! p ;
|
|
pred_te = \\st,p => sslash.s ! st ++ vs.prep ++ vs.te ! p ;
|
|
pred_ba = \\st,p => sslash.s ! st ++ vs.prep ++ vs.ba ! p ;
|
|
changePolar = np.changePolar
|
|
} ;
|
|
|
|
ImpVP vp = {
|
|
s = table {
|
|
Resp => table {
|
|
Pos => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
|
|
vp.te ! SomeoneElse ! Anim ! Resp ! Pos ;
|
|
Neg => vp.prepositive ! Resp ++ vp.obj ! Resp ++ vp.prep ++
|
|
vp.verb ! SomeoneElse ! Anim ! Plain ! TPres ! Neg ++ "で"
|
|
} ;
|
|
Plain => table {
|
|
Pos => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
|
|
vp.i_stem ! SomeoneElse ! Anim ! Plain ++ "なさい" ;
|
|
Neg => vp.prepositive ! Plain ++ vp.obj ! Plain ++ vp.prep ++
|
|
vp.verb ! SomeoneElse ! 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 ! SomeoneElse ! 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 ! p.b ;
|
|
ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ! p.b ;
|
|
subj = cl.subj ;
|
|
pred = \\st => case t.a of {
|
|
Simul => case cl.changePolar of {
|
|
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
|
|
}
|
|
}
|
|
} ;
|
|
pred_te = \\st => cl.pred_te ! st ! p.b ;
|
|
pred_ba = \\st => cl.pred_ba ! st ! p.b
|
|
} ;
|
|
|
|
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
|
|
}
|
|
}
|
|
} ;
|
|
s_plain_pred = \\part,st => case t.a of {
|
|
Simul => case cl.changePolar of {
|
|
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! p.b ;
|
|
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! t.t ! Neg
|
|
} ;
|
|
Anter => case t.t of {
|
|
TPres => case cl.changePolar of {
|
|
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
|
|
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
|
|
} ;
|
|
TPast => case cl.changePolar of {
|
|
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! p.b ;
|
|
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPast ! Neg
|
|
} ;
|
|
TFut => case cl.changePolar of {
|
|
False => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! p.b ;
|
|
True => t.s ++ p.s ++ cl.s_plain_pred ! part ! st ! TPres ! Neg
|
|
}
|
|
}
|
|
}
|
|
} ;
|
|
|
|
UseRCl t p rcl = {
|
|
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 => t.s ++ p.s ++ rcl.te ! a ! st ! p.b ;
|
|
subj = rcl.subj ;
|
|
pred = \\a,st => case t.a of {
|
|
Simul => case rcl.changePolar of {
|
|
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 ! p.b ;
|
|
pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ! p.b ;
|
|
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 ! p.b
|
|
} ;
|
|
|
|
AdvS adv s = {
|
|
s = \\part,st => adv.s ! st ++ s.s ! part ! st ;
|
|
te = \\part,st => adv.s ! st ++ s.te ! part ! st ;
|
|
ba = \\part,st => adv.s ! st ++ s.ba ! part ! st ;
|
|
subj = \\part,st => adv.s ! st ++ s.subj ! part ! st ;
|
|
pred = s.pred ;
|
|
pred_te = s.pred_te ;
|
|
pred_ba = s.pred_ba
|
|
} ;
|
|
|
|
ExtAdvS adv s = {
|
|
s = \\part,st => adv.s ! st ++ "、" ++ s.s ! part ! st ;
|
|
te = \\part,st => adv.s ! st ++ "、" ++ s.te ! part ! st ;
|
|
ba = \\part,st => adv.s ! st ++ "、" ++ s.ba ! part ! st ;
|
|
subj = \\part,st => adv.s ! st ++ "、" ++ s.subj ! part ! st ;
|
|
pred = s.pred ;
|
|
pred_te = s.pred_te ;
|
|
pred_ba = s.pred_ba
|
|
} ;
|
|
|
|
SSubjS s1 subj s2 = case subj.type of {
|
|
If => {
|
|
s = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.s ! Ga ! st ;
|
|
te = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.te ! Ga ! st ;
|
|
ba = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.ba ! Ga ! st ;
|
|
subj = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ;
|
|
pred = s2.pred ;
|
|
pred_te = s2.pred_te ;
|
|
pred_ba = s2.pred_ba
|
|
} ;
|
|
That => {
|
|
s = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
|
|
subj.s ++ s1.pred ! st ;
|
|
te = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
|
|
subj.s ++ s1.pred_te ! st ;
|
|
ba = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++
|
|
subj.s ++ s1.pred_ba ! st ;
|
|
subj = \\part,st => s1.subj ! part ! st ;
|
|
pred = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred ! st ;
|
|
pred_te = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_te ! st ;
|
|
pred_ba = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_ba ! st
|
|
} ;
|
|
OtherSubj => {
|
|
s = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.s ! Ga ! st ;
|
|
te = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.te ! Ga ! st ;
|
|
ba = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.ba ! Ga ! st ;
|
|
subj = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.subj ! Ga ! st ;
|
|
pred = s2.pred ;
|
|
pred_te = s2.pred_te ;
|
|
pred_ba = s2.pred_ba
|
|
}
|
|
} ;
|
|
|
|
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 ;
|
|
ba = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
|
"ことが" ++ rs.pred_ba ! Inanim ! st ;
|
|
subj = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
|
"ことが" ;
|
|
pred = \\st => rs.pred ! Inanim ! st ;
|
|
pred_te = \\st => rs.pred_te ! Inanim ! st ;
|
|
pred_ba = \\st => rs.pred_ba ! Inanim ! st
|
|
} ;
|
|
False => {
|
|
s = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
|
"ことを" ++ rs.pred ! Inanim ! st ;
|
|
te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
|
"ことを" ++ rs.pred_te ! Inanim ! st ;
|
|
ba = \\part,st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++
|
|
"ことを" ++ rs.pred_ba ! Inanim ! st ;
|
|
subj = \\part,st => rs.subj ! part ! st ;
|
|
pred = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
|
|
rs.pred ! Inanim ! st ;
|
|
pred_te = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
|
|
rs.pred_te ! Inanim ! st ;
|
|
pred_ba = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++
|
|
rs.pred_ba ! Inanim ! st
|
|
}
|
|
} ;
|
|
}
|