diff --git a/lab1/grammar/korean/MicroResKor.gf b/lab1/grammar/korean/MicroResKor.gf index dd1568b..b0cdadf 100644 --- a/lab1/grammar/korean/MicroResKor.gf +++ b/lab1/grammar/korean/MicroResKor.gf @@ -1,75 +1,11 @@ resource MicroResKor = open Prelude in { + param + Regularity = Regular | PieupIrregular ; -param - Number = Sg | Pl ; - Case = Nom | Acc ; - - - Agreement = Agr Number ; ---s Person to be added - - -- all forms of normal Eng verbs, although not yet used in MiniGrammar - VForm = Inf | PresSg3 | Past | PastPart | PresPart ; - -oper - Noun : Type = {s : Number => Str} ; - - mkNoun : Str -> Str -> Noun = \sg,pl -> { - s = table {Sg => sg ; Pl => pl} - } ; - - regNoun : Str -> Noun = \sg -> mkNoun sg (sg + "s") ; - - -- smart paradigm - smartNoun : Str -> Noun = \sg -> case sg of { - _ + ("ay"|"ey"|"oy"|"uy") => regNoun sg ; - x + "y" => mkNoun sg (x + "ies") ; - _ + ("ch"|"sh"|"s"|"o") => mkNoun sg (sg + "es") ; - _ => regNoun sg - } ; - - Adjective : Type = {s : Str} ; - - Verb : Type = {s : VForm => Str} ; - - mkVerb : (inf,pres,past,pastpart,prespart : Str) -> Verb - = \inf,pres,past,pastpart,prespart -> { - s = table { - Inf => inf ; - PresSg3 => pres ; - Past => past ; - PastPart => pastpart ; - PresPart => prespart + oper + Noun : Type = {s : Str} ; + Verb : Type = { + reg : Regularity ; + stem : Str } - } ; - - regVerb : (inf : Str) -> Verb = \inf -> - mkVerb inf (inf + "s") (inf + "ed") (inf + "ed") (inf + "ing") ; - - -- regular verbs with predictable variations - smartVerb : Str -> Verb = \inf -> case inf of { - pl + ("a"|"e"|"i"|"o"|"u") + "y" => regVerb inf ; - cr + "y" => mkVerb inf (cr + "ies") (cr + "ied") (cr + "ied") (inf + "ing") ; - lov + "e" => mkVerb inf (inf + "s") (lov + "ed") (lov + "ed") (lov + "ing") ; - kis + ("s"|"sh"|"x"|"o") => mkVerb inf (inf + "es") (inf + "ed") (inf + "ed") (inf + "ing") ; - _ => regVerb inf - } ; - - -- normal irregular verbs e.g. drink,drank,drunk - irregVerb : (inf,past,pastpart : Str) -> Verb = - \inf,past,pastpart -> - let verb = smartVerb inf - in mkVerb inf (verb.s ! PresSg3) past pastpart (verb.s ! PresPart) ; - - -- two-place verb with "case" as preposition; for transitive verbs, c=[] - Verb2 : Type = Verb ** {c : Str} ; - - be_Verb : Verb = mkVerb "are" "is" "was" "been" "being" ; ---s to be generalized - - ----s a very simplified verb agreement function for Micro - agr2vform : Agreement -> VForm = \a -> case a of { - Agr Sg => PresSg3 ; - Agr Pl => Inf - } ; - }