diff --git a/src/korean/ConjunctionKor.gf b/src/korean/ConjunctionKor.gf index 6837d554..ba0edcf6 100644 --- a/src/korean/ConjunctionKor.gf +++ b/src/korean/ConjunctionKor.gf @@ -48,17 +48,29 @@ lin BaseRS = twoTable3 … ; ConsRS = consrTable3 … comma ; ConjRS = conjunctRSTable ; - +-} lincat - [S] = {} ; + [S] = ResKor.Sentence ** {firstS : ConjType => Str} ; lin - BaseS x y = y ** { } ; - ConsS x xs = - xs ** { } ; - ConjS co xs = {} ; --} + BaseS s1 s2 = s2 ** { + firstS = mkFirstS s1 + } ; + + ConsS s ss = ss ** { + firstS = \\conj => + mkFirstS s ! conj ++ ss.firstS ! conj ; + } ; + + ConjS co ss = ss ** { + s = \\st => co.s1 ++ ss.firstS ! co.c ++ ss.s ! st + } ; + +oper + mkFirstS : ResKor.Sentence -> ConjType => Str = \s -> + \\conj => glue (s.s ! Subord) (conjTable ! NStar ! conj) ; + lincat [AP] = ResKor.AdjPhrase ** {firstAP : AForm => ConjType => Str} ; diff --git a/src/korean/ParamKor.gf b/src/korean/ParamKor.gf index 41435567..d37f35f8 100644 Binary files a/src/korean/ParamKor.gf and b/src/korean/ParamKor.gf differ diff --git a/src/korean/PhraseKor.gf b/src/korean/PhraseKor.gf index dc9ba43b..84498a3e 100644 --- a/src/korean/PhraseKor.gf +++ b/src/korean/PhraseKor.gf @@ -3,7 +3,7 @@ concrete PhraseKor of Phrase = CatKor ** open Prelude, ResKor in { lin PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; - UttS s = s ; + UttS s = {s = s.s ! Statement} ; UttQS qs = qs ; UttIAdv iadv = iadv ; {- diff --git a/src/korean/ResKor.gf b/src/korean/ResKor.gf index da744d4c..3634f32f 100644 --- a/src/korean/ResKor.gf +++ b/src/korean/ResKor.gf @@ -294,7 +294,7 @@ oper -------------------------------------------------------------------------------- -- Cl, S - Clause : Type = {s : Tense => Anteriority => Polarity => Str} ; + Clause : Type = {s : Tense => Anteriority => Polarity => ClType => Str} ; {- After PredVP, we might still want to add more adverbs (QuestIAdv), but we're done with verb inflection. @@ -305,13 +305,17 @@ oper RClause : Type = {s : NForm => Tense => Anteriority => Polarity => Str} ; - Sentence : Type = {s : Str} ; + Sentence : Type = {s : ClType => Str} ; predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vp -> vp ** { - s = \\t,a,p => np.s ! vp.sc - ++ vp.nObj -- an object, not copula complement - ++ vp.adv - ++ vp.s ! VF Polite p -- TODO: more tenses, choose politeness + s = \\t,a,p,cltyp => + let vf = case cltyp of { + Subord => VStem ; + _ => VF Polite p } -- TODO: more tenses, politeness + in np.s ! vp.sc + ++ vp.nObj -- an object, not copula complement + ++ vp.adv + ++ vp.s ! vf } ; -------------------------------------------------------------------------------- diff --git a/src/korean/SentenceKor.gf b/src/korean/SentenceKor.gf index a32a80d2..a87ce9e6 100644 --- a/src/korean/SentenceKor.gf +++ b/src/korean/SentenceKor.gf @@ -49,11 +49,11 @@ lin -- : Temp -> Pol -> Cl -> S ; UseCl t p cl = { - s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p + s = \\c => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! c } ; -- : Temp -> Pol -> QCl -> QS ; - UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ; + UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Statement} ; -- : Temp -> Pol -> RCl -> RS ; -- UseRCl t p cl = {s = } ; @@ -73,7 +73,7 @@ lin oper advS : (comma : Str) -> Adverb -> S -> S = \comma,a,sent -> sent ** { - s = a.s ++ comma ++ sent.s + s = \\c => a.s ++ comma ++ sent.s ! c } ; }