diff --git a/lib/src/japanese/AdjectiveJap.gf b/lib/src/japanese/AdjectiveJap.gf index 9a4ec2e25..f37527dda 100644 --- a/lib/src/japanese/AdjectiveJap.gf +++ b/lib/src/japanese/AdjectiveJap.gf @@ -8,100 +8,110 @@ flags coding = utf8 ; pred = adj.pred ; attr = \\st => adj.attr ; te = \\st => adj.te ; - tara = \\st => adj.tara ; + ba = \\st => adj.ba ; adv = \\st => adj.adv ; prepositive = \\st => [] ; - compar = NoCompar + compar = NoCompar ; + dropNaEnging = \\st => adj.dropNaEnging } ; ComparA adj np = { pred = \\st,t,p => np.s ! st ++ "より" ++ adj.pred ! st ! t ! p ; attr = \\st => np.s ! st ++ "より" ++ adj.attr ; te = \\st => np.s ! st ++ "より" ++ adj.te ; - tara = \\st => np.s ! st ++ "より" ++ adj.tara ; + ba = \\st => np.s ! st ++ "より" ++ adj.ba ; adv = \\st => np.s ! st ++ "より" ++ adj.adv ; prepositive = np.prepositive ; - compar = More + compar = More ; + dropNaEnging = \\st => np.s ! st ++ "より" ++ adj.dropNaEnging ; } ; ComplA2 a2 np = { pred = \\st,t,p => np.s ! st ++ a2.prep ++ a2.pred ! st ! t ! p ; attr = \\st => np.s ! st ++ a2.prep ++ a2.attr ; te = \\st => np.s ! st ++ a2.prep ++ a2.te ; - tara = \\st => np.s ! st ++ a2.prep ++ a2.tara ; + ba = \\st => np.s ! st ++ a2.prep ++ a2.ba ; prepositive = np.prepositive ; adv = \\st => [] ; - compar = NoCompar + compar = NoCompar ; + dropNaEnging = \\st => np.s ! st ++ a2.prep ++ a2.dropNaEnging } ; ReflA2 a2 = { pred = \\st,t,p => "自分" ++ a2.prep ++ a2.pred ! st ! t ! p ; -- "jibun" attr = \\st => "自分" ++ a2.prep ++ a2.attr ; te = \\st => "自分" ++ a2.prep ++ a2.te ; - tara = \\st => "自分" ++ a2.prep ++ a2.tara ; + ba = \\st => "自分" ++ a2.prep ++ a2.ba ; adv = \\st => [] ; prepositive = \\st => [] ; - compar = NoCompar + compar = NoCompar ; + dropNaEnging = \\st => "自分" ++ a2.prep ++ a2.dropNaEnging } ; UseA2 a2 = { pred = a2.pred ; attr = \\st => a2.attr ; te = \\st => a2.te ; - tara = \\st => a2.tara ; + ba = \\st => a2.ba ; adv = \\st => [] ; prepositive = \\st => [] ; - compar = NoCompar + compar = NoCompar ; + dropNaEnging = \\st => a2.dropNaEnging } ; UseComparA adj = { pred = \\st,t,p => "もっと" ++ adj.pred ! st ! t ! p ; attr = \\st => "もっと" ++ adj.attr ; te = \\st => "もっと" ++ adj.te ; - tara = \\st => "もっと" ++ adj.tara ; + ba = \\st => "もっと" ++ adj.ba ; adv = \\st => "もっと" ++ adj.adv ; prepositive = \\st => [] ; - compar = NoCompar -- "motto" does not change the main NP's particle + compar = NoCompar ; -- "motto" does not change the main NP's particle + dropNaEnging = \\st => "もっと" ++ adj.dropNaEnging } ; CAdvAP cadv ap np = { pred = \\st,t,p => np.s ! st ++ cadv.s ++ ap.pred ! st ! t ! p ; attr = \\st => np.s ! st ++ cadv.s ++ ap.attr ! st ; te = \\st => np.s ! st ++ cadv.s ++ ap.te ! st ; - tara = \\st => np.s ! st ++ cadv.s ++ ap.tara ! st ; + ba = \\st => np.s ! st ++ cadv.s ++ ap.ba ! st ; adv = \\st => np.s ! st ++ cadv.s ++ ap.adv ! st ; prepositive = np.prepositive ; - compar = cadv.compar + compar = cadv.compar ; + dropNaEnging = \\st => np.s ! st ++ cadv.s ++ ap.dropNaEnging ! st } ; AdjOrd ord = { pred = ord.pred ; attr = \\st => ord.attr ; te = \\st => ord.te ; - tara = \\st => ord.tara ; + ba = \\st => ord.ba ; adv = \\st => ord.adv ; prepositive = \\st => [] ; - compar = NoCompar + compar = NoCompar ; + dropNaEnging = \\st => ord.dropNaEnging } ; SentAP ap sc = { pred = \\st,t,p => sc.s ! Ga ! st ++ "ことを" ++ ap.pred ! st ! t ! p ; attr = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.attr ! st ; te = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.te ! st ; - tara = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.tara ! st ; + ba = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.ba ! st ; adv = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.adv ! st ; prepositive = ap.prepositive ; - compar = ap.compar + compar = ap.compar ; + dropNaEnging = \\st => sc.s ! Ga ! st ++ "ことを" ++ ap.dropNaEnging ! st } ; AdAP ada ap = { pred = \\st,t,p => ada.s ++ ap.pred ! st ! t ! p ; attr = \\st => ada.s ++ ap.attr ! st ; te = \\st => ada.s ++ ap.te ! st ; - tara = \\st => ada.s ++ ap.tara ! st ; + ba = \\st => ada.s ++ ap.ba ! st ; adv = \\st => ada.s ++ ap.adv ! st ; prepositive = ap.prepositive ; - compar = ap.compar + compar = ap.compar ; + dropNaEnging = \\st => ada.s ++ ap.dropNaEnging ! st } ; AdvAP ap adv = { @@ -117,9 +127,9 @@ flags coding = utf8 ; True => ap.te ! st ; False => adv.s ! st ++ ap.te ! st } ; - tara = \\st => case adv.prepositive of { - True => ap.tara ! st ; - False => adv.s ! st ++ ap.tara ! st + ba = \\st => case adv.prepositive of { + True => ap.ba ! st ; + False => adv.s ! st ++ ap.ba ! st } ; adv = \\st => case adv.prepositive of { True => ap.adv ! st ; @@ -129,6 +139,10 @@ flags coding = utf8 ; True => adv.s ! st ; False => [] } ; - compar = ap.compar + compar = ap.compar ; + dropNaEnging = \\st => case adv.prepositive of { + True => ap.dropNaEnging ! st ; + False => adv.s ! st ++ ap.dropNaEnging ! st + } } ; } diff --git a/lib/src/japanese/AdverbJap.gf b/lib/src/japanese/AdverbJap.gf index e60e88019..b325d7b3f 100644 --- a/lib/src/japanese/AdverbJap.gf +++ b/lib/src/japanese/AdverbJap.gf @@ -21,9 +21,9 @@ flags coding = utf8 ; PositAdAAdj a = {s = a.adv} ; SubjS subj s = { - s = \\st => case subj.when of { - True => s.tara ! (Wa | Ga) ! st ; - False => s.s ! (Wa | Ga) ! st ++ subj.s + s = \\st => case subj.type of { + If => s.ba ! (Wa | Ga) ! st ++ subj.s ; + _ => s.s ! (Wa | Ga) ! st ++ subj.s } ; prepositive = True ; compar = NoCompar diff --git a/lib/src/japanese/CatJap.gf b/lib/src/japanese/CatJap.gf index 6a2f8b8bf..0e811b459 100644 --- a/lib/src/japanese/CatJap.gf +++ b/lib/src/japanese/CatJap.gf @@ -8,34 +8,21 @@ flags coding = utf8 ; lincat - S = {s : Particle => Style => Str ; - te : Particle => Style => Str ; - tara : Particle => Style => Str ; - subj : Particle => Style => Str ; - pred : Style => Str ; - } ; + S = {s, te, ba, subj : Particle => Style => Str ; pred, pred_te, pred_ba : Style => Str} ; QS = {s : Particle => Style => Str} ; - RS = {s : Animateness => Style => Str ; - te : Animateness => Style => Str ; - subj : Particle => Style => Str ; - pred : Animateness => Style => Str ; - pred_te : Animateness => Style => Str ; - pred_tara : Animateness => Style => Str ; - missingSubj : Bool} ; + RS = {s, te, pred, pred_te, pred_ba : Animateness => Style => Str ; + subj : Particle => Style => Str ; missingSubj : Bool} ; Cl = {s : Particle => Style => TTense => Polarity => Str ; - te : Particle => Style => Str ; - tara : Particle => Style => Str ; - subj : Particle => Style => Str ; + te, ba, subj : Particle => Style => Str ; pred : Style => TTense => Polarity => Str ; - pred_te : Style => Str ; - pred_tara : Style => Str ; + pred_te, pred_ba : Style => Str ; changePolar : Bool} ; ClSlash = {s : Style => TTense => Polarity => Str ; te : Style => Str ; subj : Particle => Style => Str ; pred : Style => TTense => Polarity => Str ; pred_te : Style => Str ; - pred_tara : Style => Str ; + pred_ba : Style => Str ; changePolar : Bool} ; SSlash = {s : Style => Str ; te : Style => Str} ; Imp = {s : Style => Polarity => Str} ; @@ -48,45 +35,44 @@ flags coding = utf8 ; te : Animateness => Style => Str ; subj : Particle => Style => Str ; pred : Animateness => Style => TTense => Polarity => Str ; - pred_te : Animateness => Style => Str ; - pred_tara : Animateness => Style => Str ; + pred_te, pred_ba : Animateness => Style => Str ; changePolar : Bool ; missingSubj : Bool} ; RP = {s : Style => Str ; prep : Str} ; VP = ResJap.VP ; -- {verb : Animateness => Style => TTense => Polarity => Str ; -- te : Animateness => Style => Str; a_stem : Animateness => Style => Str ; - -- i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ; + -- i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ; -- prep : Str ; obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ; Comp = {verb : Animateness => Style => TTense => Polarity => Str ; te : Animateness => Style => Str ; a_stem : Animateness => Style => Str ; - i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ; + i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ; obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ; VPSlash = Verb ** {prep : Str ; obj : Style => Str ; prepositive : Style => Str ; v2vType : Bool ; compar : ComparSense} ; AP = {pred : Style => TTense => Polarity => Str ; attr : Style => Str ; te : Style => Str ; - tara : Style => Str ; adv : Style => Str ; prepositive : Style => Str ; - compar : ComparSense} ; + ba : Style => Str ; adv : Style => Str ; dropNaEnging : Style => Str ; + prepositive : Style => Str ; compar : ComparSense} ; NP = ResJap.NP ; -- {s : Style => Str ; prepositive : Style => Str ; needPart : Bool ; -- changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ; CN = Noun ** {object : Style => Str ; prepositive : Style => Str ; hasAttr : Bool} ; - Pron = Pronoun ; -- {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ; - Det = Determiner ; -- {quant : Style => Str ; num : Str ; postpositive : Str ; - -- n : Number ; inclCard : Bool} ; - Predet = {s : Str} ; - Quant = {s : Style => Str} ; + Pron = Pronoun ; -- {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ; + Det = Determiner ; -- {quant : Style => Str ; num : Str ; postpositive : Str ; + -- n : Number ; inclCard : Bool ; sp : Style => Str ; no : Bool} ; + Predet = {s : Str ; not : Bool} ; + Quant = {s : Style => Str ; sp : Style => Str ; no : Bool} ; Num = ResJap.Num ; -- {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ; Card = {s : Str ; postpositive : Str ; n : Number} ; - Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ; - -- attr : Str; te : Str ; tara : Str ; adv : Str} ; + Ord = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr : Str ; + -- te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ; Numeral = {s : Str ; n : Number} ; Digits = {s : Str ; n : Number} ; - Conj = Conjunction ; - Subj = {s : Str ; when : Bool} ; + Conj = Conjunction ; -- {s : Str ; null : Str ; type : ConjType} ; + Subj = Subjunction ; -- {s : Str ; type : SubjType} ; Prep = Preposition ; -- {s : Str ; relPrep : Str} ; V = Verb ; -- {s : Style => TTense => Polarity => Str ; te : Str ; - -- a_stem : Str ; i_stem : Str ; tara : Str} + -- a_stem : Str ; i_stem : Str ; ba : Str} V2 = Verb ** {pass: Style => TTense => Polarity => Str ; pass_te : Str ; pass_a_stem : Str ; - pass_i_stem : Str ; pass_tara : Str ; prep : Str} ; + pass_i_stem : Str ; pass_ba : Str ; prep : Str} ; V3 = Verb ** {prep1 : Str ; prep2 : Str ; give : Bool} ; -- "give" is a special case VV = Verb ** {sense : ModSense} ; VS = Verb ** {prep : Str} ; @@ -96,8 +82,8 @@ flags coding = utf8 ; V2S = Verb ; V2Q = Verb ; V2A = Verb ; - A = Adj ; -- {pred : Style => TTense => Polarity => Str ; - -- attr : Str; te : Str ; tara : Str ; adv : Str} ; + A = Adj ; -- {pred : Style => TTense => Polarity => Str ; attr : Str; + -- te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ; A2 = Adj2 ; -- Adj ** {prep : Str} ; N = Noun ; -- {s : Number => Style => Str ; anim : Animateness ; -- counter : Str ; counterReplace : Bool} ; diff --git a/lib/src/japanese/ConjunctionJap.gf b/lib/src/japanese/ConjunctionJap.gf new file mode 100644 index 000000000..3eb55230d --- /dev/null +++ b/lib/src/japanese/ConjunctionJap.gf @@ -0,0 +1,354 @@ +concrete ConjunctionJap of Conjunction = CatJap ** open ResJap, Prelude in { + + flags coding = utf8 ; + + lin + + ConjS conj s = case conj.type of { + (And | Both) => { + s = \\part,st => conj.null ++ s.and ! part ! st ; + te = \\part,st => conj.null ++ s.teAnd ! part ! st ; + ba = \\part,st => conj.null ++ s.baAnd ! part ! st ; + subj = \\part,st => conj.null ++ s.subj ! part ! st ; + pred = s.predAnd ; + pred_te = s.pred_teAnd ; + pred_ba = s.pred_baAnd + } ; + Or => { + s = \\part,st => conj.null ++ s.or ! part ! st ; + te = \\part,st => conj.null ++ s.teOr ! part ! st ; + ba = \\part,st => conj.null ++ s.baOr ! part ! st ; + subj = \\part,st => conj.null ++ s.subj ! part ! st ; + pred = s.predOr ; + pred_te = s.pred_teOr ; + pred_ba = s.pred_baOr + } + } ; + + ConjRS conj rs = case conj.type of { + (And | Both) => { + s = \\a,st => conj.null ++ rs.and ! a ! st ; + te = \\a,st => conj.null ++ rs.teAnd ! a ! st ; + pred = \\a,st => conj.null ++ rs.predAnd ! a ! st ; + pred_te = \\a,st => conj.null ++ rs.pred_teAnd ! a ! st ; + pred_ba = \\a,st => conj.null ++ rs.pred_baAnd ! a ! st ; + subj = rs.subj ; + missingSubj = rs.missingSubj + } ; + Or => { + s = \\a,st => conj.null ++ rs.or ! a ! st ; + te = \\a,st => conj.null ++ rs.teOr ! a ! st ; + pred = \\a,st => conj.null ++ rs.predOr ! a ! st ; + pred_te = \\a,st => conj.null ++ rs.pred_teOr ! a ! st ; + pred_ba = \\a,st => conj.null ++ rs.pred_baOr ! a ! st ; + subj = rs.subj ; + missingSubj = rs.missingSubj + } + } ; + + ConjAP conj ap = case conj.type of { + (And | Both) => { + pred = \\st,t,p => conj.null ++ ap.s1and ! st ++ ap.s2pred ! st ! t ! p ; + attr = \\st => conj.null ++ ap.s1and ! st ++ ap.s2attr ! st ; + te = \\st => conj.null ++ ap.s1and ! st ++ ap.s2te ! st ; + ba = \\st => conj.null ++ ap.s1and ! st ++ ap.s2ba ! st ; + adv = \\st => conj.null ++ ap.s1and ! st ++ ap.s2adv ! st ; + dropNaEnging = \\st => conj.null ++ ap.s1and ! st ++ ap.s2dropNaEnging ! st ; + prepositive = ap.prepositive ; + compar = ap.compar + } ; + Or => { + pred = \\st,t,p => conj.null ++ ap.s1or ! st ++ ap.s2pred ! st ! t ! p ; + attr = \\st => conj.null ++ ap.s1or ! st ++ ap.s2attr ! st ; + te = \\st => conj.null ++ ap.s1or ! st ++ ap.s2te ! st ; + ba = \\st => conj.null ++ ap.s1or ! st ++ ap.s2ba ! st ; + adv = \\st => conj.null ++ ap.s1or ! st ++ ap.s2adv ! st ; + dropNaEnging = \\st => conj.null ++ ap.s1or ! st ++ ap.s2dropNaEnging ! st ; + prepositive = ap.prepositive ; + compar = ap.compar + } + } ; + + ConjAdv conj adv = { + s = \\st => case conj.type of { + (And | Both) => conj.null ++ adv.and ! st ; + Or => conj.null ++ adv.or ! st + } ; + prepositive = adv.prepositive ; + compar = adv.compar + } ; + + ConjNP conj np = { + s = \\st => case conj.type of { + And => conj.null ++ np.and ! st ; + Or => conj.null ++ np.or ! st ; + Both => conj.null ++ np.both ! st + } ; + prepositive = np.prepositive ; + needPart = case conj.type of { + (And|Or) => np.needPart ; + Both => False + } ; + changePolar = np.changePolar ; + Pron1Sg = np.Pron1Sg ; + anim = np.anim + } ; + + ConjIAdv conj iadv = { + s = \\st => conj.null ++ iadv.s ! st ; + particle = iadv.particle + } ; + + ConjCN conj cn = { + s = \\n,st => case conj.type of { + (And|Both) => conj.null ++ cn.and ! n ! st ; + Or => conj.null ++ cn.or ! n ! st + } ; + anim = cn.anim ; + counter = cn.counter ; + counterReplace = cn.counterReplace ; + object = cn.object ; + prepositive = cn.prepositive ; + hasAttr = cn.hasAttr + } ; + + BaseS x y = { + and = \\part,st => x.s ! part ! st ++ "," ++ "そして" ++ y.s ! Ga ! st ; + or = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.s ! Ga ! st ; + teAnd = \\part,st => x.te ! part ! st ++ "," ++ y.te ! Ga ! st ; + teOr = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.te ! Ga ! st ; + baAnd = \\part,st => x.ba ! part ! st ++ "," ++ y.ba ! Ga ! st ; + baOr = \\part,st => x.s ! part ! st ++ "," ++ "それとも" ++ y.ba ! Ga ! st ; + subj = \\part,st => x.subj ! part ! st ; + predAnd = \\st => x.pred ! st ++ "," ++ "そして" ++ y.s ! Ga ! st ; + predOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.s ! Ga ! st ; + pred_teAnd = \\st => x.pred_te ! st ++ "," ++ y.te ! Ga ! st ; + pred_teOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.te ! Ga ! st ; + pred_baAnd = \\st => x.pred_ba ! st ++ "," ++ y.ba ! Ga ! st ; + pred_baOr = \\st => x.pred ! st ++ "," ++ "それとも" ++ y.ba ! Ga ! st ; + } ; + + ConsS x xs = { + and = \\part,st => xs.and ! part ! st ++ "," ++ "そして" ++ x.s ! Ga ! st ; + or = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.s ! Ga ! st ; + teAnd = \\part,st => xs.teAnd ! part ! st ++ "," ++ x.te ! Ga ! st ; + teOr = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.te ! Ga ! st ; + baAnd = \\part,st => xs.baAnd ! part ! st ++ "," ++ x.ba ! Ga ! st ; + baOr = \\part,st => xs.or ! part ! st ++ "," ++ "それとも" ++ x.ba ! Ga ! st ; + subj = xs.subj ; + predAnd = \\st => xs.predAnd ! st ++ "," ++ "そして" ++ x.s ! Ga ! st ; + predOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.s ! Ga ! st ; + pred_teAnd = \\st => xs.pred_teAnd ! st ++ "," ++ x.te ! Ga ! st ; + pred_teOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.te ! Ga ! st ; + pred_baAnd = \\st => xs.pred_baAnd ! st ++ "," ++ x.ba ! Ga ! st ; + pred_baOr = \\st => xs.predOr ! st ++ "," ++ "それとも" ++ x.ba ! Ga ! st ; + } ; + + BaseRS x y = { + and = \\a,st => x.te ! a ! st ++ "," ++ y.s ! a ! st ; + or = \\a,st => case of { + => x.s ! a ! st ++ "か" ++ "," ++ y.s ! a ! st ; + _ => x.te ! a ! st ++ "," ++ "あるいは" ++ y.s ! a ! st + } ; + teAnd = \\a,st => x.te ! a ! st ++ "," ++ y.te ! a ! st ; + teOr = \\a,st => x.te ! a ! st ++ "," ++ "あるいは" ++ y.te ! a ! st ; + predAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.s ! a ! st ; + predOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.s ! a ! st ; + pred_teAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.te ! a ! st ; + pred_teOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.te ! a ! st ; + pred_baAnd = \\a,st => x.pred_te ! a ! st ++ "," ++ y.subj ! Ga ! st ++ + y.pred_ba ! a ! st ; + pred_baOr = \\a,st => x.pred_te ! a ! st ++ "," ++ "あるいは" ++ y.subj ! Ga ! st ++ + y.pred_ba ! a ! st ; + subj = x.subj ; + missingSubj = x.missingSubj + } ; + + ConsRS x xs = { + and = \\a,st => xs.teAnd ! a ! st ++ "," ++ x.s ! a ! st ; + or = \\a,st => case of { + => xs.teOr ! a ! st ++ "か" ++ "," ++ x.s ! a ! st ; + _ => xs.teOr ! a ! st ++ "," ++ "あるいは" ++ x.s ! a ! st + } ; + teAnd = \\a,st => xs.teAnd ! a ! st ++ "," ++ x.te ! a ! st ; + teOr = \\a,st => xs.teOr ! a ! st ++ "," ++ "あるいは" ++ x.te ! a ! st ; + predAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.s ! a ! st ; + predOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.s ! a ! st ; + pred_teAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.te ! a ! st ; + pred_teOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.te ! a ! st ; + pred_baAnd = \\a,st => xs.pred_teAnd ! a ! st ++ "," ++ x.subj ! Ga ! st ++ + x.pred_ba ! a ! st ; + pred_baOr = \\a,st => xs.pred_teOr ! a ! st ++ "," ++ "あるいは" ++ x.subj ! Ga ! st ++ + x.pred_ba ! a ! st ; + subj = xs.subj ; + missingSubj = xs.missingSubj + } ; + + BaseAdv x y = { + and = \\st => case of { + => x.s ! st ++ y.s ! st ; + _ => x.s ! st ++ "," ++ y.s ! st + } ; + or = \\st => case of { + => x.s ! st ++ "か" ++ y.s ! st ; + _ => x.s ! st ++ "," ++ "あるいは" ++ y.s ! st + } ; + prepositive = case of { + => False ; + _ => True + } ; + compar = case of { + => NoCompar ; + ( | <_, More>) => More ; + _ => Less + } + } ; + + ConsAdv x xs = { + and = \\st => case of { + => xs.and ! st ++ x.s ! st ; + _ => xs.and ! st ++ "," ++ x.s ! st + } ; + or = \\st => case of { + => xs.or ! st ++ "か" ++ x.s ! st ; + _ => xs.or ! st ++ "," ++ "あるいは" ++ x.s ! st + } ; + prepositive = case of { + => False ; + _ => True + } ; + compar = case of { + => NoCompar ; + ( | <_, More>) => More ; + _ => Less + } + } ; + + BaseNP x y = { + and = \\st => x.s ! st ++ "と" ++ y.s ! st ; + or = \\st => x.s ! st ++ "か" ++ y.s ! st ; + both = \\st => x.s ! st ++ "も" ++ y.s ! st ++ "も" ; + prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ; + needPart = case of { + => True ; + _ => False + } ; + changePolar = case of { + => False ; + _ => True + } ; + Pron1Sg = False ; + anim = case of { + => Inanim ; + _ => Anim + } + } ; + + ConsNP x xs = { + and = \\st => x.s ! st ++ "と" ++ xs.and ! st ; + or = \\st => x.s ! st ++ "か" ++ xs.or ! st ; + both = \\st => x.s ! st ++ "も" ++ xs.both ! st ; + prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ; + needPart = case of { + => True ; + _ => False + } ; + changePolar = case of { + => False ; + _ => True + } ; + Pron1Sg = False ; + anim = case of { + => Inanim ; + _ => Anim + } + } ; + + BaseAP x y = { + s1and = x.te ; + s1or = \\st => x.dropNaEnging ! st ++ "か" ; + s2pred = y.pred ; + s2attr = y.attr ; + s2te = y.te ; + s2ba = y.ba ; + s2adv = y.adv ; + s2dropNaEnging = y.dropNaEnging ; + prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ; + compar = y.compar + } ; + + ConsAP x xs = { + s1and = \\st => xs.s1and ! st ++ xs.s2te ! st ; + s1or = \\st => xs.s1or ! st ++ xs.s2dropNaEnging ! st ++ "か" ; + s2pred = x.pred ; + s2attr = x.attr ; + s2te = x.te ; + s2ba = x.ba ; + s2adv = x.adv ; + s2dropNaEnging = x.dropNaEnging ; + prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ; + compar = x.compar + } ; + + BaseIAdv x y = { + s = \\st => x.s ! st ++ x.particle ++ y.s ! st ; + particle = y.particle + } ; + + ConsIAdv x xs = { + s = \\st => x.s ! st ++ x.particle ++ xs.s ! st ; + particle = xs.particle + } ; + + BaseCN x y = { + and = \\n,st => x.s ! n ! st ++ "と" ++ y.object ! st ++ y.s ! n ! st ; + or = \\n,st => x.s ! n ! st ++ "か" ++ y.object ! st ++ y.s ! n ! st ; + anim = case of { + => Inanim ; + _ => Anim + } ; + counter = y.counter ; + counterReplace = y.counterReplace ; + object = x.object ; + prepositive = \\st => x.prepositive ! st ++ y.prepositive ! st ; + hasAttr = x.hasAttr + } ; + + ConsCN x xs = { + and = \\n,st => x.s ! n ! st ++ "と" ++ xs.object ! st ++ xs.and ! n ! st ; + or = \\n,st => x.s ! n ! st ++ "か" ++ xs.object ! st ++ xs.or ! n ! st ; + anim = case of { + => Inanim ; + _ => Anim + } ; + counter = xs.counter ; + counterReplace = xs.counterReplace ; + object = x.object ; + prepositive = \\st => x.prepositive ! st ++ xs.prepositive ! st ; + hasAttr = x.hasAttr + } ; + + lincat + + [S] = {and, or, teAnd, teOr, baAnd, baOr, subj : Particle => Style => Str ; + predAnd, predOr, pred_teAnd, pred_teOr, pred_baAnd, pred_baOr : Style => Str} ; + + [RS] = {and, or, teAnd, teOr, predAnd, predOr, pred_teAnd, pred_teOr, pred_baAnd, + pred_baOr : Animateness => Style => Str ; subj : Particle => Style => Str ; + missingSubj : Bool} ; + + [Adv] = {and, or : Style => Str ; prepositive : Bool ; compar : ComparSense} ; + + [NP] = {and, or, both : Style => Str ; prepositive : Style => Str ; + needPart : Bool ; changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ; + + [AP] = {s1and, s1or : Style => Str ; s2pred : Style => TTense => Polarity => Str ; + s2attr, s2te, s2ba, s2adv, s2dropNaEnging, prepositive : Style => Str ; + compar : ComparSense} ; + + [IAdv] = {s : Style => Str ; particle : Str} ; + + [CN] = {and, or : Number => Style => Str ; anim : Animateness ; counter : Str ; + counterReplace : Bool ; object : Style => Str ; prepositive : Style => Str ; + hasAttr : Bool} ; +} diff --git a/lib/src/japanese/GrammarJap.gf b/lib/src/japanese/GrammarJap.gf index 5319cd03a..2f4543a3d 100644 --- a/lib/src/japanese/GrammarJap.gf +++ b/lib/src/japanese/GrammarJap.gf @@ -7,7 +7,7 @@ concrete GrammarJap of Grammar = SentenceJap, QuestionJap, RelativeJap, --- ConjunctionJap, + ConjunctionJap, PhraseJap, TextJap, StructuralJap, diff --git a/lib/src/japanese/IdiomJap.gf b/lib/src/japanese/IdiomJap.gf index 50fb5021a..ff8a473ba 100644 --- a/lib/src/japanese/IdiomJap.gf +++ b/lib/src/japanese/IdiomJap.gf @@ -18,11 +18,11 @@ flags coding = utf8 ; Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st } ; - tara = table { + ba = table { Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st ; + vp.prep ++ vp.ba ! Inanim ! st ; Ga => \\st => vp.prepositive ! st ++ "これのほうが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st + vp.prep ++ vp.ba ! Inanim ! st } ; subj = table { Wa => \\st => vp.prepositive ! st ++ "これは" ; @@ -30,7 +30,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ; changePolar = False } ; Less => { @@ -38,12 +38,12 @@ flags coding = utf8 ; vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; te = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - tara = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st ; + ba = \\part,st => vp.prepositive ! st ++ "これより" ++ vp.obj ! st ++ + vp.prep ++ vp.ba ! Inanim ! st ; subj = \\part,st => vp.prepositive ! st ++ "これより" ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ; changePolar = False } ; NoCompar => { @@ -59,11 +59,11 @@ flags coding = utf8 ; Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st } ; - tara = table { + ba = table { Wa => \\st => vp.prepositive ! st ++ "これは" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st ; + vp.prep ++ vp.ba ! Inanim ! st ; Ga => \\st => vp.prepositive ! st ++ "これが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st + vp.prep ++ vp.ba ! Inanim ! st } ; subj = table { Wa => \\st => vp.prepositive ! st ++ "これは" ; @@ -71,7 +71,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ; changePolar = False } } ; @@ -79,7 +79,7 @@ flags coding = utf8 ; GenericCl vp = case vp.compar of { More => { s = table { - Wa => \\st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ -- "dareka" + Wa => \\st,t,p => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ; Ga => \\st,t,p => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p @@ -90,11 +90,11 @@ flags coding = utf8 ; Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st } ; - tara = table { + ba = table { Wa => \\st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Anim ! st ; + vp.prep ++ vp.ba ! Anim ! st ; Ga => \\st => vp.prepositive ! st ++ "誰かのほうが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Anim ! st + vp.prep ++ vp.ba ! Anim ! st } ; subj = table { Wa => \\st => vp.prepositive ! st ++ "誰か" ; @@ -102,7 +102,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ; changePolar = False } ; Less => { @@ -110,12 +110,12 @@ flags coding = utf8 ; vp.prep ++ vp.verb ! Anim ! st ! t ! p ; te = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ; - tara = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Anim ! st ; + ba = \\part,st => vp.prepositive ! st ++ "誰かより" ++ vp.obj ! st ++ + vp.prep ++ vp.ba ! Anim ! st ; subj = \\part,st => vp.prepositive ! st ++ "誰かより" ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ; changePolar = False } ; NoCompar => { @@ -123,12 +123,12 @@ flags coding = utf8 ; vp.prep ++ vp.verb ! Anim ! st ! t ! p ; te = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ; - tara = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Anim ! st ; + ba = \\part,st => vp.prepositive ! st ++ "誰か" ++ vp.obj ! st ++ + vp.prep ++ vp.ba ! Anim ! st ; subj = \\part,st => vp.prepositive ! st ++ "誰か" ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Anim ! st ; changePolar = False } } ; @@ -139,26 +139,27 @@ flags coding = utf8 ; mkCopula.s ! st ! t ! p ; te = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++ rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "だって" ; - tara = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++ - rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "だったら" ; + ba = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++ + rs.pred ! np.anim ! Plain ++ "のは" ++ np.s ! st ++ "であれば" ; subj = \\part,st => np.prepositive ! st ++ rs.subj ! Ga ! st ++ rs.pred ! np.anim ! Plain ++ "のは" ; pred = \\st,t,p => np.s ! st ++ mkCopula.s ! st ! t ! p ; pred_te = \\st => np.s ! st ++ "だって" ; - pred_tara = \\st => np.s ! st ++ "だったら" ; + pred_ba = \\st => np.s ! st ++ "であれば" ; changePolar = np.changePolar } ; CleftAdv adv s = { s = \\part,st,t,p => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ mkCopula.s ! st ! t ! p ; - te = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ "だって" ; - tara = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ - "だったら" ; + te = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ + "だって" ; + ba = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ++ adv.s ! st ++ + "であれば" ; subj = \\part,st => s.subj ! Ga ! st ++ s.pred ! Plain ++ "のは" ; pred = \\st,t,p => adv.s ! st ++ mkCopula.s ! st ! t ! p ; pred_te = \\st => adv.s ! st ++ "だって" ; - pred_tara = \\st => adv.s ! st ++ "だったら" ; + pred_ba = \\st => adv.s ! st ++ "であれば" ; changePolar = False } ; @@ -174,9 +175,9 @@ flags coding = utf8 ; Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.te ! np.anim ! st ; Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.te ! np.anim ! st } ; - tara = table { - Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.tara ! np.anim ! st ; - Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.tara ! np.anim ! st + ba = table { + Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ++ mkExistV.ba ! np.anim ! st ; + Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ mkExistV.ba ! np.anim ! st } ; subj = table { Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ; @@ -184,18 +185,18 @@ flags coding = utf8 ; } ; pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ; pred_te = \\st => mkExistV.te ! np.anim ! st ; - pred_tara = \\st => mkExistV.tara ! np.anim ! st ; + pred_ba = \\st => mkExistV.ba ! np.anim ! st ; changePolar = np.changePolar } ; False => { s = \\part,st,t,p => np.prepositive ! st ++ np.s ! st ++ mkExistV.verb ! np.anim ! st ! t ! p ; te = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.te ! np.anim ! st ; - tara = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.tara ! np.anim ! st ; + ba = \\part,st => np.prepositive ! st ++ np.s ! st ++ mkExistV.ba ! np.anim ! st ; subj = \\part,st => np.prepositive ! st ++ np.s ! st ; pred = \\st,t,p => mkExistV.verb ! np.anim ! st ! t ! p ; pred_te = \\st => mkExistV.te ! np.anim ! st ; - pred_tara = \\st => mkExistV.tara ! np.anim ! st ; + pred_ba = \\st => mkExistV.ba ! np.anim ! st ; changePolar = np.changePolar } } ; @@ -210,7 +211,7 @@ flags coding = utf8 ; te = \\a,st => vp.te ! a ! st ++ "いて" ; a_stem = \\a,st => vp.te ! a ! st ++ "い" ; i_stem = \\a,st => vp.te ! a ! st ++ "い" ; - tara = \\a,st => vp.te ! a ! st ++ "いたら" ; + ba = \\a,st => vp.te ! a ! st ++ "いれば" ; prep = vp.prep ; obj = vp.obj ; prepositive = vp.prepositive ; diff --git a/lib/src/japanese/LangJap.gf b/lib/src/japanese/LangJap.gf index 113a1e0c0..185b05ddc 100644 --- a/lib/src/japanese/LangJap.gf +++ b/lib/src/japanese/LangJap.gf @@ -1,4 +1,4 @@ ---# -path=.:../common:../abstract +--# -path=.:../abstract:../common:../prelude concrete LangJap of Lang = GrammarJap, diff --git a/lib/src/japanese/NounJap.gf b/lib/src/japanese/NounJap.gf index dfedf447e..afd13346a 100644 --- a/lib/src/japanese/NounJap.gf +++ b/lib/src/japanese/NounJap.gf @@ -15,7 +15,10 @@ flags coding = utf8 ; } ; prepositive = cn.prepositive ; needPart = True ; - changePolar = False ; + changePolar = case det.no of { + True => True ; + False => False + } ; Pron1Sg = False ; anim = cn.anim } ; @@ -42,7 +45,10 @@ flags coding = utf8 ; s = \\st => p.s ++ np.s ! st ; prepositive = np.prepositive ; needPart = np.needPart ; - changePolar = np.changePolar ; + changePolar = case p.not of { + True => True ; + False => np.changePolar + } ; Pron1Sg = np.Pron1Sg ; anim = np.anim } ; @@ -81,13 +87,13 @@ flags coding = utf8 ; } ; DetNP det = { - s = \\st => case det.inclCard of { - True => det.quant ! st ++ det.num ++ "つ" ++ det.postpositive ; - False => det.quant ! st ++ det.num - } ; + s = det.sp ; prepositive = \\st => [] ; needPart = True ; - changePolar = False ; + changePolar = case det.no of { + True => True ; + False => False + } ; Pron1Sg = False ; anim = Inanim -- not always, depends on the context } ; @@ -97,7 +103,12 @@ flags coding = utf8 ; postpositive = num.postpositive ; num = num.s ; n = num.n ; - inclCard = num.inclCard + inclCard = num.inclCard ; + sp = \\st => case num.inclCard of { + True => quant.s ! st ++ num.s ++ "つ" ++ num.postpositive ; + False => quant.sp ! st ++ num.s + } ; + no = quant.no } ; DetQuantOrd quant num ord = { @@ -105,7 +116,12 @@ flags coding = utf8 ; postpositive = num.postpositive ; num = num.s ; n = num.n ; - inclCard = num.inclCard + inclCard = num.inclCard ; + sp = \\st => case num.inclCard of { + True => quant.s ! st ++ ord.attr ++ num.s ++ "つ" ++ num.postpositive ; + False => quant.s ! st ++ ord.attr ++ num.s + } ; + no = quant.no } ; NumSg = mkNum "" Sg False ; @@ -133,31 +149,34 @@ flags coding = utf8 ; OrdDigits d = { pred = \\st,t,p => d.s ++ "番目" ++ mkCopula.s ! st ! t ! p ; -- "banme" - attr = d.s ++ "番目の" ; + attr = d.s ++ "番目の" ; te = d.s ++ "番目" ++ mkCopula.te ; - tara = d.s ++ "番目" ++ mkCopula.tara ; - adv = d.s ++ "番目" + ba = d.s ++ "番目" ++ mkCopula.ba ; + adv = d.s ++ "番目" ; + dropNaEnging = d.s ++ "番目の" } ; OrdNumeral num = { pred = \\st,t,p => num.s ++ "番目" ++ mkCopula.s ! st ! t ! p ; attr = num.s ++ "番目の" ; te = num.s ++ "番目" ++ mkCopula.te ; - tara = num.s ++ "番目" ++ mkCopula.tara ; - adv = num.s ++ "番目" + ba = num.s ++ "番目" ++ mkCopula.ba ; + adv = num.s ++ "番目" ; + dropNaEnging = num.s ++ "番目の" } ; OrdSuperl a = { pred = \\st,t,p => "一番" ++ a.pred ! st ! t ! p ; -- "ichiban" attr = "一番" ++ a.attr ; te = "一番" ++ a.te ; - tara = "一番" ++ a.tara ; - adv = "一番" ++ a.adv + ba = "一番" ++ a.ba ; + adv = "一番" ++ a.adv ; + dropNaEnging = "一番" ++ a.dropNaEnging } ; - IndefArt = {s = \\st => ""} ; + IndefArt = {s = \\st => "" ; sp = \\st => "何か" ; no = False} ; - DefArt = {s = \\st => ""} ; + DefArt = {s = \\st => "" ; sp = \\st => "これ" ; no = False} ; MassNP cn = { s = \\st => cn.object ! st ++ cn.s ! Pl ! st ; @@ -169,7 +188,8 @@ flags coding = utf8 ; } ; PossPron pron = { - s = \\st => pron.s ! st ++ "の" ; + s, sp = \\st => pron.s ! st ++ "の" ; + no = False } ; UseN n = { diff --git a/lib/src/japanese/PhraseJap.gf b/lib/src/japanese/PhraseJap.gf index e992cc1a5..6ccc094d4 100644 --- a/lib/src/japanese/PhraseJap.gf +++ b/lib/src/japanese/PhraseJap.gf @@ -44,7 +44,7 @@ flags coding = utf8 ; NoPConj = ss "" ; - PConjConj conj = {s = conj.pconj} ; + PConjConj conj = {s = conj.s} ; NoVoc = {s = \\st => [] ; please = False} ; diff --git a/lib/src/japanese/QuestionJap.gf b/lib/src/japanese/QuestionJap.gf index 859f76239..1b4fb7d6e 100644 --- a/lib/src/japanese/QuestionJap.gf +++ b/lib/src/japanese/QuestionJap.gf @@ -32,7 +32,7 @@ flags coding = utf8 ; QuestIComp icomp np = { s = table { Wa => \\st,t,p => case np.needPart of { - True => np.prepositive ! st ++ np.s ! st ++ "わ" ++ icomp.s ! st ++ + True => np.prepositive ! st ++ np.s ! st ++ "は" ++ icomp.s ! st ++ mkCopula.s ! st ! t ! p ; False => np.prepositive ! st ++ np.s ! st ++ icomp.s ! st ++ mkCopula.s ! st ! t ! p } ; diff --git a/lib/src/japanese/RelativeJap.gf b/lib/src/japanese/RelativeJap.gf index b143a0876..af935b3ad 100644 --- a/lib/src/japanese/RelativeJap.gf +++ b/lib/src/japanese/RelativeJap.gf @@ -11,7 +11,7 @@ flags coding = utf8 ; subj = cl.subj ; pred = \\_,st,t,p => cl.pred ! st ! t ! p ; pred_te = \\a,st => cl.pred_te ! st ; - pred_tara = \\a,st => cl.pred_tara ! st ; + pred_ba = \\a,st => cl.pred_ba ! st ; missingSubj = False } ; @@ -24,7 +24,7 @@ flags coding = utf8 ; subj = \\part,st => vp.prepositive ! st ++ rp.s ! st ; pred = \\a,st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! a ! st ! t ! p ++ rp.prep ; pred_te = \\a,st => vp.obj ! st ++ vp.prep ++ vp.te ! a ! st ++ rp.prep ; - pred_tara = \\a,st => vp.obj ! st ++ vp.prep ++ vp.tara ! a ! st ++ rp.prep ; + pred_ba = \\a,st => vp.obj ! st ++ vp.prep ++ vp.ba ! a ! st ++ rp.prep ; missingSubj = True } ; @@ -35,7 +35,7 @@ flags coding = utf8 ; subj = \\part,st => rp.s ! st ++ clslash.subj ! part ! st ; pred = \\_,st,t,p => clslash.pred ! st ! t ! p ++ rp.prep ; pred_te = \\a,st => clslash.pred_te ! st ++ rp.prep ; - pred_tara = \\a,st => clslash.pred_tara ! st ++ rp.prep ; + pred_ba = \\a,st => clslash.pred_ba ! st ++ rp.prep ; missingSubj = False } ; @@ -45,4 +45,4 @@ flags coding = utf8 ; s = \\st => np.prepositive ! st ++ np.s ! st ; prep = prep.relPrep } ; -} \ No newline at end of file +} diff --git a/lib/src/japanese/ResJap.gf b/lib/src/japanese/ResJap.gf index d612487ab..f4f537e77 100644 --- a/lib/src/japanese/ResJap.gf +++ b/lib/src/japanese/ResJap.gf @@ -14,6 +14,8 @@ param Anteriority = Simul | Anter ; NumeralType = Tens | TensPlus | Other ; ComparSense = Less | More | NoCompar ; + ConjType = And | Or | Both ; + SubjType = That | If | OtherSubj ; oper @@ -21,7 +23,7 @@ oper changePolar : Bool ; Pron1Sg : Bool ; anim : Animateness} ; VP : Type = {verb : Animateness => Style => TTense => Polarity => Str ; te : Animateness => Style => Str; a_stem : Animateness => Style => Str ; - i_stem : Animateness => Style => Str ; tara : Animateness => Style => Str ; + i_stem : Animateness => Style => Str ; ba : Animateness => Style => Str ; prep : Str ; obj : Style => Str ; prepositive : Style => Str ; compar : ComparSense} ; @@ -29,23 +31,24 @@ oper counter : Str ; counterReplace : Bool} ; PropNoun : Type = {s : Style => Str ; anim : Animateness} ; Adj : Type = {pred : Style => TTense => Polarity => Str; - attr : Str; te : Str ; tara : Str ; adv : Str} ; - Adj2 : Type = {pred : Style => TTense => Polarity => Str; - attr : Str; te : Str ; tara : Str ; adv : Str ; prep : Str} ; + attr : Str; te : Str ; ba : Str ; adv : Str ; dropNaEnging : Str} ; + Adj2 : Type = {pred : Style => TTense => Polarity => Str ; attr : Str; + te : Str ; ba : Str ; adv : Str ; prep : Str ; dropNaEnging : Str} ; Adverb : Type = {s : Style => Str ; prepositive : Bool ; compar : ComparSense} ; Pronoun : Type = {s : Style => Str ; Pron1Sg : Bool ; anim : Animateness} ; - Determiner : Type = {quant : Style => Str ; postpositive : Str ; - num : Str ; n : Number ; inclCard : Bool} ; + Determiner : Type = {quant : Style => Str ; postpositive : Str ; num : Str ; + n : Number ; inclCard : Bool ; sp : Style => Str ; no : Bool} ; Num : Type = {s : Str ; postpositive : Str ; n : Number ; inclCard : Bool} ; Preposition : Type = {s : Str ; relPrep : Str} ; Verb : Type = {s : Style => TTense => Polarity => Str ; te : Str ; - a_stem : Str ; i_stem : Str ; tara : Str} ; + a_stem : Str ; i_stem : Str ; ba : Str} ; Verb2 : Type = {s : Style => TTense => Polarity => Str ; te : Str ; - a_stem : Str ; i_stem : Str ; tara : Str ; + a_stem : Str ; i_stem : Str ; ba : Str ; pass : Style => TTense => Polarity => Str ; pass_te : Str ; - pass_a_stem : Str ; pass_i_stem : Str ; pass_tara : Str ; + pass_a_stem : Str ; pass_i_stem : Str ; pass_ba : Str ; prep : Str} ; - Conjunction : Type = {s : Str ; pconj : Str ; disj : Bool} ; + Conjunction : Type = {s : Str ; null : Str ; type : ConjType} ; + Subjunction : Type = {s : Str ; type : SubjType} ; mkNoun : Str -> Str -> Str -> Str -> Animateness -> Str -> Bool -> Noun = \man1,man2,man3,man4,a,c,b -> { @@ -70,7 +73,7 @@ oper mkNoun kane okane kane okane a c b ; regAdj : Str -> Adj = \a -> case a of { - chiisa + "い" => i_mkAdj a ; + chiisa + "い" => i_mkAdj a ; ooki + ("な"|"の") => na_mkAdj a } ; @@ -113,8 +116,9 @@ oper } ; attr = chiisai ; te = chiisa + "くて" ; - tara = chiisa + "かったら" ; - adv = chiisa + "く" + ba = chiisa + "ければ" ; + adv = chiisa + "く" ; + dropNaEnging = chiisai } ; na_mkAdj : Str -> Adj = \ookina -> @@ -153,8 +157,9 @@ oper } ; attr = ookina ; te = ooki + "で" ; - tara = ooki + "だったら" ; - adv = ooki + "に" + ba = ooki + "であれば" ; + adv = ooki + "に" ; + dropNaEnging = ooki } ; VerbalA : Str -> Str -> Adj = \kekkonshiteiru,kikonno -> @@ -193,8 +198,9 @@ oper } ; attr = kikonno ; te = kekkonshite + "いて" ; - tara = kekkonshite + "いたら" ; - adv = kekkonshite + "に" + ba = kekkonshite + "いれば" ; + adv = init kikonno + "で" ; + dropNaEnging = init kikonno } ; mkVerb : Str -> Str -> Str -> Str -> Verb = @@ -237,55 +243,21 @@ oper } ; a_stem = yoma ; i_stem = yomi ; - tara = yomi + "たら" + ba = mkBaForm yomu } ; mkVerb2 : Str -> Str -> Str -> Str -> Str -> Verb2 = - \yoma,yomi,yomu,yonda,p -> - let yon = init yonda ; - in { - s = table { - Resp => table { - TPres => table { - Pos => yomi + "ます" ; - Neg => yomi + "ません" - } ; - TPast => table { - Pos => yomi + "ました" ; - Neg => yomi + "ませんでした" - } ; - TFut => table { - Pos => yomi + "ます" ; - Neg => yomi + "ません" - } - } ; - Plain => table { - TPres => table { - Pos => yomu ; - Neg => yoma + "ない" - } ; - TPast => table { - Pos => yonda ; - Neg => yoma + "なかった" - } ; - TFut => table { - Pos => yomu ; - Neg => yoma + "ない" - } - } - } ; - te = case yonda of { - yon + "だ" => yon + "で" ; - yon + "た" => yon + "て" - } ; - a_stem = yoma ; - i_stem = yomi ; - tara = yomi + "たら" ; - prep = p ; - pass = table { - Resp => table { - TPres => table { - Pos => case yomu of { + \yoma,yomi,yomu,yonda,p -> { + s = (mkVerb yoma yomi yomu yonda).s ; + te = (mkVerb yoma yomi yomu yonda).te ; + a_stem = yoma ; + i_stem = yomi ; + ba = mkBaForm yomu ; + prep = p ; + pass = table { + Resp => table { + TPres => table { + Pos => case yomu of { x + "する" => x + "されます" ; _ => yoma + "れます" } ; @@ -360,9 +332,9 @@ oper x + "する" => x + "され" ; _ => yoma + "れ" } ; - pass_tara = case yomu of { - x + "する" => x + "されたら" ; - _ => yoma + "れたら" + pass_ba = case yomu of { + x + "する" => x + "されれば" ; + _ => yoma + "れれば" } } ; @@ -400,7 +372,7 @@ oper te = "だって" ; a_stem = "で" ; i_stem = "で" ; - tara = "だったら" + ba = "であれば" } ; mkExistV : VP = { @@ -420,9 +392,9 @@ oper Anim => \\st => "い" ; Inanim => \\st => "あり" } ; - tara = table { - Anim => \\st => "いたら" ; - Inanim => \\st => "あったら" + ba = table { + Anim => \\st => "いれば" ; + Inanim => \\st => "あれば" } ; prep = [] ; prepositive, obj = \\st => [] ; @@ -442,12 +414,14 @@ oper anim = a } ; - mkDet : Str -> Number -> Determiner = \q,n -> { + mkDet : Str -> Str -> Number -> Determiner = \q,sp,n -> { quant = \\st => q ; postpositive = [] ; num = [] ; n = n ; - inclCard = False + inclCard = False ; + sp = \\st => sp ; + no = False } ; stylePron : Str -> Str -> Bool -> Animateness -> Pronoun = \boku,watashi,b,a -> { @@ -490,10 +464,10 @@ oper anim = a } ; - mkConj : Str -> Str -> Bool -> Conjunction = \c,p,b -> { + mkConj : Str -> ConjType -> Conjunction = \c,t -> { s = c ; - pconj = p ; - disj = b + null = "" ; + type = t } ; mkPrep : Str -> Str -> Preposition = \p,r -> { @@ -501,5 +475,22 @@ oper relPrep = r ; } ; + mkSubj : Str -> SubjType -> Subjunction = \s,t -> { + s = s ; + type = t ; + } ; + + mkBaForm : Str -> Str = \neru -> + case last neru of { + "る" => init neru + "れば" ; + "す" => init neru + "せば" ; + "く" => init neru + "けば" ; + "ぐ" => init neru + "げば" ; + "む" => init neru + "めば" ; + "ぬ" => init neru + "ねば" ; + "ぶ" => init neru + "べば" ; + "つ" => init neru + "てば" ; + _ => init neru + "えば" + } ; } diff --git a/lib/src/japanese/SentenceJap.gf b/lib/src/japanese/SentenceJap.gf index afaa37081..f9dd73ca0 100644 --- a/lib/src/japanese/SentenceJap.gf +++ b/lib/src/japanese/SentenceJap.gf @@ -19,11 +19,11 @@ flags coding = utf8 ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st } ; - tara = table { + ba = table { Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ - vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "のほうが" ++ - vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st + vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st } ; subj = table { Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ; @@ -31,7 +31,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; changePolar = np.changePolar } ; Less => { @@ -39,12 +39,12 @@ flags coding = utf8 ; "より" ++ vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ; te = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "より" ++ vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ; - tara = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ - "より" ++ vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + ba = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ + "より" ++ vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "より" ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; changePolar = np.changePolar } ; NoCompar => case np.needPart of { @@ -61,11 +61,11 @@ flags coding = utf8 ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st } ; - tara = table { + ba = table { Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ++ - vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "が" ++ - vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st + vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st } ; subj = table { Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ "は" ; @@ -73,7 +73,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; changePolar = np.changePolar } ; False => { @@ -89,16 +89,16 @@ flags coding = utf8 ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st } ; - tara = table { + ba = table { Wa => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! np.anim ! st ; + vp.prep ++ vp.ba ! np.anim ! st ; Ga => \\st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! np.anim ! st + vp.prep ++ vp.ba ! np.anim ! st } ; subj = \\part,st => np.prepositive ! st ++ vp.prepositive ! st ++ np.s ! st ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! np.anim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! np.anim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! np.anim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! np.anim ! st ; changePolar = np.changePolar } } @@ -118,11 +118,11 @@ flags coding = utf8 ; Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st } ; - tara = table { + ba = table { Wa => \\st => sc.s ! Wa ! st ++ "ことは" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st ; + vp.prep ++ vp.ba ! Inanim ! st ; Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st + vp.prep ++ vp.ba ! Inanim ! st } ; subj = table { Wa => \\st => sc.s ! Wa ! st ++ "ことは" ; @@ -130,7 +130,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ; changePolar = False } ; False => { @@ -146,11 +146,11 @@ flags coding = utf8 ; Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st } ; - tara = table { + ba = table { Wa => \\st => sc.s ! Wa ! st ++ "ことが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st ; + vp.prep ++ vp.ba ! Inanim ! st ; Ga => \\st => sc.s ! Ga ! st ++ "ことが" ++ vp.obj ! st ++ - vp.prep ++ vp.tara ! Inanim ! st + vp.prep ++ vp.ba ! Inanim ! st } ; subj = table { Wa => \\st => sc.s ! Wa ! st ++ "ことが" ; @@ -158,7 +158,7 @@ flags coding = utf8 ; } ; pred = \\st,t,p => vp.obj ! st ++ vp.prep ++ vp.verb ! Inanim ! st ! t ! p ; pred_te = \\st => vp.obj ! st ++ vp.prep ++ vp.te ! Inanim ! st ; - pred_tara = \\st => vp.obj ! st ++ vp.prep ++ vp.tara ! Inanim ! st ; + pred_ba = \\st => vp.obj ! st ++ vp.prep ++ vp.ba ! Inanim ! st ; changePolar = False } } ; @@ -168,37 +168,37 @@ flags coding = utf8 ; vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! Plain ! t ! p ; te = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ; - tara = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ - vpslash.obj ! st ++ vpslash.prep ++ vpslash.tara ; + ba = \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" ++ + vpslash.obj ! st ++ vpslash.prep ++ vpslash.ba ; subj = table { Wa => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "は" ; Ga => \\st => vpslash.prepositive ! st ++ np.prepositive ! st ++ np.s ! st ++ "が" } ; pred = \\st,t,p => vpslash.obj ! st ++ vpslash.prep ++ vpslash.s ! st ! t ! p ; pred_te = \\st => vpslash.obj ! st ++ vpslash.prep ++ vpslash.te ; - pred_tara = \\st => vpslash.obj ! st ++ vpslash.tara ; + pred_ba = \\st => vpslash.obj ! st ++ vpslash.ba ; changePolar = np.changePolar } ; AdvSlash clslash adv = { s = \\st,t,p => adv.s ! st ++ clslash.s ! st ! t ! p ; te = \\st => adv.s ! st ++ clslash.te ! st ; - tara = \\st => adv.s ! st ++ clslash.tara ! st ; + ba = \\st => adv.s ! st ++ clslash.ba ! st ; subj = \\part,st => adv.s ! st ++ clslash.subj ! part ! st ; pred = clslash.pred ; pred_te = clslash.pred_te ; - pred_tara = clslash.pred_tara ; + pred_ba = clslash.pred_ba ; changePolar = clslash.changePolar } ; SlashPrep cl prep = { s = \\st,t,p => cl.s ! Ga ! st ! t ! p ++ prep.relPrep ; te = \\st => cl.te ! Ga ! st ++ prep.relPrep ; - tara = \\st => cl.tara ! Ga ! st ++ prep.relPrep ; + ba = \\st => cl.ba ! Ga ! st ++ prep.relPrep ; subj = cl.subj ; pred = \\st,t,p => cl.pred ! st ! t ! p ++ prep.relPrep ; pred_te = \\st => cl.pred_te ! st ++ prep.relPrep ; - pred_tara = \\st => cl.pred_tara ! st ++ prep.relPrep ; + pred_ba = \\st => cl.pred_ba ! st ++ prep.relPrep ; changePolar = cl.changePolar } ; @@ -206,15 +206,15 @@ flags coding = utf8 ; s = \\st,t,p => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++ vs.s ! Plain ! t ! p ; te = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ vs.prep ++ vs.te ; - tara = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ - vs.prep ++ vs.tara ; + ba = \\st => np.prepositive ! st ++ np.s ! st ++ "が" ++ sslash.s ! st ++ + vs.prep ++ vs.ba ; subj = table { Wa => \\st => np.prepositive ! st ++ np.s ! st ++ "は" ; Ga => \\st => np.prepositive ! st ++ np.s ! st ++ "が" } ; pred = \\st,t,p => sslash.s ! st ++ vs.prep ++ vs.s ! st ! t ! p ; pred_te = \\st => sslash.s ! st ++ vs.prep ++ vs.te ; - pred_tara = \\st => sslash.s ! st ++ vs.prep ++ vs.tara ; + pred_ba = \\st => sslash.s ! st ++ vs.prep ++ vs.ba ; changePolar = np.changePolar } ; @@ -263,7 +263,7 @@ flags coding = utf8 ; } } ; te = \\part,st => t.s ++ p.s ++ cl.te ! part ! st ; - tara = \\part,st => t.s ++ p.s ++ cl.tara ! part ! st ; + ba = \\part,st => t.s ++ p.s ++ cl.ba ! part ! st ; subj = cl.subj ; pred = \\st => case t.a of { Simul => case cl.changePolar of { @@ -284,7 +284,9 @@ flags coding = utf8 ; True => t.s ++ p.s ++ cl.pred ! st ! TPres ! Neg } } - } + } ; + pred_te = cl.pred_te ; + pred_ba = cl.pred_ba } ; UseQCl t p cl = { @@ -331,7 +333,7 @@ flags coding = utf8 ; } } } ; - te = \\a,st => rcl.te ! a ! st ; + te = \\a,st => t.s ++ p.s ++ rcl.te ! a ! st ; subj = rcl.subj ; pred = \\a,st => case t.a of { Simul => case rcl.changePolar of { @@ -354,7 +356,7 @@ flags coding = utf8 ; } } ; pred_te = \\a,st => t.s ++ p.s ++ rcl.pred_te ! a ! st ; - pred_tara = \\a,st => t.s ++ p.s ++ rcl.pred_tara ! a ! st ; + pred_ba = \\a,st => t.s ++ p.s ++ rcl.pred_ba ! a ! st ; missingSubj = rcl.missingSubj } ; @@ -385,33 +387,53 @@ flags coding = utf8 ; AdvS adv s = { s = \\part,st => adv.s ! st ++ s.s ! part ! st ; te = \\part,st => adv.s ! st ++ s.te ! part ! st ; - tara = \\part,st => adv.s ! st ++ s.tara ! part ! st ; + ba = \\part,st => adv.s ! st ++ s.ba ! part ! st ; subj = \\part,st => adv.s ! st ++ s.subj ! part ! st ; - pred = s.pred + pred = s.pred ; + pred_te = s.pred_te ; + pred_ba = s.pred_ba } ; ExtAdvS adv s = { s = \\part,st => adv.s ! st ++ "," ++ s.s ! part ! st ; te = \\part,st => adv.s ! st ++ "," ++ s.te ! part ! st ; - tara = \\part,st => adv.s ! st ++ "," ++ s.tara ! part ! st ; + ba = \\part,st => adv.s ! st ++ "," ++ s.ba ! part ! st ; subj = \\part,st => adv.s ! st ++ "," ++ s.subj ! part ! st ; - pred = s.pred + pred = s.pred ; + pred_te = s.pred_te ; + pred_ba = s.pred_ba } ; - SSubjS s1 subj s2 = case subj.when of { - True => { - s = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.s ! Ga ! st ; - te = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.te ! Ga ! st ; - tara = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.tara ! Ga ! st ; - subj = \\part,st => s1.tara ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ; - pred = s2.pred + SSubjS s1 subj s2 = case subj.type of { + If => { + s = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.s ! Ga ! st ; + te = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.te ! Ga ! st ; + ba = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.ba ! Ga ! st ; + subj = \\part,st => s1.ba ! part ! st ++ subj.s ++ s2.subj ! Ga ! st ; + pred = s2.pred ; + pred_te = s2.pred_te ; + pred_ba = s2.pred_ba } ; - False => { + That => { + s = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ + subj.s ++ s1.pred ! st ; + te = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ + subj.s ++ s1.pred_te ! st ; + ba = \\part,st => s1.subj ! part ! st ++ s2.subj ! Ga ! st ++ s2.pred ! Plain ++ + subj.s ++ s1.pred_ba ! st ; + subj = \\part,st => s1.subj ! part ! st ; + pred = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred ! st ; + pred_te = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_te ! st ; + pred_ba = \\st => s2.subj ! Ga ! st ++ s2.pred ! Plain ++ subj.s ++ s1.pred_ba ! st + } ; + OtherSubj => { s = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.s ! Ga ! st ; te = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.te ! Ga ! st ; - tara = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.tara ! Ga ! st ; + ba = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.ba ! Ga ! st ; subj = \\part,st => s1.s ! part ! Plain ++ subj.s ++ s2.subj ! Ga ! st ; - pred = s2.pred + pred = s2.pred ; + pred_te = s2.pred_te ; + pred_ba = s2.pred_ba } } ; @@ -421,11 +443,13 @@ flags coding = utf8 ; "ことが" ++ rs.pred ! Inanim ! st ; te = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことが" ++ rs.pred_te ! Inanim ! st ; - tara = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ - "ことが" ++ rs.pred_tara ! Inanim ! st ; + ba = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ + "ことが" ++ rs.pred_ba ! Inanim ! st ; subj = \\part,st => rs.subj ! part ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことが" ; - pred = \\st => rs.pred ! Inanim ! st + pred = \\st => rs.pred ! Inanim ! st ; + pred_te = \\st => rs.pred_te ! Inanim ! st ; + pred_ba = \\st => rs.pred_ba ! Inanim ! st } ; False => { s = table { @@ -440,15 +464,19 @@ flags coding = utf8 ; Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ rs.pred_te ! Inanim ! st } ; - tara = table { + ba = table { Wa => \\st => rs.subj ! Wa ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ - "ことを" ++ rs.pred_tara ! Inanim ! st ; + "ことを" ++ rs.pred_ba ! Inanim ! st ; Ga => \\st => rs.subj ! Ga ! st ++ sent.subj ! Ga ! st ++ sent.pred ! Plain ++ - "ことを" ++ rs.pred_tara ! Inanim ! st + "ことを" ++ rs.pred_ba ! Inanim ! st } ; subj = \\part,st => rs.subj ! part ! st ; pred = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ rs.pred ! Inanim ! st ; + pred_te = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ + rs.pred_te ! Inanim ! st ; + pred_ba = \\st => sent.subj ! Ga ! st ++ sent.pred ! Plain ++ "ことを" ++ + rs.pred_ba ! Inanim ! st } } ; } diff --git a/lib/src/japanese/StructuralJap.gf b/lib/src/japanese/StructuralJap.gf index 79316912d..71dfeb450 100644 --- a/lib/src/japanese/StructuralJap.gf +++ b/lib/src/japanese/StructuralJap.gf @@ -6,32 +6,35 @@ flags coding = utf8 ; above_Prep = mkPrep "の上に" "上に" ; -- "noueni" "ueni" after_Prep = mkPrep "の後に" "後" ; -- "noatoni" "ato" - all_Predet = ss "全部" ; -- "zembu" - almost_AdA = ss "殆ど" ; -- "hotondo" ; - although_Subj = {s = "のに" ; when = False} ; + all_Predet = {s = "全部" ; not = False} ; + almost_AdA = ss "殆ど" ; -- "hotondo" almost_AdN = {s = "殆ど" ; postposition = False} ; + although_Subj = mkSubj "のに" OtherSubj ; always_AdV = ss "いつも" ; - and_Conj = mkConj "と" "そして" False ; - because_Subj = {s = "から" ; when = False} ; + and_Conj = mkConj "そして" And ; + because_Subj = mkSubj "から" OtherSubj ; before_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni" behind_Prep = mkPrep "後ろに" "後ろに" ; -- "ushironi" "ushironi" between_Prep = mkPrep "の間に" "間に" ; -- "noaidani" "aidani" + both7and_DConj = mkConj "そして" Both ; by8agent_Prep = mkPrep "に" "" ; by8means_Prep = mkPrep "によって" "" ; but_PConj = ss "けれども" ; can8know_VV = mkVerb "でき" "でき" "できる" "できた" ** {sense = Abil} ; can_VV = can8know_VV ; during_Prep = mkPrep "の間に" "" ; -- "noaidani" - every_Det = mkDet "各自の" Sg ; -- "kakujino" + either7or_DConj = mkConj "それとも" Or ; + every_Det = mkDet "全ての" "全て" Sg ; -- "subeteno" everybody_NP = mkNP "皆" True False Anim ; -- "minna" everything_NP = mkNP "全て" True False Inanim ; -- "subete" everywhere_Adv = mkAdv "どこでも" ; -- "dokodemo" ; first_Ord = {pred = \\st,t,p => "一番目" ++ mkCopula.s ! st ! t ! p ; attr = "一番目の" ; te = "一番目" ++ mkCopula.te ; - tara = "一番目" ++ mkCopula.tara ; adv = "一番目"} ; -- "ichibanme" - few_Det = mkDet "少数" Pl ; -- "shoosuuno" + ba = "一番目" ++ mkCopula.ba ; adv = "一番目" ; + dropNaEnging = "一番目"} ; + few_Det = mkDet "少数の" "少数" Pl ; -- "shoosuuno" for_Prep = mkPrep "のために" "" ; - from_Prep = mkPrep "から" "から" ; + from_Prep = mkPrep "から" "" ; he_Pron = mkPron "彼" False Anim ; -- "kare" here_Adv = mkAdv "ここで" ; here7to_Adv = mkAdv "ここに" ; @@ -40,51 +43,54 @@ flags coding = utf8 ; how8many_IDet = {s = "いくつ" ; n = Pl ; how8many = True ; inclCard = False} ; how8much_IAdv = {s = \\st => "いくら" ; particle = ""} ; i_Pron = mkPron ("僕"|"私") "私" True Anim ; -- "boku"|"watashi" + if_Subj = mkSubj "" If ; in8front_Prep = mkPrep "の前に" "前に" ; -- "nomaeni" "maeni" in_Prep = mkPrep "に" "" ; it_Pron = mkPron "それ" False Inanim ; less_CAdv = {s = "のほうが" ; compar = Less} ; - many_Det = mkDet "多くの" Pl ; -- "ookuno" - more_CAdv = {s = "より" ; compar = More} ; -- "yori" - most_Predet = ss "ほとんどの" ; - much_Det = mkDet "多くの" Sg ; -- "ookuno" - must_VV = {s = (mkVerb "なら" "なり" "なる" "なった").s ; te = "なって" ; - tara = "なったら" ; a_stem = "なら" ; i_stem = "なり" ; sense = Oblig} ; + many_Det = mkDet "多くの" "多く" Pl ; -- "ookuno" + more_CAdv = {s = "より" ; compar = More} ; + most_Predet = {s = "ほとんどの" ; not = False} ; + much_Det = mkDet "多くの" "多量" Sg ; -- "ookuno" "taryou" + must_VV = {s = (mkVerb "なら" "なり" "なる" "なった").s ; te = "ならなくて" ; + ba = "ならなければ" ; a_stem = "なら" ; i_stem = "なり" ; sense = Oblig} ; no_Phr = ss "いいえ" ; no_Utt = {s = \\st => "いいえ"} ; on_Prep = mkPrep "の上に" "" ; - only_Predet = ss "ほんの" ; - or_Conj = mkConj "か" "それとも" True ; + only_Predet = {s = "ほんの" ; not = False} ; + or_Conj = mkConj "それとも" Or ; otherwise_PConj = ss "そうしなければ" ; + part_Prep = mkPrep "の" "" ; please_Voc = {s = table {Resp => "ください" ; Plain => "" } ; please = True} ; possess_Prep = mkPrep "の" "" ; - quite_Adv = ss "可成" ; + quite_Adv = ss "可成" ; -- "kanari" she_Pron = mkPron "彼女" False Anim ; -- "kanojo" so_AdA = ss "非常に" ; -- "hijooni" - someSg_Det = mkDet "多少の" Sg ; -- "tashoono" - somePl_Det = mkDet "いくつかの" Pl ; + someSg_Det = mkDet "多少の" "幾らか" Sg ; -- "tashoono" "ikuraka" + somePl_Det = mkDet "いくつかの" "幾らか" Pl ; -- "ikuraka" somebody_NP = mkNP "誰か" False False Anim ; -- "dareka" something_NP = mkNP "何か" False False Inanim ; -- "nanika" somewhere_Adv = mkAdv "どこかに" ; - that_Quant = {s = \\st => "その"} ; + that_Quant = {s = \\st => "その" ; sp = \\st => "それ" ; no = False} ; + that_Subj = mkSubj "ことを" That ; there_Adv = mkAdv "そこに" ; there7to_Adv = mkAdv "そこに" ; there7from_Adv = mkAdv "そこから" ; therefore_PConj = ss "それで" ; they_Pron = mkPron "彼ら" "あの人達" False Anim ; -- "karera" "ano hito-tachi" - this_Quant = {s = \\st => "この"} ; + this_Quant = {s = \\st => "この" ; sp = \\st => "これ" ; no = False} ; through_Prep = mkPrep "を通じて" "通じて" ; -- "otsuujite" to_Prep = mkPrep "に" "" ; too_AdA = ss "あまりにも" ; under_Prep = mkPrep "の下に" "下に" ; -- "noshitani" very_AdA = ss "とても" ; - want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ; - tara = "いったら" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ; + want_VV = {s = (mkVerb "い" "い" "いる" "いった").s ; te = "いって" ; + ba = "いれば" ; a_stem = "い" ; i_stem = "い" ; sense = Wish} ; we_Pron = mkPron "私達" False Anim ; -- "watashitachi" whatPl_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ; -- "nani" whatSg_IP = {s = \\st => "何" ; anim = Inanim ; how8many = False} ; when_IAdv = {s = \\st => "いつ" ; particle = ""} ; - when_Subj = {s = [] ; when = True} ; + when_Subj = mkSubj "と" OtherSubj ; where_IAdv = {s = \\st => "どこ" ; particle = "で"} ; which_IQuant = ss "どの" ; whoPl_IP = {s = \\st => "誰" ; anim = Anim ; how8many = False} ; @@ -98,6 +104,8 @@ flags coding = utf8 ; youPl_Pron = mkPron "あなた達" "あなた方" False Anim ; -- "anatatachi" "anatagata" youPol_Pron = mkPron "あなた" False Anim ; + no_Quant = {s = \\st => "" ; sp = \\st => "何も" ; no = True} ; + not_Predet = {s = "" ; not = True} ; at_least_AdN = {s = "少なくとも" ; postposition = False} ; -- "sukunakutomo" at_most_AdN = {s = "せいぜい" ; postposition = False} ; nobody_NP = mkNP "誰も" False True Anim ; @@ -105,4 +113,8 @@ flags coding = utf8 ; except_Prep = mkPrep "を除いて" "を除いて" ; -- "onozoite" as_CAdv = {s = "と同じぐらい" ; compar = NoCompar} ; -- "toonajigurai" + + have_V2 = mkV2 "持ってい" "持ってい" "持っている" "持っていた" "を" ; + + language_title_Utt = {s = \\st => "日本語"} ; -- "nihongo" } diff --git a/lib/src/japanese/VerbJap.gf b/lib/src/japanese/VerbJap.gf index 2ad7ce7fe..904a8dc67 100644 --- a/lib/src/japanese/VerbJap.gf +++ b/lib/src/japanese/VerbJap.gf @@ -9,7 +9,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => v.te ; a_stem = \\a,st => v.a_stem ; i_stem = \\a,st => v.i_stem ; - tara = \\a,st => v.tara ; + ba = \\a,st => v.ba ; prep = [] ; obj = \\st => [] ; prepositive = \\st => [] ; @@ -23,18 +23,18 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.te ; a_stem = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.a_stem ; i_stem = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.i_stem ; - tara = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ; + ba = \\a,st => vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.ba ; prep = vp.prep ; obj = \\st => vp.obj ! st ; prepositive = vp.prepositive ; compar = NoCompar } ; Oblig => { - verb = \\a,st,t,p => vp.a_stem ! Anim ! st ++ "なければ" ++ v.s ! st ! t ! p ; + verb = \\a,st,t,p => vp.a_stem ! Anim ! st ++ "なければ" ++ v.s ! st ! t ! Neg ; te = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.te ; a_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.a_stem ; i_stem = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.i_stem ; - tara = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.tara ; + ba = \\a,st => vp.a_stem ! Anim ! st ++ "なければ" ++ v.ba ; prep = vp.prep ; obj = \\st => vp.obj ! st ; prepositive = vp.prepositive ; @@ -45,7 +45,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.te ; a_stem = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.a_stem ; i_stem = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.i_stem ; - tara = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.tara ; + ba = \\a,st => vp.i_stem ! Anim ! st ++ "たがって" ++ v.ba ; prep = vp.prep ; obj = \\st => vp.obj ! st ; prepositive = vp.prepositive ; @@ -58,7 +58,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => vs.te ; a_stem = \\a,st => vs.a_stem ; i_stem = \\a,st => vs.i_stem ; - tara = \\a,st => vs.tara ; + ba = \\a,st => vs.ba ; prep = vs.prep ; obj = \\st => sent.s ! Ga ! Plain ; prepositive = \\st => [] ; @@ -70,7 +70,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => vq.te ; a_stem = \\a,st => vq.a_stem ; i_stem = \\a,st => vq.i_stem ; - tara = \\a,st => vq.tara ; + ba = \\a,st => vq.ba ; prep = vq.prep ; obj = \\st => qs.s ! Ga ! Plain ++ "こと" ; prepositive = \\st => [] ; @@ -82,7 +82,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => va.te ; a_stem = \\a,st => va.a_stem ; i_stem = \\a,st => va.i_stem ; - tara = \\a,st => va.tara ; + ba = \\a,st => va.ba ; prep = [] ; obj = \\st => ap.adv ! st ; prepositive = ap.prepositive ; @@ -93,7 +93,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { s = \\st,t,p => v2.s ! st ! t ! p ; a_stem = v2.a_stem ; i_stem = v2.i_stem ; - tara = v2.tara ; + ba = v2.ba ; prep = v2.prep ; obj = \\st => [] ; prepositive = \\st => [] ; @@ -116,9 +116,9 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { True => "呉れ" ; False => "上げ" } ; - tara = case np.Pron1Sg of { - True => "呉れたら" ; - False => "上げたら" + ba = case np.Pron1Sg of { + True => "呉れれば" ; + False => "上げれば" } ; prep = v3.prep2 ; obj = \\st => np.s ! st ++ v3.prep1 ; @@ -134,7 +134,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { s = \\st,t,p => v3.s ! st ! t ! p ; a_stem = v3.a_stem ; i_stem = v3.i_stem ; - tara = v3.tara ; + ba = v3.ba ; prep = v3.prep2 ; obj = \\st => np.s ! st ++ v3.prep1 ; prepositive = np.prepositive ; @@ -151,7 +151,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ++ v2v.s ! st ! t ! p ; a_stem = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.a_stem ; i_stem = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.i_stem ; - tara = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ; + ba = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ; prep = "に" ; obj = \\st => vp.obj ! st ++ vp.prep ; te = vp.verb ! Anim ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ; @@ -164,7 +164,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { s = v2s.s ; a_stem = v2s.a_stem ; i_stem = v2s.i_stem ; - tara = v2s.tara ; + ba = v2s.ba ; prep = "に" ; obj = \\st => s.s ! Ga ! Plain ++ "と" ; prepositive = \\st => [] ; @@ -177,7 +177,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { s = v2q.s ; a_stem = v2q.a_stem ; i_stem = v2q.i_stem ; - tara = v2q.tara ; + ba = v2q.ba ; prep = "に" ; obj = \\st => qs.s ! Ga ! Plain ++ "ことを" ; prepositive = \\st => [] ; @@ -190,7 +190,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { s = v2a.s ; a_stem = v2a.a_stem ; i_stem = v2a.i_stem ; - tara = v2a.tara ; + ba = v2a.ba ; prep = "を" ; obj = ap.adv ; prepositive = ap.prepositive ; @@ -206,7 +206,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { } ; a_stem = \\a,st => vpslash.a_stem ; i_stem = \\a,st => vpslash.i_stem ; - tara = \\a,st => vpslash.tara ; + ba = \\a,st => vpslash.ba ; prep = case np.needPart of { True => case vpslash.v2vType of { True => [] ; @@ -219,7 +219,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { False => vpslash.obj ! st ++ np.s ! st } ; te = \\a,st => vpslash.te ; - prepositive = vpslash.prepositive ; + prepositive = \\st => np.prepositive ! st ++ vpslash.prepositive ! st ; compar = vpslash.compar } ; @@ -237,10 +237,10 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { } ; a_stem = [] ; i_stem = [] ; - tara = case v.sense of { - Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.tara ; - Oblig => vpslash.a_stem ++ "なければ" ++ v.tara ; - Wish => vpslash.i_stem ++ "たがって" ++ v.tara + ba = case v.sense of { + Abil => vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ことが" ++ v.ba ; + Oblig => vpslash.a_stem ++ "なければ" ++ v.ba ; + Wish => vpslash.i_stem ++ "たがって" ++ v.ba } ; prep = vpslash.prep ; obj = vpslash.obj ; @@ -254,7 +254,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { ++ v2v.s ! st ! t ! p ; a_stem = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.a_stem ; i_stem = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.i_stem ; - tara = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.tara ; + ba = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.ba ; prep = vpslash.prep ; obj = \\st => np.s ! st ++ "に" ; te = vpslash.s ! Plain ! TPres ! ResJap.Pos ++ "ように" ++ v2v.te ; @@ -267,7 +267,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { verb = \\a,st,t,p => vpslash.s ! st ! t ! p ; a_stem = \\a,st => vpslash.a_stem ; i_stem = \\a,st => vpslash.i_stem ; - tara = \\a,st => vpslash.tara ; + ba = \\a,st => vpslash.ba ; prep = vpslash.prep ; obj = \\st => "自分" ; -- "jibun" te = \\a,st => vpslash.te ; @@ -280,7 +280,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = comp.te ; a_stem = comp.a_stem ; i_stem = comp.i_stem ; - tara = comp.tara ; + ba = comp.ba ; prep = [] ; obj = comp.obj ; prepositive = comp.prepositive ; @@ -292,7 +292,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => v2.pass_te ; a_stem = \\a,st => v2.pass_a_stem ; i_stem = \\a,st => v2.pass_i_stem ; - tara = \\a,st => v2.pass_tara ; + ba = \\a,st => v2.pass_ba ; prep = [] ; obj = \\st => [] ; prepositive = \\st => [] ; @@ -304,7 +304,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = vp.te ; a_stem = vp.a_stem ; i_stem = vp.i_stem ; - tara = vp.tara ; + ba = vp.ba ; prep = vp.prep ; obj = \\st => case adv.prepositive of { True => vp.obj ! st ; @@ -322,7 +322,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = vp.te ; a_stem = vp.a_stem ; i_stem = vp.i_stem ; - tara = vp.tara ; + ba = vp.ba ; prep = vp.prep ; obj = \\st => adv.s ++ vp.obj ! st ; prepositive = vp.prepositive ; @@ -334,7 +334,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = vpslash.te ; a_stem = vpslash.a_stem ; i_stem = vpslash.i_stem ; - tara = vpslash.tara ; + ba = vpslash.ba ; prep = vpslash.prep ; obj = \\st => case adv.prepositive of { True => vpslash.obj ! st ; @@ -353,7 +353,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = vpslash.te ; a_stem = vpslash.a_stem ; i_stem = vpslash.i_stem ; - tara = vpslash.tara ; + ba = vpslash.ba ; prep = vpslash.prep ; obj = \\st => adv.s ++ vpslash.obj ! st ; prepositive = vpslash.prepositive ; @@ -366,7 +366,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { te = \\a,st => ap.te ! st ; a_stem = \\a,st => ap.adv ! st ; i_stem = \\a,st => ap.adv ! st ; -- for wishes - not correct! - tara = \\a,st => ap.tara ! st ; + ba = \\a,st => ap.ba ! st ; obj = \\st => [] ; prepositive = ap.prepositive ; compar = ap.compar @@ -375,7 +375,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { CompNP np = { verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ; te = \\a,st => "だって" ; - tara = \\a,st => "だったら" ; + ba = \\a,st => "であれば" ; a_stem = \\a,st => "で" ; i_stem = \\a,st => "で" ; -- for wishes - not correct! obj = \\st => np.s ! st ; @@ -386,7 +386,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { CompAdv adv = { verb = mkExistV.verb ; te = mkExistV.te ; - tara = mkExistV.tara ; + ba = mkExistV.ba ; a_stem = mkExistV.a_stem ; i_stem = mkExistV.i_stem ; obj = \\st => case adv.prepositive of { @@ -403,7 +403,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { CompCN cn = { verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ; te = \\a,st => "だって" ; - tara = \\a,st => "だったら" ; + ba = \\a,st => "であれば" ; a_stem = \\a,st => "で" ; i_stem = \\a,st => "で" ; -- for wishes - not correct! obj = \\st => cn.s ! (Sg|Pl) ! st ; @@ -414,7 +414,7 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { UseCopula = { verb = \\a,st,t,p => mkCopula.s ! st ! t ! p ; te = \\a,st => "だって" ; - tara = \\a,st => "だったら" ; + ba = \\a,st => "であれば" ; a_stem = \\a,st => "で" ; i_stem = \\a,st => "で" ; -- for wishes - not correct! obj = \\st => [] ; @@ -424,3 +424,4 @@ concrete VerbJap of Verb = CatJap ** open ResJap, Prelude in { } ; } +