mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
Compare commits
162 Commits
fix-listVP
...
20250429
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f4fd4565a | ||
|
|
11d4f0c770 | ||
|
|
574ed858bc | ||
|
|
176d63f0ac | ||
|
|
607d9240c2 | ||
|
|
35f3b5e206 | ||
|
|
ababe72fb8 | ||
|
|
693cd88f7b | ||
|
|
44eec8629b | ||
|
|
ebba8b5894 | ||
|
|
1633d11e06 | ||
|
|
9e91511724 | ||
|
|
777e572681 | ||
|
|
186a12df0c | ||
|
|
904428fb36 | ||
|
|
8723bde58e | ||
|
|
7b777c425e | ||
|
|
f3811e8a0e | ||
|
|
f03d06b81d | ||
|
|
6876b79d43 | ||
|
|
33bd050b7a | ||
|
|
08793614ab | ||
|
|
70e41e47a7 | ||
|
|
66b5e4108f | ||
|
|
8613a78929 | ||
|
|
643ea07c3b | ||
|
|
c6d43a8bbc | ||
|
|
1b6f42397d | ||
|
|
bcf5db743f | ||
|
|
02456811ee | ||
|
|
dcbfb2a464 | ||
|
|
5e02340160 | ||
|
|
4e034425b9 | ||
|
|
7b7752c308 | ||
|
|
108bfb4163 | ||
|
|
d8aaeeb682 | ||
|
|
ffaedd718b | ||
|
|
b01b94001e | ||
|
|
dc143cc3ae | ||
|
|
0a1df37340 | ||
|
|
ad3fa455b1 | ||
|
|
b82bcde9f1 | ||
|
|
6fcf76e78e | ||
|
|
aa4dc4c3df | ||
|
|
3891cef66a | ||
|
|
8e47600671 | ||
|
|
89f2a9dea6 | ||
|
|
6b5df036e3 | ||
|
|
3dae1cf820 | ||
|
|
c4f94ab218 | ||
|
|
d626f03c48 | ||
|
|
93a06312a7 | ||
|
|
d2754c1623 | ||
|
|
d77c8fa23c | ||
|
|
164cf81477 | ||
|
|
4add2fb2de | ||
|
|
37e08ad739 | ||
|
|
466c7da532 | ||
|
|
e8bda853df | ||
|
|
f8bb75a13c | ||
|
|
576e17f03a | ||
|
|
a235cc9594 | ||
|
|
abf4cd4cb2 | ||
|
|
9e52b2d8a3 | ||
|
|
1111ca0fdd | ||
|
|
4de1b64b58 | ||
|
|
f0d74e59a7 | ||
|
|
a2b20dc6db | ||
|
|
21d1a192c8 | ||
|
|
e99bdb6d1a | ||
|
|
d44298a4ad | ||
|
|
89dc2a13f0 | ||
|
|
6dfce2943c | ||
|
|
0814c9da0f | ||
|
|
bb7786af7c | ||
|
|
650076a867 | ||
|
|
5b636496ef | ||
|
|
41dfd532bd | ||
|
|
26e89421d3 | ||
|
|
e7a4b71160 | ||
|
|
81c71043ca | ||
|
|
9217669c31 | ||
|
|
cc964d1853 | ||
|
|
62b5df23d1 | ||
|
|
e63a3c9d17 | ||
|
|
d895f4ceeb | ||
|
|
ba2e4a4964 | ||
|
|
78f333e79e | ||
|
|
710e73688d | ||
|
|
82075be37b | ||
|
|
7d631fafa2 | ||
|
|
78fc625174 | ||
|
|
afe544bb29 | ||
|
|
ca385925b6 | ||
|
|
4173353eb0 | ||
|
|
5135e5c5ca | ||
|
|
b1a5cf93b6 | ||
|
|
911cbb06c1 | ||
|
|
71f3b2dc78 | ||
|
|
23ccacf222 | ||
|
|
d3ecaadef0 | ||
|
|
4bb96aa295 | ||
|
|
d198de7395 | ||
|
|
9b12c13057 | ||
|
|
4f05d5629b | ||
|
|
6648913d4e | ||
|
|
05c65ccbd8 | ||
|
|
d18b889df6 | ||
|
|
6084aef91b | ||
|
|
687f0cefc8 | ||
|
|
479fe7236f | ||
|
|
15ecf3217c | ||
|
|
1f98f642af | ||
|
|
65a05d223b | ||
|
|
f36bbade45 | ||
|
|
c2b8d98400 | ||
|
|
d182354238 | ||
|
|
1fbec65714 | ||
|
|
d059de5711 | ||
|
|
7a8cdf5c3d | ||
|
|
03e81a3fab | ||
|
|
18716dbbd5 | ||
|
|
44171d7d73 | ||
|
|
726d04f00f | ||
|
|
a251318dad | ||
|
|
2363da4b2f | ||
|
|
cd3a2e0ac4 | ||
|
|
a0c8198a68 | ||
|
|
70223e85f2 | ||
|
|
b404f4e5b3 | ||
|
|
e7dd5304c7 | ||
|
|
0df8e6da39 | ||
|
|
bd75a0529c | ||
|
|
4957955df0 | ||
|
|
f85fa84ae0 | ||
|
|
bb5107fa99 | ||
|
|
97b713520f | ||
|
|
fb42bc6b27 | ||
|
|
13dea0d8ac | ||
|
|
38ba6b1d6c | ||
|
|
04e76381dc | ||
|
|
d6cb2806ff | ||
|
|
6ae9123f87 | ||
|
|
f7ba54db1c | ||
|
|
a338c2c60e | ||
|
|
2eb19b5a2d | ||
|
|
bffdfdb790 | ||
|
|
fa42bf3c41 | ||
|
|
a0a9c31745 | ||
|
|
676e61e255 | ||
|
|
0fe84ad2cf | ||
|
|
2aef82181b | ||
|
|
ffcff47545 | ||
|
|
53e731593d | ||
|
|
9193a303a5 | ||
|
|
4b4fbbb401 | ||
|
|
600af2b8bf | ||
|
|
15367fb05d | ||
|
|
4c508979bb | ||
|
|
a67af709c2 | ||
|
|
128f283377 | ||
|
|
7259848d30 |
@@ -25,9 +25,11 @@ Ice,Icelandic,icelandic,,,,,,n,,y
|
||||
Ina,Interlingua,interlingua,,,y,,n,n,,n
|
||||
Ita,Italian,italian,Romance,,y,,,,y,y
|
||||
Jpn,Japanese,japanese,,,,,,,,y
|
||||
Kaz,Kazakh,kazakh,,,,y,n,n,n,y
|
||||
Kor,Korean,korean,,,n,y,y,y,n,n
|
||||
Lat,Latin,latin,,,,,y,y,n,y
|
||||
Lav,Latvian,latvian,,,,,,,y,y
|
||||
Mkd,Macedonian,macedonian,,,,y,n,n,n,y
|
||||
May,Malay,malay,,,y,,,,n,y
|
||||
Mlt,Maltese,maltese,,,,,,,,y
|
||||
Mon,Mongolian,mongolian,,,,,,n,,y
|
||||
@@ -44,6 +46,7 @@ Slo,Slovak,slovak,,,,,,n,,y
|
||||
Slv,Slovenian,slovenian,,,,,n,n,,n
|
||||
Snd,Sindhi,sindhi,,,,,,,,y
|
||||
Spa,Spanish,spanish,Romance,,y,,,,y,y
|
||||
Sqi,Albanian,albanian,,,,y,n,n,n,y
|
||||
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n
|
||||
Swe,Swedish,swedish,Scand,,y,,,,y,y
|
||||
Tam,Tamil,tamil,n,n,n,n,n,n,n,n
|
||||
|
||||
|
@@ -305,4 +305,7 @@ fun
|
||||
fun
|
||||
TPastSimple : Tense ;
|
||||
|
||||
fun
|
||||
SubjunctRelCN : CN -> RS -> CN ; -- e.g. Romance languages when subjunctive/conjunctive is needed
|
||||
|
||||
}
|
||||
|
||||
11
src/albanian/AdjectiveSqi.gf
Normal file
11
src/albanian/AdjectiveSqi.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete AdjectiveSqi of Adjective = CatSqi ** open ResSqi, Prelude in {
|
||||
|
||||
lin
|
||||
PositA a = {
|
||||
s = \\spec,c,g,n => case a.clit of {
|
||||
True => link_clitic ! spec ! c ! g ! n ++ a.s ! c ! g ! n ;
|
||||
False => a.s ! c ! g ! n
|
||||
}
|
||||
} ;
|
||||
|
||||
}
|
||||
4
src/albanian/AllSqi.gf
Normal file
4
src/albanian/AllSqi.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllSqi of AllSqiAbs =
|
||||
LangSqi
|
||||
**
|
||||
{} ;
|
||||
3
src/albanian/AllSqiAbs.gf
Normal file
3
src/albanian/AllSqiAbs.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
abstract AllSqiAbs =
|
||||
Lang
|
||||
** {}
|
||||
25
src/albanian/CatSqi.gf
Normal file
25
src/albanian/CatSqi.gf
Normal file
@@ -0,0 +1,25 @@
|
||||
concrete CatSqi of Cat = CommonX ** open ParamX, Prelude, ResSqi in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
|
||||
lincat AP = {s: Species => Case => Gender => Number => Str} ;
|
||||
lincat CN = Noun ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
|
||||
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
|
||||
lincat NP = {s: Case => Str; a : Agr} ;
|
||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||
|
||||
}
|
||||
117
src/albanian/DocumentationSqi.gf
Normal file
117
src/albanian/DocumentationSqi.gf
Normal file
@@ -0,0 +1,117 @@
|
||||
concrete DocumentationSqi of Documentation = CatSqi ** open
|
||||
ParamX, ResSqi, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin InflectionN = \x -> {
|
||||
t="em" ;
|
||||
s1=heading1 ("Emër" ++
|
||||
case x.g of {
|
||||
Masc => "(mashkullor)" ;
|
||||
Fem => "(femëror)"
|
||||
}) ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Indef" ++ th "Nom" ++ td (x.s ! Indef ! Nom ! Sg) ++ td (x.s ! Indef ! Nom ! Pl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Indef ! Acc ! Sg) ++ td (x.s ! Indef ! Acc ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Indef ! Dat ! Sg) ++ td (x.s ! Indef ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.s ! Indef ! Ablat ! Sg) ++ td (x.s ! Indef ! Ablat ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Def" ++ th "Nom" ++ td (x.s ! Def ! Nom ! Sg) ++ td (x.s ! Def ! Nom ! Pl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Def ! Acc ! Sg) ++ td (x.s ! Def ! Acc ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Def ! Dat ! Sg) ++ td (x.s ! Def ! Dat ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.s ! Def ! Ablat ! Sg) ++ td (x.s ! Def ! Ablat ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin InflectionA = \x -> {
|
||||
t="mb" ;
|
||||
s1=heading1 "Mbiemër" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Nom" ++ th "Masc" ++ td (y ! Nom ! Masc ! Sg) ++ td (y ! Nom ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (y ! Nom ! Fem ! Sg) ++ td (y ! Nom ! Fem ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Acc" ++ th "Masc" ++ td (y ! Acc ! Masc ! Sg) ++ td (y ! Acc ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (y ! Acc ! Fem ! Sg) ++ td (y ! Acc ! Fem ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Dat" ++ th "Masc" ++ td (y ! Dat ! Masc ! Sg) ++ td (y ! Dat ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (y ! Dat ! Fem ! Sg) ++ td (y ! Dat ! Fem ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Ablat" ++ th "Masc" ++ td (y ! Ablat ! Masc ! Sg) ++ td (y ! Ablat ! Masc ! Pl)) ++
|
||||
tr (th "Fem" ++ td (y ! Ablat ! Fem ! Sg) ++ td (y ! Ablat ! Fem ! Pl))) ;
|
||||
s3=[]
|
||||
} where {
|
||||
y : Case => Gender => Number => Str =
|
||||
\\c,g,n => case x.clit of {
|
||||
True => link_clitic ! Indef ! c ! g ! n ++ x.s ! c ! g ! n ;
|
||||
False => x.s ! c ! g ! n
|
||||
} ;
|
||||
} ;
|
||||
lin InflectionV = \x -> {
|
||||
t="fl" ;
|
||||
s1=heading1 "Folje" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"24\"" "Indicative" ++ intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Pres ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Pres ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Pres ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Pres ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Past" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Past ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Past ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Past ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Past ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Past ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Past ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Aorist" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Aorist ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Aorist ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Aorist ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Aorist ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Imperfect" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.Imperative ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative ! Pl)) ++
|
||||
tr (th "participle" ++ td (x.participle)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "pres_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_optative ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.pres_optative ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.pres_optative ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.pres_optative ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.pres_optative ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.pres_optative ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "perf_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.perf_optative ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.perf_optative ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.perf_optative ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.perf_optative ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.perf_optative ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.perf_optative ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "pres_admirative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_admirative ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.pres_admirative ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.pres_admirative ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.pres_admirative ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.pres_admirative ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.pres_admirative ! Pl ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "imperf_admirative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.imperf_admirative ! Sg ! P1)) ++
|
||||
tr (th "P2" ++ td (x.imperf_admirative ! Sg ! P2)) ++
|
||||
tr (th "P3" ++ td (x.imperf_admirative ! Sg ! P3)) ++
|
||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.imperf_admirative ! Pl ! P1)) ++
|
||||
tr (th "P2" ++ td (x.imperf_admirative ! Pl ! P2)) ++
|
||||
tr (th "P3" ++ td (x.imperf_admirative ! Pl ! P3))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin InflectionAdv = \x -> {
|
||||
t="nd" ;
|
||||
s1=heading1 "Ndajfolje" ;
|
||||
s2=frameTable (
|
||||
tr (th "s" ++ td (x.s))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};lin MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ; MkTag i = {s = i.t} ;}
|
||||
9
src/albanian/GrammarSqi.gf
Normal file
9
src/albanian/GrammarSqi.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete GrammarSqi of Grammar =
|
||||
NounSqi,
|
||||
AdjectiveSqi,
|
||||
NumeralSqi,
|
||||
PhraseSqi,
|
||||
StructuralSqi
|
||||
** {
|
||||
|
||||
} ;
|
||||
10
src/albanian/LangSqi.gf
Normal file
10
src/albanian/LangSqi.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangSqi of Lang =
|
||||
GrammarSqi,
|
||||
LexiconSqi
|
||||
,DocumentationSqi --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
8
src/albanian/LexiconSqi.gf
Normal file
8
src/albanian/LexiconSqi.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
concrete LexiconSqi of Lexicon = CatSqi ** open ParadigmsSqi in {
|
||||
|
||||
lin
|
||||
airplane_N = mkN032 "aeroplan" ;
|
||||
apple_N = mkN069 "mollë" ;
|
||||
good_A = mkA "mirë" ;
|
||||
|
||||
}
|
||||
42501
src/albanian/MorphoSqi.gf
Normal file
42501
src/albanian/MorphoSqi.gf
Normal file
File diff suppressed because it is too large
Load Diff
40
src/albanian/NounSqi.gf
Normal file
40
src/albanian/NounSqi.gf
Normal file
@@ -0,0 +1,40 @@
|
||||
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
DetCN det cn = {
|
||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
|
||||
a = agrgP3 cn.g det.n
|
||||
} ;
|
||||
|
||||
UsePron p = p ;
|
||||
|
||||
DetQuant quant num = {
|
||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
||||
n = num.n ;
|
||||
spec = quant.spec
|
||||
} ;
|
||||
|
||||
NumSg = {s = []; n = Sg} ;
|
||||
NumPl = {s = []; n = Pl} ;
|
||||
|
||||
DefArt = {
|
||||
s = \\c,g,n => [] ;
|
||||
spec = Def
|
||||
} ;
|
||||
|
||||
IndefArt = {
|
||||
s = \\c,g => table Number ["një"; []] ;
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
UseN n = n ;
|
||||
UseN2 n = n ;
|
||||
|
||||
AdjCN ap cn = {
|
||||
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
93
src/albanian/NumeralSqi.gf
Normal file
93
src/albanian/NumeralSqi.gf
Normal file
@@ -0,0 +1,93 @@
|
||||
concrete NumeralSqi of Numeral = CatSqi ** open ParamX, Prelude in {
|
||||
|
||||
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
|
||||
|
||||
param DForm = unit | teen | ten ;
|
||||
|
||||
oper LinDigit = {s : DForm => Str };
|
||||
oper LinSub100 = {s : Str } ;
|
||||
|
||||
lincat Digit = LinDigit ;
|
||||
lincat Sub10 = LinDigit ;
|
||||
lincat Sub100 = LinSub100 ;
|
||||
lincat Sub1000 = LinSub100 ;
|
||||
lincat Sub1000000 = { s : Str } ;
|
||||
|
||||
oper mkNum : Str -> LinDigit = \tri ->
|
||||
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
|
||||
|
||||
lin num x = {s = x.s } ;
|
||||
|
||||
lin n2 = {s = table {unit => "dy" ; teen => "dy" + "mbë" + "dhjetë" ; ten => "njëzet" }};
|
||||
lin n3 = mkNum "tre" ;
|
||||
lin n4 = {s = table {unit => "katër" ; teen => "katër" + "mbë" + "dhjetë" ; ten => "dyzet" } };
|
||||
lin n5 = mkNum "pesë" ;
|
||||
lin n6 = mkNum "gjashtë";
|
||||
lin n7 = mkNum "shtatë";
|
||||
lin n8 = mkNum "tetë";
|
||||
lin n9 = mkNum "nëntë";
|
||||
|
||||
oper mkR : Str -> LinSub100 = \n -> {s = n } ;
|
||||
|
||||
lin pot01 = { s = table {_ => "një" }};
|
||||
lin pot0 d = d ;
|
||||
lin pot110 = mkR "dhjetë" ;
|
||||
lin pot111 = mkR ("një" + "mbë" + "dhjetë") ;
|
||||
lin pot1to19 d = mkR (d.s ! teen) ;
|
||||
lin pot0as1 n = mkR (n.s ! unit) ;
|
||||
lin pot1 d = mkR (d.s ! ten) ;
|
||||
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
|
||||
lin pot1as2 n = n ;
|
||||
lin pot2 d = mkR (bind (d.s ! unit) "qind") ;
|
||||
lin pot2plus d e = mkR ((bind (d.s ! unit) "qind") ++ "e" ++ e.s) ;
|
||||
lin pot2as3 n = {s = n.s };
|
||||
lin pot3 n = {s = n.s ++ "mijë" } ;
|
||||
lin pot3plus n m = {s = n.s ++ "mijë" ++ m.s} ;
|
||||
|
||||
|
||||
lincat Dig = {s : Str; n : Number} ;
|
||||
|
||||
lin IDig d = d ** {tail = T1} ;
|
||||
|
||||
IIDig d i = {
|
||||
s = d.s ++ spaceIf i.tail ++ i.s ;
|
||||
n = Pl ;
|
||||
tail = inc i.tail
|
||||
} ;
|
||||
|
||||
D_0 = mkDig "0" Pl ;
|
||||
D_1 = mkDig "1" Sg ;
|
||||
D_2 = mkDig "2" Pl ;
|
||||
D_3 = mkDig "3" Pl ;
|
||||
D_4 = mkDig "4" Pl ;
|
||||
D_5 = mkDig "5" Pl ;
|
||||
D_6 = mkDig "6" Pl ;
|
||||
D_7 = mkDig "7" Pl ;
|
||||
D_8 = mkDig "8" Pl ;
|
||||
D_9 = mkDig "9" Pl ;
|
||||
|
||||
lin PosDecimal d = d ** {hasDot=False} ;
|
||||
NegDecimal d = {s="-" ++ BIND ++ d.s; hasDot=False; n = Pl} ;
|
||||
IFrac d i = {
|
||||
s=d.s ++
|
||||
if_then_Str d.hasDot BIND (BIND++","++BIND) ++
|
||||
i.s ;
|
||||
hasDot=True;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
oper
|
||||
mkDig : Str -> Number -> Dig = \s,n -> lin Dig {s=s; n=n} ;
|
||||
|
||||
spaceIf : DTail -> Str = \t -> case t of {
|
||||
T3 => "" ;
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
}
|
||||
1375
src/albanian/ParadigmsSqi.gf
Normal file
1375
src/albanian/ParadigmsSqi.gf
Normal file
File diff suppressed because it is too large
Load Diff
13
src/albanian/PhraseSqi.gf
Normal file
13
src/albanian/PhraseSqi.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
concrete PhraseSqi of Phrase = CatSqi ** open Prelude, ResSqi in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttNP np = {s = np.s ! Nom} ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
|
||||
}
|
||||
261
src/albanian/ResSqi.gf
Normal file
261
src/albanian/ResSqi.gf
Normal file
@@ -0,0 +1,261 @@
|
||||
resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
|
||||
|
||||
oper Compl = {s : Str} ;
|
||||
|
||||
param Species = Indef | Def ;
|
||||
param Case = Nom | Acc | Dat | Ablat ;
|
||||
param Gender = Masc | Fem ;
|
||||
|
||||
param GenNum = GSg Gender | GPl ;
|
||||
oper Agr = {gn : GenNum; p : Person} ;
|
||||
|
||||
oper Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
||||
{ s = table {
|
||||
Indef => table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Acc => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
}
|
||||
} ;
|
||||
Def => table {
|
||||
Nom => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
Acc => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
}
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
oper Adj = {s: Case => Gender => Number => Str; clit: Bool} ; -- 462
|
||||
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,clit ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Masc => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
}
|
||||
} ;
|
||||
Acc => table {
|
||||
Masc => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
}
|
||||
} ;
|
||||
Dat => table {
|
||||
Masc => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
}
|
||||
} ;
|
||||
Ablat => table {
|
||||
Masc => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
}
|
||||
}
|
||||
} ;
|
||||
clit = clit
|
||||
} ;
|
||||
|
||||
|
||||
param Tense = Pres | Past | Imperfect | Aorist ;
|
||||
oper Verb = {Indicative: Tense => Number => Person => Str; Imperative: Number => Str; participle: Str; pres_optative: Number => Person => Str; perf_optative: Number => Person => Str; pres_admirative: Number => Person => Str; imperf_admirative: Number => Person => Str} ; -- 758
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
|
||||
{ Indicative = table {
|
||||
Pres => table {
|
||||
Sg => table {
|
||||
P1 => f1 ;
|
||||
P2 => f2 ;
|
||||
P3 => f3
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f4 ;
|
||||
P2 => f5 ;
|
||||
P3 => f6
|
||||
}
|
||||
} ;
|
||||
Past => table {
|
||||
Sg => table {
|
||||
P1 => f7 ;
|
||||
P2 => f8 ;
|
||||
P3 => f9
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f10 ;
|
||||
P2 => f11 ;
|
||||
P3 => f12
|
||||
}
|
||||
} ;
|
||||
Aorist => table {
|
||||
Sg => table {
|
||||
P1 => f13 ;
|
||||
P2 => f14 ;
|
||||
P3 => f15
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f16 ;
|
||||
P2 => f17 ;
|
||||
P3 => f18
|
||||
}
|
||||
} ;
|
||||
Imperfect => table {
|
||||
Sg => table {
|
||||
P1 => f19 ;
|
||||
P2 => f20 ;
|
||||
P3 => f21
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f22 ;
|
||||
P2 => f23 ;
|
||||
P3 => f24
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative = table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
participle = f27 ;
|
||||
pres_optative = table {
|
||||
Sg => table {
|
||||
P1 => f28 ;
|
||||
P2 => f29 ;
|
||||
P3 => f30
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f31 ;
|
||||
P2 => f32 ;
|
||||
P3 => f33
|
||||
}
|
||||
} ;
|
||||
perf_optative = table {
|
||||
Sg => table {
|
||||
P1 => f34 ;
|
||||
P2 => f35 ;
|
||||
P3 => f36
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f37 ;
|
||||
P2 => f38 ;
|
||||
P3 => f39
|
||||
}
|
||||
} ;
|
||||
pres_admirative = table {
|
||||
Sg => table {
|
||||
P1 => f40 ;
|
||||
P2 => f41 ;
|
||||
P3 => f42
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f43 ;
|
||||
P2 => f44 ;
|
||||
P3 => f45
|
||||
}
|
||||
} ;
|
||||
imperf_admirative = table {
|
||||
Sg => table {
|
||||
P1 => f46 ;
|
||||
P2 => f47 ;
|
||||
P3 => f48
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => f49 ;
|
||||
P2 => f50 ;
|
||||
P3 => f51
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
oper link_clitic : Species => Case => Gender => Number => Str =
|
||||
table {
|
||||
Indef => table {
|
||||
Nom => table {
|
||||
Masc => table {
|
||||
Sg => "i" ;
|
||||
Pl => "të"
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => "e" ;
|
||||
Pl => "të"
|
||||
}
|
||||
} ;
|
||||
_ => \\_,_ => "të"
|
||||
} ;
|
||||
Def => table {
|
||||
Nom => table {
|
||||
Masc => table {
|
||||
Sg => "i" ;
|
||||
Pl => "e"
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => "e" ;
|
||||
Pl => "e"
|
||||
}
|
||||
} ;
|
||||
Acc => \\_,_ => "e" ;
|
||||
_ => table {
|
||||
Masc => \\_ => "të" ;
|
||||
Fem => table {
|
||||
Sg => "së" ;
|
||||
Pl => "të"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
oper genNum : Gender -> Number -> GenNum = \g,n ->
|
||||
case n of {
|
||||
Sg => GSg g ;
|
||||
Pl => GPl
|
||||
} ;
|
||||
|
||||
agrgP3 : Gender -> Number -> Agr =
|
||||
\g,n -> {gn=genNum g n; p=P3} ;
|
||||
|
||||
}
|
||||
19
src/albanian/StructuralSqi.gf
Normal file
19
src/albanian/StructuralSqi.gf
Normal file
@@ -0,0 +1,19 @@
|
||||
concrete StructuralSqi of Structural = CatSqi ** open ResSqi, ParadigmsSqi in {
|
||||
|
||||
lin i_Pron = mkPron "unë" "mua" "mua" "meje" "më" "më" (GSg Masc) P1 ;
|
||||
lin youSg_Pron = mkPron "ti" "ty" "ty" "teje" "të" "të" (GSg Masc) P2 ;
|
||||
lin he_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ;
|
||||
lin she_Pron = mkPron "ajo" "atë" "asaj" "asaj" "e" "i" (GSg Fem) P3 ;
|
||||
lin it_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ;
|
||||
lin we_Pron = mkPron "ne" "ne" "neve" "nesh" "na" "na" GPl P1 ;
|
||||
lin youPl_Pron = mkPron "ju" "ju" "juve" "jush" "ju" "ju" GPl P2 ;
|
||||
lin they_Pron = mkPron "ata" "ata" "atyre" "atyre" "i" "u" GPl P3 ;
|
||||
lin this_Quant = mkQuant "ky" "këta" "kjo" "këto"
|
||||
"këtë" "këtyre" "këtë" "këtyre"
|
||||
"këtij" "këtyre" "kësaj" "këtyre"
|
||||
"këtij" "këtyre" "kësaj" "këtyre" ;
|
||||
lin that_Quant = mkQuant "ai" "ata" "ajo" "ato"
|
||||
"atë" "ata" "atë" "ato"
|
||||
"atij" "atyre" "asaj" "atyre"
|
||||
"atij" "atyre" "asaj" "atyre" ;
|
||||
}
|
||||
@@ -995,8 +995,8 @@ pronNP : (N,A,G,D : Str) -> PerNumGen -> NP = \N,A,G,D,png-> {
|
||||
{
|
||||
s = \\c =>case c of
|
||||
{
|
||||
Gen|Dat => affix!c + word;
|
||||
_ => word + affix!c
|
||||
Gen|Dat => affix!c ++ Predef.BIND ++ word;
|
||||
_ => word ++ Predef.BIND ++ affix!c
|
||||
};
|
||||
a = {png = Per3 n Masc ; isPron = False };
|
||||
lock_NP = <>
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
--# -path=.:../danish:../scandinavian:../common:../abstract:../prelude
|
||||
|
||||
resource TryDan = SyntaxDan, LexiconDan, ParadigmsDan - [mkAdv] ;
|
||||
resource TryDan = SyntaxDan-[mkAdN], LexiconDan, ParadigmsDan - [mkAdv,mkAdN] **
|
||||
open (P = ParadigmsDan) in {
|
||||
|
||||
oper
|
||||
mkAdv = overload SyntaxDan {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
mkAdN = overload {
|
||||
mkAdN : CAdv -> AdN = SyntaxDan.mkAdN ;
|
||||
mkAdN : Str -> AdN = P.mkAdN ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
--# -path=.:../greek:../common:../abstract:../prelude
|
||||
|
||||
resource TryGre = SyntaxGre, LexiconGre, ParadigmsGre ;
|
||||
|
||||
{-
|
||||
-[mkAdv, mkDet,mkQuant]**
|
||||
resource TryGre = SyntaxGre-[mkAdN,mkVoc], LexiconGre, ParadigmsGre - [mkAdN,mkAdv,mkVoc] **
|
||||
open (P = ParadigmsGre) in {
|
||||
|
||||
oper
|
||||
|
||||
mkAdv = overload SyntaxGre {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
}
|
||||
mkVoc = overload {
|
||||
mkVoc : NP -> Voc = SyntaxGre.mkVoc ;
|
||||
mkVoc : Str -> Voc = P.mkVoc ;
|
||||
} ;
|
||||
|
||||
-}
|
||||
mkAdN = overload {
|
||||
mkAdN : CAdv -> AdN = SyntaxGre.mkAdN ;
|
||||
mkAdN : Str -> AdN = P.mkAdN ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
--# -path=.:../icelandic:../common:../abstract:../prelude
|
||||
|
||||
resource TryIce = SyntaxIce, LexiconIce, ParadigmsIce - [mkAdv,mkAdN,mkOrd] ;
|
||||
resource TryIce = SyntaxIce-[mkVoc], LexiconIce, ParadigmsIce - [mkAdv,mkAdN,mkOrd,mkVoc] **
|
||||
open (P = ParadigmsIce) in {
|
||||
|
||||
oper
|
||||
mkVoc = overload {
|
||||
mkVoc : NP -> Voc = SyntaxIce.mkVoc ;
|
||||
mkVoc : Str -> Voc = P.mkVoc ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
--# -path=.:../nynorsk:../scandinavian:../common:../abstract:../prelude
|
||||
|
||||
resource TryNno = SyntaxNno, LexiconNno, ParadigmsNno - [mkAdv] ;
|
||||
resource TryNno = SyntaxNno-[mkAdN], LexiconNno, ParadigmsNno - [mkAdv,mkAdN] **
|
||||
open (P = ParadigmsNno) in {
|
||||
|
||||
oper
|
||||
mkAdv = overload SyntaxNno {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
mkAdN = overload {
|
||||
mkAdN : CAdv -> AdN = SyntaxNno.mkAdN ;
|
||||
mkAdN : Str -> AdN = P.mkAdN ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
--# -path=.:../norwegian:../scandinavian:../common:../abstract:../prelude
|
||||
|
||||
resource TryNor = SyntaxNor, LexiconNor, ParadigmsNor - [mkAdv] ;
|
||||
resource TryNor = SyntaxNor-[mkAdN], LexiconNor, ParadigmsNor - [mkAdv,mkAdN] **
|
||||
open (P = ParadigmsNor) in {
|
||||
|
||||
oper
|
||||
mkAdv = overload SyntaxNor {
|
||||
mkAdv : Str -> Adv = P.mkAdv ;
|
||||
} ;
|
||||
|
||||
mkAdN = overload {
|
||||
mkAdN : CAdv -> AdN = SyntaxNor.mkAdN ;
|
||||
mkAdN : Str -> AdN = P.mkAdN ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
||||
Card = ResAra.NumOrdCard ;
|
||||
Predet = ResAra.Predet ;
|
||||
|
||||
Det = ResAra.Det ;
|
||||
DAP, Det = ResAra.Det ;
|
||||
-- {s : Species => Gender => Case => Str ;
|
||||
-- d : State; n : Size; isNum : Bool } ;
|
||||
Quant = ResAra.Quant ;
|
||||
@@ -92,7 +92,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
|
||||
N = ResAra.Noun ;
|
||||
N2 = ResAra.Noun2 ;
|
||||
N3 = ResAra.Noun3 ;
|
||||
GN, SN, LN, PN = {s : Case => Str; g : Gender; h : Species} ;
|
||||
GN, SN, PN = {s : Case => Str; g : Gender; h : Species} ;
|
||||
LN = ResAra.NP ;
|
||||
|
||||
linref
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ lin
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionPN, InflectionLN, InflectionGN, InflectionSN = \pn -> { ---- TODO: special for LN, GN, SN
|
||||
InflectionPN, InflectionGN, InflectionSN = \pn -> { ---- TODO: special for LN, GN, SN
|
||||
t = "pn" ;
|
||||
s1 = heading1 ("Proper Name" ++
|
||||
case pn.g of {
|
||||
|
||||
@@ -8,7 +8,7 @@ concrete ExtendAra of Extend =
|
||||
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
|
||||
EmbedSSlash, AdjAsNP, GerundNP,
|
||||
PassVPSlash, ---- bogus implementation, see below
|
||||
CompoundN
|
||||
CompoundN, UseDAP, UseDAPMasc, UseDAPFem
|
||||
]
|
||||
with (Grammar=GrammarAra)
|
||||
** open
|
||||
@@ -105,4 +105,31 @@ lin
|
||||
s2 = \\n, s, c => b.s2 ! n ! Const ! c ++ a.s2 ! n ! s ! c
|
||||
} ;
|
||||
|
||||
lin UseDAP dap = case dap.isEmpty of {
|
||||
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
|
||||
<Def,One> => it_Pron ;
|
||||
<Def,_> => they_Pron ;
|
||||
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ;
|
||||
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc}
|
||||
} ;
|
||||
False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ;
|
||||
|
||||
lin UseDAPMasc dap = case dap.isEmpty of {
|
||||
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
|
||||
<Def,One> => it_Pron ;
|
||||
<Def,_> => theyMasc_Pron ;
|
||||
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ;
|
||||
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc}
|
||||
} ;
|
||||
False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ;
|
||||
|
||||
lin UseDAPFem dap = case dap.isEmpty of {
|
||||
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
|
||||
<Def,One> => it_Pron ;
|
||||
<Def,_> => theyFem_Pron ;
|
||||
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Fem} ;
|
||||
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Fem}
|
||||
} ;
|
||||
False => emptyNP ** {s = dap.s ! NoHum ! Fem} } ;
|
||||
|
||||
}
|
||||
|
||||
@@ -9,11 +9,10 @@ lin FullName gn sn = emptyNP ** {
|
||||
a = {pgn = Per3 gn.g Sg ; isPron = False} ;
|
||||
} ;
|
||||
|
||||
lin UseLN pn = emptyNP ** {
|
||||
s = pn.s ;
|
||||
a = {pgn = Per3 pn.g Sg ; isPron = False} ;
|
||||
} ;
|
||||
lin UseLN ln = ln ;
|
||||
|
||||
lin InLN n = A.PrepNP S.in_Prep (N.UsePN n) ; ---- TODO: alternative prepositions
|
||||
lin PlainLN ln = ln ;
|
||||
|
||||
lin InLN n = A.PrepNP S.in_Prep n ; ---- TODO: alternative prepositions
|
||||
|
||||
}
|
||||
|
||||
@@ -237,6 +237,11 @@ lin
|
||||
}
|
||||
};
|
||||
|
||||
-- : CN -> NP -> CN ; -- glass of wine
|
||||
--PartNP
|
||||
DetDAP d = d ;
|
||||
|
||||
QuantityNP n m = emptyNP ** {
|
||||
s = \\c => preOrPost m.isPre m.s n.s ;
|
||||
a = { pgn = agrP3 NoHum Masc (sizeToNumber n.n);
|
||||
isPron = False }
|
||||
};
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ resource ParadigmsAra = open
|
||||
ResAra,
|
||||
OrthoAra,
|
||||
(A=AdjectiveAra),
|
||||
(N=NounAra),
|
||||
CatAra
|
||||
in {
|
||||
|
||||
@@ -97,12 +98,17 @@ resource ParadigmsAra = open
|
||||
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN -- Predictable LN from a Str: fem hum if ends in ة, otherwise masc hum.
|
||||
= \s -> lin LN (smartPN s) ;
|
||||
= \s -> lin LN (N.UsePN (smartPN s)) ;
|
||||
mkLN : Str -> Gender -> LN
|
||||
= \s, g -> lin LN (N.UsePN (smartPN s ** {g = g})) ;
|
||||
mkLN : N -> LN -- Make a LN out of N. The LN is in construct state.
|
||||
= \n -> lin LN (n ** {
|
||||
s = \\c => n.s ! Sg ! Const ! c
|
||||
++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
|
||||
}) ;
|
||||
= \n -> lin LN (N.MassNP (N.UseN n)) ;
|
||||
----(n ** { ---- cannot get this to compile AR 2024-04-18
|
||||
---- s = \\c => n.s ! Sg ! Const ! c
|
||||
---- ++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
|
||||
---- }))) ;
|
||||
mkLN : NP -> LN
|
||||
= \np -> np ;
|
||||
} ;
|
||||
|
||||
--3 Relational nouns
|
||||
@@ -206,6 +212,10 @@ resource ParadigmsAra = open
|
||||
mkConj : Str -> Str -> Number -> Conj ; -- either, or, sg
|
||||
} ;
|
||||
|
||||
--2 Measurement Units
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
--2 Verbs
|
||||
|
||||
-- Overloaded operations
|
||||
|
||||
@@ -71,4 +71,5 @@ concrete SentenceAra of Sentence = CatAra ** open
|
||||
UseSlash t p cls = UseCl t p (complClSlash cls) ;
|
||||
|
||||
AdvS adv s = s ** {s = \\o => adv.s ++ s.s ! o} ;
|
||||
ExtAdvS adv s = s ** {s = \\o => adv.s ++ s.s ! o} ;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
--# -path=alltenses:../common:../abstract:../romance
|
||||
concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
|
||||
-- [
|
||||
|
||||
|
||||
-- ]
|
||||
-- don't forget to put the names of your own
|
||||
-- definitions here
|
||||
@@ -15,4 +17,6 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
|
||||
ParadigmsCat in {
|
||||
-- put your own definitions here
|
||||
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -137,6 +137,8 @@ lin
|
||||
ExistNPQS t p np = UseQCl t p (QuestCl (ExistNP np)) ;
|
||||
ExistIPQS t p np = UseQCl t p (ExistIP np) ;
|
||||
|
||||
SubjunctRelCN cn rs = RelCN cn rs ; -- no difference from indicative
|
||||
|
||||
lincat
|
||||
X = {s : Str} ;
|
||||
|
||||
|
||||
@@ -6,4 +6,6 @@ lin
|
||||
s = prep.s ++ np.prep ! prep.c
|
||||
} ;
|
||||
AdnCAdv a = a ;
|
||||
|
||||
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ concrete CatHrv of Cat =
|
||||
|
||||
RS = {s : Agr => Str} ;
|
||||
RCl = {subj,clit,compl : Agr => Str ; verb : VerbForms} ; ---- RAgr with composite RP
|
||||
RP = AdjForms ;
|
||||
RP = {s : Gender => Number => Case => Str} ; -- same as AP
|
||||
|
||||
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
|
||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
|
||||
@@ -33,10 +33,12 @@ concrete CatHrv of Cat =
|
||||
AdA = {s : Str} ;
|
||||
|
||||
N = ResHrv.NounForms ** {g : Gender} ;
|
||||
N2 = ResHrv.NounForms ** {g : Gender ; c : ComplementCase} ;
|
||||
CN = ResHrv.Noun ; -- {s : Number => Case => Str ; g : Gender}
|
||||
NP = {s,clit,prep : Case => Str ; a : Agr ; hasClit : Bool} ; -- clit,prep differ for pronouns
|
||||
PN = {s : Case => Str ; g : Gender} ;
|
||||
Det = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ; -- can contain a numeral, therefore NumSize
|
||||
Predet = {s : Gender => Number => Case => Str} ; -- same as AP
|
||||
Quant = {s : Gender => Number => Case => Str} ; -- same as AP
|
||||
Num = Determiner ;
|
||||
Card = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ;
|
||||
|
||||
@@ -3,6 +3,7 @@ concrete ExtendHrv of Extend = CatHrv **
|
||||
--- ReflPossPron
|
||||
CardCNCard
|
||||
---- constant not found (yet)
|
||||
,GenRP
|
||||
,youPolFem_Pron
|
||||
,UttVPShort
|
||||
,UttAccIP
|
||||
@@ -32,14 +33,19 @@ concrete ExtendHrv of Extend = CatHrv **
|
||||
with (Grammar = GrammarHrv)
|
||||
**
|
||||
open
|
||||
ResHrv
|
||||
ResHrv, ParadigmsHrv
|
||||
in {
|
||||
|
||||
---lin ReflPossPron = justDemPronFormsAdjective reflPossessivePron ;
|
||||
|
||||
lin CardCNCard card cn = {
|
||||
lin
|
||||
CardCNCard card cn = {
|
||||
s = \\g,c => card.s ! g ! c ++ numSizeForm cn.s card.size c ;
|
||||
size = NS_20_
|
||||
} ;
|
||||
|
||||
GenRP num cn = {
|
||||
s = \\g, n, c => (adjFormsAdjective (mkA "čiji").posit).s ! g ! n ! c ++ num.s ! cn.g ! c ++ cn.s ! n ! c
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -10,4 +10,13 @@ lin
|
||||
|
||||
ExistNPAdv np adv = ExistNP np ** {compl = adv.s} ;
|
||||
|
||||
ImpersCl vp =
|
||||
let npa = Ag Neutr Sg P3 in {
|
||||
subj = "" ;
|
||||
verb = vp.verb ;
|
||||
clit = vp.clit ! npa ;
|
||||
compl = vp.compl ! npa ;
|
||||
a = npa ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,12 +6,10 @@ oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
|
||||
oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
|
||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
|
||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||
oper CompCN : CN -> Comp = notYet "CompCN" ;
|
||||
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||
oper ComparAdvAdj : CAdv -> A -> NP -> Adv = notYet "ComparAdvAdj" ;
|
||||
@@ -34,14 +32,12 @@ oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
|
||||
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
|
||||
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||
oper PassV2 : V2 -> VP = notYet "PassV2" ;
|
||||
oper PositAdvAdj : A -> Adv = notYet "PositAdvAdj" ;
|
||||
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||
oper PredetNP : Predet -> NP -> NP = notYet "PredetNP" ;
|
||||
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||
oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
|
||||
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||
@@ -66,7 +62,6 @@ oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||
oper SlashVP : NP -> VPSlash -> ClSlash = notYet "SlashVP" ;
|
||||
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
|
||||
oper SubjS : Subj -> S -> Adv = notYet "SubjS" ;
|
||||
oper TCond : Tense = notYet "TCond" ;
|
||||
oper TFut : Tense = notYet "TFut" ;
|
||||
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||
|
||||
@@ -63,6 +63,15 @@ lin
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
PredetNP predet np =
|
||||
case np.a of {
|
||||
Ag g n _ => {
|
||||
s,clit,prep = \\c => predet.s ! g ! n ! c ++ np.s ! c ;
|
||||
a = np.a ;
|
||||
hasClit = False
|
||||
}
|
||||
} ;
|
||||
|
||||
RelCN cn rs = {
|
||||
s = \\n,c => cn.s ! n ! c ++ rs.s ! Ag cn.g n P3 ;
|
||||
g = cn.g
|
||||
|
||||
@@ -6,13 +6,12 @@ concrete RelativeHrv of Relative = CatHrv ** open
|
||||
lin
|
||||
RelVP rp vp = vp ** {
|
||||
subj =
|
||||
let rel = (adjFormsAdjective rp).s
|
||||
let rel = rp.s
|
||||
in \\a => case a of {
|
||||
Ag g n _ => rel ! g ! n ! Nom
|
||||
}
|
||||
} ;
|
||||
|
||||
IdRP = (mkA "koji").posit ;
|
||||
|
||||
IdRP = adjFormsAdjective (mkA "koji").posit ;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,4 +29,8 @@ lin
|
||||
rcl.compl ! a ;
|
||||
} ; ---- TODO tenses
|
||||
|
||||
|
||||
AdvS adv s = {s = adv.s ++ s.s} ;
|
||||
ExtAdvS adv s = {s = adv.s ++ Predef.BIND ++ "," ++ s.s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -31,4 +31,17 @@ lin
|
||||
|
||||
somewhere_Adv = mkAdv "negdje" ;
|
||||
|
||||
if_Subj = lin Subj {s = "ako"} ;
|
||||
every_Det = {s = \\g, c => (adjFormsAdjective (velikA "svaki")).s ! g ! Sg ! c ; size = NS_1} ;
|
||||
all_Predet = adjFormsAdjective (velikA "svi") ;
|
||||
that_Subj = lin Subj {s = "da"} ;
|
||||
someSg_Det = {s = \\g, c => (adjFormsAdjective (velikA "neki")).s ! g ! Sg ! c ; size = NS_1} ;
|
||||
at_least_AdN = lin AdN {s = "najmanje"} ;
|
||||
part_Prep = mkPrep genitive ;
|
||||
|
||||
|
||||
-- ExtAdvS
|
||||
-- mkN2
|
||||
-- mkA2
|
||||
|
||||
}
|
||||
|
||||
@@ -37,6 +37,12 @@ lin
|
||||
s = \\a_ => np.s ! Nom ;
|
||||
} ;
|
||||
|
||||
CompCN cn = {
|
||||
s = \\a => case a of {
|
||||
Ag _ n _ => cn.s ! n ! Nom
|
||||
} ;
|
||||
} ;
|
||||
|
||||
CompAdv adv = {
|
||||
s = \\a_ => adv.s
|
||||
} ;
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
concrete AllDan of AllDanAbs =
|
||||
LangDan,
|
||||
IrregDan - [fly_V],
|
||||
ExtraDan
|
||||
ExtendDan
|
||||
** {} ;
|
||||
|
||||
282
src/danish/DocumentationDan.gf
Normal file
282
src/danish/DocumentationDan.gf
Normal file
@@ -0,0 +1,282 @@
|
||||
concrete DocumentationDan of Documentation = CatDan ** open
|
||||
ResDan,
|
||||
CommonScand,
|
||||
HTML
|
||||
in {
|
||||
flags coding=utf8 ;
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
{-
|
||||
-} --# notpresent
|
||||
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \noun -> {
|
||||
t = "s" ;
|
||||
s1 = heading1 ("Substantiv" ++ case noun.g of {
|
||||
Utr => "(utrum)" ;
|
||||
Neutr => "(neutr)"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++
|
||||
tr (intagAttr "th" "rowspan=2" "nom" ++
|
||||
th "sg" ++ td (noun.s ! Sg ! Indef ! Nom) ++ td (noun.s ! Sg ! Def ! Nom)) ++
|
||||
tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Nom) ++ td (noun.s ! Pl ! Def ! Nom)) ++
|
||||
tr (intagAttr "th" "rowspan=2" "gen" ++
|
||||
th "sg" ++ td (noun.s ! Sg ! Indef ! Gen) ++ td (noun.s ! Sg ! Def ! Gen)) ++
|
||||
tr (th "pl" ++ td (noun.s ! Pl ! Indef ! Gen) ++ td (noun.s ! Pl ! Def ! Gen))
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionLN = \n -> {
|
||||
t = "nm" ;
|
||||
s1 = heading1 ("Platsnamn" ++ case n.g of {
|
||||
Utr => "(utr)" ;
|
||||
Neutr => "(neutr)"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
tr (th "nom" ++ td (n.s ! Nom)) ++
|
||||
tr (th "gen" ++ td (n.s ! Gen))
|
||||
) ;
|
||||
} ;
|
||||
|
||||
InflectionGN = \pn -> {
|
||||
t = "fnm" ;
|
||||
s1 = heading1 ("Förnamn" ++ case pn.g of {
|
||||
Male => "(man)" ;
|
||||
Female => "(kvinna)"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
tr (th "nom" ++ td (pn.s ! Nom)) ++
|
||||
tr (th "gen" ++ td (pn.s ! Gen))
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionSN = \pn -> {
|
||||
t = "enm" ;
|
||||
s1 = heading1 "Efternamn" ;
|
||||
s2 = frameTable (
|
||||
tr (th "nom" ++ td (pn.s ! Male ! Nom)) ++
|
||||
tr (th "gen" ++ td (pn.s ! Male ! Gen))
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \adj -> {
|
||||
t = "a" ;
|
||||
s1 = heading1 "Adjektiv" ;
|
||||
s2 = frameTable (
|
||||
tr (intagAttr "th" "colspan=5" "nominativ") ++
|
||||
tr (intagAttr "th" "colspan=2" "posit" ++
|
||||
th "posit" ++
|
||||
th "kompar" ++
|
||||
th "superl") ++
|
||||
caseInfl Nom ++
|
||||
tr (intagAttr "th" "colspan=5" "genitiv") ++
|
||||
caseInfl Nom
|
||||
) ++
|
||||
heading1 ("Adverb") ++
|
||||
paragraph (adj.s ! AAdv) ;
|
||||
} where {
|
||||
caseInfl : Case -> Str = \c ->
|
||||
tr (intagAttr "th" "rowspan=3" "obest" ++
|
||||
th "utr" ++
|
||||
td (adj.s ! (AF (APosit (Strong (GSg Utr))) c)) ++
|
||||
intagAttr "td" "rowspan=5" (adj.s ! (AF ACompar c)) ++
|
||||
intagAttr "td" "rowspan=3" (adj.s ! (AF (ASuperl SupStrong) c))) ++
|
||||
tr (th "neut" ++
|
||||
td (adj.s ! (AF (APosit (Strong (GSg Neutr))) c))) ++
|
||||
tr (th "pl" ++
|
||||
td (adj.s ! (AF (APosit (Strong GPl)) c))) ++
|
||||
tr (intagAttr "th" "rowspan=2" "best" ++
|
||||
th "sg" ++
|
||||
td (adj.s ! (AF (APosit (Weak Sg)) c)) ++
|
||||
intagAttr "td" "rowspan=2" (adj.s ! (AF (ASuperl SupWeak) c))) ++
|
||||
tr (th "pl" ++
|
||||
td (adj.s ! (AF (APosit (Weak Pl)) c))) ;
|
||||
} ;
|
||||
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "adv" ;
|
||||
s1 = heading1 "Adverb" ;
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
|
||||
InflectionPrep p = {
|
||||
t = "prep" ;
|
||||
s1 = heading1 "Preposition" ;
|
||||
s2 = paragraph p.s
|
||||
} ;
|
||||
|
||||
InflectionV v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part);
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++ v.c2.s ++
|
||||
pp "objekt") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV3 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
v.c2.s ++ pp "arg1" ++
|
||||
v.c3.s ++ pp "arg2") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2V v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
v.c2.s ++ pp "objekt" ++
|
||||
v.c3.s ++ pp "verb") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2S v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
v.c2.s ++ pp "objekt" ++
|
||||
conjThat ++ pp "mening") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2Q v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
v.c2.s ++ pp "objekt" ++
|
||||
pp "fråga") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2A v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
v.c2.s ++ pp "objekt" ++
|
||||
pp "adjektiv") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVV v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
pp "verb") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVS v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
conjThat ++ pp "mening") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVQ v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
pp "fråga") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVA v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verb" ++
|
||||
paragraph (pp "subjekt" ++
|
||||
v.s ! VI (VInfin Act) ++ v.part ++
|
||||
pp "adjektiv") ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Exempel:</b>"++e.s++"</p>"};
|
||||
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ; -- explanation appended in a new paragraph
|
||||
MkTag i = {s = i.t} ;
|
||||
|
||||
oper
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
frameTable (
|
||||
tr (th "" ++ th "active" ++ th "passive") ++
|
||||
tr (th "infitiv" ++ td (verb.s ! VI (VInfin Act)) ++ td (verb.s ! VI (VInfin Pass))) ++
|
||||
tr (th "presens" ++ td (verb.s ! VF (VPres Act)) ++ td (verb.s ! VF (VPres Pass))) ++
|
||||
tr (th "preteritum" ++ td (verb.s ! VF (VPret Act)) ++ td (verb.s ! VF (VPret Pass))) ++
|
||||
tr (th "supinum" ++ td (verb.s ! VI (VSupin Act)) ++ td (verb.s ! VI (VSupin Pass))) ++
|
||||
tr (th "imperativ" ++ td (verb.s ! VF (VImper Act)) ++ td (verb.s ! VF (VImper Pass)))
|
||||
) ++
|
||||
heading2 "Particip Presens" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=2" "" ++ th "obest" ++ th "best") ++
|
||||
tr (intagAttr "th" "rowspan=2" "nom" ++
|
||||
th "sg" ++
|
||||
td (verb.s ! VI (VPtPres Sg Indef Nom)) ++
|
||||
td (verb.s ! VI (VPtPres Sg Def Nom))) ++
|
||||
tr (th "pl" ++
|
||||
td (verb.s ! VI (VPtPres Pl Indef Nom)) ++
|
||||
td (verb.s ! VI (VPtPres Pl Def Nom))) ++
|
||||
tr (intagAttr "th" "rowspan=2" "gen" ++
|
||||
th "sg" ++
|
||||
td (verb.s ! VI (VPtPres Sg Indef Gen)) ++
|
||||
td (verb.s ! VI (VPtPres Sg Def Gen))) ++
|
||||
tr (th "pl" ++
|
||||
td (verb.s ! VI (VPtPres Pl Indef Gen)) ++
|
||||
td (verb.s ! VI (VPtPres Pl Def Gen)))
|
||||
) ++
|
||||
heading2 "Particip Perfekt" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "colspan=2" "" ++
|
||||
th "nom" ++
|
||||
th "gen") ++
|
||||
tr (intagAttr "th" "rowspan=3" "obest" ++
|
||||
th "utr" ++
|
||||
td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Nom)) ++
|
||||
td (verb.s ! VI (VPtPret (Strong (GSg Utr)) Gen))) ++
|
||||
tr (th "neut" ++
|
||||
td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Nom)) ++
|
||||
td (verb.s ! VI (VPtPret (Strong (GSg Neutr)) Gen))) ++
|
||||
tr (th "pl" ++
|
||||
td (verb.s ! VI (VPtPret (Strong GPl) Nom)) ++
|
||||
td (verb.s ! VI (VPtPret (Strong GPl) Gen))) ++
|
||||
tr (intagAttr "th" "rowspan=2" "best" ++
|
||||
th "sg" ++
|
||||
td (verb.s ! VI (VPtPret (Weak Sg) Nom)) ++
|
||||
td (verb.s ! VI (VPtPret (Weak Sg) Gen))) ++
|
||||
tr (th "pl" ++
|
||||
td (verb.s ! VI (VPtPret (Weak Pl) Nom)) ++
|
||||
td (verb.s ! VI (VPtPret (Weak Pl) Gen)))
|
||||
) ;
|
||||
|
||||
pp : Str -> Str = \s -> "<"+s+">";
|
||||
|
||||
{- --# notpresent
|
||||
-}
|
||||
|
||||
}
|
||||
26
src/danish/ExtendDan.gf
Normal file
26
src/danish/ExtendDan.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
--# -path=.:../scandinavian:../abstract:../common:prelude
|
||||
concrete ExtendDan of Extend = CatDan **
|
||||
ExtendFunctor -
|
||||
[
|
||||
GenNP, GenModNP, ComplBareVS, CompBareCN,
|
||||
ApposNP, DetNPMasc, DetNPFem,
|
||||
StrandRelSlash, EmptyRelSlash, StrandQuestSlash,
|
||||
PassVPSlash, PassAgentVPSlash, UttVPShort, ByVP, InOrderToVP,
|
||||
MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
||||
MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, RelVPS,
|
||||
MkVPS2, ConjVPS2, ComplVPS2, ReflVPS2, MkVPI2, ConjVPI2, ComplVPI2,
|
||||
ICompAP,ProDrop,EmbedSSlash,
|
||||
AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP,
|
||||
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP,
|
||||
Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, ReflPossPron,
|
||||
CompoundN, CompoundAP, AdvIsNP,
|
||||
A2VPSlash, N2VPSlash,
|
||||
CardCNCard,
|
||||
GenRP
|
||||
]
|
||||
with (Grammar = GrammarDan)
|
||||
** {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
}
|
||||
@@ -14,7 +14,8 @@ concrete GrammarDan of Grammar =
|
||||
TextX - [Tense,Temp] ,
|
||||
IdiomDan,
|
||||
StructuralDan,
|
||||
TenseDan
|
||||
TenseDan,
|
||||
NamesDan
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
concrete LangDan of Lang =
|
||||
GrammarDan,
|
||||
LexiconDan
|
||||
,DocumentationDan --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
2
src/danish/NamesDan.gf
Normal file
2
src/danish/NamesDan.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete NamesDan of Noun = CatDan ** NamesScand with
|
||||
(ResScand = ResDan) ;
|
||||
@@ -144,7 +144,6 @@ oper
|
||||
mkPN : N -> PN ; --%
|
||||
} ;
|
||||
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
-- The regular pattern works for many adjectives, e.g. those ending
|
||||
@@ -182,6 +181,7 @@ oper
|
||||
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||
|
||||
mkAdA : Str -> AdA ; -- modify adjective, e.g. "meget"
|
||||
mkAdN : Str -> AdN ;
|
||||
|
||||
|
||||
--2 Verbs
|
||||
@@ -386,6 +386,7 @@ oper
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
mkAdN x = ss x ** {lock_AdN = <>} ;
|
||||
|
||||
mk6V a b c d e f = mkVerb6 a b c d e f **
|
||||
{part = [] ; vtype = VAct ; lock_V = <> ; isVaere = False} ;
|
||||
@@ -491,6 +492,25 @@ oper
|
||||
mk2PN : Str -> Gender -> PN ;
|
||||
nounPN : N -> PN ;
|
||||
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN = \s -> lin LN (regPN s) ** {n=Sg}; -- default gender utrum
|
||||
mkLN : Str -> Gender -> LN = \s,g -> lin LN (mk2PN s g) ** {n=Sg} ; -- set other gender
|
||||
mkLN : Str -> Gender -> Number -> LN = \s,g,n -> lin LN (mk2PN s g) ** {n=n} ; -- set other gender and number
|
||||
} ;
|
||||
mkGN = overload {
|
||||
mkGN : Str -> GN = \s -> lin GN {s = \\c => mkCase c s ; g = Male}; -- default gender utrum
|
||||
mkGN : Str -> Sex -> GN = \s,g -> lin GN {s = \\c => mkCase c s ; g = g} ; -- set other gender
|
||||
} ;
|
||||
|
||||
mkSN = overload {
|
||||
mkSN : Str -> SN = \s -> lin SN {s = \\_,c => mkCase c s; pl = \\c => mkCase c s}; -- default gender utrum
|
||||
mkSN : Str -> Str -> Str -> SN =
|
||||
\male,female,pl -> lin SN {s = table {Male => \\c => mkCase c male;
|
||||
Female => \\c => mkCase c female} ;
|
||||
pl = \\c => mkCase c pl
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : (fin : Str) -> A = regADeg ;
|
||||
mkA : (fin,fint : Str) -> A = mk2ADeg ;
|
||||
@@ -533,4 +553,9 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
mkInterj : Str -> Interj
|
||||
= \s -> lin Interj {s = s} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -19,6 +19,10 @@ concrete ConjunctionDut of Conjunction =
|
||||
|
||||
ConjRS conj ss = conjunctDistrTable2 Gender Number conj ss ;
|
||||
|
||||
ConjCN conj ss = conjunctDistrTable2 Adjf NForm conj ss ** {
|
||||
g = Utr
|
||||
} ;
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
BaseS = twoTable Order ;
|
||||
@@ -31,6 +35,8 @@ concrete ConjunctionDut of Conjunction =
|
||||
ConsAP xs x = consrTable2 Agr AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||
BaseRS x y = twoTable2 Gender Number x y ** {c = y.c} ;
|
||||
ConsRS xs x = consrTable2 Gender Number comma xs x ;
|
||||
BaseCN x y = twoTable2 Adjf NForm x y ;
|
||||
ConsCN xs x = consrTable2 Adjf NForm comma xs x ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Order => Str} ;
|
||||
@@ -38,5 +44,6 @@ concrete ConjunctionDut of Conjunction =
|
||||
[NP] = {s1,s2 : NPCase => Str ; a : Agr} ;
|
||||
[AP] = {s1,s2 : Agr => AForm => Str ; isPre : Bool} ;
|
||||
[RS] = {s1,s2 : Gender => Number => Str} ;
|
||||
[CN] = {s1,s2 : Adjf => NForm => Str} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@ concrete ExtendDut of Extend =
|
||||
VPS,
|
||||
BaseVPS, ConsVPS,
|
||||
MkVPS, ConjVPS, PredVPS,
|
||||
PassVPSlash, PassAgentVPSlash
|
||||
PassVPSlash, PassAgentVPSlash,
|
||||
CompoundN
|
||||
]
|
||||
with
|
||||
(Grammar = GrammarDut) **
|
||||
@@ -121,4 +122,9 @@ lin
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
lin CompoundN n1 n2 = {
|
||||
s = \\n => n1.s ! NF Sg Nom ++ BIND ++ n2.s ! n ;
|
||||
g = n2.g
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -86,6 +86,9 @@ concrete VerbDut of Verb = CatDut ** open Prelude, ResDut in {
|
||||
|
||||
AdVVP adv vp = insertAdV adv.s vp ;
|
||||
|
||||
AdvVPSlash vp adv = vp ** {a2 = vp.a2 ++ adv.s; isHeavy=True} ;
|
||||
AdVVPSlash adv vp = vp ** {a1 = \\a => adv.s ++ vp.a1 ! a} ;
|
||||
|
||||
ReflVP vp = insertObj (\\a => appPrep vp.c2.p1
|
||||
(npLite (\\_ => reflPron ! a))
|
||||
) vp ;
|
||||
|
||||
@@ -104,7 +104,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
|
||||
linref
|
||||
SSlash = \ss -> ss.s ++ ss.c2.s.p1 ;
|
||||
ClSlash = \cls -> cls.s ! Pres ! Simul ! Pos ++ cls.c2.s.p1 ;
|
||||
NP = \np -> np.s ! NPAcc ; ----NPSep ;
|
||||
NP = \np -> np.s ! NPCase Nom ; ----NPSep ;
|
||||
CN = cnRef ;
|
||||
|
||||
VP = vpRef ;
|
||||
|
||||
@@ -5,7 +5,7 @@ concrete ExtendFin of Extend =
|
||||
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
||||
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
||||
,ExistCN, ExistMassCN, ICompAP, ByVP
|
||||
,CompoundN, GenNP, GenIP, AdvIsNP, EmbedSSlash
|
||||
,CompoundN, GenNP, GenIP, GenRP, AdvIsNP, EmbedSSlash
|
||||
,PassVPSlash, PassAgentVPSlash
|
||||
,CardCNCard
|
||||
,UttAccNP
|
||||
@@ -191,6 +191,15 @@ lin
|
||||
|
||||
GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ;
|
||||
|
||||
GenRP num cn = {
|
||||
s = \\n,c =>
|
||||
let k = npform2case num.n c
|
||||
in relPron ! n ! Gen ++ linCN (NCase num.n k) cn ;
|
||||
--- a = RNoAg
|
||||
a = RAg (agrP3 num.n)
|
||||
} ;
|
||||
|
||||
|
||||
ByVP vp = lin Adv {s = S.infVP vp.s.sc Pos (Ag Sg P3) vp Inf3Adess} ; ---- Agr ?
|
||||
|
||||
AdvIsNP adv np = S.mkClause (\_ -> adv.s) np.a (UseComp (CompNP np)) ;
|
||||
|
||||
@@ -61,8 +61,10 @@ concrete IdiomFin of Idiom = CatFin **
|
||||
ImpP3 np vp =
|
||||
let vps = (sverb2verbSep vp.s).s ! ImperP3 (verbAgr np.a).n
|
||||
in
|
||||
{s = np.s ! subjcase2npform vp.s.sc ++ vps ++
|
||||
vp.s2 ! True ! Pos ! np.a ++ vp.adv ! Pos ++ vp.ext
|
||||
{s = vps ++
|
||||
np.s ! subjcase2npform vp.s.sc ++
|
||||
vp.s2 ! True ! Pos ! np.a ++
|
||||
vp.adv ! Pos ++ vp.ext
|
||||
} ;
|
||||
|
||||
SelfAdvVP vp = insertAdv (\\_ => "itse") vp ;
|
||||
|
||||
@@ -330,8 +330,8 @@ instance DiffFre of DiffRomance - [
|
||||
<_, _, True> =>
|
||||
neg.p1 ++ clit ++ fin ++ bindHyphen ++ subj ++ neg.p2 ++ inf ++ compl ++ ext ;
|
||||
|
||||
-- est loin la ville
|
||||
_ => neg.p1 ++ clit ++ fin ++ neg.p2 ++ inf ++ compl ++ subj ++ ext
|
||||
-- est Paris loin
|
||||
_ => neg.p1 ++ clit ++ fin ++ neg.p2 ++ subj ++ inf ++ compl ++ ext
|
||||
} ;
|
||||
|
||||
bindHyphensT : Str = bindHyphen ++ "t" ++ bindHyphen ;
|
||||
|
||||
@@ -4,8 +4,10 @@ concrete ExtendFre of Extend =
|
||||
CatFre ** ExtendFunctor -
|
||||
[
|
||||
---- iFem_Pron, youFem_Pron, weFem_Pron, youPlFem_Pron, theyFem_Pron, youPolFem_Pron, youPolPl_Pron, youPolPlFem_Pron,
|
||||
GenRP,
|
||||
ExistCN, ExistMassCN, ExistPluralCN, RNP, ReflRNP,
|
||||
PassVPSlash, PassAgentVPSlash, ApposNP, CompoundN
|
||||
PassVPSlash, PassAgentVPSlash, PastPartAP, PastPartAgentAP, ApposNP, CompoundN,
|
||||
BaseVPS, ConsVPS, PredVPS, MkVPS, ConjVPS, RelVPS, ExistsNP
|
||||
] -- put the names of your own definitions here
|
||||
with
|
||||
(Grammar = GrammarFre) **
|
||||
@@ -23,6 +25,16 @@ lincat
|
||||
RNP = {s : Agr => Case => Str} ;
|
||||
|
||||
lin
|
||||
GenRP nu cn = {
|
||||
s = \\_b,_aagr,_c => "dont" ++ num ++ artDef False g n Nom ++ cn.s ! n ;
|
||||
a = aagr g n ;
|
||||
hasAgr = True
|
||||
} where {
|
||||
g = cn.g ;
|
||||
n = nu.n ;
|
||||
num = if_then_Str nu.isNum (nu.s ! g) []
|
||||
} ;
|
||||
|
||||
ExistCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
@@ -46,6 +58,9 @@ lin PassVPSlash vps = passVPSlash vps [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash
|
||||
vps (let by = <Grammar.by8agent_Prep : Prep> in by.s ++ (np.s ! by.c).ton) ;
|
||||
|
||||
PastPartAP vps = pastPartAP vps [] ;
|
||||
PastPartAgentAP vps np = pastPartAP vps (let by = <Grammar.by8agent_Prep : Prep> in by.s ++ (np.s ! by.c).ton) ;
|
||||
|
||||
ReflRNP v rnp = -- VPSlash -> RNP -> VP ; -- love my family and myself
|
||||
case v.c2.isDir of {
|
||||
True => insertRefl v ;
|
||||
@@ -67,6 +82,13 @@ oper
|
||||
comp = \\a => (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ vps.comp ! a ++ agent ;
|
||||
} ;
|
||||
|
||||
pastPartAP : VPSlash -> Str -> AP ;
|
||||
pastPartAP vps agent = lin AP {
|
||||
s = \\af => vps.s.s ! VPart (aform2gender af) (aform2number af) ++ vps.comp ! (aform2aagr af ** {p = P3}) ++ agent ;
|
||||
isPre = False ;
|
||||
copTyp = serCopula
|
||||
} ;
|
||||
|
||||
lin ApposNP np1 np2 = np1 ** { -- guessed by KA
|
||||
s = \\c => np1.s ! c ** {ton =(np1.s ! c).ton ++ "," ++ (np2.s ! Nom).ton;
|
||||
comp =(np1.s ! c).comp ++ "," ++ (np2.s ! Nom).comp
|
||||
@@ -112,4 +134,35 @@ lin UseDAP = \dap ->
|
||||
hasClit = False
|
||||
} ;
|
||||
|
||||
lincat
|
||||
VPS = {s : Mood => Agr => Bool => Str} ;
|
||||
[VPS] = {s1,s2 : Mood => Agr => Bool => Str} ;
|
||||
|
||||
lin
|
||||
BaseVPS x y = twoTable3 Mood Agr Bool x y ;
|
||||
ConsVPS = consrTable3 Mood Agr Bool comma ;
|
||||
|
||||
lin
|
||||
PredVPS np vpi = {
|
||||
s = \\m => (np.s ! Nom).comp ++ vpi.s ! m ! np.a ! np.isNeg
|
||||
} ;
|
||||
MkVPS tm p vp = {
|
||||
s = \\m,agr,isNeg =>
|
||||
tm.s ++ p.s ++
|
||||
(mkClausePol (orB isNeg vp.isNeg) [] False False agr vp).s
|
||||
! DDir ! tm.t ! tm.a ! p.p ! m
|
||||
} ;
|
||||
ConjVPS = conjunctDistrTable3 Mood Agr Bool ;
|
||||
|
||||
RelVPS rp vpi = {
|
||||
s = \\m, agr => rp.s ! False ! complAgr agr ! Nom ++ vpi
|
||||
.s ! m ! (Ag rp.a.g rp.a.n P3) ! False ;
|
||||
c = Nom
|
||||
} ;
|
||||
|
||||
ExistsNP np =
|
||||
mkClause "il" True False np.a
|
||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||
(predV (mkV "exister"))) ;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
concrete LangFre of Lang =
|
||||
GrammarFre,
|
||||
LexiconFre
|
||||
,MarkupFre - [stringMark]
|
||||
,DocumentationFre --# notpresent
|
||||
,ConstructionFre
|
||||
** {
|
||||
|
||||
@@ -44,6 +44,11 @@ oper
|
||||
spn = \\c => prepCase c ++ s ;
|
||||
n = Sg ; s2 = \\g => [] ; isNeg = False
|
||||
} ;
|
||||
mkDet : Str -> Number -> Det = \s, n -> lin Det {
|
||||
s,sp = \\_,c => prepCase c ++ s ;
|
||||
spn = \\c => prepCase c ++ s ;
|
||||
n = n ; s2 = \\g => [] ; isNeg = False
|
||||
} ;
|
||||
mkDet : Str -> Str -> Number -> Det = \m,f,n -> lin Det {
|
||||
s,sp = \\g,c => prepCase c ++ case g of {Masc => m ; Fem => f} ;
|
||||
spn = \\c => prepCase c ++ m ;
|
||||
|
||||
@@ -16,7 +16,7 @@ concrete AdverbGer of Adverb = CatGer ** open ResGer, Prelude in {
|
||||
|
||||
PositAdAAdj a = {s = a.s ! Posit ! APred} ;
|
||||
|
||||
SubjS subj s = {s = subj.s ++ s.s ! Sub} ;
|
||||
SubjS subj s = {s = {- Predef.BIND ++ "," ++ -} subj.s ++ s.s ! Sub} ; --- comma needed in some uses
|
||||
|
||||
AdnCAdv cadv = {s = cadv.s ++ conjThan} ;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
concrete ExtendGer of Extend =
|
||||
CatGer ** ExtendFunctor
|
||||
- [ -- remove the default implementations of:
|
||||
GenNP, EmptyRelSlash,
|
||||
GenNP, GenRP, EmptyRelSlash,
|
||||
VPS, ListVPS, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
|
||||
VPI, ListVPI, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
||||
ICompAP, IAdvAdv, CompIQuant, PrepCN,
|
||||
@@ -36,6 +36,13 @@ concrete ExtendGer of Extend =
|
||||
delCardOne = False
|
||||
} ;
|
||||
|
||||
GenRP nu cn = {
|
||||
s = \\gn,c => relPron ! gn ! Gen ++ cn.s ! Weak ! nu.n ! c ;
|
||||
a = RAg nu.n P3
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
EmptyRelSlash slash = {
|
||||
s = \\m,t,a,p,gn =>
|
||||
appPrep slash.c2 (relPron ! gn) ++ slash.s ! m ! t ! a ! p ! Sub ;
|
||||
@@ -46,15 +53,50 @@ concrete ExtendGer of Extend =
|
||||
lincat
|
||||
VPI = {s : Bool => Str} ;
|
||||
[VPI] = {s1,s2 : Bool => Str} ;
|
||||
VPS = {s : Order => Agr => Str} ;
|
||||
[VPS] = {s1,s2 : Order => Agr => Str} ;
|
||||
VPS = {s : Order => Agr => {verb, compl : Str}} ;
|
||||
[VPS] = {s : Order => Agr => {s1, s2, s3 : Str}} ; -- liebe, (ich) dich, (und) bin glücklich
|
||||
|
||||
lin
|
||||
BaseVPI = twoTable Bool ;
|
||||
ConsVPI = consrTable Bool comma ;
|
||||
|
||||
BaseVPS = twoTable2 Order Agr ;
|
||||
ConsVPS = consrTable2 Order Agr comma ;
|
||||
BaseVPS v w = {
|
||||
s = \\ord, agr =>
|
||||
let
|
||||
vs = v.s ! ord ! agr ;
|
||||
ws = w.s ! ord ! agr ;
|
||||
in {
|
||||
s1 = vs.verb ;
|
||||
s2 = vs.compl ;
|
||||
s3 = case ord of {
|
||||
Sub => ws.compl ++ ws.verb ;
|
||||
_ => ws.verb ++ ws.compl
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
ConsVPS v vv = {
|
||||
s = \\ord, agr =>
|
||||
let
|
||||
vs = v.s ! ord ! agr ;
|
||||
vvs = vv.s ! ord ! agr ;
|
||||
in {
|
||||
s1 = vs.verb ;
|
||||
s2 = vs.compl ++ comma ++ vvs.s1 ++ vvs.s2 ;
|
||||
s3 = vvs.s3
|
||||
}
|
||||
} ;
|
||||
|
||||
ConjVPS conj vv = {
|
||||
s = \\ord, agr =>
|
||||
let
|
||||
vvs = vv.s ! ord ! agr
|
||||
in {
|
||||
verb = vvs.s1 ;
|
||||
compl = conj.s1 ++ vvs.s2 ++ conj.s2 ++ vvs.s3
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
MkVPS tm p vp =
|
||||
let vps = useVP vp in {
|
||||
@@ -105,26 +147,29 @@ concrete ExtendGer of Extend =
|
||||
} ;
|
||||
extra = vp.inf.extr!agr ++ vp.ext ;
|
||||
in
|
||||
--- AR 22/7/2024 as the subject comes to a wrong place in PredVPS Inv
|
||||
{verb = verb.fin ; compl = compl ++ infCompl ++ pred.inf ++ extra}
|
||||
{-
|
||||
case o of {
|
||||
Main => subj ++ verb.fin ++ compl ++ infCompl ++ pred.inf ++ extra ;
|
||||
Main => verb.fin ++ compl ++ infCompl ++ pred.inf ++ extra ;
|
||||
Inv => verb.fin ++ subj ++ compl ++ infCompl ++ pred.inf ++ extra ;
|
||||
Subj => subj ++ compl ++ pred.infComplfin ++ extra
|
||||
}
|
||||
-}
|
||||
} ;
|
||||
|
||||
ConjVPS = conjunctDistrTable2 Order Agr ;
|
||||
|
||||
PredVPS np vpi =
|
||||
PredVPS np vps =
|
||||
let
|
||||
subj = np.s ! False ! Nom ++ bigNP np ;
|
||||
agr = np.a ;
|
||||
in {
|
||||
s = \\o =>
|
||||
let verb = vpi.s ! o ! agr
|
||||
let verb = vps.s ! o ! agr
|
||||
in case o of {
|
||||
Main => subj ++ verb ;
|
||||
Inv => verb ++ subj ; ---- älskar henne och sover jag
|
||||
Sub => subj ++ verb
|
||||
Main => subj ++ verb.verb ++ verb.compl ;
|
||||
Inv => verb.verb ++ subj ++ verb.compl ; -- älskar jag henne och sover
|
||||
Sub => subj ++ verb.compl ++ verb.verb --- not quite correct in ConjVPS
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
@@ -36,4 +36,12 @@ oper
|
||||
sp = \\gn,c => q.s ! False ! gn ! c + a.s ! Posit ! agrAdj q.a gn c
|
||||
} ;
|
||||
|
||||
mkStrongDet : Str -> Number -> Det = \adj, n -> lin Det {
|
||||
s,sp = \\_,g,c => adj + adjEnding ! (gennum g Pl) ! c ;
|
||||
n = n ; a = Strong ; isDef = False ; hasDefArt = False} ;
|
||||
|
||||
mkWeakDet : Str -> Number -> Det = \adj, n -> lin Det {
|
||||
s,sp = \\_,g,c => adj + adjEnding ! (gennum g Pl) ! c ;
|
||||
n = n ; a = Weak ; isDef = False ; hasDefArt = False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -40,29 +40,82 @@ lin
|
||||
e.s ! DUnit ! invNum ++ BIND ++ "und" ++ BIND ++ d.s ! DTen ! g; n = Pl} ;
|
||||
pot1as2 n = n ;
|
||||
|
||||
-- HL 15.3.2025 added:
|
||||
-- pot21, pot31, pot41, pot4, pot4plus, pot51, pot5, pot5plus, pot5decimal
|
||||
-- and opers oneCardOrd, cardOrdNum, toFem
|
||||
-- changed: multiple to get pot21 = hundert (Eng: a hundred, Swe: hundra)
|
||||
-- versus pot2 pot01 = einhundert (Eng: one hundred, Swe: etthundra)
|
||||
-- likewise for [ein]tausend, [eine] Million, Milliarde
|
||||
-- Q: add BIND or "und" in pot4plus, pot5plus ?
|
||||
|
||||
pot21 = {s = \\g => cardOrd "hundert" "hundertste" ! g ; n = Pl} ;
|
||||
pot2 d = {s = \\g =>
|
||||
multiple (d.s ! DUnit) d.n ++ cardOrd "hundert" "hundertste" ! g ; n = Pl} ;
|
||||
pot2plus d e = {s = \\g =>
|
||||
multiple (d.s ! DUnit) d.n ++ "hundert" ++ BIND ++ e.s ! g ; n = Pl} ;
|
||||
pot2as3 n = n ;
|
||||
|
||||
pot31 = {s = \\g => cardOrd "tausend" "tausendste" ! g ; n = Pl} ;
|
||||
pot3 n = {s = \\g =>
|
||||
multiple n.s n.n ++ cardOrd "tausend" "tausendste" ! g ; n = Pl} ;
|
||||
pot3plus n m = {s = \\g =>
|
||||
multiple n.s n.n ++ "tausend" ++ m.s ! g ; n = Pl} ;
|
||||
pot3as4 n = n ;
|
||||
pot3decimal d = {s = \\g =>
|
||||
d.s ! invNum ++ cardOrd "tausend" "tausendste" ! g ; n = Pl} ;
|
||||
d.s ! invNum ++ cardOrd "Tausend" "tausendste" ! g ; n = Pl} ;
|
||||
|
||||
pot41 = {s = \\g => oneCardOrd "Million" "millionste" ! g ; n = Pl} ;
|
||||
pot4 n = let tab = cardOrdNum n.n "Million" "millionste" in {
|
||||
s = table{
|
||||
NCard af => n.s ! (NCard (toFem af)) ++ tab ! (NCard af) ;
|
||||
NOrd af => n.s ! (NCard APred) ++ BIND ++ tab ! (NOrd af)
|
||||
} ;
|
||||
n = Pl} ;
|
||||
pot4plus n m = let tab = cardOrdNum n.n "million" "millionste" in {
|
||||
s = table{
|
||||
NCard af => n.s ! (NCard (toFem af)) ++ BIND ++ tab ! (NCard af) ++ m.s ! NCard af ;
|
||||
NOrd af => n.s ! (NCard (toFem APred)) ++ BIND ++ tab ! (NCard (toFem af)) ++ m.s ! NOrd af
|
||||
} ;
|
||||
n = Pl} ;
|
||||
pot4as5 n = n ;
|
||||
pot4decimal d = {s = \\g =>
|
||||
d.s ! invNum ++ cardOrd "Millionen" "Millionste" ! g ; n = Pl} ; -- * 1 Million
|
||||
d.s ! invNum ++ cardOrdNum d.n "Million" "-millionste" ! g ; n = Pl} ;
|
||||
|
||||
pot51 = {s = \\g => "einer Milliarde"; n = Pl} ; -- KA: case inflection missing
|
||||
pot51 = {s = \\g => oneCardOrd "Milliarde" "milliardste" ! g ; n = Pl} ;
|
||||
pot5 n = let tab = cardOrdNum n.n "Milliarde" "milliardste" in {
|
||||
s = table{
|
||||
NCard af => n.s ! (NCard (toFem af)) ++ tab ! (NCard af) ;
|
||||
NOrd af => n.s ! (NCard APred) ++ BIND ++ tab ! (NOrd af)
|
||||
} ;
|
||||
n = Pl} ;
|
||||
pot5plus n m = let tab = cardOrdNum n.n "milliarde" "milliardste" in {
|
||||
s = table{
|
||||
NCard af => n.s ! (NCard (toFem af)) ++ BIND ++ tab ! (NCard af) ++ "und" ++ m.s ! NCard af ;
|
||||
NOrd af => n.s ! (NCard (toFem APred)) ++ BIND ++ tab ! (NCard (toFem af)) ++ m.s ! NOrd af
|
||||
} ;
|
||||
n = Pl} ;
|
||||
pot5decimal d = {s = \\g =>
|
||||
d.s ! invNum ++ cardOrdNum d.n "Milliarde" "-milliardste" ! g ; n = Pl} ;
|
||||
|
||||
oper
|
||||
multiple : (CardOrd => Str) -> Number -> Str = \d,n ->
|
||||
case n of {Sg => [] ; _ => d ! invNum ++ BIND} ;
|
||||
-- case n of {Sg => [] ; _ => d ! invNum ++ BIND} ;
|
||||
d ! invNum ++ BIND ; -- HL
|
||||
|
||||
oneCardOrd : Str -> Str -> CardOrd => Str =
|
||||
\million,millionste -> table {
|
||||
NCard (AMod (GSg _) c) => "ein" + pronEnding ! (GSg Fem) ! c ++ million ;
|
||||
NCard (AMod GPl _) => pluralN million ;
|
||||
NCard APred => "ein" + pronEnding ! (GSg Fem) ! Nom ++ million ;
|
||||
NOrd a => (regA (init millionste)).s ! Posit ! a
|
||||
} ;
|
||||
|
||||
cardOrdNum : Number -> Str -> Str -> CardOrd => Str = \n,drei,dritte ->
|
||||
case n of {Sg => cardOrd drei dritte ; _ => cardOrd (pluralN drei) dritte} ;
|
||||
|
||||
toFem : AForm -> AForm = \af -> case af of {
|
||||
AMod _ c => AMod (GSg Fem) c ;
|
||||
APred => AMod (GSg Fem) Nom} ;
|
||||
|
||||
--------------------
|
||||
|
||||
@@ -81,6 +134,7 @@ oper
|
||||
-- 101ter,...,119ter,120ster,... , 200ster
|
||||
IIDig d i =
|
||||
let isPld : Bool = case d.n of {Sg => False ; _ => True} ;
|
||||
i = lin Digits i ; -- suppress warning missing lock_Digits
|
||||
b : Bool = case i.isDig of {True => isPld ; _ => notB i.tail1to19} ;
|
||||
i' : Digits = case b of {True => IDig (mkDig (i.s ! invNum ++ BIND ++ "s")) ;
|
||||
_ => i}
|
||||
@@ -89,7 +143,6 @@ oper
|
||||
n = Pl ;
|
||||
isDig = False ;
|
||||
tail1to19 = case i.isDig of {True => notB isPld ; False => i.tail1to19} ;
|
||||
lock_Digits = <>
|
||||
} ;
|
||||
|
||||
D_0 = mkDig "0" ** {isZero = True} ;
|
||||
@@ -123,7 +176,7 @@ oper
|
||||
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
||||
s = table {NCard _ => c ; -- 0,...,9
|
||||
NOrd af => (regA o).s ! Posit ! af} ; -- (ein) 0ter .. 9ter | (der) 0te ... 9te
|
||||
n = n ; -- NOrd APred: "0",... or "am 0ten",... ?
|
||||
n = n ; -- NOrd APred: "0t"
|
||||
isZero = False
|
||||
} ;
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ concrete RelativeGer of Relative = CatGer ** open ResGer, Prelude in {
|
||||
|
||||
lin
|
||||
|
||||
RelCl cl = {
|
||||
s = \\m,t,a,b,_ => "derart" ++ conjThat ++ cl.s ! m ! t ! a ! b ! Sub ;
|
||||
RelCl cl = { --- no comma before derart
|
||||
s = \\m,t,a,b,_ => "derart" ++ Predef.BIND ++ "," ++ conjThat ++ cl.s ! m ! t ! a ! b ! Sub ;
|
||||
c = Nom
|
||||
} ;
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in {
|
||||
|
||||
UseCopula = predV sein_V ;
|
||||
|
||||
CompAP ap = {s = \\_ => ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ; ext = ap.ext} ;
|
||||
CompAP ap = {s = \\_ => ap.c.p1 ++ ap.s ! APred ++ ap.c.p2 ; ext = ap.s2 ! Nom ++ ap.ext} ;
|
||||
CompNP np = {s = \\_ => np.s ! False ! Nom ++ np.rc ; ext = np.ext} ;
|
||||
CompAdv a = {s = \\_ => a.s ; ext = []} ;
|
||||
|
||||
|
||||
@@ -92,7 +92,6 @@ concrete CatGre of Cat = CommonGre ** open ResGre, Prelude in {
|
||||
|
||||
A2 = {s :Degree => Gender => Number => Case => Str ; adv : Degree => Str ;c2 : Compl } ;
|
||||
|
||||
|
||||
N = Noun;
|
||||
|
||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Compl} ;
|
||||
@@ -101,4 +100,6 @@ concrete CatGre of Cat = CommonGre ** open ResGre, Prelude in {
|
||||
|
||||
PN = PName ;
|
||||
|
||||
LN, GN, SN = {s : Str} ;
|
||||
|
||||
}
|
||||
|
||||
124
src/greek/DocumentationGre.gf
Normal file
124
src/greek/DocumentationGre.gf
Normal file
@@ -0,0 +1,124 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete DocumentationGre of Documentation = CatGre ** open
|
||||
ResGre, HTML, Prelude
|
||||
in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \noun -> {
|
||||
t = "ο" ;
|
||||
s1 = heading1 "Ουσιαστικό" ;
|
||||
s2 = inflNoun noun.s
|
||||
} ;
|
||||
|
||||
InflectionPN = \pn -> {
|
||||
t = "ό" ;
|
||||
s1 = heading1 "Όνομα" ;
|
||||
s2 = inflNoun pn.s
|
||||
} ;
|
||||
|
||||
InflectionLN ln = {
|
||||
t = "ό" ;
|
||||
s1 = heading1 "Όνομα" ;
|
||||
s2 = paragraph ln.s
|
||||
} ;
|
||||
|
||||
InflectionGN gn = {
|
||||
t = "ό" ;
|
||||
s1 = heading1 "Όνομα" ;
|
||||
s2 = paragraph gn.s
|
||||
} ;
|
||||
|
||||
InflectionSN sn = {
|
||||
t = "ό" ;
|
||||
s1 = heading1 "Όνομα" ;
|
||||
s2 = paragraph sn.s
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \adj -> {
|
||||
t = "ε" ;
|
||||
s1 = heading1 "Επίθετο" ;
|
||||
s2 = inflAdj (adj.s ! Posit) ++
|
||||
inflAdj (adj.s ! Compar) ++
|
||||
inflAdj (adj.s ! Superl)
|
||||
} ;
|
||||
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "επίρ" ;
|
||||
s1 = heading1 "Επίρρημα" ;
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
|
||||
InflectionPrep p = {
|
||||
t = "πρ" ;
|
||||
s1 = heading1 "Πρόθεση" ;
|
||||
s2 = paragraph p.s
|
||||
} ;
|
||||
|
||||
InflectionV,InflectionV2,InflectionV3,InflectionV2V,InflectionV2S,InflectionV2Q,InflectionV2A,InflectionVV,InflectionVS,InflectionVQ,InflectionVA = \v -> {
|
||||
t = "ρ" ;
|
||||
s1 = heading1 "ρήμα" ;
|
||||
s2 = inflVerb v.s
|
||||
} ;
|
||||
|
||||
oper
|
||||
inflNoun : (Number => Case => Str) -> Str = \n ->
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "ονομαστική" ++ td (n ! Sg ! Nom) ++ td (n ! Pl ! Nom)) ++
|
||||
tr (th "γενική" ++ td (n ! Sg ! Gen) ++ td (n ! Pl ! Gen)) ++
|
||||
tr (th "αιτιατική" ++ td (n ! Sg ! Acc) ++ td (n ! Pl ! Acc)) ++
|
||||
tr (th "κλητική" ++ td (n ! Sg ! Vocative) ++ td (n ! Pl ! Vocative))
|
||||
) ;
|
||||
|
||||
inflAdj : (Gender => Number => Case => Str) -> Str = \n ->
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός" ++ th "ενικός" ++ th "πληθυντικός" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "ονομαστική" ++ td (n ! Masc ! Sg ! Nom) ++ td (n ! Masc ! Pl ! Nom) ++ td (n ! Fem ! Sg ! Nom) ++ td (n ! Fem ! Pl ! Nom) ++ td (n ! Neut ! Sg ! Nom) ++ td (n ! Neut ! Pl ! Nom)) ++
|
||||
tr (th "γενική" ++ td (n ! Masc ! Sg ! Gen) ++ td (n ! Masc ! Pl ! Gen) ++ td (n ! Fem ! Sg ! Gen) ++ td (n ! Fem ! Pl ! Gen) ++ td (n ! Neut ! Sg ! Gen) ++ td (n ! Neut ! Pl ! Gen)) ++
|
||||
tr (th "αιτιατική" ++ td (n ! Masc ! Sg ! Acc) ++ td (n ! Masc ! Pl ! Acc) ++ td (n ! Fem ! Sg ! Acc) ++ td (n ! Fem ! Pl ! Acc) ++ td (n ! Neut ! Sg ! Acc) ++ td (n ! Neut ! Pl ! Acc)) ++
|
||||
tr (th "κλητική" ++ td (n ! Masc ! Sg ! Vocative) ++ td (n ! Masc ! Pl ! Vocative) ++ td (n ! Fem ! Sg ! Vocative) ++ td (n ! Fem ! Pl ! Vocative) ++ td (n ! Neut ! Sg ! Vocative) ++ td (n ! Neut ! Pl ! Vocative))
|
||||
) ;
|
||||
|
||||
inflVerb : (VForm => Str) -> Str = \v -> v ! VPres Ind Sg P1 Active Imperf {-
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "1" ++ td (v ! VPres Ind Sg P1 Active Imperf) ++ td (v ! VPres Ind Pl P1 Active Imperf)) ++
|
||||
tr (th "2" ++ td (v ! VPres Ind Sg P2 Active Imperf) ++ td (v ! VPres Ind Pl P2 Active Imperf)) ++
|
||||
tr (th "3" ++ td (v ! VPres Ind Sg P3 Active Imperf) ++ td (v ! VPres Ind Pl P3 Active Imperf))
|
||||
) ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "1" ++ td (v ! VPast Ind Sg P1 Active Imperf) ++ td (v ! VPast Ind Pl P1 Active Imperf)) ++
|
||||
tr (th "2" ++ td (v ! VPast Ind Sg P2 Active Imperf) ++ td (v ! VPast Ind Pl P2 Active Imperf)) ++
|
||||
tr (th "3" ++ td (v ! VPast Ind Sg P3 Active Imperf) ++ td (v ! VPast Ind Pl P3 Active Imperf))
|
||||
) ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "1" ++ td (v ! VPres Ind Sg P1 Active Perf) ++ td (v ! VPres Ind Pl P1 Active Perf)) ++
|
||||
tr (th "2" ++ td (v ! VPres Ind Sg P2 Active Perf) ++ td (v ! VPres Ind Pl P2 Active Perf)) ++
|
||||
tr (th "3" ++ td (v ! VPres Ind Sg P3 Active Perf) ++ td (v ! VPres Ind Pl P3 Active Perf))
|
||||
) ++
|
||||
frameTable (
|
||||
tr (th "" ++ th "ενικός" ++ th "πληθυντικός") ++
|
||||
tr (th "1" ++ td (v ! VPast Ind Sg P1 Active Perf) ++ td (v ! VPast Ind Pl P1 Active Perf)) ++
|
||||
tr (th "2" ++ td (v ! VPast Ind Sg P2 Active Perf) ++ td (v ! VPast Ind Pl P2 Active Perf)) ++
|
||||
tr (th "3" ++ td (v ! VPast Ind Sg P3 Active Perf) ++ td (v ! VPast Ind Pl P3 Active Perf))
|
||||
) -} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Παράδειγμα: </b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Παράδειγμα: </b>"++t.s++d.s++"</p><p>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss (i.t) ;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
concrete LangGre of Lang =
|
||||
GrammarGre,
|
||||
LexiconGre
|
||||
, DocumentationGre --# notpresent
|
||||
;
|
||||
|
||||
@@ -72,6 +72,11 @@ oper
|
||||
= \ nm,gm,am,vm,pn,pa, g -> lin PN (mkName nm gm am vm pn pa g) ;
|
||||
} ;
|
||||
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN
|
||||
= \s -> lin LN {s=s} ;
|
||||
} ;
|
||||
|
||||
makeNP = overload {
|
||||
makeNP : (_,_,_: Str) -> Number -> Gender -> NP = mkpanta;
|
||||
makeNP : Str -> Number -> Gender ->Bool -> NP = mkkati
|
||||
@@ -310,7 +315,13 @@ oper
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
mkGN : Str -> GN = \s -> lin GN {s = s} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s = s} ;
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s = s} ;
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s = s} ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s = s} ;
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s = s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s = s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -375,7 +375,8 @@ resource ResGre = ParamX ** open Prelude in {
|
||||
Fros + "ω" => mkName Giannis (Fros + "ως") (Fros + "ω") (Fros + "ω") ("") ("")Fem ;
|
||||
Mirt + "ώ" => mkName Giannis (Mirt + "ώς") (Mirt + "ώ") (Mirt + "ώ") ("")("")Fem ;
|
||||
Londin + "ο" => mkName Giannis (Londin + "ου") (Londin + "ο") (Londin + "ο") (Londin + "α") (Londin + "ων") Neut ;
|
||||
Paris + "ι" => mkName Giannis (mkStemNouns Paris + "ιού") (Paris + "ι") (Paris + "ι")(Paris + "ια") (mkStemNouns Paris + "ιών") Neut
|
||||
Paris + "ι" => mkName Giannis (mkStemNouns Paris + "ιού") (Paris + "ι") (Paris + "ι")(Paris + "ια") (mkStemNouns Paris + "ιών") Neut ;
|
||||
x => mkName x x x x x x Neut ---- AR 2025-02-13 guess
|
||||
};
|
||||
|
||||
|
||||
@@ -1379,7 +1380,7 @@ resource ResGre = ParamX ** open Prelude in {
|
||||
|
||||
|
||||
-----Pattern for the final -ν in the Feminine Accusative of the definite article----------
|
||||
FemAccFinalN : pattern Str = #("ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" |"κ"|"π" |"τ"| "ξ" |"ψ"| "γκ" |"μπ" |"ντ" );
|
||||
FemAccFinalN : pattern Str = #("Α" | "Τ" | "ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" |"κ"|"π" |"τ"| "ξ" |"ψ"| "γκ" |"μπ" |"ντ" );
|
||||
|
||||
|
||||
|
||||
@@ -1405,8 +1406,10 @@ resource ResGre = ParamX ** open Prelude in {
|
||||
<Masc | Change,Sg,CPrep P_se > => "στον" ;
|
||||
<Fem, Sg, Nom> => "η" ;
|
||||
<Fem, Sg, Gen|CPrep P_Dat> => "της" ;
|
||||
<Fem, Sg, Acc |CPrep PNul> => pre { "ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" |"κ"|"π" |"τ"| "ξ" |"ψ"| "γκ" |"μπ" |"ντ" => "την" ; _=> "τη"} ;
|
||||
<Fem, Sg, CPrep P_se > => pre { "ά" | "ό" | "ί"| "έ" | "ή" | "ύ"| "ώ" | "α" | "ο" | "ι"| "ε" |"η" | "υ" | "ω" |"κ"|"π" |"τ"| "ξ" |"ψ"| "γκ" |"μπ" |"ντ" => "στην" ; _=> "στη"} ;
|
||||
<Fem, Sg, Acc |CPrep PNul> =>
|
||||
pre {#FemAccFinalN => "την" ; _=> "τη"} ;
|
||||
<Fem, Sg, CPrep P_se > =>
|
||||
pre {#FemAccFinalN => "στην" ; _=> "στη"} ;
|
||||
<Neut, Sg, Nom | Acc |CPrep PNul> => prepCase c++ "το" ;
|
||||
<Neut, Sg, Gen|CPrep P_Dat> => "του" ;
|
||||
<Neut, Sg, CPrep P_se > => "στο" ;
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
concrete AllHin of AllHinAbs =
|
||||
LangHin,
|
||||
ExtraHin
|
||||
** {} ;
|
||||
ExtendHin
|
||||
** open ExtraHin in {} ;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
abstract AllHinAbs =
|
||||
Lang,
|
||||
ExtraHinAbs
|
||||
Extend
|
||||
** {} ;
|
||||
|
||||
11
src/hindi/ExtendHin.gf
Normal file
11
src/hindi/ExtendHin.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
concrete ExtendHin of Extend =
|
||||
CatHin ** ExtendFunctor -
|
||||
[
|
||||
ComplDirectVQ, ComplDirectVS
|
||||
]
|
||||
with
|
||||
(Grammar = GrammarHin) ** {
|
||||
|
||||
}
|
||||
@@ -7,7 +7,8 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; size : Size} ;
|
||||
Sub100, Sub1000, Sub1000000 = {s : CardOrd => Str ; size : Size} ;
|
||||
Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||
{s : CardOrd => Str ; size : Size} ;
|
||||
|
||||
lin
|
||||
num x = {
|
||||
@@ -117,6 +118,9 @@ concrete NumeralIce of Numeral = CatIce [Numeral,Digits,Decimal] ** open Prelude
|
||||
} ;
|
||||
size = pl
|
||||
} ;
|
||||
pot3as4 n = n ;
|
||||
|
||||
pot4as5 n = n ;
|
||||
|
||||
oper
|
||||
|
||||
|
||||
@@ -256,6 +256,10 @@ resource ParadigmsIce = open
|
||||
|
||||
} ;
|
||||
|
||||
oper mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
||||
oper mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
||||
oper mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
|
||||
mkN2 : N -> Preposition -> N2 = \n,prep -> lin N2 (n ** {c2 = prep}) ;
|
||||
|
||||
mkN3 : N -> (_,_ : Preposition) -> N3 = \n,c2,c3 -> lin N3 (n ** {c2 = c2; c3 = c3}) ;
|
||||
@@ -442,6 +446,8 @@ resource ParadigmsIce = open
|
||||
sgNeutNom sgNeutAcc sgNeutDat sgNeutGen plMascNom plMascAcc plMascDat plMascGen
|
||||
plFemNom plFemAcc plFemDat plFemGen plNeutNom plNeutAcc plNeutDat plNeutGen
|
||||
weakSgMascNom weakSgMascAccDatGen weakSgFemNom weakSgFemAccDatGen weakSgNeut weakPl flogið) ;
|
||||
|
||||
mkV : V -> Str -> V = \v,part -> v ;
|
||||
};
|
||||
|
||||
depV : V -> V = \verb -> lin V (deponentVerb verb) ;
|
||||
@@ -461,6 +467,18 @@ resource ParadigmsIce = open
|
||||
mk5V : (_,_,_,_,_ : Str) -> V = \telja,tel,taldi,talinn,talið ->
|
||||
lin V (vForms2Verb telja (indsub3 telja tel taldi) (impSg taldi) (impPl telja) (presPart telja) talið (weakPP talinn) (strongPP talinn)) ;
|
||||
|
||||
|
||||
oper mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
oper mkVV : V -> VV = \v -> lin VV (v ** {c2 = mkPrep "" accusative}) ;
|
||||
oper mkVS : V -> VS = \v -> lin VS v ;
|
||||
oper mkVA : V -> VA = \v -> lin VA v ;
|
||||
oper mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = mkPrep "" accusative; c3 = mkPrep "" accusative}) ;
|
||||
oper mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = mkPrep "" accusative}) ;
|
||||
oper mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = mkPrep "" accusative}) ;
|
||||
|
||||
oper reflV : V -> V = \v -> v;
|
||||
|
||||
|
||||
indsub1 : Str -> MForms = \inf -> case inf of {
|
||||
stem@(front + "e" + c) + "ja" => cTelja inf stem (ðiditi (front + "a" + c)) ;
|
||||
stem@(front + "y" + c) + "ja" => cTelja inf stem (ðiditi (front + "u" + c)) ;
|
||||
@@ -807,7 +825,10 @@ resource ParadigmsIce = open
|
||||
|
||||
mkAdA : Str -> AdA = \x -> lin AdA (ss x) ;
|
||||
|
||||
mkAdN : CAdv -> AdN = \cadv -> lin AdN {s = cadv.s ++ cadv.p } ;
|
||||
mkAdN = overload {
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s = s} ;
|
||||
mkAdN : CAdv -> AdN = \cadv -> lin AdN {s = cadv.s ++ cadv.p }
|
||||
} ;
|
||||
|
||||
mkAdV : Str -> AdV = \x -> lin AdV (ss x) ;
|
||||
|
||||
@@ -826,4 +847,8 @@ resource ParadigmsIce = open
|
||||
|
||||
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||
lin Conj (sd2 x y ** {n = n}) ;
|
||||
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
|
||||
concrete AllIna of AllInaAbs = LangIna ;
|
||||
concrete AllIna of AllInaAbs = LangIna, ExtendIna ;
|
||||
|
||||
@@ -79,5 +79,13 @@ concrete CatIna of Cat = CommonX ** open ResIna, Prelude in {
|
||||
N3 = {s : Number => Str} ** {p2,p3 : Str; c2,c3 : Case} ;
|
||||
|
||||
PN = {s : Str} ;
|
||||
LN = {s : Str ; n : Number ; art : Bool} ;
|
||||
GN = {s : Str ; g : Sex} ;
|
||||
SN = {s : Sex => Str ; pl : Str} ;
|
||||
|
||||
linref
|
||||
V, VS, VQ, VA, VV = \v -> v.s ! VInf ++ case v.isRefl of {True => "se"; False => []} ;
|
||||
V2, V2V, V2S, V2Q = \v -> v.s ! VInf ++ case v.isRefl of {True => "se"; False => []} ++ v.p2 ;
|
||||
V3, V2A = \v -> v.s ! VInf ++ case v.isRefl of {True => "se"; False => []} ++ v.p2 ++ v.p3 ;
|
||||
|
||||
}
|
||||
|
||||
113
src/interlingua/DocumentationIna.gf
Normal file
113
src/interlingua/DocumentationIna.gf
Normal file
@@ -0,0 +1,113 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete DocumentationIna of Documentation = CatIna ** open
|
||||
ResIna,
|
||||
Prelude,
|
||||
HTML
|
||||
in {
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
{-
|
||||
-} --# notpresent
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \noun -> {
|
||||
t = "s" ;
|
||||
s1 = heading1 "Substantivo" ;
|
||||
s2 = frameTable (
|
||||
tr (th "Singular" ++ th "Plural") ++
|
||||
tr (td (noun.s ! Sg) ++ td (noun.s ! Pl))
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionPN = \pn -> {
|
||||
t = "pn" ;
|
||||
s1 = heading1 ("Nombre Proprio") ;
|
||||
s2 = pn.s
|
||||
} ;
|
||||
|
||||
InflectionGN = \gn -> {
|
||||
t = "pn" ;
|
||||
s1 = heading1 ("Nombre de Pila" ++
|
||||
case gn.g of {
|
||||
Male => "(Mascule)" ;
|
||||
Female => "(Femina)"
|
||||
}) ;
|
||||
s2 = gn.s
|
||||
} ;
|
||||
|
||||
InflectionSN = \sn -> {
|
||||
t = "sn" ;
|
||||
s1 = heading1 "Apellido" ;
|
||||
s2 = sn.s ! Male
|
||||
} ;
|
||||
|
||||
InflectionLN = \ln -> {
|
||||
t = "nl" ;
|
||||
s1 = heading1 ("Nombre del Lugar") ;
|
||||
s2 = paragraph ln.s
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \adj -> {
|
||||
t = "a" ;
|
||||
s1 = heading1 "Adjectivo" ;
|
||||
s2 = paragraph (adj.s ! AAdj Posit)
|
||||
} ;
|
||||
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "adv" ;
|
||||
s1 = heading1 "Adverbio" ;
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
|
||||
InflectionPrep p = {
|
||||
t = "prep" ;
|
||||
s1 = heading1 "Preposition" ;
|
||||
s2 = paragraph p.s
|
||||
} ;
|
||||
|
||||
InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S, InflectionV2Q, InflectionV2A, InflectionVV, InflectionVS, InflectionVQ, InflectionVA = \v -> {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Verbo" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definición:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definición:</b>"++t.s++d.s++"</p><p><b>Ejemplo:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument b i e = ss (i.s1 ++ "<p style=\"font-size:20px\">"++b.s++"</p>" ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss i.t ;
|
||||
|
||||
oper
|
||||
inflVerb : Verb -> Str = \verb ->
|
||||
frameTable (
|
||||
tr (th "infinitivo" ++
|
||||
td (verb.s ! VInf)) ++
|
||||
tr (th "presente" ++
|
||||
td (verb.s ! VPres)) ++
|
||||
tr (th "participio passato" ++
|
||||
td (verb.s ! VPPart)) ++
|
||||
tr (th "participio presente" ++
|
||||
td (verb.s ! VPresPart)) ++
|
||||
tr (th "passato" ++
|
||||
td (verb.s ! VPast)) ++
|
||||
tr (th "futuro" ++
|
||||
td (verb.s ! VFut)) ++
|
||||
tr (th "conditional" ++
|
||||
td (verb.s ! VCond))
|
||||
) ;
|
||||
|
||||
{- --# notpresent
|
||||
-}
|
||||
|
||||
}
|
||||
9
src/interlingua/ExtendIna.gf
Normal file
9
src/interlingua/ExtendIna.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
concrete ExtendIna of Extend = CatIna **
|
||||
ExtendFunctor
|
||||
with (Grammar = GrammarIna)
|
||||
** {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
}
|
||||
@@ -14,7 +14,8 @@ concrete GrammarIna of Grammar =
|
||||
TextX,
|
||||
StructuralIna,
|
||||
IdiomIna,
|
||||
TenseX
|
||||
TenseX,
|
||||
NamesIna
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
concrete LangIna of Lang =
|
||||
GrammarIna,
|
||||
LexiconIna
|
||||
LexiconIna,
|
||||
DocumentationIna
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -7,355 +7,355 @@ concrete LexiconIna of Lexicon = CatIna **
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = regN "avion";
|
||||
answer_V2S = prepV2 aP (regV "responder");
|
||||
apartment_N = regN "appartamento";
|
||||
apple_N = regN "pomo";
|
||||
art_N = regN "arte" ;
|
||||
ask_V2Q = mkV2Q aP (regV "demandar") ;
|
||||
baby_N = regN "bebe" ;
|
||||
bad_A = regA "mal";
|
||||
bank_N = regN "banca" ;
|
||||
beautiful_A = regA "belle" ;
|
||||
become_VA = mkVA (regV "devenir") ;
|
||||
beer_N = regN "bira" ;
|
||||
beg_V2V = mkV2V noPrep aP (regV "rogar") ;
|
||||
big_A = regA "magne" ;
|
||||
bike_N = regN "bicycletta" ;
|
||||
bird_N = regN "ave" ;
|
||||
black_A = regA "nigre" ;
|
||||
blue_A = regA "blau" ;
|
||||
boat_N = regN "barca" ;
|
||||
book_N = regN "libro" ;
|
||||
boot_N = regN "botta";
|
||||
boss_N = regN "chef" ;
|
||||
boy_N = regN "puero" ;
|
||||
bread_N = regN "pan" ;
|
||||
break_V2 = dirV2 (regV "rumper") ;
|
||||
broad_A = regA "large" ;
|
||||
airplane_N = mkN "avion";
|
||||
answer_V2S = mkV2 (mkV "responder") aP;
|
||||
apartment_N = mkN "appartamento";
|
||||
apple_N = mkN "pomo";
|
||||
art_N = mkN "arte" ;
|
||||
ask_V2Q = mkV2Q (mkV "demandar") aP ;
|
||||
baby_N = mkN "bebe" ;
|
||||
bad_A = mkA "mal";
|
||||
bank_N = mkN "banca" ;
|
||||
beautiful_A = mkA "belle" ;
|
||||
become_VA = mkVA (mkV "devenir") ;
|
||||
beer_N = mkN "bira" ;
|
||||
beg_V2V = mkV2V (mkV "rogar") noPrep aP ;
|
||||
big_A = mkA "magne" ;
|
||||
bike_N = mkN "bicycletta" ;
|
||||
bird_N = mkN "ave" ;
|
||||
black_A = mkA "nigre" ;
|
||||
blue_A = mkA "blau" ;
|
||||
boat_N = mkN "barca" ;
|
||||
book_N = mkN "libro" ;
|
||||
boot_N = mkN "botta";
|
||||
boss_N = mkN "chef" ;
|
||||
boy_N = mkN "puero" ;
|
||||
bread_N = mkN "pan" ;
|
||||
break_V2 = mkV2 (mkV "rumper") ;
|
||||
broad_A = mkA "large" ;
|
||||
brother_N2 = regN2 "fratre";
|
||||
brown_A = regA "brun" ;
|
||||
butter_N = regN "butyro" ;
|
||||
buy_V2 = dirV2 (regV "compra");
|
||||
camera_N = compN (regN "apparato" ) ["photographic"] ;
|
||||
cap_N = regN "bonetto" ;
|
||||
car_N = regN "automobile" ;
|
||||
carpet_N = regN "tapete" ;
|
||||
cat_N = regN "catto" ;
|
||||
ceiling_N = regN "tecto" ; -- of room ???
|
||||
chair_N = regN "sede";
|
||||
cheese_N = regN "caseo";
|
||||
child_N = regN "infante" ;
|
||||
church_N = regN "ecclesia" ;
|
||||
city_N = regN "urbe" ; -- ??? citate
|
||||
clean_A = regA "munde" ;
|
||||
clever_A = regA "intelligente" ;
|
||||
close_V2 = dirV2 (regV "clauder") ;
|
||||
coat_N = regN "mantello" ;
|
||||
cold_A = regA "frigide" ;
|
||||
come_V = regV "venir" ;
|
||||
computer_N = regN "computator" ;
|
||||
country_N = regN "pais" ;
|
||||
cousin_N = regN "cosino" ; ---- cosina
|
||||
cow_N = regN "vacca" ;
|
||||
die_V = regV "morir" ;
|
||||
dirty_A = regA "immunde" ;
|
||||
distance_N3 = prepN3 aP (prepN2 deP (regN "distantia")) ; --- ??? wtf
|
||||
doctor_N = regN "medico";
|
||||
dog_N = regN "can";
|
||||
door_N = regN "porta";
|
||||
drink_V2 = dirV2 (regV "biber");
|
||||
easy_A2V = mkA2V (regA "facile") aP ;
|
||||
eat_V2 = dirV2 (regV "eder");
|
||||
empty_A = regA "vacue" ;
|
||||
enemy_N = regN "inimico" ;
|
||||
factory_N = regN "fabrica" ;
|
||||
brown_A = mkA "brun" ;
|
||||
butter_N = mkN "butyro" ;
|
||||
buy_V2 = mkV2 (mkV "compra");
|
||||
camera_N = compN (mkN "apparato" ) ["photographic"] ;
|
||||
cap_N = mkN "bonetto" ;
|
||||
car_N = mkN "automobile" ;
|
||||
carpet_N = mkN "tapete" ;
|
||||
cat_N = mkN "catto" ;
|
||||
ceiling_N = mkN "tecto" ; -- of room ???
|
||||
chair_N = mkN "sede";
|
||||
cheese_N = mkN "caseo";
|
||||
child_N = mkN "infante" ;
|
||||
church_N = mkN "ecclesia" ;
|
||||
city_N = mkN "urbe" ; -- ??? citate
|
||||
clean_A = mkA "munde" ;
|
||||
clever_A = mkA "intelligente" ;
|
||||
close_V2 = mkV2 (mkV "clauder") ;
|
||||
coat_N = mkN "mantello" ;
|
||||
cold_A = mkA "frigide" ;
|
||||
come_V = mkV "venir" ;
|
||||
computer_N = mkN "computator" ;
|
||||
country_N = mkN "pais" ;
|
||||
cousin_N = mkN "cosino" ; ---- cosina
|
||||
cow_N = mkN "vacca" ;
|
||||
die_V = mkV "morir" ;
|
||||
dirty_A = mkA "immunde" ;
|
||||
distance_N3 = prepN3 aP (prepN2 deP (mkN "distantia")) ; --- ??? wtf
|
||||
doctor_N = mkN "medico";
|
||||
dog_N = mkN "can";
|
||||
door_N = mkN "porta";
|
||||
drink_V2 = mkV2 (mkV "biber");
|
||||
easy_A2V = mkA2V (mkA "facile") aP ;
|
||||
eat_V2 = mkV2 (mkV "eder");
|
||||
empty_A = mkA "vacue" ;
|
||||
enemy_N = mkN "inimico" ;
|
||||
factory_N = mkN "fabrica" ;
|
||||
father_N2 = regN2 "patre" ;
|
||||
fear_VS = mkVS (regV "timer") ;
|
||||
find_V2 = dirV2 (regV "trovar") ;
|
||||
fish_N = regN "pisce" ;
|
||||
floor_N = regN "pavimento" ;
|
||||
forget_V2 = dirV2 (regV "oblidar");
|
||||
fridge_N = regN "refrigerator";
|
||||
friend_N = regN "amico" ;
|
||||
fruit_N = regN "fructo" ;
|
||||
fun_AV = mkAV (regA "famusante") ;
|
||||
garden_N = regN "horto" ;
|
||||
girl_N = regN "puera" ;
|
||||
glove_N = regN "guanto" ;
|
||||
go_V = regV "ir";
|
||||
gold_N = regN "auro" ;
|
||||
fear_VS = mkVS (mkV "timer") ;
|
||||
find_V2 = mkV2 (mkV "trovar") ;
|
||||
fish_N = mkN "pisce" ;
|
||||
floor_N = mkN "pavimento" ;
|
||||
forget_V2 = mkV2 (mkV "oblidar");
|
||||
fridge_N = mkN "refrigerator";
|
||||
friend_N = mkN "amico" ;
|
||||
fruit_N = mkN "fructo" ;
|
||||
fun_AV = mkAV (mkA "famusante") ;
|
||||
garden_N = mkN "horto" ;
|
||||
girl_N = mkN "puera" ;
|
||||
glove_N = mkN "guanto" ;
|
||||
go_V = mkV "ir";
|
||||
gold_N = mkN "auro" ;
|
||||
good_A = R.mkAdjective "bon" "melior" "optime";
|
||||
green_A = regA "verde" ;
|
||||
harbour_N = regN "porto" ;
|
||||
hate_V2 = dirV2 (regV "detestar0") ;
|
||||
hat_N = regN "cappello" ;
|
||||
hear_V2 = dirV2 (regV "audir");
|
||||
hill_N = regN "monticulo" ;
|
||||
hope_VS = mkVS (regV "sperar") ;
|
||||
horse_N = regN "cavallo" ;
|
||||
hot_A = regA "calide" ;
|
||||
house_N = regN "domo" ;
|
||||
important_A = regA "importante" ;
|
||||
industry_N = regN "industria" ;
|
||||
iron_N = regN "ferro" ;
|
||||
king_N = regN "rege" ;
|
||||
know_V2 = dirV2 (regV "cognoscer") ; -- ???
|
||||
lake_N = regN "laco" ;
|
||||
lamp_N = regN "lampa" ;
|
||||
learn_V2 = dirV2 (regV "apprender") ;
|
||||
leather_N = regN "corio" ;
|
||||
leave_V2 = prepV2 deP (regV "partir");
|
||||
like_V2 = dirV2 (regV "amar") ;
|
||||
listen_V2 = dirV2 (regV "ascoltar") ;
|
||||
live_V = (regV "vive") ;
|
||||
long_A = regA "longe" ;
|
||||
lose_V2 = dirV2 (regV "perder");
|
||||
love_N = regN "amor" ;
|
||||
love_V2 = dirV2 (regV "adorar") ;
|
||||
man_N = regN "viro";
|
||||
married_A2 = mkA2 (regA "sponsate") aP ;
|
||||
meat_N = regN "carne" ;
|
||||
milk_N = regN "lacte" ;
|
||||
moon_N = regN "luna" ;
|
||||
green_A = mkA "verde" ;
|
||||
harbour_N = mkN "porto" ;
|
||||
hate_V2 = mkV2 (mkV "detestar0") ;
|
||||
hat_N = mkN "cappello" ;
|
||||
hear_V2 = mkV2 (mkV "audir");
|
||||
hill_N = mkN "monticulo" ;
|
||||
hope_VS = mkVS (mkV "sperar") ;
|
||||
horse_N = mkN "cavallo" ;
|
||||
hot_A = mkA "calide" ;
|
||||
house_N = mkN "domo" ;
|
||||
important_A = mkA "importante" ;
|
||||
industry_N = mkN "industria" ;
|
||||
iron_N = mkN "ferro" ;
|
||||
king_N = mkN "rege" ;
|
||||
know_V2 = mkV2 (mkV "cognoscer") ; -- ???
|
||||
lake_N = mkN "laco" ;
|
||||
lamp_N = mkN "lampa" ;
|
||||
learn_V2 = mkV2 (mkV "apprender") ;
|
||||
leather_N = mkN "corio" ;
|
||||
leave_V2 = mkV2 (mkV "partir") deP;
|
||||
like_V2 = mkV2 (mkV "amar") ;
|
||||
listen_V2 = mkV2 (mkV "ascoltar") ;
|
||||
live_V = mkV "vive" ;
|
||||
long_A = mkA "longe" ;
|
||||
lose_V2 = mkV2 (mkV "perder");
|
||||
love_N = mkN "amor" ;
|
||||
love_V2 = mkV2 (mkV "adorar") ;
|
||||
man_N = mkN "viro";
|
||||
married_A2 = mkA2 (mkA "sponsate") aP ;
|
||||
meat_N = mkN "carne" ;
|
||||
milk_N = mkN "lacte" ;
|
||||
moon_N = mkN "luna" ;
|
||||
mother_N2 = regN2 "matre" ;
|
||||
mountain_N = regN "montania" ;
|
||||
music_N = regN "musica" ;
|
||||
narrow_A = regA "stricte" ;
|
||||
new_A = regA "nove" ;
|
||||
newspaper_N = regN "jornal" ;
|
||||
oil_N = regN "oleo" ;
|
||||
old_A = regA "vetule" ;
|
||||
open_V2 = dirV2 (regV "operir") ;
|
||||
paint_V2A = mkV2A noPrep inP (regV "pinger") ; -- ??? preposition might be wrong. (did not find a sample usage)
|
||||
paper_N = regN "papiro" ;
|
||||
paris_PN = regPN "Paris" ;
|
||||
peace_N = regN "pace" ;
|
||||
pen_N = regN "penna" ;
|
||||
planet_N = regN "planeta" ;
|
||||
plastic_N = regN "plastico" ;
|
||||
play_V2 = dirV2 (regV "sonar") ; -- ??? eg. play the piano
|
||||
policeman_N = regN "policero" ;
|
||||
priest_N = regN "prestre" ;
|
||||
probable_AS = mkAS (regA "probabile") ;
|
||||
queen_N = regN "regina" ;
|
||||
radio_N = regN "radio" ;
|
||||
rain_V0 = mkV0 (regV "pluvar") ;
|
||||
read_V2 = dirV2 (regV "leger");
|
||||
red_A = regA "rubie" ;
|
||||
religion_N = regN "religion" ;
|
||||
restaurant_N = regN "restaurant" ;
|
||||
river_N = regN "riviera" ;
|
||||
rock_N = regN "rocca" ;
|
||||
roof_N = regN "tecto" ;
|
||||
rubber_N = regN "cauchu" ;
|
||||
run_V = regV "currer";
|
||||
say_VS = mkVS (regV "dicer");
|
||||
school_N = regN "schola" ;
|
||||
science_N = regN "scientia";
|
||||
sea_N = regN "mar" ;
|
||||
seek_V2 = dirV2 (regV "cercar");
|
||||
see_V2 = dirV2 (regV "vider");
|
||||
sell_V3 = prepV3 aP (dirV2 (regV "vender"));
|
||||
send_V3 = prepV3 aP (dirV2 (regV "inviar"));
|
||||
sheep_N = regN "ove";
|
||||
ship_N = regN "nave" ;
|
||||
shirt_N = regN "camisa" ;
|
||||
shoe_N = regN "scapra" ;
|
||||
shop_N = regN "boteca" ;
|
||||
short_A = regA "curte" ;
|
||||
silver_N = regN "argento" ;
|
||||
sister_N = regN "soror" ;
|
||||
sleep_V = regV "dormir";
|
||||
small_A = regA "parve" ; -- !!! This one should be preferably a prefix adjective
|
||||
snake_N = regN "serpente" ;
|
||||
sock_N = regN "calcetta" ;
|
||||
speak_V2 = dirV2 (regV "parlar") ;-- ???
|
||||
star_N = regN "stella" ;
|
||||
steel_N = regN "aciero" ;
|
||||
stone_N = regN "petra" ;
|
||||
stove_N = regN "estufa" ;
|
||||
student_N = regN "studente" ;
|
||||
stupid_A = regA "nescie" ;
|
||||
sun_N = regN "sol" ;
|
||||
switch8off_V2 = dirV2 (regV "extinguer");
|
||||
switch8on_V2 = dirV2 (regV "accender") ;
|
||||
table_N = regN "tablula" ;
|
||||
talk_V3 = (prepV3 deP (prepV2 aP (regV "parlar"))) ;
|
||||
teacher_N = regN "professor" ;
|
||||
teach_V2 = dirV2 (regV "inseniar"); -- ??? aP (preposition is what?)
|
||||
television_N = regN "television" ;
|
||||
thick_A = regA "spisse" ;
|
||||
thin_A = regA "magre" ;
|
||||
train_N = regN "convoyo" ; -- ???
|
||||
travel_V = regV "viagiar" ;
|
||||
tree_N = regN "tarbore" ;
|
||||
---- trousers_N = regN "pantalon" ; --- ??? funky plural in the Abstract lexicon...
|
||||
ugly_A = regA "ugly" ;
|
||||
understand_V2 = dirV2 (regV "comprender");
|
||||
university_N = regN "universitate" ;
|
||||
village_N = regN "village" ;
|
||||
wait_V2 = dirV2 (regV "wait") ;
|
||||
walk_V = (regV "ambular") ;
|
||||
warm_A = regA "calde" ;
|
||||
war_N = regN "guerra" ;
|
||||
watch_V2 = dirV2 (regV "spectar") ;
|
||||
water_N = regN "aqua" ;
|
||||
white_A = regA "albe" ;
|
||||
window_N = regN "fenestra" ;
|
||||
wine_N = regN "vino" ;
|
||||
win_V2 = dirV2 (regV "ganiar");
|
||||
woman_N = regN "femina";
|
||||
wonder_VQ = mkVQ (reflV (regV "demandar")) ;
|
||||
wood_N = regN "ligno"; -- or silva ...
|
||||
write_V2 = dirV2 (regV "scriber");
|
||||
yellow_A = regA "jalne" ;
|
||||
young_A = regA "juvene" ;
|
||||
mountain_N = mkN "montania" ;
|
||||
music_N = mkN "musica" ;
|
||||
narrow_A = mkA "stricte" ;
|
||||
new_A = mkA "nove" ;
|
||||
newspaper_N = mkN "jornal" ;
|
||||
oil_N = mkN "oleo" ;
|
||||
old_A = mkA "vetule" ;
|
||||
open_V2 = mkV2 (mkV "operir") ;
|
||||
paint_V2A = mkV2A (mkV "pinger") noPrep inP ; -- ??? preposition might be wrong. (did not find a sample usage)
|
||||
paper_N = mkN "papiro" ;
|
||||
paris_PN = mkPN "Paris" ;
|
||||
peace_N = mkN "pace" ;
|
||||
pen_N = mkN "penna" ;
|
||||
planet_N = mkN "planeta" ;
|
||||
plastic_N = mkN "plastico" ;
|
||||
play_V2 = mkV2 (mkV "sonar") ; -- ??? eg. play the piano
|
||||
policeman_N = mkN "policero" ;
|
||||
priest_N = mkN "prestre" ;
|
||||
probable_AS = mkAS (mkA "probabile") ;
|
||||
queen_N = mkN "regina" ;
|
||||
radio_N = mkN "radio" ;
|
||||
rain_V0 = mkV0 (mkV "pluvar") ;
|
||||
read_V2 = mkV2 (mkV "leger");
|
||||
red_A = mkA "rubie" ;
|
||||
religion_N = mkN "religion" ;
|
||||
restaurant_N = mkN "restaurant" ;
|
||||
river_N = mkN "riviera" ;
|
||||
rock_N = mkN "rocca" ;
|
||||
roof_N = mkN "tecto" ;
|
||||
rubber_N = mkN "cauchu" ;
|
||||
run_V = mkV "currer";
|
||||
say_VS = mkVS (mkV "dicer");
|
||||
school_N = mkN "schola" ;
|
||||
science_N = mkN "scientia";
|
||||
sea_N = mkN "mar" ;
|
||||
seek_V2 = mkV2 (mkV "cercar");
|
||||
see_V2 = mkV2 (mkV "vider");
|
||||
sell_V3 = mkV3 (mkV "vender") noPrep aP;
|
||||
send_V3 = mkV3 (mkV "inviar") noPrep aP;
|
||||
sheep_N = mkN "ove";
|
||||
ship_N = mkN "nave" ;
|
||||
shirt_N = mkN "camisa" ;
|
||||
shoe_N = mkN "scapra" ;
|
||||
shop_N = mkN "boteca" ;
|
||||
short_A = mkA "curte" ;
|
||||
silver_N = mkN "argento" ;
|
||||
sister_N = mkN "soror" ;
|
||||
sleep_V = mkV "dormir";
|
||||
small_A = mkA "parve" ; -- !!! This one should be preferably a prefix adjective
|
||||
snake_N = mkN "serpente" ;
|
||||
sock_N = mkN "calcetta" ;
|
||||
speak_V2 = mkV2 (mkV "parlar") ;-- ???
|
||||
star_N = mkN "stella" ;
|
||||
steel_N = mkN "aciero" ;
|
||||
stone_N = mkN "petra" ;
|
||||
stove_N = mkN "estufa" ;
|
||||
student_N = mkN "studente" ;
|
||||
stupid_A = mkA "nescie" ;
|
||||
sun_N = mkN "sol" ;
|
||||
switch8off_V2 = mkV2 (mkV "extinguer");
|
||||
switch8on_V2 = mkV2 (mkV "accender") ;
|
||||
table_N = mkN "tablula" ;
|
||||
talk_V3 = mkV3 (mkV "parlar") deP aP ;
|
||||
teacher_N = mkN "professor" ;
|
||||
teach_V2 = mkV2 (mkV "inseniar"); -- ??? aP (preposition is what?)
|
||||
television_N = mkN "television" ;
|
||||
thick_A = mkA "spisse" ;
|
||||
thin_A = mkA "magre" ;
|
||||
train_N = mkN "convoyo" ; -- ???
|
||||
travel_V = mkV "viagiar" ;
|
||||
tree_N = mkN "tarbore" ;
|
||||
---- trousers_N = mkN "pantalon" ; --- ??? funky plural in the Abstract lexicon...
|
||||
ugly_A = mkA "ugly" ;
|
||||
understand_V2 = mkV2 (mkV "comprender");
|
||||
university_N = mkN "universitate" ;
|
||||
village_N = mkN "village" ;
|
||||
wait_V2 = mkV2 (mkV "wait") ;
|
||||
walk_V = (mkV "ambular") ;
|
||||
warm_A = mkA "calde" ;
|
||||
war_N = mkN "guerra" ;
|
||||
watch_V2 = mkV2 (mkV "spectar") ;
|
||||
water_N = mkN "aqua" ;
|
||||
white_A = mkA "albe" ;
|
||||
window_N = mkN "fenestra" ;
|
||||
wine_N = mkN "vino" ;
|
||||
win_V2 = mkV2 (mkV "ganiar");
|
||||
woman_N = mkN "femina";
|
||||
wonder_VQ = mkVQ (reflV (mkV "demandar")) ;
|
||||
wood_N = mkN "ligno"; -- or silva ...
|
||||
write_V2 = mkV2 (mkV "scriber");
|
||||
yellow_A = mkA "jalne" ;
|
||||
young_A = mkA "juvene" ;
|
||||
|
||||
lin
|
||||
do_V2 = dirV2 (regV "facer");
|
||||
add_V3 = prepV3 aP (dirV2 (regV "additionar"));
|
||||
do_V2 = mkV2 (mkV "facer");
|
||||
add_V3 = mkV3 (mkV "additionar") noPrep aP;
|
||||
already_Adv = mkAdv "jam" ;
|
||||
animal_N = regN "animal" ;
|
||||
ashes_N = regN "cinere" ; -- plural only???
|
||||
back_N = regN "dorso" ;
|
||||
bark_N = regN "cortice" ;
|
||||
belly_N = regN "ventre" ;
|
||||
bite_V2 = dirV2 (regV "morder");
|
||||
blood_N = regN "sanguine" ;
|
||||
blow_V = regV "sufflar";
|
||||
bone_N = regN "osso" ;
|
||||
breast_N = regN "pectore" ;
|
||||
breathe_V = dirV2 (regV "respirar") ;
|
||||
burn_V = regV "arder";
|
||||
cloud_N = regN "nube" ;
|
||||
correct_A = (regA "correcte") ;
|
||||
count_V2 = dirV2 (regV "numerar") ;
|
||||
cut_V2 = dirV2 (regV "secar");
|
||||
day_N = regN "die" ;
|
||||
dig_V = regV "fossar";
|
||||
dry_A = regA "sic" ;
|
||||
dull_A = regA "enoiose" ;
|
||||
dust_N = regN "pulvere" ;
|
||||
ear_N = regN "aure" ;
|
||||
earth_N = regN "terra" ;
|
||||
egg_N = regN "ovo" ;
|
||||
eye_N = regN "oculo" ;
|
||||
fall_V = regV "cader" ;
|
||||
animal_N = mkN "animal" ;
|
||||
ashes_N = mkN "cinere" ; -- plural only???
|
||||
back_N = mkN "dorso" ;
|
||||
bark_N = mkN "cortice" ;
|
||||
belly_N = mkN "ventre" ;
|
||||
bite_V2 = mkV2 (mkV "morder");
|
||||
blood_N = mkN "sanguine" ;
|
||||
blow_V = mkV "sufflar";
|
||||
bone_N = mkN "osso" ;
|
||||
breast_N = mkN "pectore" ;
|
||||
breathe_V = mkV "respirar" ;
|
||||
burn_V = mkV "arder";
|
||||
cloud_N = mkN "nube" ;
|
||||
correct_A = (mkA "correcte") ;
|
||||
count_V2 = mkV2 (mkV "numerar") ;
|
||||
cut_V2 = mkV2 (mkV "secar");
|
||||
day_N = mkN "die" ;
|
||||
dig_V = mkV "fossar";
|
||||
dry_A = mkA "sic" ;
|
||||
dull_A = mkA "enoiose" ;
|
||||
dust_N = mkN "pulvere" ;
|
||||
ear_N = mkN "aure" ;
|
||||
earth_N = mkN "terra" ;
|
||||
egg_N = mkN "ovo" ;
|
||||
eye_N = mkN "oculo" ;
|
||||
fall_V = mkV "cader" ;
|
||||
far_Adv = mkAdv "lontano" ;
|
||||
fat_N = regN "grasse" ;
|
||||
fear_V2 = dirV2 (regV "timer") ;
|
||||
feather_N = regN "pluma" ;
|
||||
fight_V2 = dirV2 (regV "combattar");
|
||||
fingernail_N = regN "ungual";
|
||||
fire_N = regN "foco" ;
|
||||
float_V = regV "flottar" ;
|
||||
flow_V = regV "flucto" ;
|
||||
flower_N = regN "flore" ;
|
||||
fly_V = regV "volar" ;
|
||||
fog_N = regN "bruma" ;
|
||||
foot_N = regN "pede";
|
||||
forest_N = regN "silva" ;
|
||||
freeze_V = regV "gelar";
|
||||
full_A = regA "plen" ;
|
||||
give_V3 = prepV3 aP (dirV2 (regV "dar")) ;
|
||||
grammar_N = regN "grammatica" ;
|
||||
grass_N = regN "herba" ;
|
||||
guts_N = regN "tripas" ; -- !!!: no singular
|
||||
hair_N = regN "pilo" ;
|
||||
hand_N = regN "mano" ;
|
||||
head_N = regN "capite" ;
|
||||
heart_N = regN "corde" ;
|
||||
heavy_A = regA "pesante" ;
|
||||
hit_V2 = dirV2 (regV "frappar") ;
|
||||
hold_V2 = dirV2 (regV "retener") ;
|
||||
horn_N = regN "corno" ;
|
||||
hunt_V2 = dirV2 (regV "chassar") ;
|
||||
husband_N = regN "sposo";
|
||||
ice_N = regN "glacie" ;
|
||||
john_PN = regPN "John" ;
|
||||
jump_V = regV "saltar" ;
|
||||
kill_V2 = dirV2 (regV "occider") ;
|
||||
knee_N = regN "genu" ;
|
||||
language_N = regN "linguage" ;
|
||||
laugh_V = regV "rider" ;
|
||||
leaf_N = regN "folio" ;
|
||||
fat_N = mkN "grasse" ;
|
||||
fear_V2 = mkV2 (mkV "timer") ;
|
||||
feather_N = mkN "pluma" ;
|
||||
fight_V2 = mkV2 (mkV "combattar");
|
||||
fingernail_N = mkN "ungual";
|
||||
fire_N = mkN "foco" ;
|
||||
float_V = mkV "flottar" ;
|
||||
flow_V = mkV "flucto" ;
|
||||
flower_N = mkN "flore" ;
|
||||
fly_V = mkV "volar" ;
|
||||
fog_N = mkN "bruma" ;
|
||||
foot_N = mkN "pede";
|
||||
forest_N = mkN "silva" ;
|
||||
freeze_V = mkV "gelar";
|
||||
full_A = mkA "plen" ;
|
||||
give_V3 = mkV3 (mkV "dar") noPrep aP ;
|
||||
grammar_N = mkN "grammatica" ;
|
||||
grass_N = mkN "herba" ;
|
||||
guts_N = mkN "tripas" ; -- !!!: no singular
|
||||
hair_N = mkN "pilo" ;
|
||||
hand_N = mkN "mano" ;
|
||||
head_N = mkN "capite" ;
|
||||
heart_N = mkN "corde" ;
|
||||
heavy_A = mkA "pesante" ;
|
||||
hit_V2 = mkV2 (mkV "frappar") ;
|
||||
hold_V2 = mkV2 (mkV "retener") ;
|
||||
horn_N = mkN "corno" ;
|
||||
hunt_V2 = mkV2 (mkV "chassar") ;
|
||||
husband_N = mkN "sposo";
|
||||
ice_N = mkN "glacie" ;
|
||||
john_PN = mkPN "John" ;
|
||||
jump_V = mkV "saltar" ;
|
||||
kill_V2 = mkV2 (mkV "occider") ;
|
||||
knee_N = mkN "genu" ;
|
||||
language_N = mkN "linguage" ;
|
||||
laugh_V = mkV "rider" ;
|
||||
leaf_N = mkN "folio" ;
|
||||
left_Ord = ss "leve" ;
|
||||
leg_N = regN "gamba" ;
|
||||
lie_V = regV "mentir";
|
||||
liver_N = regN "hepate" ;
|
||||
louse_N = regN "pediculo";
|
||||
mouth_N = regN "bucca" ;
|
||||
name_N = regN "nomine" ;
|
||||
near_A = regA "proxime" ;
|
||||
neck_N = regN "collo" ;
|
||||
night_N = regN "nocte" ;
|
||||
nose_N = regN "naso" ;
|
||||
leg_N = mkN "gamba" ;
|
||||
lie_V = mkV "mentir";
|
||||
liver_N = mkN "hepate" ;
|
||||
louse_N = mkN "pediculo";
|
||||
mouth_N = mkN "bucca" ;
|
||||
name_N = mkN "nomine" ;
|
||||
near_A = mkA "proxime" ;
|
||||
neck_N = mkN "collo" ;
|
||||
night_N = mkN "nocte" ;
|
||||
nose_N = mkN "naso" ;
|
||||
now_Adv = mkAdv "nunc" ;
|
||||
number_N = regN "numero" ;
|
||||
person_N = regN "homine" ;
|
||||
play_V = regV "jocar" ;
|
||||
pull_V2 = dirV2 (regV "traher") ;
|
||||
push_V2 = dirV2 (regV "pulsar") ;
|
||||
put_V2 = dirV2 (regV "placar");
|
||||
question_N = regN "question" ;
|
||||
rain_N = regN "pluvia" ;
|
||||
ready_A = regA "preste" ;
|
||||
reason_N = regN "ration" ;
|
||||
number_N = mkN "numero" ;
|
||||
person_N = mkN "homine" ;
|
||||
play_V = mkV "jocar" ;
|
||||
pull_V2 = mkV2 (mkV "traher") ;
|
||||
push_V2 = mkV2 (mkV "pulsar") ;
|
||||
put_V2 = mkV2 (mkV "placar");
|
||||
question_N = mkN "question" ;
|
||||
rain_N = mkN "pluvia" ;
|
||||
ready_A = mkA "preste" ;
|
||||
reason_N = mkN "ration" ;
|
||||
right_Ord = ss "dextra" ;
|
||||
road_N = regN "via" ;
|
||||
root_N = regN "radice" ;
|
||||
rope_N = regN "corda" ;
|
||||
rotten_A = (regA "corrupte") ;
|
||||
round_A = regA "ronde" ;
|
||||
rub_V2 = dirV2 (regV "fircar") ;
|
||||
rule_N = regN "regula" ;
|
||||
salt_N = regN "sal" ;
|
||||
sand_N = regN "sablo" ;
|
||||
scratch_V2 = dirV2 (regV "grattar") ;
|
||||
seed_N = regN "semine" ;
|
||||
sew_V = regV "suer";
|
||||
sharp_A = regA "trenchante" ;
|
||||
sing_V = regV "cantar";
|
||||
sit_V = regV "seder";
|
||||
skin_N = regN "pelle" ;
|
||||
sky_N = regN "celo" ;
|
||||
smell_V = regV "oler" ;
|
||||
smoke_N = regN "fumar" ;
|
||||
smooth_A = regA "lisie" ;
|
||||
snow_N = regN "niva" ;
|
||||
song_N = regN "canto" ;
|
||||
spit_V = regV "sputar";
|
||||
split_V2 = dirV2 (regV "finder");
|
||||
squeeze_V2 = dirV2 (regV "comprimer") ;
|
||||
stab_V2 = dirV2 (regV "dagar") ;
|
||||
stand_V = regV "star";
|
||||
stick_N = regN "baston" ;
|
||||
stop_V = regV "stoppar" ;
|
||||
straight_A = regA "directe" ;
|
||||
suck_V2 = dirV2 (regV "suger") ;
|
||||
swell_V = (regV "turger");
|
||||
swim_V = (regV "natada");
|
||||
tail_N = regN "cauda" ;
|
||||
think_V = regV "pensar";
|
||||
throw_V2 = dirV2 (regV "jectar") ;
|
||||
tie_V2 = dirV2 (regV "ligar") ;
|
||||
road_N = mkN "via" ;
|
||||
root_N = mkN "radice" ;
|
||||
rope_N = mkN "corda" ;
|
||||
rotten_A = (mkA "corrupte") ;
|
||||
round_A = mkA "ronde" ;
|
||||
rub_V2 = mkV2 (mkV "fircar") ;
|
||||
rule_N = mkN "regula" ;
|
||||
salt_N = mkN "sal" ;
|
||||
sand_N = mkN "sablo" ;
|
||||
scratch_V2 = mkV2 (mkV "grattar") ;
|
||||
seed_N = mkN "semine" ;
|
||||
sew_V = mkV "suer";
|
||||
sharp_A = mkA "trenchante" ;
|
||||
sing_V = mkV "cantar";
|
||||
sit_V = mkV "seder";
|
||||
skin_N = mkN "pelle" ;
|
||||
sky_N = mkN "celo" ;
|
||||
smell_V = mkV "oler" ;
|
||||
smoke_N = mkN "fumar" ;
|
||||
smooth_A = mkA "lisie" ;
|
||||
snow_N = mkN "niva" ;
|
||||
song_N = mkN "canto" ;
|
||||
spit_V = mkV "sputar";
|
||||
split_V2 = mkV2 (mkV "finder");
|
||||
squeeze_V2 = mkV2 (mkV "comprimer") ;
|
||||
stab_V2 = mkV2 (mkV "dagar") ;
|
||||
stand_V = mkV "star";
|
||||
stick_N = mkN "baston" ;
|
||||
stop_V = mkV "stoppar" ;
|
||||
straight_A = mkA "directe" ;
|
||||
suck_V2 = mkV2 (mkV "suger") ;
|
||||
swell_V = (mkV "turger");
|
||||
swim_V = (mkV "natada");
|
||||
tail_N = mkN "cauda" ;
|
||||
think_V = mkV "pensar";
|
||||
throw_V2 = mkV2 (mkV "jectar") ;
|
||||
tie_V2 = mkV2 (mkV "ligar") ;
|
||||
today_Adv = mkAdv "hodie" ;
|
||||
tongue_N = regN "lingua" ;
|
||||
tooth_N = regN "dente";
|
||||
turn_V = regV "tornar" ;
|
||||
uncertain_A = regA "incerte" ;
|
||||
vomit_V = regV "vomir" ;
|
||||
wash_V2 = dirV2 (regV "abluer") ;
|
||||
wet_A = regA "humid" ; ----
|
||||
wide_A = regA "large" ;
|
||||
wife_N = regN "sposa";
|
||||
wind_N = regN "vento" ;
|
||||
wing_N = regN "ala" ;
|
||||
wipe_V2 = dirV2 (regV "essugar") ;
|
||||
worm_N = regN "verme" ;
|
||||
year_N = regN "anno" ;
|
||||
-- other_A = regA "altere" ;
|
||||
tongue_N = mkN "lingua" ;
|
||||
tooth_N = mkN "dente";
|
||||
turn_V = mkV "tornar" ;
|
||||
uncertain_A = mkA "incerte" ;
|
||||
vomit_V = mkV "vomir" ;
|
||||
wash_V2 = mkV2 (mkV "abluer") ;
|
||||
wet_A = mkA "humid" ; ----
|
||||
wide_A = mkA "large" ;
|
||||
wife_N = mkN "sposa";
|
||||
wind_N = mkN "vento" ;
|
||||
wing_N = mkN "ala" ;
|
||||
wipe_V2 = mkV2 (mkV "essugar") ;
|
||||
worm_N = mkN "verme" ;
|
||||
year_N = mkN "anno" ;
|
||||
-- other_A = mkA "altere" ;
|
||||
---- added 4/6/2007
|
||||
--
|
||||
oper
|
||||
|
||||
60
src/interlingua/NamesIna.gf
Normal file
60
src/interlingua/NamesIna.gf
Normal file
@@ -0,0 +1,60 @@
|
||||
concrete NamesIna of Names = CatIna ** open Prelude, ResIna in {
|
||||
|
||||
lin GivenName gn = {
|
||||
s = \\_ => gn.s;
|
||||
a = agrP3 Sg;
|
||||
isPronoun = False
|
||||
} ;
|
||||
lin MaleSurname = \sn -> {
|
||||
s = \\_ => sn.s ! Male;
|
||||
a = agrP3 Sg;
|
||||
isPronoun = False
|
||||
} ;
|
||||
lin FemaleSurname = \sn -> {
|
||||
s = \\_ => sn.s ! Female;
|
||||
a = agrP3 Sg;
|
||||
isPronoun = False
|
||||
} ;
|
||||
lin PlSurname = \sn -> {
|
||||
s = \\_ => sn.pl;
|
||||
a = agrP3 Pl;
|
||||
isPronoun = False
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = \\_ => gn.s ++ sn.s ! gn.g ;
|
||||
a = agrP3 Pl;
|
||||
isPronoun = False
|
||||
} ;
|
||||
|
||||
lin UseLN ln = {
|
||||
s = \\c => artLN ln c ;
|
||||
a = agrP3 ln.n;
|
||||
isPronoun = False
|
||||
} ;
|
||||
lin PlainLN ln = {
|
||||
s = \\_ => ln.s;
|
||||
a = agrP3 ln.n;
|
||||
isPronoun = False
|
||||
} ;
|
||||
|
||||
lin InLN ln = {
|
||||
s = "in" ++ artLN ln Acc ;
|
||||
} ;
|
||||
|
||||
lin AdjLN ap ln = ln ** {
|
||||
s = preOrPost ap.isPre (ap.s ! agrP3 ln.n) ln.s ;
|
||||
} ;
|
||||
|
||||
oper
|
||||
artLN : LN -> Case -> Str = \ln,c ->
|
||||
case ln.art of {
|
||||
True => case c of {
|
||||
Dat => "al";
|
||||
Gen | Abl => "del";
|
||||
_ => "le"
|
||||
} ++
|
||||
ln.s ;
|
||||
False => ln.s
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -118,4 +118,10 @@ concrete NounIna of Noun = CatIna ** open ResIna, Prelude in {
|
||||
isPronoun = np.isPronoun ---- ?? AR
|
||||
} ;
|
||||
|
||||
QuantityNP n m = {
|
||||
s = \\c => preOrPost m.isPre m.s (n.s ! NCard) ;
|
||||
a = agrP3 n.n ;
|
||||
isPronoun = False
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -29,23 +29,17 @@ resource ParadigmsIna = open
|
||||
(Predef=Predef),
|
||||
Prelude,
|
||||
MorphoIna,
|
||||
CatIna
|
||||
CatIna,
|
||||
CommonX
|
||||
in {
|
||||
--2 Parameters
|
||||
--
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
oper
|
||||
male : Sex = Male ;
|
||||
female : Sex = Female ;
|
||||
|
||||
oper
|
||||
-- Gender : Type ;
|
||||
-- There is no grammatical gender in interlingua.
|
||||
|
||||
---- To abstract over number names, we define the following.
|
||||
--
|
||||
-- Number : Type ;
|
||||
--
|
||||
-- singular : Number ;
|
||||
-- plural : Number ;
|
||||
|
||||
-- To abstract over case names, we define the following.
|
||||
|
||||
nominative : Case ;
|
||||
@@ -63,7 +57,7 @@ oper
|
||||
--2 Nouns
|
||||
--
|
||||
|
||||
-- All nouns are regular, so one should use $regN$ to construct them.
|
||||
-- All nouns are regular, so one should use $mkN$ to construct them.
|
||||
|
||||
--3 Relational nouns
|
||||
--
|
||||
@@ -96,6 +90,7 @@ oper
|
||||
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||
|
||||
mkAdA : Str -> AdA ;
|
||||
mkAdN : Str -> AdA ;
|
||||
|
||||
--2 Prepositions
|
||||
--
|
||||
@@ -124,20 +119,22 @@ oper
|
||||
-- I decided to provide the following combinators for forming verbs with
|
||||
-- complex grammar rules:
|
||||
|
||||
prepV2 : Prep -> V -> V2 ;
|
||||
prepV3 : Prep -> V2 -> V3 ;
|
||||
dirV2 : V -> V2 ;
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> Prep -> V2 = prepV2 ;
|
||||
mkV2 : V -> V2 = dirV2 ;
|
||||
} ;
|
||||
|
||||
mkV3 : V -> Prep -> Prep -> V3 ;
|
||||
|
||||
mkV0 : V -> V0 ;
|
||||
mkVS : V -> VS ;
|
||||
-- mkV2S : V -> Prep -> V2S ;
|
||||
-- mkVV : V -> VV ;
|
||||
mkV2V : Prep -> Prep -> V -> V2V ;
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
mkVV : V -> VV ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
mkVA : V -> VA ;
|
||||
mkV2A : Prep -> Prep -> V -> V2A ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkV2Q : Prep -> V -> V2Q ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
-- mkA2S : A -> Prep -> A2S ;
|
||||
@@ -163,7 +160,7 @@ oper
|
||||
dative = Dat ;
|
||||
ablative = Abl ;
|
||||
|
||||
regN s = nounReg s ** {lock_N = <>};
|
||||
mkN s = nounReg s ** {lock_N = <>};
|
||||
|
||||
compN : N -> Str -> N;
|
||||
compN n s = {s = \\x => n.s ! x ++ s; lock_N = <>} ;
|
||||
@@ -173,7 +170,7 @@ oper
|
||||
prepN3 : Prep -> N2 -> N3;
|
||||
prepN2 = \p,n -> n ** {lock_N2 = <> ; p2 = p.s; c2 = p.c} ;
|
||||
prepN3 = \p,n -> n ** {lock_N3 = <> ; p3 = p.s; c3 = p.c} ;
|
||||
regN2 n = prepN2 (mkPrep [] genitive) (regN n) ** {lock_N2 = <>};
|
||||
regN2 n = prepN2 (mkPrep [] genitive) (mkN n) ** {lock_N2 = <>};
|
||||
|
||||
----3 Relational common noun phrases
|
||||
----
|
||||
@@ -187,12 +184,24 @@ oper
|
||||
-- cnN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ;
|
||||
-- cnN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ;
|
||||
--
|
||||
regPN n = regGenPN n;
|
||||
regGenPN n = {s = n; lock_PN = <>} ;
|
||||
-- nounPN n = {s = n.s ! singular ; g = n.g ; lock_PN = <>} ;
|
||||
--
|
||||
-- mk2A a b = mkAdjective a a a b ** {lock_A = <>} ;
|
||||
regA a = regAdjective a ** {lock_A = <>} ;
|
||||
mkPN : Str -> PN = regGenPN;
|
||||
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN = \s -> lin LN {s=s; n=Sg; art=False};
|
||||
mkLN : Str -> Number -> LN = \s,n -> lin LN {s=s; n=n; art=False};
|
||||
} ;
|
||||
|
||||
mkGN : Str -> Sex -> GN = \s,g -> lin GN {s=s; g=g};
|
||||
mkSN = overload {
|
||||
mkSN : Str -> SN = \s -> lin SN {s=\\_ => s; pl=s};
|
||||
mkSN : Str -> Str -> Str -> SN = \m,f,pl -> lin SN {s=table {Male=>m; Female=>f}; pl=pl};
|
||||
} ;
|
||||
|
||||
regGenPN : Str -> PN ;
|
||||
regGenPN s = {s = s; lock_PN = <>} ;
|
||||
|
||||
mkA : Str -> A ;
|
||||
mkA a = regAdjective a ** {lock_A = <>} ;
|
||||
|
||||
mkA2 a p = a ** {c2 = casePrep p.s p.c ; lock_A2 = <>} ;
|
||||
|
||||
@@ -201,24 +210,25 @@ oper
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
mkAdV x = ss x ** {lock_AdV = <>} ;
|
||||
mkAdA x = ss x ** {lock_AdA = <>} ;
|
||||
mkAdN x = ss x ** {lock_AdA = <>} ;
|
||||
|
||||
mkPrep p c = ss p ** {c = c; lock_Prep = <>} ;
|
||||
noPrep = mkPrep [] accusative ;
|
||||
|
||||
|
||||
-- Verb-formation combinators.
|
||||
regV : Str -> V;
|
||||
regV s = mkVerb s ** {lock_V = <>};
|
||||
mkV : Str -> V;
|
||||
mkV s = mkVerb s ** {lock_V = <>};
|
||||
|
||||
prepV2 p v = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
|
||||
prepV3 p v = v ** {c3 = p.c; p3 = p.s ; lock_V3 = <>} ;
|
||||
dirV2 = prepV2 noPrep ;
|
||||
prepV2 : V -> Prep -> V2 ;
|
||||
prepV2 v p = v ** {c2 = p.c; p2 = p.s ; lock_V2 = <>} ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
dirV2 v = prepV2 v noPrep ;
|
||||
|
||||
mkV3 v p1 p2 = v ** {c2 = p1.c; p2 = p1.s ; c3 = p2.c; p3 = p2.s ; lock_V3 = <>} ;
|
||||
|
||||
mkVS v = v ** {lock_VS = <>} ;
|
||||
-- mkVV v = {
|
||||
-- s = table {VVF vf => v.s ! vf ; _ => variants {}} ;
|
||||
-- isAux = False ; lock_VV = <>
|
||||
-- } ;
|
||||
mkVV v = v ** {lock_VV = <>} ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
|
||||
V0 : Type = V ;
|
||||
@@ -227,88 +237,23 @@ oper
|
||||
A2V : Type = A2 ;
|
||||
--
|
||||
mkV0 v = v ** {lock_V = <>} ;
|
||||
-- mkV2S v p = prepV2 v p ** {lock_V2 = <>} ;
|
||||
mkV2V p t v = prepV2 p v ** {s4 = t ; lock_V2V = <>} ;
|
||||
mkV2S v p = prepV2 v p ** {lock_V2S = <>} ;
|
||||
mkV2V v p t = prepV2 v p ** {s4 = t ; lock_V2V = <>} ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
mkV2A p2 p3 v = (prepV3 p3 (prepV2 p2 v)) ** {lock_V2A = <>} ;
|
||||
mkV2A v p2 p3 = mkV3 v p2 p3 ** {lock_V2A = <>} ;
|
||||
mkV2Q p v = prepV2 p v ** {lock_V2Q = <>} ;
|
||||
mkAS v = v ** {lock_A = <>} ;
|
||||
-- mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
||||
mkAV v = v ** {lock_A = <>} ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
||||
|
||||
|
||||
-- pre-overload API and overload definitions
|
||||
regN : Str -> N ;
|
||||
-- mk2N : (man,men : Str) -> N ;
|
||||
-- genderN : Gender -> N -> N ;
|
||||
-- compN : Str -> N -> N ;
|
||||
--
|
||||
--
|
||||
--
|
||||
-- mk2A : (free,freely : Str) -> A ;
|
||||
regA : Str -> A ;
|
||||
--
|
||||
-- mkA = overload {
|
||||
-- mkA : Str -> A = regA ;
|
||||
-- mkA : (fat,fatter : Str) -> A = \fat,fatter ->
|
||||
-- mkAdjective fat fatter (init fatter + "st") (fat + "ly") ** {lock_A = <>} ;
|
||||
-- mkA : (good,better,best,well : Str) -> A = \a,b,c,d ->
|
||||
-- mkAdjective a b c d ** {lock_A = <>}
|
||||
-- } ;
|
||||
--
|
||||
-- compoundA = compoundADeg ;
|
||||
--
|
||||
--
|
||||
-- mk5V : (go, goes, went, gone, going : Str) -> V ;
|
||||
-- regV : (cry : Str) -> V ;
|
||||
-- reg2V : (stop, stopped : Str) -> V;
|
||||
-- irregV : (drink, drank, drunk : Str) -> V ;
|
||||
-- irreg4V : (run, ran, run, running : Str) -> V ;
|
||||
--
|
||||
-- -- Use reg2V instead
|
||||
-- regDuplV : Str -> V ;
|
||||
-- -- Use irreg4V instead
|
||||
-- irregDuplV : (get, got, gotten : Str) -> V ;
|
||||
--
|
||||
mkN : Str -> N ;
|
||||
|
||||
|
||||
------ obsolete
|
||||
--
|
||||
---- Comparison adjectives may two more forms.
|
||||
--
|
||||
-- ADeg : Type ;
|
||||
--
|
||||
-- mkADeg : (good,better,best,well : Str) -> ADeg ;
|
||||
--
|
||||
---- The regular pattern recognizes two common variations:
|
||||
---- "-e" ("rude" - "ruder" - "rudest") and
|
||||
---- "-y" ("happy - happier - happiest - happily")
|
||||
--
|
||||
-- regADeg : Str -> ADeg ; -- long, longer, longest
|
||||
--
|
||||
---- However, the duplication of the final consonant is nor predicted,
|
||||
---- but a separate pattern is used:
|
||||
--
|
||||
-- duplADeg : Str -> ADeg ; -- fat, fatter, fattest
|
||||
--
|
||||
---- If comparison is formed by "more", "most", as in general for
|
||||
---- long adjective, the following pattern is used:
|
||||
--
|
||||
-- compoundADeg : A -> ADeg ; -- -/more/most ridiculous
|
||||
--
|
||||
---- From a given $ADeg$, it is possible to get back to $A$.
|
||||
--
|
||||
-- adegA : ADeg -> A ;
|
||||
--
|
||||
--
|
||||
regPN : Str -> PN ;
|
||||
regGenPN : Str -> PN ; -- John, John's
|
||||
--
|
||||
---- Sometimes you can reuse a common noun as a proper name, e.g. "Bank".
|
||||
--
|
||||
-- nounPN : N -> PN ;
|
||||
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s};
|
||||
mkVoc : Str -> Voc = variants {} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -4,7 +4,6 @@ concrete StructuralIna of Structural = CatIna **
|
||||
flags optimize=all ;
|
||||
|
||||
oper
|
||||
--- mkPrep = P.mkPrep;
|
||||
pp : Str -> Prep = \s-> P.mkPrep s Acc;
|
||||
lin
|
||||
above_Prep = pp "supra";
|
||||
@@ -22,8 +21,8 @@ concrete StructuralIna of Structural = CatIna **
|
||||
but_PConj = ss "sed" ;
|
||||
by8agent_Prep = pp "per" ;
|
||||
by8means_Prep = pp "per" ;
|
||||
can_VV = P.regV "poter";
|
||||
can8know_VV = P.regV "saper";
|
||||
can_VV = P.mkVV (P.mkV "poter");
|
||||
can8know_VV = P.mkVV (P.mkV "saper");
|
||||
during_Prep = pp "durante" ;
|
||||
either7or_DConj = sd2 "o" "o" ** {n = Sg} ;
|
||||
everybody_NP = regNP "totos" ;
|
||||
@@ -49,7 +48,7 @@ concrete StructuralIna of Structural = CatIna **
|
||||
more_CAdv = {s = "plus" ; p = "que"} ;
|
||||
most_Predet = ss ("le"++"plus");
|
||||
much_Det = mkDeterminer Sg "tanto" ;
|
||||
must_VV = P.regV "deber";
|
||||
must_VV = P.mkV "deber";
|
||||
no_Utt = ss "no" ;
|
||||
on_Prep = P.mkPrep "super" Acc;
|
||||
only_Predet = ss "unic" ;
|
||||
@@ -81,8 +80,8 @@ concrete StructuralIna of Structural = CatIna **
|
||||
too_AdA = ss "alsi" ;
|
||||
to_Prep = P.mkPrep "" Dat;
|
||||
under_Prep = pp "infra" ;
|
||||
very_AdA = ss "multo" ;
|
||||
want_VV = P.regV "want" ;
|
||||
very_AdA = P.mkAdA "multo" ;
|
||||
want_VV = P.mkVV (P.mkV "want") ;
|
||||
we_Pron = mkPron "nos" "nos" "nostre" Pp1;
|
||||
whatPl_IP = mkIP "que" Pl ;
|
||||
whatSg_IP = mkIP "que" Sg ;
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
--# -path=alltenses:../common:../abstract:../romance
|
||||
concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor -
|
||||
[
|
||||
PassVPSlash, PassAgentVPSlash
|
||||
GenRP,
|
||||
PassVPSlash, PassAgentVPSlash,
|
||||
ExistsNP
|
||||
|
||||
]
|
||||
-- don't forget to put the names of your own
|
||||
-- definitions here
|
||||
@@ -13,9 +16,23 @@ concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor -
|
||||
MorphoIta,
|
||||
Coordination,
|
||||
Prelude,
|
||||
ParadigmsIta in {
|
||||
ParadigmsIta,
|
||||
IrregIta in {
|
||||
-- put your own definitions here
|
||||
|
||||
lin
|
||||
GenRP nu cn = {
|
||||
s = \\_b,_aagr,_c => "di cui" ++ num ++ cn.s ! n ;
|
||||
a = aagr g n ;
|
||||
hasAgr = True
|
||||
} where {
|
||||
g = cn.g ;
|
||||
n = nu.n ;
|
||||
num = if_then_Str nu.isNum (nu.s ! g) []
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
lin PassVPSlash vps = passVPSlash vps [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash
|
||||
@@ -31,4 +48,13 @@ oper
|
||||
comp = \\a => vps.comp ! a ++ (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ agent ;
|
||||
} ;
|
||||
|
||||
|
||||
lin
|
||||
ExistsNP np =
|
||||
mkClause [] True False np.a
|
||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||
(predV esistere_V)) ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -55,5 +55,10 @@ concrete IdiomIta of Idiom = CatIta **
|
||||
mkImperative False P1 vp ! RPos ! Masc ! Pl --- fem
|
||||
} ;
|
||||
|
||||
ImpP3 np vp = {
|
||||
s = (mkClause (np.s ! Nom).comp np.hasClit False np.a vp).s
|
||||
! DInv ! RPres ! Simul ! RPos ! Conjunct
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,14 @@ oper
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
-- Does not inflect for number
|
||||
-- singular, does not inflect for gender
|
||||
mkDet : Str -> Det = \piu -> lin Det {
|
||||
s,sp = \\_,_ => piu ;
|
||||
spn = \\_ => piu ;
|
||||
n = Sg ;
|
||||
s2 = \\g => [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
mkDet : Str -> Number -> Det = \piu,n -> lin Det {
|
||||
s,sp = \\_,_ => piu ;
|
||||
spn = \\_ => piu ;
|
||||
@@ -69,7 +76,7 @@ oper
|
||||
s2 = \\g => [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
-- Inflects for number
|
||||
-- Inflects for gender
|
||||
mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det {
|
||||
s,sp = table {
|
||||
Masc => \\_ => alcuni ;
|
||||
|
||||
4
src/kazakh/AllKaz.gf
Normal file
4
src/kazakh/AllKaz.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
concrete AllKaz of AllKazAbs =
|
||||
LangKaz
|
||||
**
|
||||
{} ;
|
||||
5
src/kazakh/AllKazAbs.gf
Normal file
5
src/kazakh/AllKazAbs.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllKazAbs =
|
||||
Lang
|
||||
** {} ;
|
||||
13
src/kazakh/CatKaz.gf
Normal file
13
src/kazakh/CatKaz.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
concrete CatKaz of Cat = CommonX ** open ResKaz in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat A = {s : Str} ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
}
|
||||
161
src/kazakh/DocumentationKaz.gf
Normal file
161
src/kazakh/DocumentationKaz.gf
Normal file
@@ -0,0 +1,161 @@
|
||||
concrete DocumentationKaz of Documentation = CatKaz ** open
|
||||
ResKaz, Prelude, HTML in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Acc ! Sg) ++ td (x.s ! Acc ! Pl)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Gen ! Sg) ++ td (x.s ! Gen ! Pl)) ++
|
||||
tr (th "Ablat" ++ td (x.s ! Ablat ! Sg) ++ td (x.s ! Ablat ! Pl)) ++
|
||||
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl)) ++
|
||||
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
|
||||
tr (intagAttr "th" "colspan=\"3\"" "poss") ++
|
||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "P1 Sg" ++ td (x.poss ! Sg ! P1 ! Sg) ++ td (x.poss ! Sg ! P1 ! Pl)) ++
|
||||
tr (th "P1 Pl" ++ td (x.poss ! Pl ! P1 ! Sg) ++ td (x.poss ! Pl ! P1 ! Pl)) ++
|
||||
tr (th "P2 Sg Informal" ++ td (x.poss ! Sg ! P2 Informal ! Sg) ++ td (x.poss ! Sg ! P2 Informal ! Pl)) ++
|
||||
tr (th "P2 Sg Formal" ++ td (x.poss ! Sg ! P2 Formal ! Sg) ++ td (x.poss ! Sg ! P2 Formal ! Pl)) ++
|
||||
tr (th "P3 Sg" ++ td (x.poss ! Sg ! P3 ! Sg) ++ td (x.poss ! Sg ! P3 ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
|
||||
lin InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S,
|
||||
InflectionV2Q, InflectionV2A, InflectionVV, InflectionVS,
|
||||
InflectionVQ, InflectionVA = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading2 "Infinitive" ++ paragraph (x.Infinitive) ++
|
||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.Indicative.Fut)) ++
|
||||
heading2 "Present"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Present Progressive"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Sg))++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Perfect" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Progressive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Pl))) ++
|
||||
heading2 "Subjunctive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Subjunctive ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Subjunctive ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P3 ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Дефиниция:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Дефиниция:</b>"++t.s++d.s++"</p><p><b>Пример:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
|
||||
}
|
||||
5
src/kazakh/LangKaz.gf
Normal file
5
src/kazakh/LangKaz.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
concrete LangKaz of Lang =
|
||||
LexiconKaz
|
||||
,DocumentationKaz --# notpresent
|
||||
** {
|
||||
} ;
|
||||
6
src/kazakh/LexiconKaz.gf
Normal file
6
src/kazakh/LexiconKaz.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete LexiconKaz of Lexicon = CatKaz ** open ParadigmsKaz in {
|
||||
|
||||
lin apple_N = mkN017 "алма" ;
|
||||
lin walk_V = mkV015 "бару" ;
|
||||
|
||||
}
|
||||
18789
src/kazakh/MorphoKaz.gf
Normal file
18789
src/kazakh/MorphoKaz.gf
Normal file
File diff suppressed because it is too large
Load Diff
413
src/kazakh/ParadigmsKaz.gf
Normal file
413
src/kazakh/ParadigmsKaz.gf
Normal file
@@ -0,0 +1,413 @@
|
||||
resource ParadigmsKaz = MorphoKaz ** open Predef, Prelude, CatKaz, ResKaz in {
|
||||
oper
|
||||
regN : Str -> N -- s;Nom;Sg
|
||||
= \form -> case form of {
|
||||
_ + "дас" => mkN004 form;
|
||||
_ + "нас" => mkN004 form;
|
||||
_ + "йыс" => mkN004 form;
|
||||
_ + "дыс" => mkN020 form;
|
||||
_ + "ніс" => mkN009 form;
|
||||
_ + "гіс" => mkN009 form;
|
||||
_ + "тіс" => mkN022 form;
|
||||
_ + "мес" => mkN009 form;
|
||||
_ + "ғат" => mkN020 form;
|
||||
_ + "нат" => mkN004 form;
|
||||
_ + "пат" => mkN004 form;
|
||||
_ + "жат" => mkN004 form;
|
||||
_ + "зат" => mkN020 form;
|
||||
_ + "ұлт" => mkN004 form;
|
||||
_ + "ілт" => mkN021 form;
|
||||
_ + "уыт" => mkN004 form;
|
||||
_ + "ірт" => mkN009 form;
|
||||
_ + "орт" => mkN020 form;
|
||||
_ + "ырт" => mkN020 form;
|
||||
_ + "шот" => mkN004 form;
|
||||
_ + "ант" => mkN004 form;
|
||||
_ + "ент" => mkN021 form;
|
||||
_ + "хит" => mkN004 form;
|
||||
_ + "нөт" => mkN009 form;
|
||||
_ + "тет" => mkN009 form;
|
||||
_ + "лет" => mkN022 form;
|
||||
_ + "ует" => mkN022 form;
|
||||
_ + "шіт" => mkN009 form;
|
||||
_ + "гіт" => mkN009 form;
|
||||
_ + "ныш" => mkN001 form;
|
||||
_ + "лыш" => mkN001 form;
|
||||
_ + "ңеш" => mkN055 form;
|
||||
_ + "піш" => mkN021 form;
|
||||
_ + "ніш" => mkN021 form;
|
||||
_ + "ліш" => mkN021 form;
|
||||
_ + "ріш" => mkN022 form;
|
||||
_ + "шам" => mkN003 form;
|
||||
_ + "нам" => mkN064 form;
|
||||
_ + "йым" => mkN026 form;
|
||||
_ + "рым" => mkN026 form;
|
||||
_ + "жым" => mkN026 form;
|
||||
_ + "ным" => mkN066 form;
|
||||
_ + "тым" => mkN066 form;
|
||||
_ + "нім" => mkN016 form;
|
||||
_ + "рім" => mkN035 form;
|
||||
_ + "дем" => mkN035 form;
|
||||
_ + "тан" => mkN003 form;
|
||||
_ + "қан" => mkN003 form;
|
||||
_ + "ран" => mkN003 form;
|
||||
_ + "жан" => mkN003 form;
|
||||
_ + "оян" => mkN003 form;
|
||||
_ + "мән" => mkN028 form;
|
||||
_ + "сін" => mkN028 form;
|
||||
_ + "кін" => mkN028 form;
|
||||
_ + "гін" => mkN035 form;
|
||||
_ + "лен" => mkN028 form;
|
||||
_ + "рен" => mkN028 form;
|
||||
_ + "йың" => mkN003 form;
|
||||
_ + "заң" => mkN019 form;
|
||||
_ + "пап" => mkN004 form;
|
||||
_ + "лып" => mkN004 form;
|
||||
_ + "қып" => mkN020 form;
|
||||
_ + "сық" => mkN004 form;
|
||||
_ + "шық" => mkN004 form;
|
||||
_ + "зақ" => mkN004 form;
|
||||
_ + "уақ" => mkN004 form;
|
||||
_ + "қақ" => mkN004 form;
|
||||
_ + "ыла" => mkN030 form;
|
||||
_ + "ола" => mkN030 form;
|
||||
_ + "рда" => mkN030 form;
|
||||
_ + "ұра" => mkN030 form;
|
||||
_ + "йра" => mkN030 form;
|
||||
_ + "аға" => mkN030 form;
|
||||
_ + "ұма" => mkN030 form;
|
||||
_ + "йна" => mkN030 form;
|
||||
_ + "хна" => mkN030 form;
|
||||
_ + "ина" => mkN030 form;
|
||||
_ + "зба" => mkN030 form;
|
||||
_ + "шқа" => mkN030 form;
|
||||
_ + "сқа" => mkN030 form;
|
||||
_ + "ьша" => mkN024 form;
|
||||
_ + "ыша" => mkN024 form;
|
||||
_ + "опа" => mkN024 form;
|
||||
_ + "ашы" => mkN005 form;
|
||||
_ + "лшы" => mkN005 form;
|
||||
_ + "яшы" => mkN005 form;
|
||||
_ + "юшы" => mkN005 form;
|
||||
_ + "озы" => mkN005 form;
|
||||
_ + "аты" => mkN024 form;
|
||||
_ + "ция" => mkN030 form;
|
||||
_ + "бар" => mkN017 form;
|
||||
_ + "уар" => mkN017 form;
|
||||
_ + "сар" => mkN017 form;
|
||||
_ + "пар" => mkN017 form;
|
||||
_ + "мыр" => mkN025 form;
|
||||
_ + "сыр" => mkN017 form;
|
||||
_ + "тыр" => mkN017 form;
|
||||
_ + "жыр" => mkN017 form;
|
||||
_ + "ңір" => mkN018 form;
|
||||
_ + "қай" => mkN017 form;
|
||||
_ + "най" => mkN025 form;
|
||||
_ + "уру" => mkN006 form;
|
||||
_ + "іру" => mkN018 form;
|
||||
_ + "жау" => mkN006 form;
|
||||
_ + "ғау" => mkN006 form;
|
||||
_ + "ұну" => mkN017 form;
|
||||
_ + "діл" => mkN018 form;
|
||||
_ + "тіл" => mkN018 form;
|
||||
_ + "ріл" => mkN018 form;
|
||||
_ + "пал" => mkN038 form;
|
||||
_ + "сал" => mkN038 form;
|
||||
_ + "иыл" => mkN025 form;
|
||||
_ + "қыл" => mkN038 form;
|
||||
_ + "жол" => mkN038 form;
|
||||
_ + "дек" => mkN009 form;
|
||||
_ + "жек" => mkN009 form;
|
||||
_ + "тек" => mkN009 form;
|
||||
_ + "рік" => mkN033 form;
|
||||
_ + "жік" => mkN009 form;
|
||||
_ + "сік" => mkN033 form;
|
||||
_ + "шік" => mkN033 form;
|
||||
_ + "пік" => mkN033 form;
|
||||
_ + "зік" => mkN033 form;
|
||||
_ + "біз" => mkN010 form;
|
||||
_ + "көз" => mkN010 form;
|
||||
_ + "сөз" => mkN067 form;
|
||||
_ + "быз" => mkN039 form;
|
||||
_ + "кше" => mkN042 form;
|
||||
_ + "рпе" => mkN042 form;
|
||||
_ + "еде" => mkN023 form;
|
||||
_ + "йде" => mkN042 form;
|
||||
_ + "өбе" => mkN042 form;
|
||||
_ + "ңге" => mkN023 form;
|
||||
_ + "кте" => mkN042 form;
|
||||
_ + "мле" => mkN042 form;
|
||||
_ + "кші" => mkN042 form;
|
||||
_ + "нші" => mkN042 form;
|
||||
_ + "зші" => mkN042 form;
|
||||
_ + "иші" => mkN042 form;
|
||||
_ + "лші" => mkN042 form;
|
||||
_ + "пші" => mkN042 form;
|
||||
_ + "ңкі" => mkN042 form;
|
||||
_ + "іс" => mkN021 form;
|
||||
_ + "ес" => mkN021 form;
|
||||
_ + "үс" => mkN021 form;
|
||||
_ + "өс" => mkN021 form;
|
||||
_ + "ит" => mkN021 form;
|
||||
_ + "өт" => mkN021 form;
|
||||
_ + "ет" => mkN021 form;
|
||||
_ + "іт" => mkN021 form;
|
||||
_ + "ст" => mkN021 form;
|
||||
_ + "ят" => mkN020 form;
|
||||
_ + "үт" => mkN022 form;
|
||||
_ + "аш" => mkN001 form;
|
||||
_ + "еш" => mkN021 form;
|
||||
_ + "іш" => mkN009 form;
|
||||
_ + "үш" => mkN021 form;
|
||||
_ + "ам" => mkN002 form;
|
||||
_ + "ым" => mkN003 form;
|
||||
_ + "ұм" => mkN003 form;
|
||||
_ + "әм" => mkN016 form;
|
||||
_ + "ем" => mkN016 form;
|
||||
_ + "зм" => mkN035 form;
|
||||
_ + "ын" => mkN003 form;
|
||||
_ + "он" => mkN003 form;
|
||||
_ + "ән" => mkN016 form;
|
||||
_ + "ін" => mkN016 form;
|
||||
_ + "үн" => mkN016 form;
|
||||
_ + "ен" => mkN016 form;
|
||||
_ + "ың" => mkN026 form;
|
||||
_ + "аң" => mkN003 form;
|
||||
_ + "оң" => mkN026 form;
|
||||
_ + "өп" => mkN022 form;
|
||||
_ + "іп" => mkN009 form;
|
||||
_ + "оп" => mkN020 form;
|
||||
_ + "еп" => mkN022 form;
|
||||
_ + "ық" => mkN020 form;
|
||||
_ + "оқ" => mkN020 form;
|
||||
_ + "ңқ" => mkN020 form;
|
||||
_ + "та" => mkN030 form;
|
||||
_ + "ша" => mkN030 form;
|
||||
_ + "ва" => mkN024 form;
|
||||
_ + "ка" => mkN030 form;
|
||||
_ + "уа" => mkN024 form;
|
||||
_ + "са" => mkN030 form;
|
||||
_ + "жа" => mkN030 form;
|
||||
_ + "қы" => mkN005 form;
|
||||
_ + "жы" => mkN005 form;
|
||||
_ + "йы" => mkN024 form;
|
||||
_ + "вр" => mkN006 form;
|
||||
_ + "ур" => mkN006 form;
|
||||
_ + "ор" => mkN006 form;
|
||||
_ + "ар" => mkN006 form;
|
||||
_ + "ыр" => mkN006 form;
|
||||
_ + "яр" => mkN006 form;
|
||||
_ + "ір" => mkN036 form;
|
||||
_ + "ұр" => mkN025 form;
|
||||
_ + "әр" => mkN036 form;
|
||||
_ + "ий" => mkN018 form;
|
||||
_ + "ей" => mkN018 form;
|
||||
_ + "ау" => mkN017 form;
|
||||
_ + "қу" => mkN017 form;
|
||||
_ + "еу" => mkN034 form;
|
||||
_ + "ел" => mkN007 form;
|
||||
_ + "іл" => mkN007 form;
|
||||
_ + "үл" => mkN037 form;
|
||||
_ + "өл" => mkN037 form;
|
||||
_ + "ек" => mkN033 form;
|
||||
_ + "үк" => mkN009 form;
|
||||
_ + "із" => mkN029 form;
|
||||
_ + "үз" => mkN029 form;
|
||||
_ + "өз" => mkN029 form;
|
||||
_ + "ез" => mkN010 form;
|
||||
_ + "аз" => mkN039 form;
|
||||
_ + "әж" => mkN029 form;
|
||||
_ + "пе" => mkN023 form;
|
||||
_ + "ке" => mkN042 form;
|
||||
_ + "ме" => mkN042 form;
|
||||
_ + "зе" => mkN042 form;
|
||||
_ + "же" => mkN042 form;
|
||||
_ + "рі" => mkN042 form;
|
||||
_ + "ні" => mkN042 form;
|
||||
_ + "сі" => mkN042 form;
|
||||
_ + "с" => mkN001 form;
|
||||
_ + "т" => mkN001 form;
|
||||
_ + "ш" => mkN004 form;
|
||||
_ + "м" => mkN028 form;
|
||||
_ + "н" => mkN026 form;
|
||||
_ + "ң" => mkN016 form;
|
||||
_ + "п" => mkN043 form;
|
||||
_ + "д" => mkN004 form;
|
||||
_ + "қ" => mkN015 form;
|
||||
_ + "х" => mkN004 form;
|
||||
_ + "а" => mkN005 form;
|
||||
_ + "ы" => mkN030 form;
|
||||
_ + "я" => mkN024 form;
|
||||
_ + "р" => mkN034 form;
|
||||
_ + "и" => mkN006 form;
|
||||
_ + "й" => mkN006 form;
|
||||
_ + "ю" => mkN006 form;
|
||||
_ + "у" => mkN025 form;
|
||||
_ + "л" => mkN027 form;
|
||||
_ + "к" => mkN022 form;
|
||||
_ + "з" => mkN013 form;
|
||||
_ + "ж" => mkN013 form;
|
||||
_ + "е" => mkN032 form;
|
||||
_ + "і" => mkN032 form;
|
||||
_ + "ә" => mkN032 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2N : Str -> Str -> N -- s;Nom;Sg poss;Sg;P3;Pl
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "ғат", _ + "ы"> => mkN001 form1;
|
||||
<_ + "нат", _ + "ы"> => mkN001 form1;
|
||||
<_ + "уыт", _ + "ы"> => mkN001 form1;
|
||||
<_ + "пат", _ + "ы"> => mkN001 form1;
|
||||
<_ + "дас", _ + "ы"> => mkN001 form1;
|
||||
<_ + "йым", _ + "ы"> => mkN002 form1;
|
||||
<_ + "тан", _ + "ы"> => mkN026 form1;
|
||||
<_ + "қан", _ + "ы"> => mkN026 form1;
|
||||
<_ + "ран", _ + "ы"> => mkN026 form1;
|
||||
<_ + "сық", _ + "ы"> => mkN015 form1;
|
||||
<_ + "шық", _ + "ы"> => mkN015 form1;
|
||||
<_ + "зба", _ + "ы"> => mkN005 form1;
|
||||
<_ + "мыр", _ + "ы"> => mkN017 form1;
|
||||
<_ + "дек", _ + "і"> => mkN033 form1;
|
||||
<_ + "тек", _ + "і"> => mkN033 form1;
|
||||
<_ + "көз", _ + "і"> => mkN029 form1;
|
||||
<_ + "ым", _ + "ы"> => mkN002 form1;
|
||||
<_ + "ын", _ + "ы"> => mkN026 form1;
|
||||
<_ + "аң", _ + "ы"> => mkN026 form1;
|
||||
<_ + "ық", _ + "ы"> => mkN015 form1;
|
||||
<_ + "та", _ + "ы"> => mkN005 form1;
|
||||
<_ + "ша", _ + "ы"> => mkN005 form1;
|
||||
<_ + "ор", _ + "ы"> => mkN017 form1;
|
||||
<_ + "ар", _ + "ы"> => mkN017 form1;
|
||||
<_ + "ыр", _ + "ы"> => mkN017 form1;
|
||||
<_ + "үл", _ + "і"> => mkN007 form1;
|
||||
<_ + "өл", _ + "і"> => mkN007 form1;
|
||||
<_ + "іш", _ + "і"> => mkN021 form1;
|
||||
<_ + "ір", _ + "і"> => mkN034 form1;
|
||||
<_ + "оп", _ + "ы"> => mkN043 form1;
|
||||
<_ + "т", _ + "і"> => mkN021 form1;
|
||||
<_ + "ш", _ + "ы"> => mkN001 form1;
|
||||
<_ + "ы", _ + "ы"> => mkN005 form1;
|
||||
<_ + "я", _ + "ы"> => mkN005 form1;
|
||||
<_ + "й", _ + "ы"> => mkN017 form1;
|
||||
<_ + "й", _ + "і"> => mkN034 form1;
|
||||
<_ + "у", _ + "ы"> => mkN017 form1;
|
||||
<_ + "к", _ + "і"> => mkN033 form1;
|
||||
<_ + "з", _ + "ы"> => mkN039 form1;
|
||||
<_ + "м", _ + "і"> => mkN016 form1;
|
||||
<_ + "е", _ + "і"> => mkN042 form1;
|
||||
<_ + "і", _ + "і"> => mkN042 form1;
|
||||
_ => regN form1
|
||||
} ;
|
||||
|
||||
regV : Str -> V -- Infinitive
|
||||
= \form -> case form of {
|
||||
_ + "лту" => mkV005 form;
|
||||
_ + "pту" => mkV007 form;
|
||||
_ + "eту" => mkV007 form;
|
||||
_ + "iту" => mkV007 form;
|
||||
_ + "үту" => mkV010 form;
|
||||
_ + "тaу" => mkV006 form;
|
||||
_ + "сaу" => mkV006 form;
|
||||
_ + "нaу" => mkV011 form;
|
||||
_ + "қaу" => mkV011 form;
|
||||
_ + "paу" => mkV026 form;
|
||||
_ + "apу" => mkV003 form;
|
||||
_ + "ыpу" => mkV003 form;
|
||||
_ + "ipу" => mkV023 form;
|
||||
_ + "ту" => mkV001 form;
|
||||
_ + "aу" => mkV002 form;
|
||||
_ + "лу" => mkV033 form;
|
||||
_ + "шу" => mkV010 form;
|
||||
_ + "уу" => mkV006 form;
|
||||
_ + "eу" => mkV009 form;
|
||||
_ + "су" => mkV010 form;
|
||||
_ + "бу" => mkV020 form;
|
||||
_ + "ңу" => mkV023 form;
|
||||
_ + "у" => mkV016 form;
|
||||
_ => error "Cannot find an inflection rule"
|
||||
} ;
|
||||
|
||||
reg2V : Str -> Str -> V -- Infinitive Indicative;Pres;Progressive;Pos;P1;Sg
|
||||
= \form1, form2 -> case <form1, form2> of {
|
||||
<_ + "aу", _ + "iн"> => mkV011 form1;
|
||||
_ => regV form1
|
||||
} ;
|
||||
|
||||
reg3V : Str -> Str -> Str -> V -- Infinitive Indicative;Pres;Progressive;Pos;P1;Sg Indicative;Pres;Progressive;Pos;P1;Pl
|
||||
= \form1, form2, form3 -> case <form1, form2, form3> of {
|
||||
_ => reg2V form1 form2
|
||||
} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N = regN; -- s;Nom;Sg
|
||||
mkN : Str -> Str -> N = reg2N -- s;Nom;Sg poss;Sg;P3;Pl
|
||||
} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> N2 = \n -> lin N2 n ** {c2=noPrep};
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 n ** {c2=p};
|
||||
} ;
|
||||
|
||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
||||
mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
||||
mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
|
||||
mkV = overload {
|
||||
mkV : Str -> V = regV; -- Infinitive
|
||||
mkV : Str -> Str -> V = reg2V; -- Infinitive Indicative;Pres;Progressive;Pos;P1;Sg
|
||||
mkV : Str -> Str -> Str -> V = reg3V -- Infinitive Indicative;Pres;Progressive;Pos;P1;Sg Indicative;Pres;Progressive;Pos;P1;Pl
|
||||
} ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : V -> V2 = \v -> lin V2 v ** {c2=noPrep} ;
|
||||
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 v ** {c2=p} ;
|
||||
} ;
|
||||
|
||||
mkVV : V -> VV = \v -> lin VV v ;
|
||||
mkVS : V -> VS = \v -> lin VS v ;
|
||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||
mkVA : V -> VA = \v -> lin VA v ;
|
||||
|
||||
mkV2V = overload {
|
||||
mkV2V : V -> V2V = \v -> lin V2V v ** {c2,c3=noPrep} ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p2,p3 -> lin V2V v ** {c2=p2; c3=p3} ;
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
mkV2A : V -> V2A = \v -> lin V2A v ** {c2,c3=noPrep} ;
|
||||
mkV2A : V -> Prep -> Prep -> V2A = \v,p2,p3 -> lin V2A v ** {c2=p2; c3=p3} ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : V -> V3 = \v -> lin V3 v ** {c2,c3=noPrep} ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 = \v,p2,p3 -> lin V3 v ** {c2=p2; c3=p3} ;
|
||||
} ;
|
||||
|
||||
mkA : Str -> A = \s -> lin A {s=s} ;
|
||||
mkA2 : A -> A2 = \a -> lin A2 a ** {c2=noPrep} ;
|
||||
|
||||
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
|
||||
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
|
||||
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
||||
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
|
||||
noPrep : Prep = lin Prep {s=""} ;
|
||||
|
||||
}
|
||||
326
src/kazakh/ResKaz.gf
Normal file
326
src/kazakh/ResKaz.gf
Normal file
@@ -0,0 +1,326 @@
|
||||
resource ResKaz = {
|
||||
|
||||
oper Compl = {s : Str} ;
|
||||
|
||||
param Case = Nom | Acc | Dat | Loc | Gen | Instr | Ablat ;
|
||||
param Number = Sg | Pl ;
|
||||
param Person = P1 | P2 Formality | P3 ;
|
||||
param Formality = Informal | Formal ;
|
||||
oper Noun = {s: Case => Number => Str; poss: Number => Person => Number => Str} ; -- 1651
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30 ->
|
||||
{ s = table {
|
||||
Nom => table {
|
||||
Sg => f1 ;
|
||||
Pl => f2
|
||||
} ;
|
||||
Acc => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
Dat => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
Gen => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
Ablat => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
} ;
|
||||
Instr => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
Loc => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
}
|
||||
} ;
|
||||
poss = table {
|
||||
Sg => table {
|
||||
P1 => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f17 ;
|
||||
Pl => f18
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f19 ;
|
||||
Pl => f20
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
}
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => table {
|
||||
Sg => f23 ;
|
||||
Pl => f24
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f27 ;
|
||||
Pl => f28
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f29 ;
|
||||
Pl => f30
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
param Polarity = Pos | Neg ;
|
||||
oper Verb = {Infinitive: Str; Indicative: {Fut: Str; Pres: {Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}; Past: {Perfect: Polarity => Person => Number => Str; Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}}; Imperative_Jussive: Polarity => Formality => Number => Str; Subjunctive: Person => Number => Str} ; -- 113
|
||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65,f66,f67,f68,f69,f70,f71,f72,f73,f74,f75,f76,f77,f78,f79,f80,f81,f82,f83,f84,f85,f86,f87,f88,f89,f90,f91,f92,f93,f94,f95,f96,f97,f98 ->
|
||||
{ Infinitive = f1 ;
|
||||
Indicative = { Fut = f2 ;
|
||||
Pres = { Progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
Pl => f4
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f5 ;
|
||||
Pl => f6
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f7 ;
|
||||
Pl => f8
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f9 ;
|
||||
Pl => f10
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
P1 => table {
|
||||
Sg => f11 ;
|
||||
Pl => f12
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f13 ;
|
||||
Pl => f14
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f15 ;
|
||||
Pl => f16
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f17 ;
|
||||
Pl => f18
|
||||
}
|
||||
}
|
||||
} ;
|
||||
noAspect = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f19 ;
|
||||
Pl => f20
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f23 ;
|
||||
Pl => f24
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
P1 => table {
|
||||
Sg => f27 ;
|
||||
Pl => f28
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f29 ;
|
||||
Pl => f30
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f31 ;
|
||||
Pl => f32
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f33 ;
|
||||
Pl => f34
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Past = { Perfect = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f35 ;
|
||||
Pl => f36
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f37 ;
|
||||
Pl => f38
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f39 ;
|
||||
Pl => f40
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f41 ;
|
||||
Pl => f42
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
P1 => table {
|
||||
Sg => f43 ;
|
||||
Pl => f44
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f45 ;
|
||||
Pl => f46
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f47 ;
|
||||
Pl => f48
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f49 ;
|
||||
Pl => f50
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f51 ;
|
||||
Pl => f52
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f53 ;
|
||||
Pl => f54
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f55 ;
|
||||
Pl => f56
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f57 ;
|
||||
Pl => f58
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
P1 => table {
|
||||
Sg => f59 ;
|
||||
Pl => f60
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f61 ;
|
||||
Pl => f62
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f63 ;
|
||||
Pl => f64
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f65 ;
|
||||
Pl => f66
|
||||
}
|
||||
}
|
||||
} ;
|
||||
noAspect = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f67 ;
|
||||
Pl => f68
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f69 ;
|
||||
Pl => f70
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f71 ;
|
||||
Pl => f72
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f73 ;
|
||||
Pl => f74
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
P1 => table {
|
||||
Sg => f75 ;
|
||||
Pl => f76
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f77 ;
|
||||
Pl => f78
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f79 ;
|
||||
Pl => f80
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f81 ;
|
||||
Pl => f82
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
Pos => table {
|
||||
Informal => table {
|
||||
Sg => f83 ;
|
||||
Pl => f84
|
||||
} ;
|
||||
Formal => table {
|
||||
Sg => f85 ;
|
||||
Pl => f86
|
||||
}
|
||||
} ;
|
||||
Neg => table {
|
||||
Informal => table {
|
||||
Sg => f87 ;
|
||||
Pl => f88
|
||||
} ;
|
||||
Formal => table {
|
||||
Sg => f89 ;
|
||||
Pl => f90
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
P1 => table {
|
||||
Sg => f91 ;
|
||||
Pl => f92
|
||||
} ;
|
||||
P2 Informal => table {
|
||||
Sg => f93 ;
|
||||
Pl => f94
|
||||
} ;
|
||||
P2 Formal => table {
|
||||
Sg => f95 ;
|
||||
Pl => f96
|
||||
} ;
|
||||
P3 => table {
|
||||
Sg => f97 ;
|
||||
Pl => f98
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
concrete AllLav of AllLavAbs =
|
||||
LangLav,
|
||||
ExtraLav
|
||||
ExtendLav
|
||||
** {
|
||||
|
||||
flags
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:abstract:common:prelude
|
||||
|
||||
concrete CatLav of Cat = CommonX - [Adv, CAdv, Voc] ** open ResLav, Prelude in {
|
||||
concrete CatLav of Cat = CommonX - [Adv, CAdv] ** open ResLav, Prelude in {
|
||||
|
||||
flags
|
||||
|
||||
@@ -110,7 +110,9 @@ lincat
|
||||
|
||||
N3 = Noun ** {prep1, prep2 : Preposition ; isPre1, isPre2 : Bool} ;
|
||||
|
||||
PN = ProperNoun ;
|
||||
PN,LN = ProperNoun ;
|
||||
GN = {s : Case => Str ; gend : Gender} ;
|
||||
SN = {s : Sex => Case => Str; pl : Case => Str} ;
|
||||
|
||||
-- Overriden from CommonX
|
||||
|
||||
@@ -118,4 +120,12 @@ lincat
|
||||
|
||||
CAdv = {s, prep : Str ; deg : Degree} ;
|
||||
|
||||
lindef
|
||||
V2 = \s -> {s=\\_,_=>s; leftVal=Nom; rightVal={s=[]; c=\\_ => Acc}} ;
|
||||
V3 = \s -> {s=\\_,_=>s; leftVal=Nom; rightVal1={s=[]; c=\\_ => Acc}; rightVal2={s=[]; c=\\_ => Dat}} ;
|
||||
|
||||
linref
|
||||
V2 = \v -> v.s ! Pos ! VInf ++ v.rightVal.s ;
|
||||
V3 = \v -> v.s ! Pos ! VInf ++ v.rightVal1.s ++ v.rightVal2.s ;
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user