Files
comp-syntax-gu-mlt/labs1-2/grammar/myproject/MicroResSwe.gf
2025-03-21 13:51:53 +01:00

36 lines
803 B
Plaintext

resource MicroResSwe = open Prelude in {
param
Number = Sg | Pl ;
Species = Indef | Def ;
Gender = Utr | Neutr ;
oper
N : Type = {s : Number => Species => Str ; g : Gender} ;
worstN : Str -> Str -> Str -> Str -> Gender -> N
= \man,mannen,män,männen,g -> {
s = table {
Sg => table {Indef => man ; Def => mannen} ;
Pl => table {Indef => män ; Def => männen}
} ;
g = g
} ;
-- https://en.wikipedia.org/wiki/Swedish_grammar
decl1 : Str -> N
= \apa ->
let ap = init apa in
worstN apa (apa + "n") (ap + "or") (ap + "orna") Utr ;
decl2 : Str -> N
= \bil -> case bil of {
pojk + "e" => worstN bil (bil + "en") (pojk + "ar") (pojk + "arna") Utr ;
_ => worstN bil (bil + "en") (bil + "ar") (bil + "arna") Utr
} ;
}