improving mini res morpho

This commit is contained in:
aarne
2007-08-16 14:10:06 +00:00
parent 1f342b2c25
commit 5f0e8a16ec
8 changed files with 335 additions and 213 deletions

View File

@@ -2,14 +2,61 @@
resource MorphoEng = open Prelude in {
-- the lexicon construction API
oper
mkN : overload {
mkN : (bus : Str) -> Noun ;
mkN : (man,men : Str) -> Noun ;
} ;
mkA : (warm : Str) -> Adjective ;
mkV : overload {
mkV : (kiss : Str) -> Verb ;
mkV : (do,does : Str) -> Verb ;
} ;
mkV2 : overload {
mkV2 : (love : Verb) -> Verb2 ;
mkV2 : (talk : Verb) -> (about : Str) -> Verb2 ;
} ;
-- grammar-internal definitions
param
Number = Sg | Pl ;
oper
Noun, Verb : Type = {s : Number => Str} ;
Adjective : Type = {s : Str} ;
Verb2 : Type = Verb ** {c : Str} ;
NP = {s : Str ; n : Number} ;
VP = {s : Bool => Bool => Number => Str * Str} ; -- decl, pol
mkN = overload {
mkN : (bus : Str) -> Noun = \s -> mkNoun s (add_s s) ;
mkN : (man,men : Str) -> Noun = mkNoun ;
} ;
mkA : (warm : Str) -> Adjective = ss ;
mkV = overload {
mkV : (kiss : Str) -> Verb = \s -> mkVerb s (add_s s) ;
mkV : (do,does : Str) -> Verb = mkVerb ;
} ;
mkV2 = overload {
mkV2 : (love : Verb) -> Verb2 = \love -> love ** {c = []} ;
mkV2 : (talk : Verb) -> (about : Str) -> Verb2 =
\talk,about -> talk ** {c = about} ;
} ;
add_s : Str -> Str = \w -> case w of {
_ + "oo" => w + "s" ; -- bamboo
_ + ("s" | "z" | "x" | "sh" | "o") => w + "es" ; -- bus, hero
_ + ("a" | "o" | "u" | "e") + "y" => w + "s" ; -- boy
x + "y" => x + "ies" ; -- fly
_ => w + "s" -- car
} ;
mkNoun : Str -> Str -> Noun = \x,y -> {
s = table {
@@ -18,19 +65,5 @@ resource MorphoEng = open Prelude in {
}
} ;
regNoun : Str -> Noun = \s -> case last s of {
"s" | "z" => mkNoun s (s + "es") ;
"y" => mkNoun s (init s + "ies") ;
_ => mkNoun s (s + "s")
} ;
mkVerb : Str -> Str -> Verb = \x,y -> mkNoun y x ;
regVerb : Str -> Verb = \s -> case last s of {
"s" | "z" => mkVerb s (s + "es") ;
"y" => mkVerb s (init s + "ies") ;
"o" => mkVerb s (s + "es") ;
_ => mkVerb s (s + "s")
} ;
}