Try to fix encoding probs by converting to utf8

This commit is contained in:
John J. Camilleri
2013-09-03 09:02:29 +02:00
parent d6e3bcc875
commit 6df8bd62d3
6 changed files with 87 additions and 79 deletions

View File

@@ -1,76 +1,79 @@
-- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL -- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL
concrete FoodsAfr of Foods = open Prelude, Predef in{ concrete FoodsAfr of Foods = open Prelude, Predef in{
flags coding=utf8;
lincat lincat
Comment = {s: Str} ; Comment = {s: Str} ;
Kind = {s: Number => Str} ; Kind = {s: Number => Str} ;
Item = {s: Str ; n: Number} ; Item = {s: Str ; n: Number} ;
Quality = {s: AdjAP => Str} ; Quality = {s: AdjAP => Str} ;
lin lin
Pred item quality = {s = item.s ++ "is" ++ (quality.s ! Predic)}; Pred item quality = {s = item.s ++ "is" ++ (quality.s ! Predic)};
This kind = {s = "hierdie" ++ (kind.s ! Sg); n = Sg}; This kind = {s = "hierdie" ++ (kind.s ! Sg); n = Sg};
That kind = {s = "daardie" ++ (kind.s ! Sg); n = Sg}; That kind = {s = "daardie" ++ (kind.s ! Sg); n = Sg};
These kind = {s = "hierdie" ++ (kind.s ! Pl); n = Pl}; These kind = {s = "hierdie" ++ (kind.s ! Pl); n = Pl};
Those kind = {s = "daardie" ++ (kind.s ! Pl); n = Pl}; Those kind = {s = "daardie" ++ (kind.s ! Pl); n = Pl};
Mod quality kind = {s = table{n => (quality.s ! Attr) ++ (kind.s!n)}}; Mod quality kind = {s = table{n => (quality.s ! Attr) ++ (kind.s!n)}};
Wine = declNoun_e "wyn"; Wine = declNoun_e "wyn";
Cheese = declNoun_aa "kaas"; Cheese = declNoun_aa "kaas";
Fish = declNoun_ss "vis"; Fish = declNoun_ss "vis";
Pizza = declNoun_s "pizza"; Pizza = declNoun_s "pizza";
Very quality = veryAdj quality; Very quality = veryAdj quality;
Fresh = regAdj "vars"; Fresh = regAdj "vars";
Warm = regAdj "warm"; Warm = regAdj "warm";
Italian = smartAdj_e "Italiaans"; Italian = smartAdj_e "Italiaans";
Expensive = regAdj "duur"; Expensive = regAdj "duur";
Delicious = smartAdj_e "heerlik"; Delicious = smartAdj_e "heerlik";
Boring = smartAdj_e "vervelig"; Boring = smartAdj_e "vervelig";
param param
AdjAP = Attr | Predic ; AdjAP = Attr | Predic ;
Number = Sg | Pl ; Number = Sg | Pl ;
oper oper
--Noun operations (wyn, kaas, vis, pizza) --Noun operations (wyn, kaas, vis, pizza)
declNoun_aa: Str -> {s: Number => Str} = \x -> declNoun_aa: Str -> {s: Number => Str} = \x ->
let v = tk 2 x let v = tk 2 x
in in
{s = table{Sg => x ; Pl => v + (last x) +"e"}}; {s = table{Sg => x ; Pl => v + (last x) +"e"}};
declNoun_e: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "e"}} ; declNoun_e: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "e"}} ;
declNoun_s: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "s"}} ; declNoun_s: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "s"}} ;
declNoun_ss: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + (last x) + "e"}} ; declNoun_ss: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + (last x) + "e"}} ;
--Adjective operations --Adjective operations
mkAdj : Str -> Str -> {s: AdjAP => Str} = \x,y -> {s = table{Attr => x; Predic => y}}; mkAdj : Str -> Str -> {s: AdjAP => Str} = \x,y -> {s = table{Attr => x; Predic => y}};
declAdj_e : Str -> {s : AdjAP=> Str} = \x -> mkAdj (x + "e") x; declAdj_e : Str -> {s : AdjAP=> Str} = \x -> mkAdj (x + "e") x;
declAdj_g : Str -> {s : AdjAP=> Str} = \w -> declAdj_g : Str -> {s : AdjAP=> Str} = \w ->
let v = init w let v = init w
in mkAdj (v + "<EFBFBD>") w ; in mkAdj (v + "ë") w ;
declAdj_oog : Str -> {s : AdjAP=> Str} = \w -> declAdj_oog : Str -> {s : AdjAP=> Str} = \w ->
let v = init w let v = init w
in in
let i = init v let i = init v
in mkAdj (i + "<EFBFBD>") w ; in mkAdj (i + "ë") w ;
regAdj : Str -> {s : AdjAP=> Str} = \x -> mkAdj x x; regAdj : Str -> {s : AdjAP=> Str} = \x -> mkAdj x x;
veryAdj : {s: AdjAP => Str} -> {s : AdjAP=> Str} = \x -> {s = table{a => "baie" ++ (x.s!a)}}; veryAdj : {s: AdjAP => Str} -> {s : AdjAP=> Str} = \x -> {s = table{a => "baie" ++ (x.s!a)}};
smartAdj_e : Str -> {s : AdjAP=> Str} = \a -> case a of smartAdj_e : Str -> {s : AdjAP=> Str} = \a -> case a of
{ {
_ + "oog" => declAdj_oog a ; _ + "oog" => declAdj_oog a ;
_ + ("e" | "ie" | "o" | "oe") + "g" => declAdj_g a ; _ + ("e" | "ie" | "o" | "oe") + "g" => declAdj_g a ;
_ => declAdj_e a _ => declAdj_e a
}; };
} }

View File

@@ -4,32 +4,32 @@
concrete FoodsIce of Foods = open Prelude in { concrete FoodsIce of Foods = open Prelude in {
--flags coding=utf8; flags coding=utf8;
lincat lincat
Comment = SS ; Comment = SS ;
Quality = {s : Gender => Number => Defin => Str} ; Quality = {s : Gender => Number => Defin => Str} ;
Kind = {s : Number => Str ; g : Gender} ; Kind = {s : Number => Str ; g : Gender} ;
Item = {s : Str ; g : Gender ; n : Number} ; Item = {s : Str ; g : Gender ; n : Number} ;
lin lin
Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ; Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ;
This, That = det Sg "<EFBFBD>essi" "<EFBFBD>essi" "<EFBFBD>etta" ; This, That = det Sg "þessi" "þessi" "þetta" ;
These, Those = det Pl "<EFBFBD>essir" "<EFBFBD>essar" "<EFBFBD>essi" ; These, Those = det Pl "þessir" "þessar" "þessi" ;
Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ; Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ;
Wine = noun "v<EFBFBD>n" "v<EFBFBD>n" Neutr ; Wine = noun "vín" "vín" Neutr ;
Cheese = noun "ostur" "ostar" Masc ; Cheese = noun "ostur" "ostar" Masc ;
Fish = noun "fiskur" "fiskar" Masc ; Fish = noun "fiskur" "fiskar" Masc ;
-- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it -- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it
Pizza = noun "flatbaka" "flatb<EFBFBD>kur" Fem ; Pizza = noun "flatbaka" "flatbökur" Fem ;
Very qual = {s = \\g,n,defOrInd => "mj<EFBFBD>g" ++ qual.s ! g ! n ! defOrInd } ; Very qual = {s = \\g,n,defOrInd => "mjög" ++ qual.s ! g ! n ! defOrInd } ;
Fresh = regAdj "ferskur" ; Fresh = regAdj "ferskur" ;
Warm = regAdj "heitur" ; Warm = regAdj "heitur" ;
Boring = regAdj "lei<EFBFBD>inlegur" ; Boring = regAdj "leiðinlegur" ;
-- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef -- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef
Italian = adjective "<EFBFBD>talskur" "<EFBFBD>t<EFBFBD>lsk" "<EFBFBD>talskt" "<EFBFBD>talskir" "<EFBFBD>talskar" "<EFBFBD>t<EFBFBD>lsk" "<EFBFBD>talski" "<EFBFBD>talska" "<EFBFBD>talsku" ; Italian = adjective "ítalskur" "ítölsk" "ítalskt" "ítalskir" "ítalskar" "ítölsk" "ítalski" "ítalska" "ítalsku" ;
Expensive = adjective "d<EFBFBD>r" "d<EFBFBD>r" "d<EFBFBD>rt" "d<EFBFBD>rir" "d<EFBFBD>rar" "d<EFBFBD>r" "d<EFBFBD>ri" "d<EFBFBD>ra" "d<EFBFBD>ru" ; Expensive = adjective "dýr" "dýr" "dýrt" "dýrir" "dýrar" "dýr" "dýri" "dýra" "dýru" ;
Delicious = adjective "lj<EFBFBD>ffengur" "lj<EFBFBD>ffeng" "lj<EFBFBD>ffengt" "lj<EFBFBD>ffengir" "lj<EFBFBD>ffengar" "lj<EFBFBD>ffeng" "lj<EFBFBD>ffengi" "lj<EFBFBD>ffenga" "lj<EFBFBD>ffengu" ; Delicious = adjective "ljúffengur" "ljúffeng" "ljúffengt" "ljúffengir" "ljúffengar" "ljúffeng" "ljúffengi" "ljúffenga" "ljúffengu" ;
param param
Number = Sg | Pl ; Number = Sg | Pl ;
@@ -37,19 +37,19 @@ concrete FoodsIce of Foods = open Prelude in {
Defin = Ind | Def ; Defin = Ind | Def ;
oper oper
det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} -> det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} ->
{s : Str ; g : Gender ; n : Number} = {s : Str ; g : Gender ; n : Number} =
\n,masc,fem,neutr,cn -> { \n,masc,fem,neutr,cn -> {
s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ; s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ;
g = cn.g ; g = cn.g ;
n = n n = n
} ; } ;
noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
\man,men,g -> { \man,men,g -> {
s = table { s = table {
Sg => man ; Sg => man ;
Pl => men Pl => men
} ; } ;
g = g g = g
} ; } ;
@@ -65,7 +65,7 @@ concrete FoodsIce of Foods = open Prelude in {
< Neutr, Pl, Ind > => fersk_pl; < Neutr, Pl, Ind > => fersk_pl;
< Masc, Sg, Def > => ferski ; < Masc, Sg, Def > => ferski ;
< Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ; < Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ;
< _ , Pl, Def > => fersku < _ , Pl, Def > => fersku
} }
} ; } ;
@@ -76,7 +76,7 @@ concrete FoodsIce of Foods = open Prelude in {
(fersk + "ir") (fersk + "ar") fersk (fersk + "ir") (fersk + "ar") fersk
(fersk + "i") (fersk + "a") (fersk + "u") ; (fersk + "i") (fersk + "a") (fersk + "u") ;
copula : Number -> Str = copula : Number -> Str =
\n -> case n of { \n -> case n of {
Sg => "er" ; Sg => "er" ;
Pl => "eru" Pl => "eru"

View File

@@ -1,50 +1,52 @@
-- (c) 2009 Rami Shashati under LGPL -- (c) 2009 Rami Shashati under LGPL
concrete FoodsPor of Foods = open Prelude in { concrete FoodsPor of Foods = open Prelude in {
flags coding=utf8;
lincat lincat
Comment = {s : Str} ; Comment = {s : Str} ;
Quality = {s : Gender => Number => Str} ; Quality = {s : Gender => Number => Str} ;
Kind = {s : Number => Str ; g : Gender} ; Kind = {s : Number => Str ; g : Gender} ;
Item = {s : Str ; n : Number ; g : Gender } ; Item = {s : Str ; n : Number ; g : Gender } ;
lin lin
Pred item quality = Pred item quality =
{s = item.s ++ copula ! item.n ++ quality.s ! item.g ! item.n } ; {s = item.s ++ copula ! item.n ++ quality.s ! item.g ! item.n } ;
This = det Sg (table {Masc => "este" ; Fem => "esta"}) ; This = det Sg (table {Masc => "este" ; Fem => "esta"}) ;
That = det Sg (table {Masc => "esse" ; Fem => "essa"}) ; That = det Sg (table {Masc => "esse" ; Fem => "essa"}) ;
These = det Pl (table {Masc => "estes" ; Fem => "estas"}) ; These = det Pl (table {Masc => "estes" ; Fem => "estas"}) ;
Those = det Pl (table {Masc => "esses" ; Fem => "essas"}) ; Those = det Pl (table {Masc => "esses" ; Fem => "essas"}) ;
Mod quality kind = { s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; g = kind.g } ; Mod quality kind = { s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; g = kind.g } ;
Wine = regNoun "vinho" Masc ; Wine = regNoun "vinho" Masc ;
Cheese = regNoun "queijo" Masc ; Cheese = regNoun "queijo" Masc ;
Fish = regNoun "peixe" Masc ; Fish = regNoun "peixe" Masc ;
Pizza = regNoun "pizza" Fem ; Pizza = regNoun "pizza" Fem ;
Very a = { s = \\g,n => "muito" ++ a.s ! g ! n } ; Very a = { s = \\g,n => "muito" ++ a.s ! g ! n } ;
Fresh = mkAdjReg "fresco" ; Fresh = mkAdjReg "fresco" ;
Warm = mkAdjReg "quente" ; Warm = mkAdjReg "quente" ;
Italian = mkAdjReg "Italiano" ; Italian = mkAdjReg "Italiano" ;
Expensive = mkAdjReg "caro" ; Expensive = mkAdjReg "caro" ;
Delicious = mkAdjReg "delicioso" ; Delicious = mkAdjReg "delicioso" ;
Boring = mkAdjReg "chato" ; Boring = mkAdjReg "chato" ;
param param
Number = Sg | Pl ; Number = Sg | Pl ;
Gender = Masc | Fem ; Gender = Masc | Fem ;
oper oper
QualityT : Type = {s : Gender => Number => Str} ; QualityT : Type = {s : Gender => Number => Str} ;
mkAdj : (_,_,_,_ : Str) -> QualityT = \bonito,bonita,bonitos,bonitas -> { mkAdj : (_,_,_,_ : Str) -> QualityT = \bonito,bonita,bonitos,bonitas -> {
s = table { s = table {
Masc => table { Sg => bonito ; Pl => bonitos } ; Masc => table { Sg => bonito ; Pl => bonitos } ;
Fem => table { Sg => bonita ; Pl => bonitas } Fem => table { Sg => bonita ; Pl => bonitas }
} ; } ;
} ; } ;
-- regular pattern -- regular pattern
adjSozinho : Str -> QualityT = \sozinho -> adjSozinho : Str -> QualityT = \sozinho ->
let sozinh = Predef.tk 1 sozinho let sozinh = Predef.tk 1 sozinho
@@ -59,19 +61,19 @@ concrete FoodsPor of Foods = open Prelude in {
"o" => adjSozinho a ; "o" => adjSozinho a ;
"e" => adjUtil a (a + "s") "e" => adjUtil a (a + "s")
} ; } ;
ItemT : Type = {s : Str ; n : Number ; g : Gender } ; ItemT : Type = {s : Str ; n : Number ; g : Gender } ;
det : Number -> (Gender => Str) -> KindT -> ItemT = det : Number -> (Gender => Str) -> KindT -> ItemT =
\num,det,noun -> {s = det ! noun.g ++ noun.s ! num ; n = num ; g = noun.g } ; \num,det,noun -> {s = det ! noun.g ++ noun.s ! num ; n = num ; g = noun.g } ;
KindT : Type = {s : Number => Str ; g : Gender} ; KindT : Type = {s : Number => Str ; g : Gender} ;
noun : Str -> Str -> Gender -> KindT = noun : Str -> Str -> Gender -> KindT =
\animal,animais,gen -> {s = table {Sg => animal ; Pl => animais} ; g = gen } ; \animal,animais,gen -> {s = table {Sg => animal ; Pl => animais} ; g = gen } ;
regNoun : Str -> Gender -> KindT = regNoun : Str -> Gender -> KindT =
\carro,gen -> noun carro (carro + "s") gen ; \carro,gen -> noun carro (carro + "s") gen ;
copula : Number => Str = table {Sg => "<EFBFBD>" ; Pl => "s<EFBFBD>o"} ; copula : Number => Str = table {Sg => "é" ; Pl => "são"} ;
} }

View File

@@ -1,20 +1,21 @@
-- (c) 2009 Aarne Ranta under LGPL -- (c) 2009 Aarne Ranta under LGPL
instance LexFoodsFin of LexFoods = instance LexFoodsFin of LexFoods =
open SyntaxFin, ParadigmsFin in { open SyntaxFin, ParadigmsFin in {
flags coding=utf8;
oper oper
wine_N = mkN "viini" ; wine_N = mkN "viini" ;
pizza_N = mkN "pizza" ; pizza_N = mkN "pizza" ;
cheese_N = mkN "juusto" ; cheese_N = mkN "juusto" ;
fish_N = mkN "kala" ; fish_N = mkN "kala" ;
fresh_A = mkA "tuore" ; fresh_A = mkA "tuore" ;
warm_A = mkA warm_A = mkA
(mkN "l<EFBFBD>mmin" "l<EFBFBD>mpim<EFBFBD>n" "l<EFBFBD>mmint<EFBFBD>" "l<EFBFBD>mpim<EFBFBD>n<EFBFBD>" "l<EFBFBD>mpim<EFBFBD><EFBFBD>n" (mkN "lämmin" "lämpimän" "lämmintä" "lämpimänä" "lämpimään"
"l<EFBFBD>mpimin<EFBFBD>" "l<EFBFBD>mpimi<EFBFBD>" "l<EFBFBD>mpimien" "l<EFBFBD>mpimiss<EFBFBD>" "l<EFBFBD>mpimiin" "lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin"
) )
"l<EFBFBD>mpim<EFBFBD>mpi" "l<EFBFBD>mpimin" ; "lämpimämpi" "lämpimin" ;
italian_A = mkA "italialainen" ; italian_A = mkA "italialainen" ;
expensive_A = mkA "kallis" ; expensive_A = mkA "kallis" ;
delicious_A = mkA "herkullinen" ; delicious_A = mkA "herkullinen" ;
boring_A = mkA "tyls<EFBFBD>" ; boring_A = mkA "tylsä" ;
} }

View File

@@ -1,16 +1,17 @@
-- (c) 2009 Aarne Ranta under LGPL -- (c) 2009 Aarne Ranta under LGPL
instance LexFoodsGer of LexFoods = instance LexFoodsGer of LexFoods =
open SyntaxGer, ParadigmsGer in { open SyntaxGer, ParadigmsGer in {
flags coding=utf8;
oper oper
wine_N = mkN "Wein" ; wine_N = mkN "Wein" ;
pizza_N = mkN "Pizza" "Pizzen" feminine ; pizza_N = mkN "Pizza" "Pizzen" feminine ;
cheese_N = mkN "K<EFBFBD>se" "K<EFBFBD>se" masculine ; cheese_N = mkN "Käse" "Käse" masculine ;
fish_N = mkN "Fisch" ; fish_N = mkN "Fisch" ;
fresh_A = mkA "frisch" ; fresh_A = mkA "frisch" ;
warm_A = mkA "warm" "w<EFBFBD>rmer" "w<EFBFBD>rmste" ; warm_A = mkA "warm" "wärmer" "wärmste" ;
italian_A = mkA "italienisch" ; italian_A = mkA "italienisch" ;
expensive_A = mkA "teuer" ; expensive_A = mkA "teuer" ;
delicious_A = mkA "k<EFBFBD>stlich" ; delicious_A = mkA "köstlich" ;
boring_A = mkA "langweilig" ; boring_A = mkA "langweilig" ;
} }

View File

@@ -1,16 +1,17 @@
-- (c) 2009 Aarne Ranta under LGPL -- (c) 2009 Aarne Ranta under LGPL
instance LexFoodsSwe of LexFoods = instance LexFoodsSwe of LexFoods =
open SyntaxSwe, ParadigmsSwe in { open SyntaxSwe, ParadigmsSwe in {
flags coding=utf8;
oper oper
wine_N = mkN "vin" "vinet" "viner" "vinerna" ; wine_N = mkN "vin" "vinet" "viner" "vinerna" ;
pizza_N = mkN "pizza" ; pizza_N = mkN "pizza" ;
cheese_N = mkN "ost" ; cheese_N = mkN "ost" ;
fish_N = mkN "fisk" ; fish_N = mkN "fisk" ;
fresh_A = mkA "f<EFBFBD>rsk" ; fresh_A = mkA "färsk" ;
warm_A = mkA "varm" ; warm_A = mkA "varm" ;
italian_A = mkA "italiensk" ; italian_A = mkA "italiensk" ;
expensive_A = mkA "dyr" ; expensive_A = mkA "dyr" ;
delicious_A = mkA "l<EFBFBD>cker" ; delicious_A = mkA "läcker" ;
boring_A = mkA "tr<EFBFBD>kig" ; boring_A = mkA "tråkig" ;
} }