From 997b50276fd7f9e00601a6795aa1076e37a32b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Wed, 28 Jan 2026 14:19:28 -0700 Subject: [PATCH] c --- lab1/grammar/korean/MicroLangKor.gf | 195 ++++++++-------------------- lab1/grammar/korean/MicroResKor.gf | 4 +- 2 files changed, 58 insertions(+), 141 deletions(-) diff --git a/lab1/grammar/korean/MicroLangKor.gf b/lab1/grammar/korean/MicroLangKor.gf index 95d751d..f7619e8 100644 --- a/lab1/grammar/korean/MicroLangKor.gf +++ b/lab1/grammar/korean/MicroLangKor.gf @@ -13,9 +13,9 @@ concrete MicroLangKor of MicroLang = open MicroResKor, Prelude in { Comp = {s : Str} ; AP = Adjective ; CN = Noun ; - NP = {s : Case => Str ; a : Agreement} ; - Pron = {s : Case => Str ; a : Agreement} ; - Det = {s : Str ; n : Number} ; + NP = {s : Str} ; + Pron = {s : Str} ; + Det = {s : Str} ; Prep = {s : Str} ; V = Verb ; V2 = Verb2 ; @@ -23,202 +23,117 @@ concrete MicroLangKor of MicroLang = open MicroResKor, Prelude in { N = Noun ; Adv = {s : Str} ; - lin - UttS s = s ; - UttNP np = {s = np.s ! Acc} ; - - PredVPS np vp = { - s = np.s ! Nom ++ vp.verb.s ! agr2vform np.a ++ vp.compl - } ; - - UseV v = { - verb = v ; - compl = [] ; - } ; - - ComplV2 v2 np = { - verb = v2 ; - compl = v2.c ++ np.s ! Acc -- NP object in the accusative, preposition first - } ; - - UseComp comp = { - verb = be_Verb ; -- the verb is the copula "be" - compl = comp.s - } ; - - CompAP ap = ap ; - - AdvVP vp adv = - vp ** {compl = vp.compl ++ adv.s} ; - - DetCN det cn = { - s = \\c => det.s ++ cn.s ! det.n ; - a = Agr det.n ; - } ; - - UsePron p = p ; - - a_Det = {s = pre {"a"|"e"|"i"|"o" => "an" ; _ => "a"} ; n = Sg} ; --- a/an can get wrong - aPl_Det = {s = "" ; n = Pl} ; - the_Det = {s = "the" ; n = Sg} ; - thePl_Det = {s = "the" ; n = Pl} ; - - UseN n = n ; - - AdjCN ap cn = { - s = table {n => ap.s ++ cn.s ! n} - } ; - - PositA a = a ; - - PrepNP prep np = {s = prep.s ++ np.s ! Acc} ; - - in_Prep = {s = "in"} ; - on_Prep = {s = "on"} ; - with_Prep = {s = "with"} ; - - he_Pron = { - s = table {Nom => "he" ; Acc => "him"} ; - a = Agr Sg ; - } ; - she_Pron = { - s = table {Nom => "she" ; Acc => "her"} ; - a = Agr Sg ; - } ; - they_Pron = { - s = table {Nom => "they" ; Acc => "them"} ; - a = Agr Pl ; - } ; - ----------------------------------------------------- ---------------- Lexicon part ----------------------- ----------------------------------------------------- -lin already_Adv = mkAdv "벌써" ; +-- lin already_Adv = mkAdv "벌써" ; lin animal_N = mkN "동물" ; lin apple_N = mkN "사과" ; lin baby_N = mkN "아기" ; -lin bad_A = mkA "나쁜" ; +-- lin bad_A = mkA "나쁜" ; lin beer_N = mkN "beer" ; -lin big_A = mkA "큰" ; +-- lin big_A = mkA "큰" ; lin bike_N = mkN "bike" ; lin bird_N = mkN "bird" ; -lin black_A = mkA "black" ; +-- lin black_A = mkA "black" ; lin blood_N = mkN "피" ; -lin blue_A = mkA "blue" ; +-- lin blue_A = mkA "blue" ; lin boat_N = mkN "boat" ; lin book_N = mkN "책" ; lin boy_N = mkN "소녁" ; lin bread_N = mkN "bread" ; -lin break_V2 = mkV2 (mkV "break" "broke" "broken") ; -lin buy_V2 = mkV2 (mkV "buy" "bought" "bought") ; +-- lin break_V2 = mkV2 (mkV "break" "broke" "broken") ; +-- lin buy_V2 = mkV2 (mkV "buy" "bought" "bought") ; lin car_N = mkN "자동차" ; lin cat_N = mkN "고양이" ; lin child_N = mkN "어린이" ; lin city_N = mkN "city" ; -lin clean_A = mkA "정소한" ; -lin clever_A = mkA "똑똑한" ; +-- lin clean_A = mkA "정소한" ; +-- lin clever_A = mkA "똑똑한" ; lin cloud_N = mkN "cloud" ; -lin cold_A = mkA "차가운" ; -lin come_V = mkV "come" "came" "come" ; +-- lin cold_A = mkA "차가운" ; +-- lin come_V = mkV "come" "came" "come" ; lin computer_N = mkN "컴퓨터" ; lin cow_N = mkN "cow" ; -lin dirty_A = mkA "더러운" ; +-- lin dirty_A = mkA "더러운" ; lin dog_N = mkN "개" ; -lin drink_V2 = mkV2 (mkV "drink" "drank" "drunk") ; -lin eat_V2 = mkV2 (mkV "eat" "ate" "eaten") ; -lin find_V2 = mkV2 (mkV "find" "found" "found") ; +-- lin drink_V2 = mkV2 (mkV "drink" "drank" "drunk") ; +-- lin eat_V2 = mkV2 (mkV "eat" "ate" "eaten") ; +-- lin find_V2 = mkV2 (mkV "find" "found" "found") ; lin fire_N = mkN "fire" ; lin fish_N = mkN "생선" ; lin flower_N = mkN "flower" ; lin friend_N = mkN "진구" ; lin girl_N = mkN "소녀" ; -lin good_A = mkA "좋은" ; -lin go_V = mkV "go" "went" "gone" ; +-- lin good_A = mkA "좋은" ; +-- lin go_V = mkV "go" "went" "gone" ; lin grammar_N = mkN "grammar" ; -lin green_A = mkA "green" ; -lin heavy_A = mkA "heavy" ; +-- lin green_A = mkA "green" ; +-- lin heavy_A = mkA "heavy" ; lin horse_N = mkN "horse" ; -lin hot_A = mkA "hot" ; +-- lin hot_A = mkA "hot" ; lin house_N = mkN "집" ; -- lin john_PN = mkPN "John" ; -lin jump_V = mkV "jump" ; -lin kill_V2 = mkV2 "kill" ; +-- lin jump_V = mkV "jump" ; +-- lin kill_V2 = mkV2 "kill" ; -- lin know_VS = mkVS (mkV "know" "knew" "known") ; lin language_N = mkN "언어" ; -lin live_V = mkV "live" ; -lin love_V2 = mkV2 (mkV "love") ; +-- lin live_V = mkV "live" ; +-- lin love_V2 = mkV2 (mkV "love") ; lin man_N = mkN "남자" ; lin milk_N = mkN "우유" ; lin music_N = mkN "음악" ; -lin new_A = mkA "new" ; -lin now_Adv = mkAdv "지금" ; -lin old_A = mkA "낡안" ; +-- lin new_A = mkA "new" ; +-- lin now_Adv = mkAdv "지금" ; +-- lin old_A = mkA "낡안" ; -- lin paris_PN = mkPN "Paris" ; -lin play_V = mkV "play" ; -lin read_V2 = mkV2 (mkV "read" "read" "read") ; -lin ready_A = mkA "ready" ; -lin red_A = mkA "red" ; +-- lin play_V = mkV "play" ; +-- lin read_V2 = mkV2 (mkV "read" "read" "read") ; +-- lin ready_A = mkA "ready" ; +-- lin red_A = mkA "red" ; lin river_N = mkN "river" ; -lin run_V = mkV "run" "ran" "run" ; +-- lin run_V = mkV "run" "ran" "run" ; lin sea_N = mkN "바다" ; -lin see_V2 = mkV2 (mkV "see" "saw" "seen") ; +-- lin see_V2 = mkV2 (mkV "see" "saw" "seen") ; lin ship_N = mkN "ship" ; -lin sleep_V = mkV "sleep" "slept" "slept" ; -lin small_A = mkA "작은" ; +-- lin sleep_V = mkV "sleep" "slept" "slept" ; +-- lin small_A = mkA "작은" ; lin star_N = mkN "별" ; -lin swim_V = mkV "swim" "swam" "swum" ; -lin teach_V2 = mkV2 (mkV "teach" "taught" "taught") ; +-- lin swim_V = mkV "swim" "swam" "swum" ; +-- lin teach_V2 = mkV2 (mkV "teach" "taught" "taught") ; lin train_N = mkN "train" ; -lin travel_V = mkV "travel" ; +-- lin travel_V = mkV "travel" ; lin tree_N = mkN "tree" ; -lin understand_V2 = mkV2 (mkV "understand" "understood" "understood") ; -lin wait_V2 = mkV2 "wait" "for" ; -lin walk_V = mkV "walk" ; -lin warm_A = mkA "따뜻한" ; +-- lin understand_V2 = mkV2 (mkV "understand" "understood" "understood") ; +-- lin wait_V2 = mkV2 "wait" "for" ; +-- lin walk_V = mkV "walk" ; +-- lin warm_A = mkA "따뜻한" ; lin water_N = mkN "물" ; -lin white_A = mkA "하얗은" ; +-- lin white_A = mkA "하얗은" ; lin wine_N = mkN "wine" ; lin woman_N = mkN "여자" ; -lin yellow_A = mkA "yellow" ; -lin young_A = mkA "young" ; +-- lin yellow_A = mkA "yellow" ; +-- lin young_A = mkA "young" ; --------------------------- -- Paradigms part --------- --------------------------- oper - mkN = overload { - mkN : Str -> Noun -- predictable noun, e.g. car-cars, boy-boys, fly-flies, bush-bushes - = \n -> lin N (smartNoun n) ; - mkN : Str -> Str -> Noun -- irregular noun, e.g. man-men - = \sg,pl -> lin N (mkNoun sg pl) ; - } ; + mkN : Str -> Noun + = \s -> lin N {s = s} ; mkA : Str -> A - = \s -> lin A {s = s} ; - - mkV = overload { - mkV : (inf : Str) -> V -- predictable verb, e.g. play-plays, cry-cries, wash-washes - = \s -> lin V (smartVerb s) ; - mkV : (inf,pres,part : Str) -> V -- irregular verb, e.g. drink-drank-drunk - = \inf,pres,part -> lin V (irregVerb inf pres part) ; - } ; - - mkV2 = overload { - mkV2 : Str -> V2 -- predictable verb with direct object, e.g. "wash" - = \s -> lin V2 (smartVerb s ** {c = []}) ; - mkV2 : Str -> Str -> V2 -- predictable verb with preposition, e.g. "wait - for" - = \s,p -> lin V2 (smartVerb s ** {c = p}) ; - mkV2 : V -> V2 -- any verb with direct object, e.g. "drink" - = \v -> lin V2 (v ** {c = []}) ; - mkV2 : V -> Str -> V2 -- any verb with preposition - = \v,p -> lin V2 (v ** {c = p}) ; + = \stem -> lin A { + stem = stem ; + reg = Regular ; + t = Descriptive } ; mkAdv : Str -> Adv = \s -> lin Adv {s = s} ; - + mkPrep : Str -> Prep = \s -> lin Prep {s = s} ; diff --git a/lab1/grammar/korean/MicroResKor.gf b/lab1/grammar/korean/MicroResKor.gf index 820f4e3..c51e372 100644 --- a/lab1/grammar/korean/MicroResKor.gf +++ b/lab1/grammar/korean/MicroResKor.gf @@ -9,5 +9,7 @@ resource MicroResKor = open Prelude in { reg : Regularity ; stem : Str ; t : VerbType - } + } ; + Verb2 : Type = { v : Verb } ; + Adjective : Type = Verb ; }