diff --git a/src/korean/AdjectiveKor.gf b/src/korean/AdjectiveKor.gf index a59e74ea5..440a473b1 100644 --- a/src/korean/AdjectiveKor.gf +++ b/src/korean/AdjectiveKor.gf @@ -11,7 +11,7 @@ concrete AdjectiveKor of Adjective = CatKor ** open ResKor, Prelude in { -- : A -> NP -> AP ; ComparA a np = a ** { - compar = np.s + compar = np.s ! Bare } ; -- : A2 -> NP -> AP ; -- married to her diff --git a/src/korean/AdverbKor.gf b/src/korean/AdverbKor.gf index 24da40d26..d332f627a 100644 --- a/src/korean/AdverbKor.gf +++ b/src/korean/AdverbKor.gf @@ -1,6 +1,6 @@ concrete AdverbKor of Adverb = CatKor ** open ResKor, ParamKor, ParadigmsKor, Prelude in { ---lin +lin -- : A -> Adv ; --PositAdvAdj adj = { } ; @@ -11,7 +11,7 @@ concrete AdverbKor of Adverb = CatKor ** open ResKor, ParamKor, ParadigmsKor, Pr -- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs -- : Prep -> NP -> Adv ; - -- PrepNP = + PrepNP prep np = {s = glue (np.s ! Bare) prep.s} ; -- Adverbs can be modified by 'adadjectives', just like adjectives. diff --git a/src/korean/LexiconKor.gf b/src/korean/LexiconKor.gf index 15f6036a8..958640353 100644 --- a/src/korean/LexiconKor.gf +++ b/src/korean/LexiconKor.gf @@ -176,7 +176,7 @@ lin girl_N = mkN "여자아이" ; -- lin horn_N = mkN "" ; -- lin horse_N = mkN "" ; -- lin hot_A = mkA "" ; -lin house_N = mkN "guri" ; +lin house_N = mkN "집" ; -- lin hunt_V2 = mkV2 "" ; -- lin husband_N = mkN "" ; diff --git a/src/korean/NounKor.gf b/src/korean/NounKor.gf index 81af0cbfe..ab79d4f03 100644 --- a/src/korean/NounKor.gf +++ b/src/korean/NounKor.gf @@ -7,7 +7,7 @@ concrete NounKor of Noun = CatKor ** open ResKor, Prelude in { --2 Noun phrases -- : Det -> CN -> NP - DetCN det cn = {s = det.s ++ cn.s} ; + DetCN det cn = {s = \\c => det.s ++ cn.s ! c} ; -- : PN -> NP ; -- UsePN pn = pn ** { diff --git a/src/korean/ParamKor.gf b/src/korean/ParamKor.gf index 8931ca04f..38f081d4d 100644 --- a/src/korean/ParamKor.gf +++ b/src/korean/ParamKor.gf @@ -21,6 +21,7 @@ oper -- "p" => "b" ; -- _ => s } ; + -------------------------------------------------------------------------------- -- Morphophonology @@ -31,11 +32,22 @@ oper param NForm = - Topic - | Subject - | Object ; + Bare -- no case particle + | Topic -- 은 or 는 + | Subject -- 이 or 가 + | Object -- 을 or 를 + ; +oper + allomorph : NForm -> Str -> Str = \nf,s -> + let endsInV : Bool = case s of {_ + #v => True ; _ => False} ; + in case nf of { + Topic => if_then_Str endsInV "은" "는" ; + Subject => if_then_Str endsInV "이" "가" ; + Object => if_then_Str endsInV "을" "를" ; + Bare => [] + } ; -------------------------------------------------------------------------------- -- Numerals @@ -56,7 +68,9 @@ oper -- Adjectives param - AForm = AdjPres | AdjPast ; -- TODO: proper thing + AForm = + AAttr | + APred VForm ; -------------------------------------------------------------------------------- -- Prepositions diff --git a/src/korean/ResKor.gf b/src/korean/ResKor.gf index 3303301b2..a7fcf317d 100644 --- a/src/korean/ResKor.gf +++ b/src/korean/ResKor.gf @@ -5,7 +5,7 @@ resource ResKor = ParamKor ** open Prelude, Predef, ParamKor in { oper Noun : Type = { - s : Str + s : NForm => Str } ; Noun2 : Type = Noun ; -- TODO eventually more parameters? Noun3 : Type = Noun ; @@ -15,7 +15,9 @@ oper PNoun : Type = Noun ; - mkNoun : Str -> Noun = \str -> ss str ; + mkNoun : Str -> Noun = \str -> { + s = \\cas => str + allomorph cas str + } ; useN : Noun -> CNoun = \n -> n ; @@ -185,7 +187,7 @@ oper predVPslash = predVP ; -- VP==VPSlash, Cl==ClSlash predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vp -> vp ** { - s = \\t,a,p => np.s + s = \\t,a,p => np.s ! Topic ++ vp.aComp ++ vp.nComp -- TODO: embed copula into complement ++ vp.s ! VFin Gnomic Pos -- TODO: actual forms } ; diff --git a/src/korean/StructuralKor.gf b/src/korean/StructuralKor.gf index 2f4593c86..8ae63daea 100644 --- a/src/korean/StructuralKor.gf +++ b/src/korean/StructuralKor.gf @@ -104,12 +104,12 @@ oper -- lin for_Prep = mkPrep ; -- lin from_Prep = mkPrep "" ; -- lin in8front_Prep = mkPrep "" ; --- lin in_Prep = mkPrep "" ; --- lin on_Prep = mkPrep "" ; +lin in_Prep = mkPrep "에서" ; +-- lin on_Prep = mkPrep "에서" ; -- lin part_Prep = mkPrep ; --- lin possess_Prep = mkPrep ; +lin possess_Prep = mkPrep "의" ; -- lin through_Prep = mkPrep ; --- lin to_Prep = mkPrep ; +lin to_Prep = mkPrep "에"; -- lin under_Prep = mkPrep "" ; -- lin with_Prep = mkPrep "" ; -- lin without_Prep = mkPrep "" ; diff --git a/src/korean/VerbKor.gf b/src/korean/VerbKor.gf index 126a58294..2c419583c 100644 --- a/src/korean/VerbKor.gf +++ b/src/korean/VerbKor.gf @@ -119,12 +119,12 @@ lin -- : CN -> Comp ; CompCN cn = emptyComp ** { - aComp = cn.s ; -- TODO: num. I am [a house that sleeps here] vs. we are [houses that sleep here] + aComp = cn.s ! Bare ; -- TODO: num. I am [a house that sleeps here] vs. we are [houses that sleep here] } ; -- NP -> Comp ; CompNP np = emptyComp ** { - nComp = np.s ; -- ! Object ; + nComp = np.s ! Bare ; } ; -- : Adv -> Comp ;