mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
85 lines
3.1 KiB
Plaintext
85 lines
3.1 KiB
Plaintext
--# -path=.:prelude
|
|
|
|
-- (c) 2009 Martha Dis Brandt under LGPL
|
|
|
|
concrete FoodsIce of Foods = open Prelude in {
|
|
|
|
flags coding=utf8;
|
|
|
|
lincat
|
|
Comment = SS ;
|
|
Quality = {s : Gender => Number => Defin => Str} ;
|
|
Kind = {s : Number => Str ; g : Gender} ;
|
|
Item = {s : Str ; g : Gender ; n : Number} ;
|
|
|
|
lin
|
|
Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ;
|
|
This, That = det Sg "þessi" "þessi" "þetta" ;
|
|
These, Those = det Pl "þessir" "þessar" "þessi" ;
|
|
Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ;
|
|
Wine = noun "vín" "vín" Neutr ;
|
|
Cheese = noun "ostur" "ostar" Masc ;
|
|
Fish = noun "fiskur" "fiskar" Masc ;
|
|
-- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it
|
|
Pizza = noun "flatbaka" "flatbökur" Fem ;
|
|
Very qual = {s = \\g,n,defOrInd => "mjög" ++ qual.s ! g ! n ! defOrInd } ;
|
|
Fresh = regAdj "ferskur" ;
|
|
Warm = regAdj "heitur" ;
|
|
Boring = regAdj "leiðinlegur" ;
|
|
-- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef
|
|
Italian = adjective "ítalskur" "ítölsk" "ítalskt" "ítalskir" "ítalskar" "ítölsk" "ítalski" "ítalska" "ítalsku" ;
|
|
Expensive = adjective "dýr" "dýr" "dýrt" "dýrir" "dýrar" "dýr" "dýri" "dýra" "dýru" ;
|
|
Delicious = adjective "ljúffengur" "ljúffeng" "ljúffengt" "ljúffengir" "ljúffengar" "ljúffeng" "ljúffengi" "ljúffenga" "ljúffengu" ;
|
|
|
|
param
|
|
Number = Sg | Pl ;
|
|
Gender = Masc | Fem | Neutr ;
|
|
Defin = Ind | Def ;
|
|
|
|
oper
|
|
det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} ->
|
|
{s : Str ; g : Gender ; n : Number} =
|
|
\n,masc,fem,neutr,cn -> {
|
|
s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ;
|
|
g = cn.g ;
|
|
n = n
|
|
} ;
|
|
|
|
noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
|
|
\man,men,g -> {
|
|
s = table {
|
|
Sg => man ;
|
|
Pl => men
|
|
} ;
|
|
g = g
|
|
} ;
|
|
|
|
adjective : (x1,_,_,_,_,_,_,_,x9 : Str) -> {s : Gender => Number => Defin => Str} =
|
|
\ferskur,fersk,ferskt,ferskir,ferskar,fersk_pl,ferski,ferska,fersku -> {
|
|
s = \\g,n,t => case <g,n,t> of {
|
|
< Masc, Sg, Ind > => ferskur ;
|
|
< Masc, Pl, Ind > => ferskir ;
|
|
< Fem, Sg, Ind > => fersk ;
|
|
< Fem, Pl, Ind > => ferskar ;
|
|
< Neutr, Sg, Ind > => ferskt ;
|
|
< Neutr, Pl, Ind > => fersk_pl;
|
|
< Masc, Sg, Def > => ferski ;
|
|
< Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ;
|
|
< _ , Pl, Def > => fersku
|
|
}
|
|
} ;
|
|
|
|
regAdj : Str -> {s : Gender => Number => Defin => Str} = \ferskur ->
|
|
let fersk = Predef.tk 2 ferskur
|
|
in adjective
|
|
ferskur fersk (fersk + "t")
|
|
(fersk + "ir") (fersk + "ar") fersk
|
|
(fersk + "i") (fersk + "a") (fersk + "u") ;
|
|
|
|
copula : Number -> Str =
|
|
\n -> case n of {
|
|
Sg => "er" ;
|
|
Pl => "eru"
|
|
} ;
|
|
}
|