mirror of
https://github.com/GrammaticalFramework/comp-syntax-gu-mlt.git
synced 2026-02-08 22:41:05 -07:00
44 lines
914 B
Plaintext
44 lines
914 B
Plaintext
-- live-coded MicroResEng for Lab 2
|
|
|
|
resource MicroResEng = {
|
|
|
|
param
|
|
Number = Sg | Pl ;
|
|
|
|
oper
|
|
-- phonological patterns
|
|
sibilant : pattern Str
|
|
= #("s" | "x" | "ch" | "sh" | "z") ;
|
|
vowel : pattern Str
|
|
= #("a" | "e" | "i" | "o" | "u") ;
|
|
|
|
-- the type of nouns
|
|
Noun : Type = {s : Number => Str} ;
|
|
|
|
-- worst-case paradigm
|
|
mkNoun : (sg, pl : Str) -> Noun
|
|
= \sg, pl -> {s = table {Sg => sg ; Pl => pl}} ;
|
|
|
|
-- regular paradigm
|
|
regNoun : (sg : Str) -> Noun
|
|
= \sg -> mkNoun sg (sg + "s") ;
|
|
|
|
-- smart paradigm
|
|
smartNoun : (sg : Str) -> Noun
|
|
= \sg -> case sg of {
|
|
x + #vowel + "y" => regNoun sg ;
|
|
x + "y" => mkNoun sg (x + "ies") ;
|
|
x + #sibilant => mkNoun sg (sg + "es") ;
|
|
_ => regNoun sg
|
|
} ;
|
|
|
|
-- overloaded paradigm for lexicographers
|
|
mkN = overload {
|
|
mkN : (sg : Str) -> Noun = smartNoun ;
|
|
mkN : (sg, pl : Str) -> Noun = mkNoun ;
|
|
} ;
|
|
|
|
|
|
|
|
|
|
} |