diff --git a/helpers.el b/helpers.el index 1bd6c46..9653926 100644 --- a/helpers.el +++ b/helpers.el @@ -32,7 +32,8 @@ equivalents." (defun hangul-convert-buffer-to-jamo () (interactive) - (hangul-convert-region-to-jamo (point-min) (point-max))) + (hangul-convert-region-to-jamo (point-min) (point-max)) + (message "Converted Hangul Syllables in buffer to Jamo.")) (require 'dash) diff --git a/lab1/grammar/korean/HangulJamo.gf b/lab1/grammar/korean/HangulJamo.gf index 38205e0..26f4257 100644 --- a/lab1/grammar/korean/HangulJamo.gf +++ b/lab1/grammar/korean/HangulJamo.gf @@ -9,13 +9,13 @@ resource HangulJamo = open Prelude in { infinitive : (stem : Str) -> Str = \stem -> case stem of { + init + #ha => init + "해" ; _ + #a_o + #batchim => stem + "아" ; _ + (#a | #eo) => stem ; init + #o => init + "ᅪ" ; init + #eu => init + "ᅥ" ; - init + #i => init + "ㅕ" ; + init + #i => init + "ᅧ" ; init + #u => init + "ᅯ" ; - init + #ha => init + "해" ; _ => stem + "어" } ; diff --git a/lab1/grammar/korean/MicroLangKor.gf b/lab1/grammar/korean/MicroLangKor.gf index 5a46821..0d3d3cc 100644 --- a/lab1/grammar/korean/MicroLangKor.gf +++ b/lab1/grammar/korean/MicroLangKor.gf @@ -26,9 +26,9 @@ concrete MicroLangKor of MicroLang = open MicroResKor, Prelude in { Adv = {s : Str} ; lin - UttS s = s ; + UttS s = {s = s.s} ; UttNP np = {s = np.s} ; - -- PredVPS np vp = {s = np.s ++ vp.compl ++ vp.verb.s} ; + PredVPS np vp = {s = np.s ++ vp.compl ++ vp.verb.s ! VPresent} ; UseV v = {verb = v ; compl = []} ; ComplV2 v2 np = {verb = v2 ; compl = np.s}; UseN n = n ; @@ -72,21 +72,21 @@ lin child_N = mkN "어린이" ; -- lin clever_A = mkA "똑똑한" ; -- lin cloud_N = mkN "cloud" ; -- lin cold_A = mkA "차가운" ; -lin come_V = regVerb "오다" ; +lin come_V = mkV "오다" ; lin computer_N = mkN "컴퓨터" ; -- lin cow_N = mkN "cow" ; -- 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 "마시다" ; +lin eat_V2 = mkV2 "먹다" ; +lin find_V2 = mkV2 "찾다" ; -- 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 go_V = mkV "가다" ; -- lin grammar_N = mkN "grammar" ; -- lin green_A = mkA "green" ; -- lin heavy_A = mkA "heavy" ; @@ -95,8 +95,8 @@ lin girl_N = mkN "소녀" ; lin house_N = mkN "집" ; -- lin john_PN = mkPN "John" ; -- lin jump_V = mkV "jump" ; --- lin kill_V2 = mkV2 "kill" ; --- lin know_VS = mkVS (mkV "know" "knew" "known") ; +lin kill_V2 = mkV2 "죽다" ; +-- lin know_V2 = mkV "알다" ; lin language_N = mkN "언어" ; -- lin live_V = mkV "live" ; -- lin love_V2 = mkV2 (mkV "love") ; @@ -104,29 +104,29 @@ lin man_N = mkN "남자" ; lin milk_N = mkN "우유" ; lin music_N = mkN "음악" ; -- lin new_A = mkA "new" ; --- lin now_Adv = mkAdv "지금" ; +lin now_Adv = mkAdv "지금" ; -- lin old_A = mkA "낡안" ; -- lin paris_PN = mkPN "Paris" ; --- lin play_V = mkV "놀" ; --- lin read_V2 = mkV2 (mkV "read" "read" "read") ; +lin play_V = mkV "놀다" ; +lin read_V2 = mkV2 "읽다" ; -- lin ready_A = mkA "ready" ; -- lin red_A = mkA "red" ; -lin river_N = mkN "river" ; +lin river_N = mkN "강" ; -- lin run_V = mkV "run" "ran" "run" ; lin sea_N = mkN "바다" ; -- lin see_V2 = mkV2 (mkV "see" "saw" "seen") ; -- lin ship_N = mkN "ship" ; --- lin sleep_V = regVerb "자다" ; +lin sleep_V = mkV "자다" ; -- 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 "수영하다" ; +lin teach_V2 = mkV2 "가르치다" ; -- lin train_N = mkN "train" ; -- 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 wait_V2 = mkV2 "기다리다" ; +lin walk_V = mkV "걷다" ; -- lin warm_A = mkA "따뜻한" ; lin water_N = mkN "물" ; -- lin white_A = mkA "하얗은" ; @@ -143,8 +143,14 @@ oper mkN : Str -> Noun = \s -> lin N {s = s} ; - -- mkA : Str -> A - -- = \stem -> lin A (mkV stem) ; + mkV : Str -> V = \lemma -> lin V (regVerb lemma) ; + + mkV2 = overload { + mkV2 : Str -> V2 + = \lemma -> lin V2 (mkV lemma) ; + mkV2 : V -> V2 + = \v -> lin V2 v ; + } ; mkAdv : Str -> Adv = \s -> lin Adv {s = s} ;