forked from GitHub/comp-syntax-gu-mlt
a
This commit is contained in:
@@ -1,75 +1,11 @@
|
|||||||
resource MicroResKor = open Prelude in {
|
resource MicroResKor = open Prelude in {
|
||||||
|
param
|
||||||
|
Regularity = Regular | PieupIrregular ;
|
||||||
|
|
||||||
param
|
oper
|
||||||
Number = Sg | Pl ;
|
Noun : Type = {s : Str} ;
|
||||||
Case = Nom | Acc ;
|
Verb : Type = {
|
||||||
|
reg : Regularity ;
|
||||||
|
stem : Str
|
||||||
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
|
|
||||||
}
|
}
|
||||||
} ;
|
|
||||||
|
|
||||||
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
|
|
||||||
} ;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user