mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-03 01:46:59 -06:00
Compare commits
121
Commits
fix-somali
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eccb04b1b9 | ||
|
|
a412e8d85e | ||
|
|
fda7e1595d | ||
|
|
e67f079167 | ||
|
|
5587c14083 | ||
|
|
c7ddbd2fc6 | ||
|
|
cdee869595 | ||
|
|
ae3dd0dcee | ||
|
|
664363c1c1 | ||
|
|
ef4f72a731 | ||
|
|
0c9e995cb2 | ||
|
|
34576e5ec5 | ||
|
|
ab9dfc6f1c | ||
|
|
aa89efcbf8 | ||
|
|
a97733d5dc | ||
|
|
5995be8940 | ||
|
|
4c23ca2116 | ||
|
|
a223b3803c | ||
|
|
66da1a49da | ||
|
|
d2b7bf2fb6 | ||
|
|
10d45593e4 | ||
|
|
621dc23f60 | ||
|
|
dcd262df05 | ||
|
|
c3f937c667 | ||
|
|
20cb49cd57 | ||
|
|
bd0506760e | ||
|
|
eae650960b | ||
|
|
34062e2ed2 | ||
|
|
827a0296c9 | ||
|
|
110266306d | ||
|
|
498acd0b86 | ||
|
|
d947e7e2e2 | ||
|
|
00790d98fa | ||
|
|
83cfc496a4 | ||
|
|
363219730e | ||
|
|
8c4cd58bd1 | ||
|
|
11f73acc28 | ||
|
|
344342012d | ||
|
|
a79202f667 | ||
|
|
8a82c2ca53 | ||
|
|
e866940d65 | ||
|
|
8f1b3eeece | ||
|
|
b14c0f8492 | ||
|
|
2e6a750c1a | ||
|
|
98128249bd | ||
|
|
1e581fbd10 | ||
|
|
f2ac424bfe | ||
|
|
e65469ffb2 | ||
|
|
8458a74e25 | ||
|
|
7156f488dd | ||
|
|
ff44b03344 | ||
|
|
4282523f2f | ||
|
|
d8208cba24 | ||
|
|
0a03e037f4 | ||
|
|
0201d62777 | ||
|
|
b8bb7f1d72 | ||
|
|
fe56b729b4 | ||
|
|
cab232a4f6 | ||
|
|
cdeaf5a271 | ||
|
|
60e38122d0 | ||
|
|
800e2b0dda | ||
|
|
84bdce7cc8 | ||
|
|
add5029b7a | ||
|
|
19ba581f0e | ||
|
|
a890a1aad5 | ||
|
|
26a1e55cbe | ||
|
|
992e670c10 | ||
|
|
eea95a6f76 | ||
|
|
f1facac1bf | ||
|
|
c5bb0dacb5 | ||
|
|
44ea945c8c | ||
|
|
9265270a0c | ||
|
|
86e2afcfc0 | ||
|
|
6115d44398 | ||
|
|
cf6a376272 | ||
|
|
3a8527689c | ||
|
|
416d37eee7 | ||
|
|
c4d578cac3 | ||
|
|
a7341d9be1 | ||
|
|
57ef377e6d | ||
|
|
3a133d035d | ||
|
|
912ddd521f | ||
|
|
945bc086f2 | ||
|
|
70806027c1 | ||
|
|
88a3759a9e | ||
|
|
1910010e70 | ||
|
|
0cd851aa10 | ||
|
|
2b07314680 | ||
|
|
a3e19ed673 | ||
|
|
b571d86b7c | ||
|
|
6064e69d8e | ||
|
|
510abc0364 | ||
|
|
331a07bd35 | ||
|
|
34ba4cf564 | ||
|
|
5a9ab2cbdf | ||
|
|
97b8cb72aa | ||
|
|
09087c1944 | ||
|
|
f497b4a63a | ||
|
|
56e97ebfff | ||
|
|
16c19eb4b0 | ||
|
|
35f5d9a68b | ||
|
|
0f78e35bed | ||
|
|
bff00560d5 | ||
|
|
ba922b5daa | ||
|
|
f261b2f45b | ||
|
|
939e96fb6c | ||
|
|
3da5f0d318 | ||
|
|
37d915c879 | ||
|
|
b69c3518a7 | ||
|
|
0896a77049 | ||
|
|
7225033a03 | ||
|
|
ed27aa97fc | ||
|
|
de3d59c7e8 | ||
|
|
03024d7b72 | ||
|
|
f6187834c4 | ||
|
|
842747b407 | ||
|
|
fe2dde5a2c | ||
|
|
2adce20f76 | ||
|
|
b8a0e7adfe | ||
|
|
e4cf12ee1a | ||
|
|
943f387a23 |
+1
-1
@@ -7,7 +7,7 @@ Bul,Bulgarian,bulgarian,,,y,,,,,y,n
|
|||||||
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
|
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
|
||||||
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
|
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
|
||||||
Chi,Chinese (simplified),chinese,,,,,,,,y,y
|
Chi,Chinese (simplified),chinese,,,,,,,,y,y
|
||||||
Cze,Czech,czech,,,,,,n,,y,n
|
Cze,Czech,czech,,,,,,y,,y,n
|
||||||
Dan,Danish,danish,Scand,,y,,,,,y,n
|
Dan,Danish,danish,Scand,,y,,,,,y,n
|
||||||
Dut,Dutch,dutch,,,y,,,,,y,n
|
Dut,Dutch,dutch,,,y,,,,,y,n
|
||||||
Eng,English,english,,,y,,,,y,y,y
|
Eng,English,english,,,y,,,,y,y,y
|
||||||
|
|||||||
|
@@ -35,6 +35,7 @@ fun
|
|||||||
InflectionAdA : AdA -> Inflection ;
|
InflectionAdA : AdA -> Inflection ;
|
||||||
InflectionAdN : AdN -> Inflection ;
|
InflectionAdN : AdN -> Inflection ;
|
||||||
InflectionPrep : Prep -> Inflection ;
|
InflectionPrep : Prep -> Inflection ;
|
||||||
|
InflectionCl : Cl -> Inflection ;
|
||||||
|
|
||||||
fun
|
fun
|
||||||
NoDefinition : String -> Definition ;
|
NoDefinition : String -> Definition ;
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
|||||||
lincat Conj = {s : Str} ;
|
lincat Conj = {s : Str} ;
|
||||||
lincat DAP = {s : Str} ;
|
lincat DAP = {s : Str} ;
|
||||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||||
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
|
lincat Det = {s : Case => Gender => Str; sp : Species; n : Number} ;
|
||||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||||
lincat GN = {s : Str} ;
|
lincat GN = {s : Str} ;
|
||||||
lincat IComp = {s : Str} ;
|
lincat IComp = {s : Str} ;
|
||||||
@@ -38,7 +38,7 @@ concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
|||||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||||
lincat QCl = {s : Str} ;
|
lincat QCl = {s : Str} ;
|
||||||
lincat QS = {s : Str} ;
|
lincat QS = {s : Str} ;
|
||||||
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
|
lincat Quant = {s : Case => Gender => Number => Str; sp : Species} ;
|
||||||
lincat RCl = {s : Str} ;
|
lincat RCl = {s : Str} ;
|
||||||
lincat RP = {s : Str} ;
|
lincat RP = {s : Str} ;
|
||||||
lincat RS = {s : Str} ;
|
lincat RS = {s : Str} ;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN det cn = {
|
DetCN det cn = {
|
||||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
|
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ;
|
||||||
a = agrgP3 cn.g det.n
|
a = agrgP3 cn.g det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
|||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
||||||
n = num.n ;
|
n = num.n ;
|
||||||
spec = quant.spec
|
sp = quant.sp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NumSg = {s = []; n = Sg} ;
|
NumSg = {s = []; n = Sg} ;
|
||||||
@@ -21,12 +21,12 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
|||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\c,g,n => [] ;
|
s = \\c,g,n => [] ;
|
||||||
spec = Def
|
sp = Def
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = \\c,g => table Number ["një"; []] ;
|
s = \\c,g => table Number ["një"; []] ;
|
||||||
spec = Indef
|
sp = Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
|
|||||||
@@ -1327,7 +1327,7 @@ oper mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
spec = Indef
|
sp = Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
||||||
@@ -1350,7 +1350,7 @@ oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
|||||||
Fem => f8
|
Fem => f8
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
spec = Indef ;
|
sp = Indef ;
|
||||||
n = n
|
n = n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:../maltese:../common:../abstract:../prelude
|
--# -path=.:../maltese:../common:../abstract:../prelude
|
||||||
|
|
||||||
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkOrd,mkQuant] **
|
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkCard,mkDet,mkIAdv,mkIDet,mkOrd,mkPConj,mkQuant,mkVoc] **
|
||||||
open (P = ParadigmsMlt) in {
|
open (P = ParadigmsMlt) in {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ concrete ExtendAra of Extend =
|
|||||||
CatAra ** ExtendFunctor - [
|
CatAra ** ExtendFunctor - [
|
||||||
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
|
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
|
||||||
EmptyRelSlash, PredAPVP,
|
EmptyRelSlash, PredAPVP,
|
||||||
ComplDirectVS, ComplDirectVQ, -- because of Utt
|
ComplDirectVS, ComplDirectVQ, UttAdV, -- because of Utt
|
||||||
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
|
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
|
||||||
EmbedSSlash, AdjAsNP, GerundNP,
|
EmbedSSlash, AdjAsNP, GerundNP,
|
||||||
PassVPSlash, ---- bogus implementation, see below
|
PassVPSlash, ---- bogus implementation, see below
|
||||||
@@ -31,6 +31,8 @@ lin
|
|||||||
-- : NP -> NP -> NP
|
-- : NP -> NP -> NP
|
||||||
ApposNP np1 np2 = np2 ** {s = \\c => np1.s ! c ++ np2.s ! c} ;
|
ApposNP np1 np2 = np2 ** {s = \\c => np1.s ! c ++ np2.s ! c} ;
|
||||||
|
|
||||||
|
UttAdV adv = {s = \\_ => adv.s} ;
|
||||||
|
|
||||||
-- : AP -> IComp ; -- "how old"
|
-- : AP -> IComp ; -- "how old"
|
||||||
ICompAP ap = {s = \\gn => "كَمْ" ++ ap.s ! NoHum ! gn.g ! gn.n ! Indef ! Acc} ;
|
ICompAP ap = {s = \\gn => "كَمْ" ++ ap.s ! NoHum ! gn.g ! gn.n ! Indef ! Acc} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
concrete AdjectiveBel of Adjective = CatBel ** {
|
concrete AdjectiveBel of Adjective = CatBel ** open ResBel in {
|
||||||
lin
|
lin
|
||||||
PositA a = a ;
|
PositA a = a ;
|
||||||
|
ComparA a np = {s = \\c,gn => "больш" ++ a.s ! c ! gn ++ "за" ++ np.s ! Acc} ;
|
||||||
|
ComplA2 a np = {s = \\c,gn => a.s ! c ! gn ++ prepNP a.c2 np} ;
|
||||||
|
ReflA2 a = {s = \\c,gn => a.s ! c ! gn ++ "да сябе"} ;
|
||||||
|
UseA2 a = a ;
|
||||||
|
UseComparA a = {s = \\c,gn => "больш" ++ a.s ! c ! gn} ;
|
||||||
|
CAdvAP cadv ap np = {s = \\c,gn => cadv.s ++ ap.s ! c ! gn ++ cadv.p ++ np.s ! Nom} ;
|
||||||
|
AdjOrd ord = ord ;
|
||||||
|
SentAP ap sc = {s = \\c,gn => ap.s ! c ! gn ++ sc.s} ;
|
||||||
|
AdAP ada ap = {s = \\c,gn => ada.s ++ ap.s ! c ! gn} ;
|
||||||
|
AdvAP ap adv = {s = \\c,gn => ap.s ! c ! gn ++ adv.s} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
concrete AdverbBel of Adverb = CatBel ** open ResBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
PositAdvAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||||
|
PrepNP prep np = {s = prepNP prep np} ;
|
||||||
|
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ np.s ! Nom} ;
|
||||||
|
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ s.s} ;
|
||||||
|
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
||||||
|
PositAdAAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||||
|
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||||
|
AdnCAdv cadv = {s = cadv.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete AllBel of AllBelAbs =
|
concrete AllBel of AllBelAbs =
|
||||||
LangBel
|
LangBel,
|
||||||
|
ExtendBel
|
||||||
**
|
**
|
||||||
{} ;
|
{} ;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
abstract AllBelAbs =
|
abstract AllBelAbs =
|
||||||
Lang
|
Lang,
|
||||||
** {}
|
Extend
|
||||||
|
** {}
|
||||||
|
|||||||
+63
-16
@@ -1,21 +1,68 @@
|
|||||||
concrete CatBel of Cat = CommonX ** open ResBel in {
|
concrete CatBel of Cat = CommonX ** open ResBel, (R = ParamX) in {
|
||||||
|
|
||||||
lincat N = Noun ;
|
lincat
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
S = {s : Str} ;
|
||||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
QS = {s : Str} ;
|
||||||
lincat V = V ;
|
RS = {s : Str} ;
|
||||||
lincat VV,VS,VQ,VA = V ;
|
Cl = {s : R.Tense => R.Polarity => Str} ;
|
||||||
lincat V2 = V ** {c2 : Compl} ;
|
ClSlash = {s : R.Tense => R.Polarity => Str; c : Compl} ;
|
||||||
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
|
SSlash = {s : Str; c : Compl} ;
|
||||||
lincat A = A ;
|
Imp = {s : R.Polarity => Number => Str} ;
|
||||||
lincat A2 = A ** {c2 : Compl} ;
|
|
||||||
lincat Prep = Compl ;
|
|
||||||
lincat CN = CommonNoun ;
|
|
||||||
lincat AP = AdjPhrase ;
|
|
||||||
lincat S = {s : Str} ;
|
|
||||||
|
|
||||||
lincat LN,SN,GN,PN = {s : Str} ;
|
QCl = {s : R.Tense => R.Polarity => Str} ;
|
||||||
|
IP = NPhrase ;
|
||||||
|
IComp = {s : Str} ;
|
||||||
|
IDet = {s : Case => Gender => Str; n : Number} ;
|
||||||
|
IQuant = {s : Case => Gender => Number => Str} ;
|
||||||
|
|
||||||
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
|
RCl = {s : R.Tense => R.Polarity => Str} ;
|
||||||
|
RP = {s : Str} ;
|
||||||
|
|
||||||
|
VP = VPhrase ;
|
||||||
|
Comp = {s : Agr => Str} ;
|
||||||
|
VPSlash = VSlash ;
|
||||||
|
|
||||||
|
N = Noun ;
|
||||||
|
N2 = Noun ** {c2 : Compl} ;
|
||||||
|
N3 = Noun ** {c2,c3 : Compl} ;
|
||||||
|
CN = CommonNoun ;
|
||||||
|
NP = NPhrase ;
|
||||||
|
Pron = {s: Case => Str; a: Agr} ;
|
||||||
|
Det = {s : Case => Gender => Str; n : Number} ;
|
||||||
|
Predet = {s : Case => Gender => Number => Str} ;
|
||||||
|
Quant = {s : Case => Gender => Number => Str} ;
|
||||||
|
Num = {s : Case => Gender => Str; n : Number} ;
|
||||||
|
Card = {s : Str; n : Number} ;
|
||||||
|
ACard = {s : Str; n : Number} ;
|
||||||
|
Ord = Adj ;
|
||||||
|
DAP = {s : Case => Gender => Str; n : Number} ;
|
||||||
|
|
||||||
|
Numeral = {s : Str} ;
|
||||||
|
Digits = {s : Str} ;
|
||||||
|
Decimal = {s : Str} ;
|
||||||
|
|
||||||
|
Conj = {s : Str; n : Number} ;
|
||||||
|
Subj = {s : Str} ;
|
||||||
|
Prep = Compl ;
|
||||||
|
|
||||||
|
V = Verb ;
|
||||||
|
VV,VS,VQ,VA = Verb ;
|
||||||
|
V2 = Verb ** {c2 : Compl} ;
|
||||||
|
V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
|
A = Adj ;
|
||||||
|
A2 = Adj ** {c2 : Compl} ;
|
||||||
|
AP = AdjPhrase ;
|
||||||
|
|
||||||
|
LN = {s : Case => Str; g : Gender; n : Number} ;
|
||||||
|
PN = {s : Case => Str; g : Gender; n : Number} ;
|
||||||
|
GN = {s : Str; g : Gender} ;
|
||||||
|
SN = {s : Str} ;
|
||||||
|
|
||||||
|
linref
|
||||||
|
V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
|
||||||
|
N,N2,N3 = \n -> n.s ! Nom ! Sg ;
|
||||||
|
A,A2,AP,Ord = \a -> a.s ! Nom ! GSg Masc ;
|
||||||
|
NP,IP = \np -> np.s ! Nom ;
|
||||||
|
S,QS,RS = \s -> s.s ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
concrete ConjunctionBel of Conjunction = CatBel ** open ResBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjRS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjAP conj xs = {s = \\c,gn => xs.s1 ! c ! gn ++ conj.s ++ xs.s2 ! c ! gn} ;
|
||||||
|
ConjNP conj xs = {
|
||||||
|
s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c ;
|
||||||
|
a = {g=Masc; n=conj.n; p=P3}
|
||||||
|
} ;
|
||||||
|
ConjAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjAdV conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjIAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjCN conj xs = {
|
||||||
|
s = \\c,n => xs.s1 ! c ! n ++ conj.s ++ xs.s2 ! c ! n ;
|
||||||
|
voc = xs.voc ;
|
||||||
|
g = xs.g
|
||||||
|
} ;
|
||||||
|
ConjDet conj xs = {
|
||||||
|
s = \\c,g => xs.s1 ! c ! g ++ conj.s ++ xs.s2 ! c ! g ;
|
||||||
|
n = conj.n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseS x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
BaseRS x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsRS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
BaseAdv x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
BaseAdV x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsAdV x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
BaseIAdv x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsIAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
BaseNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s
|
||||||
|
} ;
|
||||||
|
ConsNP x xs = {
|
||||||
|
s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
BaseAP x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsAP x xs = {s1 = \\c,gn => x.s ! c ! gn ++ "," ++ xs.s1 ! c ! gn; s2 = xs.s2} ;
|
||||||
|
BaseCN x y = {s1 = x.s; s2 = y.s; voc = x.voc ++ "," ++ y.voc; g = x.g} ;
|
||||||
|
ConsCN x xs = {s1 = \\c,n => x.s ! c ! n ++ "," ++ xs.s1 ! c ! n; s2 = xs.s2; voc = x.voc ++ "," ++ xs.voc; g = xs.g} ;
|
||||||
|
BaseDAP x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsDAP x xs = {s1 = \\c,g => x.s ! c ! g ++ "," ++ xs.s1 ! c ! g; s2 = xs.s2} ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[S] = {s1,s2 : Str} ;
|
||||||
|
[RS] = {s1,s2 : Str} ;
|
||||||
|
[Adv] = {s1,s2 : Str} ;
|
||||||
|
[AdV] = {s1,s2 : Str} ;
|
||||||
|
[IAdv] = {s1,s2 : Str} ;
|
||||||
|
[NP] = {s1,s2 : Case => Str} ;
|
||||||
|
[AP] = {s1,s2 : Case => GenNum => Str} ;
|
||||||
|
[CN] = {s1,s2 : Case => Number => Str; voc : Str; g : Gender} ;
|
||||||
|
[DAP] = {s1,s2 : Case => Gender => Str} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
concrete ConstructionBel of Construction = CatBel ** open ResBel, ParadigmsBel, (R = ParamX) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s : Str} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
adjVP : Adj -> VPhrase = \a -> {
|
||||||
|
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
|
||||||
|
inf = "быць" ++ a.s ! Nom ! GSg Masc ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь" ++ a.s ! Nom ! GSg Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
hungry_VP = adjVP (mkA "галодны") ;
|
||||||
|
thirsty_VP = adjVP (mkA "спрагнены") ;
|
||||||
|
tired_VP = adjVP (mkA "стомлены") ;
|
||||||
|
scared_VP = adjVP (mkA "спалоханы") ;
|
||||||
|
ill_VP = adjVP (mkA "хворы") ;
|
||||||
|
ready_VP = adjVP (mkA "гатовы") ;
|
||||||
|
has_age_VP card = {
|
||||||
|
s = \\t,p,a => copula t p a ++ card.s ++ "гадоў" ;
|
||||||
|
inf = card.s ++ "гадоў" ;
|
||||||
|
imp = \\p,_ => neg p ++ card.s ++ "гадоў"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
have_name_Cl np name = {s = \\t,p => np.s ! Gen ++ "імя" ++ name.s ! Nom} ;
|
||||||
|
married_Cl np spouse = {s = \\t,p => np.s ! Nom ++ copula t p np.a ++ "жанаты" ++ "з" ++ spouse.s ! Instr} ;
|
||||||
|
what_name_QCl np = {s = \\t,p => "як" ++ "завуць" ++ np.s ! Acc} ;
|
||||||
|
how_old_QCl np = {s = \\t,p => "колькі гадоў" ++ np.s ! Dat} ;
|
||||||
|
how_far_QCl np = {s = \\t,p => "як далёка" ++ np.s ! Nom} ;
|
||||||
|
|
||||||
|
weather_adjCl ap = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter} ;
|
||||||
|
is_right_VP = adjVP (mkA "правы") ;
|
||||||
|
is_wrong_VP = adjVP (mkA "няправы") ;
|
||||||
|
|
||||||
|
n_units_AP card cn a = {s = \\c,gn => card.s ++ cn.s ! Gen ! Pl ++ a.s ! c ! gn} ;
|
||||||
|
n_units_of_NP card cn np = mkSimpleNP (card.s ++ cn.s ! Gen ! Pl ++ np.s ! Gen) Neuter Sg P3 ;
|
||||||
|
n_unit_CN card unit cn = nounFromStr (card.s ++ unit.s ! Nom ! Pl ++ cn.s ! Nom ! Sg) cn.g ;
|
||||||
|
|
||||||
|
bottle_of_CN np = nounFromStr ("бутэлька" ++ np.s ! Gen) Fem ;
|
||||||
|
cup_of_CN np = nounFromStr ("кубак" ++ np.s ! Gen) Masc ;
|
||||||
|
glass_of_CN np = nounFromStr ("шклянка" ++ np.s ! Gen) Fem ;
|
||||||
|
few_X_short_of_Y np x y = {s = np.s ! Nom ++ "бракуе" ++ x.s ! Gen ! Pl ++ "да" ++ y.s ! Gen ! Sg} ;
|
||||||
|
|
||||||
|
timeunitAdv card unit = {s = card.s ++ unit.s} ;
|
||||||
|
timeunitRange c1 c2 unit = {s = c1.s ++ "да" ++ c2.s ++ unit.s} ;
|
||||||
|
oneHour = {s = "1"} ; twoHour = {s = "2"} ; threeHour = {s = "3"} ; fourHour = {s = "4"} ;
|
||||||
|
fiveHour = {s = "5"} ; sixHour = {s = "6"} ; sevenHour = {s = "7"} ; eightHour = {s = "8"} ;
|
||||||
|
nineHour = {s = "9"} ; tenHour = {s = "10"} ; elevenHour = {s = "11"} ; twelveHour = {s = "12"} ;
|
||||||
|
thirteenHour = {s = "13"} ; fourteenHour = {s = "14"} ; fifteenHour = {s = "15"} ; sixteenHour = {s = "16"} ;
|
||||||
|
seventeenHour = {s = "17"} ; eighteenHour = {s = "18"} ; nineteenHour = {s = "19"} ; twentyHour = {s = "20"} ;
|
||||||
|
twentyOneHour = {s = "21"} ; twentyTwoHour = {s = "22"} ; twentyThreeHour = {s = "23"} ; twentyFourHour = {s = "24"} ;
|
||||||
|
timeHour h = {s = "а" ++ h.s} ;
|
||||||
|
timeHourMinute h m = {s = "а" ++ h.s ++ ":" ++ m.s} ;
|
||||||
|
|
||||||
|
weekdayPunctualAdv d = {s = "у" ++ d.s} ;
|
||||||
|
weekdayHabitualAdv d = {s = "па" ++ d.s} ;
|
||||||
|
weekdayLastAdv d = {s = "мінулай" ++ d.s} ;
|
||||||
|
weekdayNextAdv d = {s = "наступнай" ++ d.s} ;
|
||||||
|
monthAdv m = {s = "у" ++ m.s} ;
|
||||||
|
yearAdv y = {s = "у" ++ y.s} ;
|
||||||
|
dayMonthAdv d m = {s = d.s ++ m.s} ;
|
||||||
|
monthYearAdv m y = {s = m.s ++ y.s} ;
|
||||||
|
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
|
||||||
|
intYear i = {s = i.s} ;
|
||||||
|
intMonthday i = {s = i.s} ;
|
||||||
|
|
||||||
|
InLanguage l = {s = "па-" ++ l.s} ;
|
||||||
|
weekdayN d = nounFromStr d.s Masc ;
|
||||||
|
monthN m = nounFromStr m.s Masc ;
|
||||||
|
weekdayPN d = mkPN d.s ;
|
||||||
|
monthPN m = mkPN m.s ;
|
||||||
|
languageNP l = mkSimpleNP l.s Neuter Sg P3 ;
|
||||||
|
languageCN l = nounFromStr l.s Neuter ;
|
||||||
|
|
||||||
|
second_Timeunit = {s = "секунд"} ;
|
||||||
|
minute_Timeunit = {s = "хвілін"} ;
|
||||||
|
hour_Timeunit = {s = "гадзін"} ;
|
||||||
|
day_Timeunit = {s = "дзён"} ;
|
||||||
|
week_Timeunit = {s = "тыдняў"} ;
|
||||||
|
month_Timeunit = {s = "месяцаў"} ;
|
||||||
|
year_Timeunit = {s = "гадоў"} ;
|
||||||
|
|
||||||
|
monday_Weekday = {s = "панядзелак"} ;
|
||||||
|
tuesday_Weekday = {s = "аўторак"} ;
|
||||||
|
wednesday_Weekday = {s = "серада"} ;
|
||||||
|
thursday_Weekday = {s = "чацвер"} ;
|
||||||
|
friday_Weekday = {s = "пятніца"} ;
|
||||||
|
saturday_Weekday = {s = "субота"} ;
|
||||||
|
sunday_Weekday = {s = "нядзеля"} ;
|
||||||
|
|
||||||
|
january_Month = {s = "студзень"} ;
|
||||||
|
february_Month = {s = "люты"} ;
|
||||||
|
march_Month = {s = "сакавік"} ;
|
||||||
|
april_Month = {s = "красавік"} ;
|
||||||
|
may_Month = {s = "май"} ;
|
||||||
|
june_Month = {s = "чэрвень"} ;
|
||||||
|
july_Month = {s = "ліпень"} ;
|
||||||
|
august_Month = {s = "жнівень"} ;
|
||||||
|
september_Month = {s = "верасень"} ;
|
||||||
|
october_Month = {s = "кастрычнік"} ;
|
||||||
|
november_Month = {s = "лістапад"} ;
|
||||||
|
december_Month = {s = "снежань"} ;
|
||||||
|
|
||||||
|
afrikaans_Language = {s = "афрыкаанс"} ;
|
||||||
|
amharic_Language = {s = "амхарску"} ;
|
||||||
|
arabic_Language = {s = "арабску"} ;
|
||||||
|
bulgarian_Language = {s = "балгарску"} ;
|
||||||
|
catalan_Language = {s = "каталанску"} ;
|
||||||
|
chinese_Language = {s = "кітайску"} ;
|
||||||
|
danish_Language = {s = "дацку"} ;
|
||||||
|
dutch_Language = {s = "нідэрландску"} ;
|
||||||
|
english_Language = {s = "англійску"} ;
|
||||||
|
estonian_Language = {s = "эстонску"} ;
|
||||||
|
finnish_Language = {s = "фінску"} ;
|
||||||
|
french_Language = {s = "французску"} ;
|
||||||
|
german_Language = {s = "нямецку"} ;
|
||||||
|
greek_Language = {s = "грэцку"} ;
|
||||||
|
hebrew_Language = {s = "іўрыце"} ;
|
||||||
|
hindi_Language = {s = "хіндзі"} ;
|
||||||
|
japanese_Language = {s = "японску"} ;
|
||||||
|
italian_Language = {s = "італьянску"} ;
|
||||||
|
latin_Language = {s = "лацінску"} ;
|
||||||
|
latvian_Language = {s = "латышску"} ;
|
||||||
|
maltese_Language = {s = "мальтыйску"} ;
|
||||||
|
nepali_Language = {s = "непальску"} ;
|
||||||
|
norwegian_Language = {s = "нарвежску"} ;
|
||||||
|
persian_Language = {s = "персідску"} ;
|
||||||
|
polish_Language = {s = "польску"} ;
|
||||||
|
punjabi_Language = {s = "панджабі"} ;
|
||||||
|
romanian_Language = {s = "румынску"} ;
|
||||||
|
russian_Language = {s = "руску"} ;
|
||||||
|
sindhi_Language = {s = "сіндхі"} ;
|
||||||
|
spanish_Language = {s = "іспанску"} ;
|
||||||
|
swahili_Language = {s = "суахілі"} ;
|
||||||
|
swedish_Language = {s = "шведску"} ;
|
||||||
|
thai_Language = {s = "тайску"} ;
|
||||||
|
turkish_Language = {s = "турэцку"} ;
|
||||||
|
urdu_Language = {s = "урду"} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -29,12 +29,12 @@ lin
|
|||||||
paragraph (x.infinitive) ++
|
paragraph (x.infinitive) ++
|
||||||
heading1 "Present" ++
|
heading1 "Present" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P1 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P1 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P2 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P2 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P3 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P3 ! Pl))) ++
|
||||||
heading1 "Imperative" ++
|
heading1 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||||
|
|||||||
@@ -0,0 +1,244 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
concrete ExtendBel of Extend = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
VPS = {s : Agr => Str} ;
|
||||||
|
[VPS] = {s1,s2 : Agr => Str} ;
|
||||||
|
VPI = {s : Str} ;
|
||||||
|
[VPI] = {s1,s2 : Str} ;
|
||||||
|
VPS2 = {s : Agr => Str; c : Compl; post : Str} ;
|
||||||
|
[VPS2] = {s1,s2 : Agr => Str; c : Compl; post : Str} ;
|
||||||
|
VPI2 = {s : Str; c : Compl; post : Str} ;
|
||||||
|
[VPI2] = {s1,s2 : Str; c : Compl; post : Str} ;
|
||||||
|
[Comp] = {s1,s2 : Agr => Str} ;
|
||||||
|
[Imp] = {s1,s2 : R.Polarity => Number => Str} ;
|
||||||
|
RNP = {s : Case => Str} ;
|
||||||
|
RNPList = {s1,s2 : Case => Str} ;
|
||||||
|
X = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
iFem_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Fem Sg P1 ;
|
||||||
|
youFem_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Fem Sg P2 ;
|
||||||
|
weFem_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Fem Pl P1 ;
|
||||||
|
youPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
theyFem_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Fem Pl P3 ;
|
||||||
|
theyNeutr_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Neuter Pl P3 ;
|
||||||
|
youPolFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
youPolPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
youPolPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
|
||||||
|
GenNP np = {s = \\_,_,_ => np.s ! Gen} ;
|
||||||
|
GenIP ip = {s = \\_,_,_ => ip.s ! Gen} ;
|
||||||
|
GenRP num cn = {s = cn.s ! Gen ! num.n ++ "якога"} ;
|
||||||
|
GenModNP num np cn = {
|
||||||
|
s = \\c => np.s ! Gen ++ cn.s ! c ! num.n ;
|
||||||
|
a = {g=cn.g; n=num.n; p=P3}
|
||||||
|
} ;
|
||||||
|
GenModIP num ip cn = {
|
||||||
|
s = \\c => ip.s ! Gen ++ cn.s ! c ! num.n ;
|
||||||
|
a = {g=cn.g; n=num.n; p=P3}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
CompBareCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
|
||||||
|
PiedPipingQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
|
||||||
|
PiedPipingRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||||
|
StrandQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
|
||||||
|
StrandRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||||
|
EmptyRelSlash cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
|
||||||
|
|
||||||
|
MkVPS temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a} ;
|
||||||
|
ConjVPS conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
|
||||||
|
PredVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
|
||||||
|
SQuestVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
|
||||||
|
QuestVPS ip vps = {s = ip.s ! Nom ++ vps.s ! ip.a} ;
|
||||||
|
RelVPS rp vps = {s = rp.s ++ vps.s ! defaultAgr} ;
|
||||||
|
BaseVPS x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsVPS x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
|
||||||
|
|
||||||
|
ExistS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
|
||||||
|
ExistNPQS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
|
||||||
|
ExistIPQS temp pol ip = {s = copula temp.t pol.p ip.a ++ ip.s ! Nom} ;
|
||||||
|
|
||||||
|
MkVPI vp = {s = vp.inf} ;
|
||||||
|
ConjVPI conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ComplVPIVV vv vpi = {
|
||||||
|
s = \\t,p,a => finiteVerb vv t p a ++ vpi.s ;
|
||||||
|
inf = vv.infinitive ++ vpi.s ;
|
||||||
|
imp = \\p,n => neg p ++ vv.imperative ! n ++ vpi.s
|
||||||
|
} ;
|
||||||
|
BaseVPI x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsVPI x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||||
|
|
||||||
|
MkVPS2 temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a; c = vp.c; post = vp.post} ;
|
||||||
|
ConjVPS2 conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a; c = xs.c; post = xs.post} ;
|
||||||
|
ComplVPS2 vps np = {s = \\a => vps.s ! a ++ prepNP vps.c np ++ vps.post} ;
|
||||||
|
ReflVPS2 vps rnp = {s = \\a => vps.s ! a ++ rnp.s ! vps.c.c ++ vps.post} ;
|
||||||
|
BaseVPS2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
|
||||||
|
ConsVPS2 x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
|
||||||
|
|
||||||
|
MkVPI2 vp = {s = vp.inf; c = vp.c; post = vp.post} ;
|
||||||
|
ConjVPI2 conj xs = {s = xs.s1 ++ conj.s ++ xs.s2; c = xs.c; post = xs.post} ;
|
||||||
|
ComplVPI2 vpi np = {s = vpi.s ++ prepNP vpi.c np ++ vpi.post} ;
|
||||||
|
BaseVPI2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
|
||||||
|
ConsVPI2 x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
|
||||||
|
|
||||||
|
ConjComp conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
|
||||||
|
BaseComp x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsComp x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
|
||||||
|
ConjImp conj xs = {s = \\p,n => xs.s1 ! p ! n ++ conj.s ++ xs.s2 ! p ! n} ;
|
||||||
|
BaseImp x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
ConsImp x xs = {s1 = \\p,n => x.s ! p ! n ++ "," ++ xs.s1 ! p ! n; s2 = xs.s2} ;
|
||||||
|
|
||||||
|
ProDrop pron = pron ;
|
||||||
|
ICompAP ap = {s = ap.s ! Nom ! GSg Masc} ;
|
||||||
|
IAdvAdv adv = {s = adv.s} ;
|
||||||
|
CompIQuant iq = {s = iq.s ! Nom ! Masc ! Sg} ;
|
||||||
|
PrepCN prep cn = {s = prep.s ++ cn.s ! prep.c ! Sg} ;
|
||||||
|
|
||||||
|
FocusObj np ss = {s = np.s ! Acc ++ ss.s} ;
|
||||||
|
FocusAdv adv s = {s = adv.s ++ s.s} ;
|
||||||
|
FocusAdV adv s = {s = adv.s ++ s.s} ;
|
||||||
|
FocusAP ap np = {s = ap.s ! Nom ! genNum np.a.g np.a.n ++ np.s ! Nom} ;
|
||||||
|
|
||||||
|
PresPartAP vp = adjFromStr vp.inf ;
|
||||||
|
EmbedPresPart vp = {s = vp.inf} ;
|
||||||
|
PastPartAP vp = adjFromStr vp.inf ;
|
||||||
|
PastPartAgentAP vp np = adjFromStr (vp.inf ++ prepNP (mkPrep "кім" instrumental) np) ;
|
||||||
|
PassVPSlash vp = {
|
||||||
|
s = \\t,p,a => copula t p a ++ vp.inf ;
|
||||||
|
inf = "быць" ++ vp.inf ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь" ++ vp.inf
|
||||||
|
} ;
|
||||||
|
PassAgentVPSlash vp np = addAdvVP (PassVPSlash vp) (prepNP (mkPrep "кім" instrumental) np) ;
|
||||||
|
NominalizeVPSlashNP vp np = mkSimpleNP (vp.inf ++ prepNP vp.c np) Neuter Sg P3 ;
|
||||||
|
ProgrVPSlash vp = vp ;
|
||||||
|
A2VPSlash a = {
|
||||||
|
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
|
||||||
|
inf = a.s ! Nom ! GSg Masc ;
|
||||||
|
c = a.c2 ;
|
||||||
|
imp = \\p,_ => neg p ++ a.s ! Nom ! GSg Masc ;
|
||||||
|
post = []
|
||||||
|
} ;
|
||||||
|
N2VPSlash n = {
|
||||||
|
s = \\t,p,agr => copula t p agr ++ n.s ! Nom ! agr.n ;
|
||||||
|
inf = n.s ! Nom ! Sg ;
|
||||||
|
c = n.c2 ;
|
||||||
|
imp = \\p,_ => neg p ++ n.s ! Nom ! Sg ;
|
||||||
|
post = []
|
||||||
|
} ;
|
||||||
|
ExistsNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
|
||||||
|
ExistCN cn = {s = \\t,p => copula t p {g=cn.g; n=Sg; p=P3} ++ cn.s ! Nom ! Sg} ;
|
||||||
|
ExistMassCN cn = ExistCN cn ;
|
||||||
|
ExistPluralCN cn = {s = \\t,p => copula t p {g=cn.g; n=Pl; p=P3} ++ cn.s ! Nom ! Pl} ;
|
||||||
|
AdvIsNP adv np = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom} ;
|
||||||
|
AdvIsNPAP adv np ap = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom ++ ap.s ! Nom ! genNum np.a.g np.a.n} ;
|
||||||
|
PurposeVP vp = {s = "каб" ++ vp.inf} ;
|
||||||
|
ComplBareVS vs s = {
|
||||||
|
s = \\t,p,a => finiteVerb vs t p a ++ s.s ;
|
||||||
|
inf = vs.infinitive ++ s.s ;
|
||||||
|
imp = \\p,n => neg p ++ vs.imperative ! n ++ s.s
|
||||||
|
} ;
|
||||||
|
SlashBareV2S v s = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ s.s ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = s.s
|
||||||
|
} ;
|
||||||
|
ComplDirectVS vs utt = {
|
||||||
|
s = \\t,p,a => finiteVerb vs t p a ++ utt.s ;
|
||||||
|
inf = vs.infinitive ++ utt.s ;
|
||||||
|
imp = \\p,n => neg p ++ vs.imperative ! n ++ utt.s
|
||||||
|
} ;
|
||||||
|
ComplDirectVQ vq utt = {
|
||||||
|
s = \\t,p,a => finiteVerb vq t p a ++ utt.s ;
|
||||||
|
inf = vq.infinitive ++ utt.s ;
|
||||||
|
imp = \\p,n => neg p ++ vq.imperative ! n ++ utt.s
|
||||||
|
} ;
|
||||||
|
FrontComplDirectVS np vs utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vs t p np.a} ;
|
||||||
|
FrontComplDirectVQ np vq utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vq t p np.a} ;
|
||||||
|
PredAPVP ap vp = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter ++ vp.inf} ;
|
||||||
|
AdjAsCN ap = nounFromStr (ap.s ! Nom ! GSg Masc) Masc ;
|
||||||
|
AdjAsNP ap = mkSimpleNP (ap.s ! Nom ! GSg Masc) Masc Sg P3 ;
|
||||||
|
PredIAdvVP iadv vp = {s = \\t,p => iadv.s ++ vp.inf} ;
|
||||||
|
EmbedSSlash ss = {s = ss.s} ;
|
||||||
|
|
||||||
|
ReflRNP vp rnp = {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ rnp.s ! vp.c.c ++ vp.post ;
|
||||||
|
inf = vp.inf ++ rnp.s ! vp.c.c ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ rnp.s ! vp.c.c ++ vp.post
|
||||||
|
} ;
|
||||||
|
ReflPron = {s = caseTable "сябе"} ;
|
||||||
|
ReflPoss num cn = {s = \\c => "свой" ++ cn.s ! c ! num.n} ;
|
||||||
|
PredetRNP pred rnp = {s = \\c => pred.s ! c ! Masc ! Sg ++ rnp.s ! c} ;
|
||||||
|
AdvRNP np prep rnp = {s = \\c => np.s ! c ++ prep.s ++ rnp.s ! prep.c} ;
|
||||||
|
AdvRVP vp prep rnp = addAdvVP vp (prep.s ++ rnp.s ! prep.c) ;
|
||||||
|
AdvRAP ap prep rnp = {s = \\c,gn => ap.s ! c ! gn ++ prep.s ++ rnp.s ! prep.c} ;
|
||||||
|
ReflA2RNP a rnp = {s = \\c,gn => a.s ! c ! gn ++ a.c2.s ++ rnp.s ! a.c2.c} ;
|
||||||
|
PossPronRNP pron num cn rnp = {
|
||||||
|
s = \\c => pron.s ! Gen ++ cn.s ! c ! num.n ++ rnp.s ! Gen ;
|
||||||
|
a = {g=cn.g; n=num.n; p=P3}
|
||||||
|
} ;
|
||||||
|
ConjRNP conj xs = {s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c} ;
|
||||||
|
Base_rr_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
Base_nr_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
Base_rn_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||||
|
Cons_rr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
|
||||||
|
Cons_nr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
|
||||||
|
ReflPossPron = mkQuant "свой" ;
|
||||||
|
ComplGenVV vv ant pol vp = {
|
||||||
|
s = \\t,p,a => finiteVerb vv t p a ++ neg pol.p ++ vp.inf ;
|
||||||
|
inf = vv.infinitive ++ neg pol.p ++ vp.inf ;
|
||||||
|
imp = \\p,n => neg p ++ vv.imperative ! n ++ neg pol.p ++ vp.inf
|
||||||
|
} ;
|
||||||
|
CompoundN n1 n2 = {
|
||||||
|
s = \\c,n => n1.s ! Nom ! Sg ++ n2.s ! c ! n ;
|
||||||
|
voc = n1.voc ++ n2.voc ;
|
||||||
|
g = n2.g
|
||||||
|
} ;
|
||||||
|
CompoundAP n a = {s = \\c,gn => n.s ! Nom ! Sg ++ a.s ! c ! gn} ;
|
||||||
|
GerundCN vp = nounFromStr vp.inf Neuter ;
|
||||||
|
GerundNP vp = mkSimpleNP vp.inf Neuter Sg P3 ;
|
||||||
|
GerundAdv vp = {s = vp.inf} ;
|
||||||
|
WithoutVP vp = {s = "без" ++ vp.inf} ;
|
||||||
|
ByVP vp = {s = "праз" ++ vp.inf} ;
|
||||||
|
InOrderToVP vp = {s = "каб" ++ vp.inf} ;
|
||||||
|
ApposNP np app = {s = \\c => np.s ! c ++ app.s ! Nom; a = np.a} ;
|
||||||
|
AdAdV ada adv = {s = ada.s ++ adv.s} ;
|
||||||
|
UttAdV adv = {s = adv.s} ;
|
||||||
|
PositAdVAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||||
|
CompS s = {s = \\_ => s.s} ;
|
||||||
|
CompQS qs = {s = \\_ => qs.s} ;
|
||||||
|
CompVP ant pol vp = {s = \\_ => neg pol.p ++ vp.inf} ;
|
||||||
|
UncontractedNeg = {s = []; p = R.Neg} ;
|
||||||
|
UttVPShort vp = {s = vp.inf} ;
|
||||||
|
ComplSlashPartLast vp np = {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
|
||||||
|
inf = vp.inf ++ prepNP vp.c np ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
|
||||||
|
} ;
|
||||||
|
DetNPMasc det = {s = \\c => det.s ! c ! Masc; a = {g=Masc; n=det.n; p=P3}} ;
|
||||||
|
DetNPFem det = {s = \\c => det.s ! c ! Fem; a = {g=Fem; n=det.n; p=P3}} ;
|
||||||
|
UseComp_estar comp = UseComp_ser comp ;
|
||||||
|
UseComp_ser comp = {
|
||||||
|
s = \\t,p,a => copula t p a ++ comp.s ! a ;
|
||||||
|
inf = "быць" ++ comp.s ! defaultAgr ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
|
||||||
|
} ;
|
||||||
|
SubjRelNP np rs = {s = \\c => np.s ! c ++ rs.s; a = np.a} ;
|
||||||
|
UttAccNP np = {s = np.s ! Acc} ;
|
||||||
|
UttDatNP np = {s = np.s ! Dat} ;
|
||||||
|
UttAccIP ip = {s = ip.s ! Acc} ;
|
||||||
|
UttDatIP ip = {s = ip.s ! Dat} ;
|
||||||
|
UseDAP dap = {s = \\c => dap.s ! c ! Masc; a = {g=Neuter; n=dap.n; p=P3}} ;
|
||||||
|
UseDAPMasc dap = {s = \\c => dap.s ! c ! Masc; a = {g=Masc; n=dap.n; p=P3}} ;
|
||||||
|
UseDAPFem dap = {s = \\c => dap.s ! c ! Fem; a = {g=Fem; n=dap.n; p=P3}} ;
|
||||||
|
CardCNCard card cn = {s = card.s ++ cn.s ! Gen ! Pl; n = Pl} ;
|
||||||
|
TPastSimple = {s = []; t = R.Past} ;
|
||||||
|
SubjunctRelCN cn rs = {
|
||||||
|
s = \\c,n => cn.s ! c ! n ++ rs.s ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,5 +2,15 @@ concrete GrammarBel of Grammar =
|
|||||||
TenseX,
|
TenseX,
|
||||||
PhraseBel,
|
PhraseBel,
|
||||||
NounBel,
|
NounBel,
|
||||||
AdjectiveBel ** {
|
AdjectiveBel,
|
||||||
}
|
AdverbBel,
|
||||||
|
VerbBel,
|
||||||
|
SentenceBel,
|
||||||
|
QuestionBel,
|
||||||
|
RelativeBel,
|
||||||
|
ConjunctionBel,
|
||||||
|
NumeralBel,
|
||||||
|
NamesBel,
|
||||||
|
StructuralBel,
|
||||||
|
IdiomBel ** {
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
concrete IdiomBel of Idiom = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
ImpersCl vp = {s = \\t,p => vp.s ! t ! p ! defaultAgr} ;
|
||||||
|
GenericCl vp = {s = \\t,p => "нехта" ++ vp.s ! t ! p ! defaultAgr} ;
|
||||||
|
CleftNP np rs = {s = \\_,_ => "гэта" ++ np.s ! Nom ++ rs.s} ;
|
||||||
|
CleftAdv adv s = {s = \\_,_ => "гэта" ++ adv.s ++ s.s} ;
|
||||||
|
|
||||||
|
ExistNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
|
||||||
|
ExistIP ip = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom} ;
|
||||||
|
ExistNPAdv np adv = {s = \\t,p => copula t p np.a ++ np.s ! Nom ++ adv.s} ;
|
||||||
|
ExistIPAdv ip adv = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom ++ adv.s} ;
|
||||||
|
|
||||||
|
ProgrVP vp = vp ;
|
||||||
|
ImpPl1 vp = {s = "давайце" ++ vp.inf} ;
|
||||||
|
ImpP3 np vp = {s = "няхай" ++ np.s ! Nom ++ vp.s ! R.Pres ! R.Pos ! np.a} ;
|
||||||
|
|
||||||
|
SelfAdvVP vp = addAdvVP vp "сам" ;
|
||||||
|
SelfAdVVP vp = addAdVVP "сам" vp ;
|
||||||
|
SelfNP np = {s = \\c => np.s ! c ++ "сам"; a = np.a} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
--# -path=.:../abstract
|
--# -path=.:../abstract
|
||||||
concrete LangBel of Lang =
|
concrete LangBel of Lang =
|
||||||
GrammarBel,
|
GrammarBel,
|
||||||
LexiconBel
|
LexiconBel,
|
||||||
|
ConstructionBel
|
||||||
,DocumentationBel --# notpresent
|
,DocumentationBel --# notpresent
|
||||||
** {
|
** {
|
||||||
|
|
||||||
|
|
||||||
flags startcat = Phr ;
|
flags startcat = Phr ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+744
-744
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
|||||||
|
concrete NamesBel of Names = CatBel ** open ResBel, ParadigmsBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
GivenName gn = mkSimpleNP gn.s gn.g Sg P3 ;
|
||||||
|
MaleSurname sn = mkSimpleNP sn.s Masc Sg P3 ;
|
||||||
|
FemaleSurname sn = mkSimpleNP sn.s Fem Sg P3 ;
|
||||||
|
PlSurname sn = mkSimpleNP sn.s Masc Pl P3 ;
|
||||||
|
FullName gn sn = mkSimpleNP (gn.s ++ sn.s) gn.g Sg P3 ;
|
||||||
|
|
||||||
|
UseLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
|
||||||
|
PlainLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
|
||||||
|
InLN ln = {s = "у" ++ ln.s ! Loc} ;
|
||||||
|
AdjLN ap ln = {
|
||||||
|
s = \\c => ap.s ! c ! genNum ln.g ln.n ++ ln.s ! c ;
|
||||||
|
g = ln.g ;
|
||||||
|
n = ln.n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
+123
-1
@@ -1,4 +1,126 @@
|
|||||||
concrete NounBel of Noun = CatBel ** {
|
concrete NounBel of Noun = CatBel ** open ResBel, Prelude in {
|
||||||
lin
|
lin
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
|
|
||||||
|
DetCN det cn = {
|
||||||
|
s = \\c => det.s ! c ! cn.g ++ cn.s ! c ! det.n ;
|
||||||
|
a = {g=cn.g; n=det.n; p=P3}
|
||||||
|
} ;
|
||||||
|
UsePN pn = {
|
||||||
|
s = pn.s ;
|
||||||
|
a = {g=pn.g; n=pn.n; p=P3}
|
||||||
|
} ;
|
||||||
|
UsePron p = p ;
|
||||||
|
|
||||||
|
PredetNP pred np = {
|
||||||
|
s = \\c => pred.s ! c ! np.a.g ! np.a.n ++ np.s ! c ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
PPartNP np v = {
|
||||||
|
s = \\c => np.s ! c ++ v.participle ! np.a.g ! np.a.n ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
AdvNP np adv = {
|
||||||
|
s = \\c => np.s ! c ++ adv.s ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
ExtAdvNP np adv = {
|
||||||
|
s = \\c => np.s ! c ++ adv.s ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
RelNP np rs = {
|
||||||
|
s = \\c => np.s ! c ++ rs.s ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
DetNP det = {
|
||||||
|
s = \\c => det.s ! c ! Masc ;
|
||||||
|
a = {g=Masc; n=det.n; p=P3}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
DetQuant q n = {
|
||||||
|
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ;
|
||||||
|
n = n.n
|
||||||
|
} ;
|
||||||
|
DetQuantOrd q n o = {
|
||||||
|
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ++ o.s ! c ! genNum g n.n ;
|
||||||
|
n = n.n
|
||||||
|
} ;
|
||||||
|
NumSg = {s = \\_,_ => []; n = Sg} ;
|
||||||
|
NumPl = {s = \\_,_ => []; n = Pl} ;
|
||||||
|
NumCard card = {s = \\_,_ => card.s; n = card.n} ;
|
||||||
|
NumDigits digits = {s = digits.s; n = Pl} ;
|
||||||
|
NumDecimal dec = {s = dec.s; n = Pl} ;
|
||||||
|
NumNumeral numeral = {s = numeral.s; n = Pl} ;
|
||||||
|
AdNum adn card = {s = adn.s ++ card.s; n = card.n} ;
|
||||||
|
|
||||||
|
OrdDigits d = adjFromStr d.s ;
|
||||||
|
OrdNumeral n = adjFromStr n.s ;
|
||||||
|
OrdSuperl a = {s = \\c,gn => "най" ++ a.s ! c ! gn} ;
|
||||||
|
OrdNumeralSuperl n a = {s = \\c,gn => n.s ++ a.s ! c ! gn} ;
|
||||||
|
|
||||||
|
IndefArt = {s = \\_,_,_ => []} ;
|
||||||
|
DefArt = {s = \\_,_,_ => []} ;
|
||||||
|
MassNP cn = {
|
||||||
|
s = \\c => cn.s ! c ! Sg ;
|
||||||
|
a = {g=cn.g; n=Sg; p=P3}
|
||||||
|
} ;
|
||||||
|
PossPron p = {s = \\_,_,_ => p.s ! Gen} ;
|
||||||
|
|
||||||
|
ComplN2 n np = {
|
||||||
|
s = \\c,num => n.s ! c ! num ++ prepNP n.c2 np ;
|
||||||
|
voc = n.voc ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
ComplN3 n np = n ** {c2 = n.c3} ;
|
||||||
|
UseN2 n = n ;
|
||||||
|
Use2N3 n = n ** {c2 = n.c2} ;
|
||||||
|
Use3N3 n = n ** {c2 = n.c3} ;
|
||||||
|
|
||||||
|
AdjCN ap cn = {
|
||||||
|
s = \\c,num => ap.s ! c ! genNum cn.g num ++ cn.s ! c ! num ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
RelCN cn rs = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ rs.s ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
AdvCN cn adv = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ adv.s ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
SentCN cn sc = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ sc.s ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
ApposCN cn np = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ np.s ! Nom ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
PossNP cn np = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
PartNP cn np = {
|
||||||
|
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
|
||||||
|
voc = cn.voc ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
CountNP det np = {
|
||||||
|
s = \\c => det.s ! c ! Masc ++ "з" ++ np.s ! Gen ;
|
||||||
|
a = {g=Masc; n=det.n; p=P3}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdjDAP dap ap = {
|
||||||
|
s = \\c,g => dap.s ! c ! g ++ ap.s ! c ! genNum g dap.n ;
|
||||||
|
n = dap.n
|
||||||
|
} ;
|
||||||
|
DetDAP det = det ;
|
||||||
|
|
||||||
|
QuantityNP dec mu = mkSimpleNP (dec.s ++ mu.s) Neuter Sg P3 ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
concrete NumeralBel of Numeral = CatBel ** {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Digit, Sub10, Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 = {s : Str} ;
|
||||||
|
Dig = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
num n = n ;
|
||||||
|
|
||||||
|
n2 = {s = "2"} ;
|
||||||
|
n3 = {s = "3"} ;
|
||||||
|
n4 = {s = "4"} ;
|
||||||
|
n5 = {s = "5"} ;
|
||||||
|
n6 = {s = "6"} ;
|
||||||
|
n7 = {s = "7"} ;
|
||||||
|
n8 = {s = "8"} ;
|
||||||
|
n9 = {s = "9"} ;
|
||||||
|
|
||||||
|
pot01 = {s = "1"} ;
|
||||||
|
pot0 d = d ;
|
||||||
|
pot0as1 n = n ;
|
||||||
|
pot110 = {s = "10"} ;
|
||||||
|
pot111 = {s = "11"} ;
|
||||||
|
pot1to19 d = {s = "1" ++ d.s} ;
|
||||||
|
pot1 d = {s = d.s ++ "0"} ;
|
||||||
|
pot1plus d n = {s = d.s ++ n.s} ;
|
||||||
|
pot1as2 n = n ;
|
||||||
|
pot21 = {s = "100"} ;
|
||||||
|
pot2 n = {s = n.s ++ "00"} ;
|
||||||
|
pot2plus n m = {s = n.s ++ "00" ++ m.s} ;
|
||||||
|
pot2as3 n = n ;
|
||||||
|
pot31 = {s = "1000"} ;
|
||||||
|
pot3 n = {s = n.s ++ "000"} ;
|
||||||
|
pot3plus n m = {s = n.s ++ "000" ++ m.s} ;
|
||||||
|
pot3as4 n = n ;
|
||||||
|
pot3decimal d = {s = d.s ++ "тысяч"} ;
|
||||||
|
pot41 = {s = "1000000"} ;
|
||||||
|
pot4 n = {s = n.s ++ "000000"} ;
|
||||||
|
pot4plus n m = {s = n.s ++ "000000" ++ m.s} ;
|
||||||
|
pot4as5 n = n ;
|
||||||
|
pot4decimal d = {s = d.s ++ "мільёна"} ;
|
||||||
|
pot51 = {s = "1000000000"} ;
|
||||||
|
pot5 n = {s = n.s ++ "000000000"} ;
|
||||||
|
pot5plus n m = {s = n.s ++ "000000000" ++ m.s} ;
|
||||||
|
pot5decimal d = {s = d.s ++ "мільярда"} ;
|
||||||
|
|
||||||
|
IDig d = d ;
|
||||||
|
IIDig d ds = {s = d.s ++ ds.s} ;
|
||||||
|
|
||||||
|
D_0 = {s = "0"} ;
|
||||||
|
D_1 = {s = "1"} ;
|
||||||
|
D_2 = {s = "2"} ;
|
||||||
|
D_3 = {s = "3"} ;
|
||||||
|
D_4 = {s = "4"} ;
|
||||||
|
D_5 = {s = "5"} ;
|
||||||
|
D_6 = {s = "6"} ;
|
||||||
|
D_7 = {s = "7"} ;
|
||||||
|
D_8 = {s = "8"} ;
|
||||||
|
D_9 = {s = "9"} ;
|
||||||
|
|
||||||
|
PosDecimal d = d ;
|
||||||
|
NegDecimal d = {s = "-" ++ d.s} ;
|
||||||
|
IFrac d dig = {s = d.s ++ "." ++ dig.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -636,6 +636,42 @@ oper
|
|||||||
_ => regN form1
|
_ => regN form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
compoundN = overload {
|
||||||
|
compoundN : A -> N -> N = \a,n -> lin N {
|
||||||
|
s = \\c,num => a.s ! c ! genNum n.g num ++ n.s ! c ! num ;
|
||||||
|
voc = a.s ! Nom ! genNum n.g Sg ++ n.voc ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : N -> A -> N = \n,a -> lin N {
|
||||||
|
s = \\c,num => n.s ! c ! num ++ a.s ! c ! genNum n.g num ;
|
||||||
|
voc = n.voc ++ a.s ! Nom ! genNum n.g Sg ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : N -> Str -> N = \n,adv -> lin N {
|
||||||
|
s = \\c,num => n.s ! c ! num ++ adv ;
|
||||||
|
voc = n.voc ++ adv ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : Str -> N -> N = \adv,n -> lin N {
|
||||||
|
s = \\c,num => adv ++ n.s ! c ! num ;
|
||||||
|
voc = adv ++ n.voc ;
|
||||||
|
g = n.g
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPron : (_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
|
||||||
|
\nom,acc,dat,gen,loc,instr,g,n,p -> lin Pron {
|
||||||
|
s = table {
|
||||||
|
Nom => nom ;
|
||||||
|
Acc => acc ;
|
||||||
|
Dat => dat ;
|
||||||
|
Gen => gen ;
|
||||||
|
Loc => loc ;
|
||||||
|
Instr => instr
|
||||||
|
} ;
|
||||||
|
a = {g=g; n = n; p = p}
|
||||||
|
} ;
|
||||||
|
|
||||||
regV : Str -> V -- infinitive
|
regV : Str -> V -- infinitive
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "агчы" => mkV021 form;
|
_ + "агчы" => mkV021 form;
|
||||||
@@ -717,6 +753,16 @@ oper
|
|||||||
_ => regV form1
|
_ => regV form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
compoundV : V -> Str -> V = \v,adv -> lin V {
|
||||||
|
active = \\a => {past=(v.active ! a).past ++ adv ;
|
||||||
|
pres=\\p,num=>(v.active ! a).pres ! p ! num ++ adv
|
||||||
|
} ;
|
||||||
|
imperative = \\num => v.imperative ! num ++ adv ;
|
||||||
|
infinitive = v.infinitive ++ adv ;
|
||||||
|
participle = \\g,num => v.participle ! g ! num ++ adv ;
|
||||||
|
passive = \\a,t => v.passive ! a ! t ++ adv
|
||||||
|
} ;
|
||||||
|
|
||||||
regA : Str -> A -- s;Nom;('GSg', Masc)
|
regA : Str -> A -- s;Nom;('GSg', Masc)
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "які" => mkA006 form;
|
_ + "які" => mkA006 form;
|
||||||
@@ -819,24 +865,37 @@ oper
|
|||||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||||
|
|
||||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
nominative : Case = Nom ;
|
||||||
|
accusative : Case = Acc ;
|
||||||
|
dative : Case = Dat ;
|
||||||
|
genitive : Case = Gen ;
|
||||||
|
locative : Case = Loc ;
|
||||||
|
instrumental : Case = Instr ;
|
||||||
|
|
||||||
|
mkPrep = overload {
|
||||||
|
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||||
|
mkPrep : Case -> Prep = \c -> lin Prep {s=[]; c=c} ;
|
||||||
|
mkPrep : Str -> Case -> Prep = \s,c -> lin Prep {s=s; c=c}
|
||||||
|
} ;
|
||||||
|
|
||||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
mkIP : Str -> IP = \s -> lin IP (mkSimpleNP s Masc Sg P3) ;
|
||||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_,_,_ => s} ;
|
||||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_,_ => s; n=Sg} ;
|
||||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_ => s} ;
|
||||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
adjQuant : A -> Quant = \a -> lin Quant {s=\\c,g,n => a.s ! c ! genNum g n} ;
|
||||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
mkPredet : Str -> Predet = \s -> lin Predet {s=\\_,_,_ => s} ;
|
||||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg} ;
|
||||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
mkCard : Str -> Card = \s -> lin Card {s=s; n=Pl} ;
|
||||||
|
mkACard : Str -> ACard = \s -> lin ACard {s=s; n=Pl} ;
|
||||||
|
mkConj : Str -> Conj = \s -> lin Conj {s=s; n=Pl} ;
|
||||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||||
|
|
||||||
mkLN : Str -> LN = \s -> lin LN {s=s} ;
|
mkLN : Str -> LN = \s -> lin LN {s=caseTable s; g=Neuter; n=Sg} ;
|
||||||
mkGN : Str -> GN = \s -> lin GN {s=s} ;
|
mkGN : Str -> GN = \s -> lin GN {s=s; g=Masc} ;
|
||||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||||
mkPN : Str -> PN = \s -> lin PN {s=s} ;
|
mkPN : Str -> PN = \s -> lin PN {s=caseTable s; g=Masc; n=Sg} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,25 @@
|
|||||||
concrete PhraseBel of Phrase = CatBel ** {
|
concrete PhraseBel of Phrase = CatBel ** open ResBel in {
|
||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = s ;
|
UttS s = s ;
|
||||||
|
UttQS qs = qs ;
|
||||||
|
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ;
|
||||||
|
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||||
|
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||||
|
UttIP ip = {s = ip.s ! Nom} ;
|
||||||
|
UttIAdv iadv = iadv ;
|
||||||
|
UttNP np = {s = np.s ! Nom} ;
|
||||||
|
UttAdv adv = adv ;
|
||||||
|
UttVP vp = {s = vp.inf} ;
|
||||||
|
UttCN cn = {s = cn.s ! Nom ! Sg} ;
|
||||||
|
UttCard card = {s = card.s} ;
|
||||||
|
UttAP ap = {s = ap.s ! Nom ! GSg Masc} ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
PConjConj conj = {s = conj.s} ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
|
VocNP np = {s = np.s ! Nom} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
concrete QuestionBel of Question = CatBel ** open ResBel, (R = ParamX) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
QVP = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
QuestCl cl = cl ;
|
||||||
|
QuestVP ip vp = {
|
||||||
|
s = \\t,p => ip.s ! Nom ++ vp.s ! t ! p ! ip.a
|
||||||
|
} ;
|
||||||
|
QuestSlash ip cl = {
|
||||||
|
s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p
|
||||||
|
} ;
|
||||||
|
QuestIAdv iadv cl = {
|
||||||
|
s = \\t,p => iadv.s ++ cl.s ! t ! p
|
||||||
|
} ;
|
||||||
|
QuestIComp icomp np = {
|
||||||
|
s = \\t,p => icomp.s ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdetCN idet cn = {
|
||||||
|
s = \\c => idet.s ! c ! cn.g ++ cn.s ! c ! idet.n ;
|
||||||
|
a = {g=cn.g; n=idet.n; p=P3}
|
||||||
|
} ;
|
||||||
|
IdetIP idet = {
|
||||||
|
s = \\c => idet.s ! c ! Masc ;
|
||||||
|
a = {g=Masc; n=idet.n; p=P3}
|
||||||
|
} ;
|
||||||
|
AdvIP ip adv = {
|
||||||
|
s = \\c => ip.s ! c ++ adv.s ;
|
||||||
|
a = ip.a
|
||||||
|
} ;
|
||||||
|
IdetQuant iquant num = {
|
||||||
|
s = \\c,g => iquant.s ! c ! g ! num.n ++ num.s ! c ! g ;
|
||||||
|
n = num.n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PrepIP prep ip = {s = prepNP prep ip} ;
|
||||||
|
AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ;
|
||||||
|
CompIAdv iadv = iadv ;
|
||||||
|
CompIP ip = {s = ip.s ! Nom} ;
|
||||||
|
|
||||||
|
ComplSlashIP vp ip = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ vp.c.s ++ ip.s ! vp.c.c ++ vp.post} ;
|
||||||
|
AdvQVP vp iadv = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ iadv.s} ;
|
||||||
|
AddAdvQVP qvp iadv = {s = qvp.s ++ iadv.s} ;
|
||||||
|
QuestQVP ip qvp = {
|
||||||
|
s = \\_,_ => ip.s ! Nom ++ qvp.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
concrete RelativeBel of Relative = CatBel ** open ResBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
RelCl cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
|
||||||
|
RelVP rp vp = {s = \\t,p => rp.s ++ vp.s ! t ! p ! defaultAgr} ;
|
||||||
|
RelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||||
|
|
||||||
|
IdRP = {s = "які"} ;
|
||||||
|
FunRP prep np rp = {s = prepNP prep np ++ rp.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
+133
-10
@@ -1,4 +1,4 @@
|
|||||||
resource ResBel = {
|
resource ResBel = open (R = ParamX), Prelude in {
|
||||||
|
|
||||||
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
|
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
|
||||||
param Number = Sg | Pl ;
|
param Number = Sg | Pl ;
|
||||||
@@ -40,12 +40,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
|||||||
param Aspect = Imperf | Perf ;
|
param Aspect = Imperf | Perf ;
|
||||||
param Person = P1 | P2 | P3 ;
|
param Person = P1 | P2 | P3 ;
|
||||||
param Tense = Pres | Past ;
|
param Tense = Pres | Past ;
|
||||||
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
oper Verb = {active: Aspect => {past: Str; pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
||||||
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
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 ->
|
\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 ->
|
||||||
{ active = table {
|
{ active = table {
|
||||||
Imperf => { Past = f1 ;
|
Imperf => { past = f1 ;
|
||||||
Pres = table {
|
pres = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f2 ;
|
Sg => f2 ;
|
||||||
Pl => f3
|
Pl => f3
|
||||||
@@ -60,8 +60,8 @@ oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Perf => { Past = f8 ;
|
Perf => { past = f8 ;
|
||||||
Pres = table {
|
pres = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f9 ;
|
Sg => f9 ;
|
||||||
Pl => f10
|
Pl => f10
|
||||||
@@ -110,8 +110,14 @@ oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
|||||||
|
|
||||||
|
|
||||||
param GenNum = GSg Gender | GPl ;
|
param GenNum = GSg Gender | GPl ;
|
||||||
oper A = {s: Case => GenNum => Str} ; -- 704
|
oper genNum : Gender -> Number -> GenNum = \g,n ->
|
||||||
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
case n of {
|
||||||
|
Sg => GSg g ;
|
||||||
|
Pl => GPl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper Adj = {s: Case => GenNum => Str} ; -- 704
|
||||||
|
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
Nom => table {
|
Nom => table {
|
||||||
@@ -158,6 +164,123 @@ oper Compl = {s : Str; c : Case} ;
|
|||||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||||
|
|
||||||
oper CommonNoun = Noun ;
|
oper CommonNoun = Noun ;
|
||||||
oper AdjPhrase = A ;
|
oper AdjPhrase = Adj ;
|
||||||
|
|
||||||
|
oper Agr = {g : Gender ; n : Number ; p : Person} ;
|
||||||
|
oper defaultAgr : Agr = {g=Masc; n=Sg; p=P3} ;
|
||||||
|
|
||||||
|
oper NPhrase : Type = {s : Case => Str; a : Agr} ;
|
||||||
|
oper mkNPhrase : (Case => Str) -> Agr -> NPhrase =
|
||||||
|
\s,a -> {s = s; a = a} ;
|
||||||
|
oper caseTable : Str -> Case => Str =
|
||||||
|
\s -> table {Nom => s; Acc => s; Dat => s; Gen => s; Loc => s; Instr => s} ;
|
||||||
|
oper mkSimpleNP : Str -> Gender -> Number -> Person -> NPhrase =
|
||||||
|
\s,g,n,p -> mkNPhrase (caseTable s) {g=g; n=n; p=p} ;
|
||||||
|
|
||||||
|
oper nounFromStr : Str -> Gender -> Noun =
|
||||||
|
\s,g -> {
|
||||||
|
s = \\_,_ => s ;
|
||||||
|
voc = s ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper adjFromStr : Str -> Adj =
|
||||||
|
\s -> {s = \\_,_ => s} ;
|
||||||
|
|
||||||
|
oper prepNP : Compl -> NPhrase -> Str =
|
||||||
|
\prep,np -> prep.s ++ np.s ! prep.c ;
|
||||||
|
|
||||||
|
oper neg : R.Polarity -> Str =
|
||||||
|
\p -> case p of {
|
||||||
|
R.Pos => [] ;
|
||||||
|
R.Neg => "не"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper futureBe : Agr -> Str =
|
||||||
|
\a -> case <a.p,a.n> of {
|
||||||
|
<P1,Sg> => "буду" ;
|
||||||
|
<P2,Sg> => "будзеш" ;
|
||||||
|
<P3,Sg> => "будзе" ;
|
||||||
|
<P1,Pl> => "будзем" ;
|
||||||
|
<P2,Pl> => "будзеце" ;
|
||||||
|
<P3,Pl> => "будуць"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper pastBe : Agr -> Str =
|
||||||
|
\a -> case <a.g,a.n> of {
|
||||||
|
<Masc,Sg> => "быў" ;
|
||||||
|
<Fem,Sg> => "была" ;
|
||||||
|
<Neuter,Sg> => "было" ;
|
||||||
|
<_,Pl> => "былі"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper copula : R.Tense -> R.Polarity -> Agr -> Str =
|
||||||
|
\t,p,a -> case t of {
|
||||||
|
R.Pres => neg p ;
|
||||||
|
R.Past => neg p ++ pastBe a ;
|
||||||
|
R.Fut => neg p ++ futureBe a ;
|
||||||
|
R.Cond => neg p ++ pastBe a ++ "бы"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper finiteVerb : Verb -> R.Tense -> R.Polarity -> Agr -> Str =
|
||||||
|
\v,t,p,a -> case t of {
|
||||||
|
R.Pres => neg p ++ (v.active ! Imperf).pres ! a.p ! a.n ;
|
||||||
|
R.Past => neg p ++ v.participle ! a.g ! a.n ;
|
||||||
|
R.Fut => neg p ++ futureBe a ++ v.infinitive ;
|
||||||
|
R.Cond => neg p ++ v.participle ! a.g ! a.n ++ "бы"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper VPhrase : Type = {
|
||||||
|
s : R.Tense => R.Polarity => Agr => Str ;
|
||||||
|
inf : Str ;
|
||||||
|
imp : R.Polarity => Number => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper mkVPhrase : Verb -> VPhrase =
|
||||||
|
\v -> {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper VSlash : Type = {
|
||||||
|
s : R.Tense => R.Polarity => Agr => Str ;
|
||||||
|
inf : Str ;
|
||||||
|
c : Compl ;
|
||||||
|
imp : R.Polarity => Number => Str ;
|
||||||
|
post : Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper mkVSlash : Verb -> Compl -> VSlash =
|
||||||
|
\v,c -> {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ;
|
||||||
|
c = c ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper addAdvVP : VPhrase -> Str -> VPhrase =
|
||||||
|
\vp,adv -> {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ adv ;
|
||||||
|
inf = vp.inf ++ adv ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ adv
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper addAdVVP : Str -> VPhrase -> VPhrase =
|
||||||
|
\adv,vp -> {
|
||||||
|
s = \\t,p,a => adv ++ vp.s ! t ! p ! a ;
|
||||||
|
inf = adv ++ vp.inf ;
|
||||||
|
imp = \\p,n => adv ++ vp.imp ! p ! n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper addAdvSlash : VSlash -> Str -> VSlash =
|
||||||
|
\vp,adv -> {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ;
|
||||||
|
inf = vp.inf ++ adv ;
|
||||||
|
c = vp.c ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ;
|
||||||
|
post = vp.post ++ adv
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
concrete SentenceBel of Sentence = CatBel ** open ResBel, (R = ParamX), Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
PredVP np vp = {
|
||||||
|
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a
|
||||||
|
} ;
|
||||||
|
PredSCVP sc vp = {
|
||||||
|
s = \\t,p => sc.s ++ vp.s ! t ! p ! defaultAgr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashVP np vp = {
|
||||||
|
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a ++ vp.post ;
|
||||||
|
c = vp.c
|
||||||
|
} ;
|
||||||
|
AdvSlash cl adv = {
|
||||||
|
s = \\t,p => cl.s ! t ! p ++ adv.s ;
|
||||||
|
c = cl.c
|
||||||
|
} ;
|
||||||
|
SlashPrep cl prep = {
|
||||||
|
s = \\t,p => cl.s ! t ! p ++ prep.s ;
|
||||||
|
c = prep
|
||||||
|
} ;
|
||||||
|
SlashVS np vs ss = {
|
||||||
|
s = \\t,p => np.s ! Nom ++ finiteVerb vs t p np.a ++ ss.s ;
|
||||||
|
c = ss.c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ImpVP vp = {s = \\p,n => vp.imp ! p ! n} ;
|
||||||
|
AdvImp adv imp = {s = \\p,n => adv.s ++ imp.s ! p ! n} ;
|
||||||
|
|
||||||
|
EmbedS s = {s = "што" ++ s.s} ;
|
||||||
|
EmbedQS qs = {s = qs.s} ;
|
||||||
|
EmbedVP vp = {s = vp.inf} ;
|
||||||
|
|
||||||
|
UseCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
|
||||||
|
UseQCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
|
||||||
|
UseRCl temp pol cl = {s = cl.s ! temp.t ! pol.p} ;
|
||||||
|
UseSlash temp pol cl = {s = cl.s ! temp.t ! pol.p; c = cl.c} ;
|
||||||
|
|
||||||
|
AdvS adv s = {s = adv.s ++ s.s} ;
|
||||||
|
ExtAdvS adv s = {s = adv.s ++ s.s} ;
|
||||||
|
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
|
||||||
|
RelS s rs = {s = s.s ++ rs.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
concrete StructuralBel of Structural = CatBel ** open ResBel, ParadigmsBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
above_Prep = mkPrep "над" instrumental ;
|
||||||
|
after_Prep = mkPrep "пасля" genitive ;
|
||||||
|
all_Predet = mkPredet "усе" ;
|
||||||
|
almost_AdA = mkAdA "амаль" ;
|
||||||
|
almost_AdN = mkAdN "амаль" ;
|
||||||
|
although_Subj = mkSubj "хоць" ;
|
||||||
|
always_AdV = mkAdV "заўсёды" ;
|
||||||
|
and_Conj = mkConj "і" ;
|
||||||
|
because_Subj = mkSubj "бо" ;
|
||||||
|
before_Prep = mkPrep "перад" instrumental ;
|
||||||
|
behind_Prep = mkPrep "за" instrumental ;
|
||||||
|
between_Prep = mkPrep "паміж" instrumental ;
|
||||||
|
both7and_DConj = mkConj "і" ;
|
||||||
|
but_PConj = mkPConj "але" ;
|
||||||
|
by8agent_Prep = mkPrep "кім" instrumental ;
|
||||||
|
by8means_Prep = mkPrep "праз" accusative ;
|
||||||
|
can8know_VV = mkVV (mkV021 "магчы") ;
|
||||||
|
can_VV = mkVV (mkV021 "магчы") ;
|
||||||
|
during_Prep = mkPrep "падчас" genitive ;
|
||||||
|
either7or_DConj = mkConj "або" ;
|
||||||
|
every_Det = {s = \\_,_ => "кожны"; n = Sg} ;
|
||||||
|
everybody_NP = mkSimpleNP "усе" Masc Pl P3 ;
|
||||||
|
everything_NP = mkSimpleNP "усё" Neuter Sg P3 ;
|
||||||
|
everywhere_Adv = mkAdv "усюды" ;
|
||||||
|
few_Det = {s = \\_,_ => "некалькі"; n = Pl} ;
|
||||||
|
for_Prep = mkPrep "для" genitive ;
|
||||||
|
from_Prep = mkPrep "ад" genitive ;
|
||||||
|
|
||||||
|
i_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Masc Sg P1 ;
|
||||||
|
youSg_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Masc Sg P2 ;
|
||||||
|
he_Pron = mkPron "ён" "яго" "яму" "яго" "ім" "ім" Masc Sg P3 ;
|
||||||
|
she_Pron = mkPron "яна" "яе" "ёй" "яе" "ёй" "ёю" Fem Sg P3 ;
|
||||||
|
it_Pron = mkPron "яно" "яго" "яму" "яго" "ім" "ім" Neuter Sg P3 ;
|
||||||
|
we_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Masc Pl P1 ;
|
||||||
|
youPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||||
|
youPol_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||||
|
they_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Masc Pl P3 ;
|
||||||
|
|
||||||
|
here_Adv = mkAdv "тут" ;
|
||||||
|
here7to_Adv = mkAdv "сюды" ;
|
||||||
|
here7from_Adv = mkAdv "адсюль" ;
|
||||||
|
how_IAdv = mkIAdv "як" ;
|
||||||
|
how8many_IDet = mkIDet "колькі" ;
|
||||||
|
how8much_IAdv = mkIAdv "колькі" ;
|
||||||
|
if_Subj = mkSubj "калі" ;
|
||||||
|
in8front_Prep = mkPrep "перад" instrumental ;
|
||||||
|
in_Prep = mkPrep "у" locative ;
|
||||||
|
less_CAdv = {s = "менш"; p = "чым"} ;
|
||||||
|
many_Det = {s = \\_,_ => "шмат"; n = Pl} ;
|
||||||
|
more_CAdv = {s = "больш"; p = "чым"} ;
|
||||||
|
most_Predet = mkPredet "большасць" ;
|
||||||
|
much_Det = {s = \\_,_ => "шмат"; n = Sg} ;
|
||||||
|
must_VV = mkVV (mkV "мусіць") ;
|
||||||
|
no_Utt = {s = "не"} ;
|
||||||
|
on_Prep = mkPrep "на" locative ;
|
||||||
|
only_Predet = mkPredet "толькі" ;
|
||||||
|
or_Conj = mkConj "або" ;
|
||||||
|
otherwise_PConj = mkPConj "інакш" ;
|
||||||
|
part_Prep = mkPrep "з" genitive ;
|
||||||
|
please_Voc = mkVoc "калі ласка" ;
|
||||||
|
possess_Prep = mkPrep "у" genitive ;
|
||||||
|
quite_Adv = mkAdA "зусім" ;
|
||||||
|
so_AdA = mkAdA "так" ;
|
||||||
|
someSg_Det = {s = \\_,_ => "нейкі"; n = Sg} ;
|
||||||
|
somePl_Det = {s = \\_,_ => "некаторыя"; n = Pl} ;
|
||||||
|
somebody_NP = mkSimpleNP "нехта" Masc Sg P3 ;
|
||||||
|
something_NP = mkSimpleNP "нешта" Neuter Sg P3 ;
|
||||||
|
somewhere_Adv = mkAdv "недзе" ;
|
||||||
|
that_Quant = mkQuant "той" ;
|
||||||
|
that_Subj = mkSubj "што" ;
|
||||||
|
there_Adv = mkAdv "там" ;
|
||||||
|
there7to_Adv = mkAdv "туды" ;
|
||||||
|
there7from_Adv = mkAdv "адтуль" ;
|
||||||
|
therefore_PConj = mkPConj "таму" ;
|
||||||
|
this_Quant = mkQuant "гэты" ;
|
||||||
|
through_Prep = mkPrep "праз" accusative ;
|
||||||
|
to_Prep = mkPrep "да" genitive ;
|
||||||
|
too_AdA = mkAdA "занадта" ;
|
||||||
|
under_Prep = mkPrep "пад" instrumental ;
|
||||||
|
very_AdA = mkAdA "вельмі" ;
|
||||||
|
want_VV = mkVV (mkV009 "хацець") ;
|
||||||
|
whatPl_IP = mkSimpleNP "што" Neuter Pl P3 ;
|
||||||
|
whatSg_IP = mkSimpleNP "што" Neuter Sg P3 ;
|
||||||
|
when_IAdv = mkIAdv "калі" ;
|
||||||
|
when_Subj = mkSubj "калі" ;
|
||||||
|
where_IAdv = mkIAdv "дзе" ;
|
||||||
|
which_IQuant = mkIQuant "які" ;
|
||||||
|
whoPl_IP = mkSimpleNP "хто" Masc Pl P3 ;
|
||||||
|
whoSg_IP = mkSimpleNP "хто" Masc Sg P3 ;
|
||||||
|
why_IAdv = mkIAdv "чаму" ;
|
||||||
|
with_Prep = mkPrep "з" instrumental ;
|
||||||
|
without_Prep = mkPrep "без" genitive ;
|
||||||
|
yes_Utt = {s = "так"} ;
|
||||||
|
|
||||||
|
no_Quant = mkQuant "ніякі" ;
|
||||||
|
not_Predet = mkPredet "не" ;
|
||||||
|
if_then_Conj = mkConj "калі" ;
|
||||||
|
at_least_AdN = mkAdN "прынамсі" ;
|
||||||
|
at_most_AdN = mkAdN "найбольш" ;
|
||||||
|
nobody_NP = mkSimpleNP "ніхто" Masc Sg P3 ;
|
||||||
|
nothing_NP = mkSimpleNP "нішто" Neuter Sg P3 ;
|
||||||
|
except_Prep = mkPrep "акрамя" genitive ;
|
||||||
|
as_CAdv = {s = "так"; p = "як"} ;
|
||||||
|
have_V2 = mkV2 (mkV071 "мець") ;
|
||||||
|
language_title_Utt = {s = "беларуская"} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
concrete VerbBel of Verb = CatBel ** open ResBel, (R = ParamX), Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
UseV v = mkVPhrase v ;
|
||||||
|
|
||||||
|
ComplVV vv vp = {
|
||||||
|
s = \\t,p,a => finiteVerb vv t p a ++ vp.inf ;
|
||||||
|
inf = vv.infinitive ++ vp.inf ;
|
||||||
|
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.inf
|
||||||
|
} ;
|
||||||
|
ComplVS vs s = {
|
||||||
|
s = \\t,p,a => finiteVerb vs t p a ++ "што" ++ s.s ;
|
||||||
|
inf = vs.infinitive ++ "што" ++ s.s ;
|
||||||
|
imp = \\p,n => neg p ++ vs.imperative ! n ++ "што" ++ s.s
|
||||||
|
} ;
|
||||||
|
ComplVQ vq qs = {
|
||||||
|
s = \\t,p,a => finiteVerb vq t p a ++ qs.s ;
|
||||||
|
inf = vq.infinitive ++ qs.s ;
|
||||||
|
imp = \\p,n => neg p ++ vq.imperative ! n ++ qs.s
|
||||||
|
} ;
|
||||||
|
ComplVA va ap = {
|
||||||
|
s = \\t,p,a => finiteVerb va t p a ++ ap.s ! Nom ! genNum a.g a.n ;
|
||||||
|
inf = va.infinitive ++ ap.s ! Nom ! GSg Masc ;
|
||||||
|
imp = \\p,n => neg p ++ va.imperative ! n ++ ap.s ! Nom ! GPl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashV2a v = mkVSlash v v.c2 ;
|
||||||
|
Slash2V3 v np = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ;
|
||||||
|
inf = v.infinitive ++ prepNP v.c2 np ;
|
||||||
|
c = v.c3 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ;
|
||||||
|
post = []
|
||||||
|
} ;
|
||||||
|
Slash3V3 v np = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ prepNP v.c3 np ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = prepNP v.c3 np
|
||||||
|
} ;
|
||||||
|
SlashV2V v vp = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ vp.inf ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = vp.inf
|
||||||
|
} ;
|
||||||
|
SlashV2S v s = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ "што" ++ s.s ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = "што" ++ s.s
|
||||||
|
} ;
|
||||||
|
SlashV2Q v qs = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ qs.s ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = qs.s
|
||||||
|
} ;
|
||||||
|
SlashV2A v ap = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ;
|
||||||
|
inf = v.infinitive ++ ap.s ! Nom ! GSg Masc ;
|
||||||
|
c = v.c2 ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||||
|
post = ap.s ! Nom ! GSg Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplSlash vp np = {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
|
||||||
|
inf = vp.inf ++ prepNP vp.c np ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashVV vv vp = {
|
||||||
|
s = \\t,p,a => finiteVerb vv t p a ++ vp.s ! R.Pres ! R.Pos ! a ;
|
||||||
|
inf = vv.infinitive ++ vp.inf ;
|
||||||
|
c = vp.c ;
|
||||||
|
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.imp ! R.Pos ! n ;
|
||||||
|
post = vp.post
|
||||||
|
} ;
|
||||||
|
SlashV2VNP v np vp = {
|
||||||
|
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ++ vp.s ! R.Pres ! R.Pos ! a ;
|
||||||
|
inf = v.infinitive ++ prepNP v.c2 np ++ vp.inf ;
|
||||||
|
c = vp.c ;
|
||||||
|
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ++ vp.imp ! R.Pos ! n ;
|
||||||
|
post = vp.post
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflVP vp = {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ "сябе" ++ vp.post ;
|
||||||
|
inf = vp.inf ++ "сябе" ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ "сябе" ++ vp.post
|
||||||
|
} ;
|
||||||
|
UseComp comp = {
|
||||||
|
s = \\t,p,a => copula t p a ++ comp.s ! a ;
|
||||||
|
inf = "быць" ++ comp.s ! defaultAgr ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PassV2 v = {
|
||||||
|
s = \\t,p,a => copula t p a ++ v.participle ! a.g ! a.n ;
|
||||||
|
inf = "быць" ++ v.participle ! Masc ! Sg ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь" ++ v.participle ! Masc ! Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvVP vp adv = addAdvVP vp adv.s ;
|
||||||
|
ExtAdvVP vp adv = addAdvVP vp adv.s ;
|
||||||
|
AdVVP adv vp = addAdVVP adv.s vp ;
|
||||||
|
AdvVPSlash vp adv = addAdvSlash vp adv.s ;
|
||||||
|
AdVVPSlash adv vp = {
|
||||||
|
s = \\t,p,a => adv.s ++ vp.s ! t ! p ! a ;
|
||||||
|
inf = adv.s ++ vp.inf ;
|
||||||
|
c = vp.c ;
|
||||||
|
imp = \\p,n => adv.s ++ vp.imp ! p ! n ;
|
||||||
|
post = vp.post
|
||||||
|
} ;
|
||||||
|
VPSlashPrep vp prep = {
|
||||||
|
s = \\t,p,a => vp.s ! t ! p ! a ++ prep.s ;
|
||||||
|
inf = vp.inf ++ prep.s ;
|
||||||
|
c = prep ;
|
||||||
|
imp = \\p,n => vp.imp ! p ! n ++ prep.s ;
|
||||||
|
post = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
CompAP ap = {s = \\a => ap.s ! Nom ! genNum a.g a.n} ;
|
||||||
|
CompNP np = {s = \\_ => np.s ! Nom} ;
|
||||||
|
CompAdv adv = {s = \\_ => adv.s} ;
|
||||||
|
CompCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
|
||||||
|
UseCopula = {
|
||||||
|
s = \\t,p,a => copula t p a ;
|
||||||
|
inf = "быць" ;
|
||||||
|
imp = \\p,_ => neg p ++ "будзь"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -182,6 +182,111 @@ lin
|
|||||||
s3= ""
|
s3= ""
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
InflectionCl = \cl -> {
|
||||||
|
t = "изр" ;
|
||||||
|
s1 = heading1 ("Изречение") ;
|
||||||
|
s2 =
|
||||||
|
heading2 "Изявително Наклонение" ++
|
||||||
|
frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=\"3\"" "Акционни времена" ++
|
||||||
|
intagAttr "th" "colspan=\"3\"" "Резултативни времена") ++
|
||||||
|
tr (th "" ++ th "съобщително" ++ th "въпросително" ++
|
||||||
|
th "" ++ th "съобщително" ++ th "въпросително") ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "сегашно" ++
|
||||||
|
td (cl.s ! VPresent ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! VPresent ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "минало неопределено" ++
|
||||||
|
td (cl.s ! VPresent ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! VPresent ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! VPresent ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! VPresent ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! VPresent ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! VPresent ! Anter ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "минало несвършено" ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "минало предварително" ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VPastImperfect Indicative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "минало свършено" ++
|
||||||
|
td (cl.s ! (VPastSimple Indicative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastSimple Indicative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\" colspan=\"3\"" "") ++
|
||||||
|
tr (td (cl.s ! (VPastSimple Indicative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastSimple Indicative) ! Simul ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще" ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "бъдеще предварително" ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VFut Indicative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VFut Indicative) ! Anter ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще в миналото" ++
|
||||||
|
td (cl.s ! (VPastFut) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastFut) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "бъдеще предв. в миналото" ++
|
||||||
|
td (cl.s ! VPastFut ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! VPastFut ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! VPastFut ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! VPastFut ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! VPastFut ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! VPastFut ! Anter ! Neg ! Quest))) ++
|
||||||
|
heading3 "Условно Наклонение" ++
|
||||||
|
frameTable (
|
||||||
|
tr (th "съобщително" ++ th "въпросително") ++
|
||||||
|
tr (td (cl.s ! (VCond Indicative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VCond Indicative) ! Simul ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VCond Indicative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VCond Indicative) ! Simul ! Neg ! Quest))) ++
|
||||||
|
heading2 "Преизказни Форми" ++
|
||||||
|
frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=\"3\"" "Акционни времена" ++
|
||||||
|
intagAttr "th" "colspan=\"3\"" "Резултативни времена") ++
|
||||||
|
tr (th "" ++ th "съобщително" ++ th "въпросително" ++
|
||||||
|
th "" ++ th "съобщително" ++ th "въпросително") ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "сегашно / минало несвършено" ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "минало неопределено/предварително" ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "минало свършено" ++
|
||||||
|
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\" colspan=\"3\"" "") ++
|
||||||
|
tr (td (cl.s ! (VPastSimple Renarrative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Neg ! Quest)) ++
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще / бъдеще в миналото" ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Simul ! Pos ! Quest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" "бъдеще предв. / бъдеще предв. в миналото" ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Anter ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VFut Renarrative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Simul ! Neg ! Quest) ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VFut Renarrative) ! Anter ! Neg ! Quest))) ++
|
||||||
|
heading3 "Условно Наклонение" ++
|
||||||
|
frameTable (
|
||||||
|
tr (th "съобщително" ++ th "въпросително") ++
|
||||||
|
tr (td (cl.s ! (VCond Renarrative) ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! (VCond Renarrative) ! Simul ! Pos ! Quest)) ++
|
||||||
|
tr (td (cl.s ! (VCond Renarrative) ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! (VCond Renarrative) ! Simul ! Neg ! Quest))) ;
|
||||||
|
s3 = ""
|
||||||
|
} ;
|
||||||
|
|
||||||
InflectionV v = {
|
InflectionV v = {
|
||||||
t = "гл" ;
|
t = "гл" ;
|
||||||
s1= heading1 ("Глагол") ++
|
s1= heading1 ("Глагол") ++
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ lin
|
|||||||
|
|
||||||
AdAdV a adv = {s = a.s ++ adv.s; p = adv.p} ;
|
AdAdV a adv = {s = a.s ++ adv.s; p = adv.p} ;
|
||||||
|
|
||||||
|
UttAdV adv = {s = adv.s} ;
|
||||||
|
|
||||||
EmptyRelSlash slash = {
|
EmptyRelSlash slash = {
|
||||||
s = \\t,a,p,agr => linPrep slash.c2 ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
|
s = \\t,a,p,agr => linPrep slash.c2 ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
|
||||||
} ;
|
} ;
|
||||||
@@ -150,7 +152,7 @@ lin
|
|||||||
|
|
||||||
MkVPS t p vp = {
|
MkVPS t p vp = {
|
||||||
s = \\a =>
|
s = \\a =>
|
||||||
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
|
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
|
||||||
compl = vp.compl ! a
|
compl = vp.compl ! a
|
||||||
in t.s ++ p.s ++ verb ++ compl
|
in t.s ++ p.s ++ verb ++ compl
|
||||||
} ;
|
} ;
|
||||||
@@ -316,7 +318,6 @@ lin UseComp_estar = UseComp ;
|
|||||||
|
|
||||||
lin ProDrop pro = pro ;
|
lin ProDrop pro = pro ;
|
||||||
|
|
||||||
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
|
lin TPastSimple = {s = []} ** {t = VPastSimple Indicative} ; --# notpresent
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
|
|||||||
|
|
||||||
MkVPS t p vp = {
|
MkVPS t p vp = {
|
||||||
s = \\a =>
|
s = \\a =>
|
||||||
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
|
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
|
||||||
compl = vp.compl ! a
|
compl = vp.compl ! a
|
||||||
in t.s ++ p.s ++ verb ++ compl
|
in t.s ++ p.s ++ verb ++ compl
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -26,34 +26,13 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
agr=agrP3 (GSg Neut);
|
agr=agrP3 (GSg Neut);
|
||||||
|
|
||||||
present = verb ! (VPres (numGenNum agr.gn) agr.p) ;
|
|
||||||
aorist = verb ! (VAorist (numGenNum agr.gn) agr.p) ;
|
|
||||||
imperfect = verb ! (VImperfect (numGenNum agr.gn) agr.p) ;
|
|
||||||
perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
|
|
||||||
|
|
||||||
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ;
|
|
||||||
auxAorist = auxBe ! VAorist (numGenNum agr.gn) agr.p ;
|
|
||||||
auxCondS = auxCond ! numGenNum agr.gn ! agr.p ;
|
|
||||||
|
|
||||||
v : {aux1:Str; aux2:Str; main:Str}
|
tenses = vpTenses (predV (singleV verb)) ! t ! a ! Pos ! agr
|
||||||
= case <t,a> of {
|
|
||||||
<VPresent,Simul> => {aux1=[]; aux2=[]; main=present}
|
|
||||||
; --# notpresent
|
|
||||||
<VPresent,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
|
|
||||||
<VPastSimple,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
|
|
||||||
<VPastSimple,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
|
|
||||||
<VPastImperfect,Simul> => {aux1=[]; aux2=[]; main=imperfect} ; --# notpresent
|
|
||||||
<VPastImperfect,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
|
|
||||||
<VFut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
|
|
||||||
<VFut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
|
|
||||||
<VCond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
|
|
||||||
} ;
|
|
||||||
|
|
||||||
in case o of {
|
in case o of {
|
||||||
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
|
Main => tenses ! Inv ! Perf ++ np.s ! RObj Acc ++ adv.s ;
|
||||||
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
|
Inv => np.s ! RObj Acc ++ tenses ! Main ! Perf ++ adv.s ;
|
||||||
Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
|
Quest => tenses ! Quest ! Perf ++ np.s ! RObj Acc ++ adv.s
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
|||||||
|
|
||||||
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
|
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
|
||||||
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;
|
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;
|
||||||
|
OrdNumeralSuperl numeral a = {s = \\aform => numeral.s ! NOrd aform ++ "най" ++ hyphen ++ a.s ! indefAForm aform} ;
|
||||||
|
|
||||||
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
|
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
|
||||||
|
|
||||||
|
|||||||
+102
-26
@@ -77,12 +77,17 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
|
|
||||||
VVType = VVInf Aspect | VVGerund ;
|
VVType = VVInf Aspect | VVGerund ;
|
||||||
|
|
||||||
|
Mood =
|
||||||
|
Indicative
|
||||||
|
| Renarrative ;
|
||||||
|
|
||||||
Tense =
|
Tense =
|
||||||
VPresent
|
VPresent
|
||||||
| VPastSimple --# notpresent
|
| VPastSimple Mood --# notpresent
|
||||||
| VPastImperfect --# notpresent
|
| VPastImperfect Mood --# notpresent
|
||||||
| VFut --# notpresent
|
| VPastFut --# notpresent
|
||||||
| VCond --# notpresent
|
| VFut Mood --# notpresent
|
||||||
|
| VCond Mood --# notpresent
|
||||||
;
|
;
|
||||||
|
|
||||||
-- The order of sentence is needed already in $VP$.
|
-- The order of sentence is needed already in $VP$.
|
||||||
@@ -403,6 +408,19 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
auxWill : Number => Person => Str =
|
||||||
|
table {
|
||||||
|
Sg => table {
|
||||||
|
P1 => "щях" ;
|
||||||
|
_ => "щеше"
|
||||||
|
} ;
|
||||||
|
Pl => table {
|
||||||
|
P1 => "щяхме" ;
|
||||||
|
P2 => "щяхте" ;
|
||||||
|
P3 => "щяха"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
|
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
|
||||||
|
|
||||||
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
|
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
|
||||||
@@ -519,18 +537,17 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
_ => Pos
|
_ => Pos
|
||||||
} ;
|
} ;
|
||||||
agr = personAgr gn p1 ;
|
agr = personAgr gn p1 ;
|
||||||
verb : Bool => Str
|
verb : Order => Str
|
||||||
= \\q => vpTenses vp ! t ! a ! p ! agr ! q ! Perf ;
|
= \\o => vpTenses vp ! t ! a ! p ! agr ! o ! Perf ;
|
||||||
compl = vp.compl ! agr
|
compl = vp.compl ! agr
|
||||||
in case o of {
|
in case o of {
|
||||||
Main => subj ++ verb ! False ++ compl ;
|
Inv => verb ! Inv ++ compl ++ subj ;
|
||||||
Inv => verb ! False ++ compl ++ subj ;
|
o => subj ++ verb ! o ++ compl
|
||||||
Quest => subj ++ verb ! True ++ compl
|
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str =
|
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Order => Aspect => Str =
|
||||||
\verb -> \\t,a,p,agr,q0,asp =>
|
\verb -> \\t,a,p,agr,o,asp =>
|
||||||
let clitic = case verb.vtype of {
|
let clitic = case verb.vtype of {
|
||||||
VNormal => {s=verb.clitics; agr=agr} ;
|
VNormal => {s=verb.clitics; agr=agr} ;
|
||||||
VMedial c => {s=verb.clitics++reflClitics ! c; agr=agr} ;
|
VMedial c => {s=verb.clitics++reflClitics ! c; agr=agr} ;
|
||||||
@@ -543,11 +560,14 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
||||||
imperfect = verb.s ! Imperf ! (VImperfect (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
imperfect = verb.s ! Imperf ! (VImperfect (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
||||||
perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
|
perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
|
||||||
|
pluperfect = verb.s ! asp ! (VPluPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
|
||||||
|
|
||||||
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
|
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||||
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
|
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||||
|
auxPerf = auxBe ! VPerfect (aform clitic.agr.gn Indef (RObj Acc)) ;
|
||||||
auxImperf = auxBe ! VImperfect (numGenNum clitic.agr.gn) clitic.agr.p ;
|
auxImperf = auxBe ! VImperfect (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||||
auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
|
auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
|
||||||
|
auxWillS = auxWill ! numGenNum clitic.agr.gn ! clitic.agr.p ;
|
||||||
|
|
||||||
apc : Str -> Str = \s ->
|
apc : Str -> Str = \s ->
|
||||||
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
|
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
|
||||||
@@ -555,22 +575,33 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
_ => auxPres++s++clitic.s
|
_ => auxPres++s++clitic.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ли"; _ => []} ;
|
li0 = case <verb.ad.isEmpty,o> of {
|
||||||
|
<False,Quest> => "ли" ;
|
||||||
|
_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
q = case verb.ad.isEmpty of {True => q0; False => False} ;
|
li = case <verb.ad.isEmpty,o> of {
|
||||||
li = case q of {True => "ли"; _ => []} ;
|
<True,Quest> => "ли";
|
||||||
|
_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
|
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||||
case p of {
|
case p of {
|
||||||
Pos => case q of {True => {s1=[]; s2="ли"++apc []};
|
Pos => case <verb.ad.isEmpty,o> of {
|
||||||
False => {s1=apc []; s2=[]}} ;
|
<True,Quest> => {s1=[]; s2="ли"++apc []};
|
||||||
|
<True,Inv> => {s1=[]; s2=apc []};
|
||||||
|
_ => {s1=apc []; s2=[]}
|
||||||
|
} ;
|
||||||
Neg => {s1="не"++apc li; s2=[]}
|
Neg => {s1="не"++apc li; s2=[]}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
|
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||||
case p of {
|
case p of {
|
||||||
Pos => case q of {True => {s1=[]; s2="ли"++s};
|
Pos => case <verb.ad.isEmpty,o> of {
|
||||||
False => {s1=s; s2=[]}} ;
|
<True,Quest> => {s1=[]; s2="ли"++s};
|
||||||
|
<True,Inv> => {s1=[]; s2=s};
|
||||||
|
_ => {s1=s; s2=[]}
|
||||||
|
} ;
|
||||||
Neg => case verb.vtype of
|
Neg => case verb.vtype of
|
||||||
{VNormal => {s1="не"++s; s2=li} ;
|
{VNormal => {s1="не"++s; s2=li} ;
|
||||||
_ => {s1="не"++s++li; s2=[]}}
|
_ => {s1="не"++s++li; s2=[]}}
|
||||||
@@ -588,18 +619,63 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
|
|||||||
Neg => {s1="не"++s++li++clitic.s; s2=[]}
|
Neg => {s1="не"++s++li++clitic.s; s2=[]}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
vf5 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||||
|
case p of {
|
||||||
|
Pos => {s1=auxWillS++li++"да"++s; s2=[]} ;
|
||||||
|
Neg => {s1="нямаше"++li++"да"++s; s2=[]}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
vf6 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||||
|
case p of {
|
||||||
|
Pos => let aux : Str =
|
||||||
|
case numGenNum clitic.agr.gn of {
|
||||||
|
Sg => "щял" ;
|
||||||
|
Pl => "щели"
|
||||||
|
}
|
||||||
|
in case <verb.ad.isEmpty,o> of {
|
||||||
|
<True,Quest> => {s1=aux++li++auxPres++"да"++s; s2=[]};
|
||||||
|
<True,Inv> => {s1=aux++auxPres++"да"++s; s2=[]};
|
||||||
|
_ => {s1=auxPres++aux++li++"да"++s; s2=[]}
|
||||||
|
} ;
|
||||||
|
Neg => {s1="нямало"++li++"да"++s; s2=[]}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
vf7 : {s1 : Str; s2 : Str} =
|
||||||
|
case <a,clitic.agr.p> of {
|
||||||
|
<Simul,P1> => case <p,o> of {
|
||||||
|
<Pos,Inv> => {s1=[]; s2=auxPres++li++clitic.s} ;
|
||||||
|
<Pos,_> => {s1=auxPres++li++clitic.s; s2=[]} ;
|
||||||
|
<Neg,_> => {s1="не"++auxPres++li++clitic.s; s2=[]}
|
||||||
|
} ;
|
||||||
|
<Simul,P2> => vf4 auxPres ;
|
||||||
|
<Simul,P3> => vf2 clitic.s ;
|
||||||
|
<Anter,P3> => vf4 auxPerf ;
|
||||||
|
<Anter,_ > => case <p,o> of {
|
||||||
|
<Pos,Inv> => {s1=[]; s2=auxPres++li++clitic.s++auxPerf} ;
|
||||||
|
<Pos,_> => {s1=auxPres++li++clitic.s++auxPerf; s2=[]} ;
|
||||||
|
<Neg,_> => {s1="не"++auxPres++li++clitic.s++auxPerf; s2=[]}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
verbs : {aux:{s1:Str; s2:Str}; main:Str} =
|
verbs : {aux:{s1:Str; s2:Str}; main:Str} =
|
||||||
case <t,a> of {
|
case <t,a> of {
|
||||||
<VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
|
<VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
|
||||||
; --# notpresent
|
; --# notpresent
|
||||||
<VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
|
<VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
|
||||||
<VPastSimple,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
|
<VPastSimple Indicative,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
|
||||||
<VPastSimple,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
|
<VPastSimple Indicative,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
|
||||||
<VPastImperfect,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
|
<VPastSimple Renarrative,_> => {aux=vf7; main=pluperfect} ; --# notpresent
|
||||||
<VPastImperfect,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
|
<VPastImperfect Indicative,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
|
||||||
<VFut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
|
<VPastImperfect Indicative,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
|
||||||
<VFut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
|
<VPastImperfect Renarrative,_> => {aux=vf7; main=perfect} ; --# notpresent
|
||||||
<VCond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
|
<VPastFut,Simul> => {aux=vf5 clitic.s; main=present} ; --# notpresent
|
||||||
|
<VPastFut,Anter> => {aux=vf5 (apc []); main=perfect} ; --# notpresent
|
||||||
|
<VFut Indicative, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
|
||||||
|
<VFut Indicative, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
|
||||||
|
<VFut Renarrative, Simul> => {aux=vf6 clitic.s; main=present} ; --# notpresent
|
||||||
|
<VFut Renarrative, Anter> => {aux=vf6 (apc []); main=perfect} ; --# notpresent
|
||||||
|
<VCond Indicative,_ > => {aux=vf4 auxCondS; main=perfect} ; --# notpresent
|
||||||
|
<VCond Renarrative,_ > => {aux=vf4 (auxCondS++auxPerf); main=perfect} --# notpresent
|
||||||
}
|
}
|
||||||
|
|
||||||
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
|
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TTAnt,TPr
|
|||||||
lin
|
lin
|
||||||
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
|
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
|
||||||
TPres = {s = []} ** {t = VPresent} ;
|
TPres = {s = []} ** {t = VPresent} ;
|
||||||
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
|
TPast = {s = []} ** {t = VPastImperfect Indicative} ; --# notpresent
|
||||||
TFut = {s = []} ** {t = VFut} ; --# notpresent
|
TFut = {s = []} ** {t = VFut Indicative} ; --# notpresent
|
||||||
TCond = {s = []} ** {t = VCond} ; --# notpresent
|
TCond = {s = []} ** {t = VCond Indicative} ; --# notpresent
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ lin
|
|||||||
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
|
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
|
||||||
ApposNP = variants {} ; -- NP -> NP -> NP ; -- Mr Macron, the president of France,
|
ApposNP = variants {} ; -- NP -> NP -> NP ; -- Mr Macron, the president of France,
|
||||||
AdAdV = variants {} ; -- AdA -> AdV -> AdV ; -- almost always
|
AdAdV = variants {} ; -- AdA -> AdV -> AdV ; -- almost always
|
||||||
UttAdV = variants {} ; -- AdV -> Utt ; -- always(!)
|
UttAdV adv = {s = adv.s} ; -- AdV -> Utt ; -- always(!)
|
||||||
PositAdVAdj = variants {} ; -- A -> AdV ; -- (that she) positively (sleeps)
|
PositAdVAdj = variants {} ; -- A -> AdV ; -- (that she) positively (sleeps)
|
||||||
CompS = variants {} ; -- S -> Comp ; -- (the fact is) that she sleeps
|
CompS = variants {} ; -- S -> Comp ; -- (the fact is) that she sleeps
|
||||||
CompQS = variants {} ; -- QS -> Comp ; -- (the question is) who sleeps
|
CompQS = variants {} ; -- QS -> Comp ; -- (the question is) who sleeps
|
||||||
|
|||||||
@@ -6,4 +6,8 @@ lin
|
|||||||
s = prep.s ++ np.prep ! prep.c
|
s = prep.s ++ np.prep ! prep.c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
SubjS subj s = {
|
||||||
|
s = subj.s ++ s.s
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -21,10 +21,11 @@ concrete CatCze of Cat =
|
|||||||
RP = AdjForms ;
|
RP = AdjForms ;
|
||||||
|
|
||||||
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
|
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
|
||||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
|
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase ; ind : Agr => Str} ; -- ind : incorporated indirect object, rendered after the object slot
|
||||||
V = ResCze.VerbForms ;
|
V = ResCze.VerbForms ;
|
||||||
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
|
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
|
||||||
VS,VQ = ResCze.VerbForms ;
|
V3 = ResCze.VerbForms ** {c,c2 : ComplementCase} ; -- c : direct object, c2 : indirect object
|
||||||
|
VS,VQ,VV = ResCze.VerbForms ;
|
||||||
|
|
||||||
A = ResCze.AdjForms ;
|
A = ResCze.AdjForms ;
|
||||||
AP = ResCze.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
|
AP = ResCze.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ concrete ExtendCze of Extend = CatCze **
|
|||||||
,SlashBareV2S
|
,SlashBareV2S
|
||||||
,PredIAdvVP
|
,PredIAdvVP
|
||||||
,PredAPVP
|
,PredAPVP
|
||||||
,ExistsNP
|
|
||||||
,ExistS
|
,ExistS
|
||||||
,ExistPluralCN
|
,ExistPluralCN
|
||||||
,ExistNPQS
|
,ExistNPQS
|
||||||
|
|||||||
@@ -1,5 +1,32 @@
|
|||||||
concrete IdiomCze of Idiom = CatCze ** open Prelude, ResCze in {
|
concrete IdiomCze of Idiom = CatCze ** open Prelude, ResCze in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
ImpP3 np vp = {
|
||||||
|
s = "nechť" ++ np.s ! Nom ++ vp.clit ! np.a ++
|
||||||
|
verbAgr vp.verb np.a True ++ vp.compl ! np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ImpersCl vp = let agr = Ag Neutr Sg P3 in {
|
||||||
|
subj = [] ;
|
||||||
|
clit = vp.clit ! agr ;
|
||||||
|
compl = vp.compl ! agr ;
|
||||||
|
verb = vp.verb ;
|
||||||
|
a = agr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GenericCl vp = let agr = Ag (Masc Anim) Pl P3 in {
|
||||||
|
subj = [] ;
|
||||||
|
clit = vp.clit ! agr ;
|
||||||
|
compl = vp.compl ! agr ;
|
||||||
|
verb = vp.verb ;
|
||||||
|
a = agr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ExistNP np = {
|
||||||
|
subj, clit = [] ;
|
||||||
|
compl = np.s ! Nom ;
|
||||||
|
verb = iii_kupovatVerbForms "existovat" ;
|
||||||
|
a = np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
--# -path=.:../abstract:../common:../api
|
--# -path=.:../abstract:../common:../api
|
||||||
|
|
||||||
concrete LangCze of Lang =
|
concrete LangCze of Lang =
|
||||||
GrammarCze,
|
GrammarCze,
|
||||||
LexiconCze
|
LexiconCze
|
||||||
-- ,ConstructionCze
|
-- ,ConstructionCze
|
||||||
-- ,DocumentationCze --# notpresent
|
-- ,DocumentationCze --# notpresent
|
||||||
|
,MarkupCze - [stringMark]
|
||||||
** {
|
** {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
--# -path=.:../abstract:../common
|
||||||
|
|
||||||
|
concrete MarkupCze of Markup = CatCze, MarkHTMLX ** open ResCze in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
MarkupCN m cn = cn ** {s = \\n,c => appMark m (cn.s ! n ! c)} ;
|
||||||
|
|
||||||
|
-- s, clit and prep are alternative surface forms, so each is marked;
|
||||||
|
-- but clit ! Nom is the pro-drop subject, empty for every pronoun,
|
||||||
|
-- and marking it up would leave the tags around nothing
|
||||||
|
MarkupNP m np = np ** {
|
||||||
|
s = \\c => appMark m (np.s ! c) ;
|
||||||
|
clit = \\c => case c of {
|
||||||
|
Nom => np.clit ! Nom ;
|
||||||
|
_ => appMark m (np.clit ! c)
|
||||||
|
} ;
|
||||||
|
prep = \\c => appMark m (np.prep ! c)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MarkupAP m ap = ap ** {s = \\g,n,c => appMark m (ap.s ! g ! n ! c)} ;
|
||||||
|
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||||
|
MarkupS m s = {s = appMark m s.s} ;
|
||||||
|
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||||
|
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||||
|
MarkupText m txt = {s = appMark m txt.s} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -9,12 +9,10 @@ oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
|
|||||||
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
||||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||||
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
|
|
||||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||||
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||||
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||||
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||||
oper CompCN : CN -> Comp = notYet "CompCN" ;
|
|
||||||
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
||||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||||
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
|
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
|
||||||
@@ -63,8 +61,6 @@ oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
|
|||||||
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||||
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
||||||
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||||
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
|
|
||||||
oper Slash3V3 : V3 -> NP -> VPSlash = notYet "Slash3V3" ;
|
|
||||||
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
|
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
|
||||||
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
|
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
|
||||||
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
|
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
|
||||||
|
|||||||
@@ -99,5 +99,12 @@ lin
|
|||||||
NumDecimal ds = ds ** {s = \\_,_ => ds.s} ;
|
NumDecimal ds = ds ** {s = \\_,_ => ds.s} ;
|
||||||
NumNumeral nu = nu ;
|
NumNumeral nu = nu ;
|
||||||
|
|
||||||
|
SentCN cn sc = cn ** {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
|
||||||
|
|
||||||
|
PredetNP pred np = np ** {
|
||||||
|
s = \\c => pred.s ++ np.s ! c ;
|
||||||
|
clit = \\c => pred.s ++ np.clit ! c ;
|
||||||
|
prep = \\c => pred.s ++ np.prep ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,6 +122,14 @@ oper
|
|||||||
= \vf,c -> vf ** {c = c} ;
|
= \vf,c -> vf ** {c = c} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkV3 = overload {
|
||||||
|
mkV3 : VerbForms -> VerbForms ** {c,c2 : ComplementCase}
|
||||||
|
= \vf -> vf ** {c = {s = [] ; c = Acc ; hasPrep = False} ;
|
||||||
|
c2 = {s = [] ; c = Dat ; hasPrep = False}} ;
|
||||||
|
mkV3 : VerbForms -> ComplementCase -> ComplementCase -> VerbForms ** {c,c2 : ComplementCase}
|
||||||
|
= \vf,c,c2 -> vf ** {c = c ; c2 = c2} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
-- Adverbs, prepositions, conjunctions, ...
|
-- Adverbs, prepositions, conjunctions, ...
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,11 @@ lin
|
|||||||
UttCN cn = {s = cn.s ! Sg ! Nom} ;
|
UttCN cn = {s = cn.s ! Sg ! Nom} ;
|
||||||
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! Nom} ;
|
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! Nom} ;
|
||||||
UttNP np = {s = np.s ! Nom} ;
|
UttNP np = {s = np.s ! Nom} ;
|
||||||
|
UttVP vp = let agr = Ag Neutr Sg P3 in {s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
|
||||||
|
|
||||||
|
UttImpSg pol imp = {s = pol.s ++ imp.s} ;
|
||||||
|
UttImpPl pol imp = {s = pol.s ++ imp.s} ;
|
||||||
|
UttImpPol pol imp = {s = pol.s ++ imp.s} ;
|
||||||
|
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,6 @@ concrete QuestionCze of Question = CatCze **
|
|||||||
lin
|
lin
|
||||||
QuestCl cl = cl ; ----
|
QuestCl cl = cl ; ----
|
||||||
|
|
||||||
|
QuestIAdv iadv cl = cl ** {clit = iadv.s ++ cl.clit} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+122
-19
@@ -28,6 +28,11 @@ oper
|
|||||||
softConsonant : pattern Str = #("ť"|"ď"|"j"|"ň"|"ř"|"š"|"c"|"č"|"ž") ;
|
softConsonant : pattern Str = #("ť"|"ď"|"j"|"ň"|"ř"|"š"|"c"|"č"|"ž") ;
|
||||||
neutralConsonant : pattern Str = #("b"|"f"|"l"|"m"|"p"|"s"|"v") ;
|
neutralConsonant : pattern Str = #("b"|"f"|"l"|"m"|"p"|"s"|"v") ;
|
||||||
|
|
||||||
|
-- neutral consonants take the hard endings by default (hrad, pán), and so do
|
||||||
|
-- the foreign "z" and "x"; this is the class to test when choosing a paradigm
|
||||||
|
hardishConsonant : pattern Str =
|
||||||
|
#("d"|"t"|"g"|"h"|"k"|"n"|"r" | "b"|"f"|"l"|"m"|"p"|"s"|"v" | "z"|"x") ;
|
||||||
|
|
||||||
consonant : pattern Str =
|
consonant : pattern Str =
|
||||||
#(
|
#(
|
||||||
"d" | "t" | "g" | "h" | "k" | "n" | "r" |
|
"d" | "t" | "g" | "h" | "k" | "n" | "r" |
|
||||||
@@ -139,22 +144,33 @@ oper
|
|||||||
|
|
||||||
declensionNounForms : (nom,gen : Str) -> Gender -> NounForms
|
declensionNounForms : (nom,gen : Str) -> Gender -> NounForms
|
||||||
= \nom,gen,g ->
|
= \nom,gen,g ->
|
||||||
let decl : DeclensionType = case <g, nom, gen> of {
|
-- the oblique stem, for the paradigms that cannot derive it from the nominative
|
||||||
<Masc Anim, _ + #hardConsonant, _ + "a"> => declPAN ;
|
let stem : Str = Predef.tk 1 gen ;
|
||||||
<Masc Anim, _ + "a" , _ + "a"> => declPREDSEDA ;
|
decl : DeclensionType = case <g, nom, gen> of {
|
||||||
<Masc Inanim, _ + #hardConsonant, _ + "u"> => declHRAD ;
|
<Masc Anim, _ + "tel" , _ + "e"> => declMUZstem stem ;
|
||||||
<Fem, _ + "a" , _ + "y"> => declZENA ;
|
|
||||||
<Neutr, _ + "o" , _ + "a"> => declMESTO ;
|
|
||||||
<Masc Anim, _ + #softConsonant, _ + "e"> => declMUZ ;
|
|
||||||
<Masc Anim, _ + "tel" , _ + "e"> => declMUZ ;
|
|
||||||
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
|
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
|
||||||
<Masc Inanim, _ + #softConsonant, _ + "e"> => declSTROJ ;
|
<Masc Anim, _ + ("us"|"os") , _ + "a"> => declLATINUSA ;
|
||||||
|
<Masc Anim, _ + "a" , _ + "a"> => declPREDSEDA ;
|
||||||
|
<Masc Anim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declMUZstem stem ;
|
||||||
|
<Masc Anim, _ + #hardishConsonant, _ + "a"> => declPAN ;
|
||||||
|
<Masc Inanim, _ + ("us"|"os") , _ + "u"> => declLATINUS ;
|
||||||
|
<Masc Inanim, _ + "ý" , _ + "ého"> => declADJM ;
|
||||||
|
<Masc Inanim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declSTROJ ;
|
||||||
|
<Masc Inanim, _ + #hardishConsonant, _ + "u"> => declHRADstem stem ;
|
||||||
|
<Masc Inanim, _ + #hardishConsonant, _ + "a"> => declHRADAstem stem ;
|
||||||
|
<Fem, _ + "a" , _ + "y"> => declZENA ;
|
||||||
|
<Fem, _ + "á" , _ + "é"> => declADJF ;
|
||||||
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
|
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
|
||||||
<Fem, _ + #softConsonant, _ + "e"> => declPISEN ;
|
<Fem, _ + (#softConsonant|#hardishConsonant), _ + "i"> => declKOST ; --- also many other "st" 3.6.3
|
||||||
<Fem, _ + "ost" , _ + "i"> => declKOST ; --- also many other "st" 3.6.3
|
<Fem, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declPISEN ;
|
||||||
|
<Neutr, _ + "um" , _ + "a"> => declLATINUM ;
|
||||||
|
<Neutr, _ + "ma" , _ + ("matu"|"mata")> => declGREEKMA ;
|
||||||
|
<Neutr, _ + "o" , _ + "a"> => declMESTO ;
|
||||||
<Neutr, _ + "e" , _+"ete"> => declKURE ;
|
<Neutr, _ + "e" , _+"ete"> => declKURE ;
|
||||||
<Neutr, _ + "e" , _ + "e"> => declMORE ;
|
|
||||||
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
|
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
|
||||||
|
<Neutr, _ + ("e"|"ě") , _ + ("e"|"ě")> => declMORE ;
|
||||||
|
<Masc Inanim, _ + ("é"|"i"|"y"|"e"), _ + ("é"|"i"|"y"|"e")> => declINVAR (Masc Inanim) ;
|
||||||
|
<Neutr, _ + ("é"|"i"|"y") , _ + ("é"|"i"|"y")> => declINVAR Neutr ;
|
||||||
_ => (\s -> declSTROJ ("" + s)) -- Predef.error ("cannot infer declension type for" ++ nom ++ gen)
|
_ => (\s -> declSTROJ ("" + s)) -- Predef.error ("cannot infer declension type for" ++ nom ++ gen)
|
||||||
}
|
}
|
||||||
in decl nom ;
|
in decl nom ;
|
||||||
@@ -165,12 +181,14 @@ oper
|
|||||||
= \s -> case s of {
|
= \s -> case s of {
|
||||||
_ + "ost" => declKOST s ;
|
_ + "ost" => declKOST s ;
|
||||||
_ + "tel" => declMUZ s ;
|
_ + "tel" => declMUZ s ;
|
||||||
_ + #hardConsonant => declHRAD s ;
|
_ + "us" => declLATINUS s ;
|
||||||
|
_ + "um" => declLATINUM s ;
|
||||||
|
_ + #hardishConsonant => declHRAD s ;
|
||||||
_ + #softConsonant => declSTROJ s ;
|
_ + #softConsonant => declSTROJ s ;
|
||||||
_ + "a" => declZENA s ;
|
_ + "a" => declZENA s ;
|
||||||
_ + "o" => declMESTO s ;
|
_ + "o" => declMESTO s ;
|
||||||
_ + "ce" => declSOUDCE s ;
|
_ + "ce" => declSOUDCE s ;
|
||||||
_ + "e" => declMORE s ;
|
_ + ("e"|"ě") => declMORE s ;
|
||||||
_ + "í" => declSTAVENI s ;
|
_ + "í" => declSTAVENI s ;
|
||||||
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
||||||
} ;
|
} ;
|
||||||
@@ -216,9 +234,9 @@ oper
|
|||||||
g = Masc Anim
|
g = Masc Anim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
|
-- the oblique stem is a separate argument, because it cannot always be
|
||||||
let hrd = dropFleetingE hrad
|
-- derived from the nominative: uzel-uzlu but člen-členu
|
||||||
in
|
declHRADstem : Str -> DeclensionType = \hrd,hrad ->
|
||||||
{
|
{
|
||||||
snom,sacc = hrad ;
|
snom,sacc = hrad ;
|
||||||
sgen,sdat = hrd + "u" ; --- Berlín-a
|
sgen,sdat = hrd + "u" ; --- Berlín-a
|
||||||
@@ -233,6 +251,9 @@ oper
|
|||||||
g = Masc Inanim
|
g = Masc Inanim
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
|
||||||
|
declHRADstem (dropFleetingE hrad) hrad ;
|
||||||
|
|
||||||
declZENA : DeclensionType = \zena -> --- 3.6.1 sge y/i ; pgen sometimes shortening
|
declZENA : DeclensionType = \zena -> --- 3.6.1 sge y/i ; pgen sometimes shortening
|
||||||
let zen = init zena
|
let zen = init zena
|
||||||
in
|
in
|
||||||
@@ -270,9 +291,91 @@ oper
|
|||||||
g = Neutr
|
g = Neutr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Latin masculines in -us: the ending is dropped outside the nominative
|
||||||
|
-- (algoritmus - algoritmu), otherwise they follow hrad
|
||||||
|
declLATINUS : DeclensionType = \algoritmus ->
|
||||||
|
let algoritm = Predef.tk 2 algoritmus
|
||||||
|
in declHRAD algoritm ** {
|
||||||
|
snom, sacc = algoritmus ;
|
||||||
|
svoc = algoritm + "e"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
declLATINUSA : DeclensionType = \genius ->
|
||||||
|
declLATINUS genius ** {g = Masc Anim} ;
|
||||||
|
|
||||||
|
-- Latin neuters in -um: the ending is dropped outside the nominative
|
||||||
|
-- (kontinuum - kontinua), otherwise they follow město
|
||||||
|
declLATINUM : DeclensionType = \kompaktum ->
|
||||||
|
let kompakt = Predef.tk 2 kompaktum
|
||||||
|
in declMESTO (kompakt + "o") ** {
|
||||||
|
snom, sacc, svoc = kompaktum
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Greek neuters in -ma, with the stem extended by -t- (schéma - schématu)
|
||||||
|
declGREEKMA : DeclensionType = \schema ->
|
||||||
|
let schemat = schema + "t"
|
||||||
|
in {
|
||||||
|
snom,sacc,svoc = schema ;
|
||||||
|
sgen,sdat,sloc = schemat + "u" ;
|
||||||
|
sins = schemat + "em" ;
|
||||||
|
|
||||||
|
pnom,pacc = schemat + "a" ;
|
||||||
|
pgen = schemat ;
|
||||||
|
pdat = schemat + "ům" ;
|
||||||
|
ploc = schemat + "ech" ;
|
||||||
|
pins = schemat + "y" ;
|
||||||
|
g = Neutr
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- the hrad type with genitive -a instead of -u (les - lesa, zákon - zákona)
|
||||||
|
declHRADAstem : Str -> DeclensionType = \les_,les ->
|
||||||
|
declHRADstem les_ les ** {sgen = les_ + "a"} ;
|
||||||
|
|
||||||
|
declHRADA : DeclensionType = \les ->
|
||||||
|
declHRADAstem (dropFleetingE les) les ;
|
||||||
|
|
||||||
|
-- nouns that are adjectives in form: proměnná - proměnné, nultý - nultého
|
||||||
|
declADJF : DeclensionType = \promenna ->
|
||||||
|
let a = mladyAdjForms (init promenna + "ý")
|
||||||
|
in {
|
||||||
|
snom,svoc = a.fsnom ;
|
||||||
|
sgen = a.fsgen ;
|
||||||
|
sdat,sloc = a.fsdat ;
|
||||||
|
sacc = a.fsacc ;
|
||||||
|
sins = a.fsins ;
|
||||||
|
pnom,pacc = a.fpnom ;
|
||||||
|
pgen,ploc = a.pgen ;
|
||||||
|
pdat = a.msins ;
|
||||||
|
pins = a.pins ;
|
||||||
|
g = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
declADJM : DeclensionType = \nulty ->
|
||||||
|
let a = mladyAdjForms nulty
|
||||||
|
in {
|
||||||
|
snom,sacc,svoc = a.msnom ;
|
||||||
|
sgen = a.msgen ;
|
||||||
|
sdat = a.msdat ;
|
||||||
|
sloc = a.msloc ;
|
||||||
|
sins = a.msins ;
|
||||||
|
pnom,pacc = a.fpnom ;
|
||||||
|
pgen,ploc = a.pgen ;
|
||||||
|
pdat = a.msins ;
|
||||||
|
pins = a.pins ;
|
||||||
|
g = Masc Inanim
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- indeclinable loans: bombé, tamari, software
|
||||||
|
declINVAR : Gender -> DeclensionType = \g,s -> {
|
||||||
|
snom,sgen,sdat,sacc,svoc,sloc,sins = s ;
|
||||||
|
pnom,pgen,pdat,pacc,ploc,pins = s ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
declMUZ : DeclensionType = \muz_ -> --- 3.5.3 : sdat,sloc ; pnom
|
declMUZ : DeclensionType = \muz_ -> --- 3.5.3 : sdat,sloc ; pnom
|
||||||
let muz = dropFleetingE muz_
|
declMUZstem (dropFleetingE muz_) muz_ ;
|
||||||
in
|
|
||||||
|
declMUZstem : Str -> DeclensionType = \muz,muz_ ->
|
||||||
{
|
{
|
||||||
snom = muz_ ;
|
snom = muz_ ;
|
||||||
sgen,sacc = muz + "e" ; --- pacc
|
sgen,sacc = muz + "e" ; --- pacc
|
||||||
|
|||||||
@@ -28,5 +28,24 @@ lin
|
|||||||
pol.s ++ verbAgr rcl.verb a pol.p ++
|
pol.s ++ verbAgr rcl.verb a pol.p ++
|
||||||
rcl.compl ! a ;
|
rcl.compl ! a ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- no imperative in VerbForms yet; the 1st person plural present is used
|
||||||
|
-- instead, which is the normal register in mathematical Czech
|
||||||
|
-- ("předpokládáme, že ..." = "we assume that ...")
|
||||||
|
ImpVP vp = let agr = Ag (Masc Anim) Pl P1 in
|
||||||
|
{s = vp.clit ! agr ++ verbAgr vp.verb agr True ++ vp.compl ! agr} ;
|
||||||
|
|
||||||
|
EmbedS s = {s = "že" ++ s.s} ;
|
||||||
|
|
||||||
|
EmbedQS qs = {s = qs.s} ;
|
||||||
|
|
||||||
|
EmbedVP vp = let agr = Ag Neutr Sg P3 in
|
||||||
|
{s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
|
||||||
|
|
||||||
|
AdvS a s = {s = a.s ++ s.s} ;
|
||||||
|
|
||||||
|
ExtAdvS a s = {s = a.s ++ SOFT_BIND ++ "," ++ s.s} ;
|
||||||
|
|
||||||
|
SSubjS a subj b = {s = a.s ++ SOFT_BIND ++ "," ++ subj.s ++ b.s} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,42 @@
|
|||||||
concrete StructuralCze of Structural = CatCze **
|
concrete StructuralCze of Structural = CatCze **
|
||||||
open ParadigmsCze, ResCze, Prelude in {
|
open ParadigmsCze, ResCze, Prelude in {
|
||||||
|
|
||||||
|
-- a singular determiner inflecting like an adjective, e.g. "každý", "nějaký"
|
||||||
|
oper
|
||||||
|
adjDet : AdjForms -> Determiner = \afs -> {
|
||||||
|
s = \\g,c => (adjFormsAdjective afs).s ! g ! Sg ! c ;
|
||||||
|
size = Num1
|
||||||
|
} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
all_Predet = {s = "všechny"} ;
|
||||||
and_Conj = mkConj "a" ;
|
and_Conj = mkConj "a" ;
|
||||||
|
both7and_DConj = {s1 = "jak" ; s2 = "tak"} ;
|
||||||
|
between_Prep = mkPrep "mezi" Ins ;
|
||||||
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
|
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
|
||||||
|
by8means_Prep = mkPrep "pomocí" Gen ;
|
||||||
|
can_VV = {
|
||||||
|
inf = "moci" ;
|
||||||
|
pressg1 = "mohu" ;
|
||||||
|
pressg2 = "můžeš" ;
|
||||||
|
pressg3, negpressg3 = "může" ;
|
||||||
|
prespl1 = "můžeme" ;
|
||||||
|
prespl2 = "můžete" ;
|
||||||
|
prespl3 = "mohou" ;
|
||||||
|
pastpartsg = "mohl" ;
|
||||||
|
pastpartpl = "mohli" ;
|
||||||
|
} ;
|
||||||
|
either7or_DConj = {s1 = "buď" ; s2 = "nebo"} ;
|
||||||
|
every_Det = adjDet (mladyAdjForms "každý") ;
|
||||||
few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála
|
few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála
|
||||||
for_Prep = mkPrep "pro" accusative ;
|
for_Prep = mkPrep "pro" accusative ;
|
||||||
|
if_Subj = {s = "jestliže"} ;
|
||||||
|
no_Quant = adjFormsAdjective (mladyAdjForms "žádný") ;
|
||||||
|
on_Prep = mkPrep "na" Loc ;
|
||||||
|
someSg_Det = adjDet (mladyAdjForms "nějaký") ;
|
||||||
|
that_Subj = {s = "že"} ;
|
||||||
|
under_Prep = mkPrep "pod" Ins ;
|
||||||
|
where_IAdv = {s = "kde"} ;
|
||||||
from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters
|
from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters
|
||||||
have_V2 = mkV2 haveVerbForms ;
|
have_V2 = mkV2 haveVerbForms ;
|
||||||
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
|
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
|
||||||
|
|||||||
+41
-2
@@ -3,9 +3,48 @@
|
|||||||
concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in {
|
concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Symb = {s : Str} ;
|
Symb, [Symb] = SS ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
MkSymb s = s ;
|
MkSymb s = s ;
|
||||||
SymbPN s = lin PN {s = \\_ => s.s ; g = Neutr} ;
|
|
||||||
|
BaseSymb = infixSS "a" ;
|
||||||
|
ConsSymb = infixSS bindComma ;
|
||||||
|
|
||||||
|
SymbPN s = symbolPN s.s ;
|
||||||
|
IntPN i = symbolPN i.s ;
|
||||||
|
FloatPN f = symbolPN f.s ;
|
||||||
|
|
||||||
|
-- unlike a bare symbol, a cardinal used as a name still declines
|
||||||
|
NumPN card = lin PN {s = \\c => card.s ! Neutr ! c ; g = Neutr} ;
|
||||||
|
|
||||||
|
-- the numeral is an invariable label: "úroveň pět", "na úrovni pět"
|
||||||
|
CNNumNP cn card = {
|
||||||
|
s,clit,prep = \\c => cn.s ! Sg ! c ++ card.s ! cn.g ! Nom ;
|
||||||
|
a = Ag cn.g Sg P3 ;
|
||||||
|
hasClit = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
CNIntNP cn i = {
|
||||||
|
s,clit,prep = \\c => cn.s ! Sg ! c ++ i.s ;
|
||||||
|
a = Ag cn.g Sg P3 ;
|
||||||
|
hasClit = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- as DetCN in NounCze, with the symbols in apposition
|
||||||
|
CNSymbNP det cn xs = {
|
||||||
|
s,clit,prep = \\c => det.s ! cn.g ! c ++ numSizeForm cn.s det.size c ++ xs.s ;
|
||||||
|
a = numSizeAgr cn.g det.size P3 ;
|
||||||
|
hasClit = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SymbS sy = sy ;
|
||||||
|
|
||||||
|
SymbNum sy = {s = \\_,_ => sy.s ; size = Num5} ; -- "n čísel", like numerals from 5 up
|
||||||
|
SymbOrd sy = {s = glue sy.s "-tý"} ; ---- Ord is still an uninflected string
|
||||||
|
|
||||||
|
oper
|
||||||
|
symbolPN : Str -> PN
|
||||||
|
= \s -> lin PN {s = \\_ => s ; g = Neutr} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+47
-3
@@ -8,17 +8,35 @@ lin
|
|||||||
|
|
||||||
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
|
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
|
||||||
<True,False> => vps ** {
|
<True,False> => vps ** {
|
||||||
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c
|
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c ;
|
||||||
|
compl = \\a => vps.compl ! a ++ vps.ind ! a
|
||||||
} ;
|
} ;
|
||||||
_ => vps ** {
|
_ => vps ** {
|
||||||
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c
|
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c ++ vps.ind ! a
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
SlashV2a v = {
|
SlashV2a v = {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
clit,compl = \\_ => [] ;
|
clit,compl = \\_ => [] ;
|
||||||
c = v.c
|
c = v.c ;
|
||||||
|
ind = \\_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- three-place verbs: c = direct object case, c2 = indirect object case
|
||||||
|
Slash2V3 v np = { -- fill the direct object, leave the indirect open
|
||||||
|
verb = v ;
|
||||||
|
clit = \\_ => [] ;
|
||||||
|
compl = \\_ => v.c.s ++ np.s ! v.c.c ;
|
||||||
|
c = v.c2 ;
|
||||||
|
ind = \\_ => []
|
||||||
|
} ;
|
||||||
|
Slash3V3 v np = { -- fill the indirect object (rendered after the object slot)
|
||||||
|
verb = v ;
|
||||||
|
clit = \\_ => [] ;
|
||||||
|
compl = \\_ => [] ;
|
||||||
|
c = v.c ;
|
||||||
|
ind = \\_ => v.c2.s ++ np.s ! v.c2.c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseComp comp = {
|
UseComp comp = {
|
||||||
@@ -36,6 +54,12 @@ lin
|
|||||||
CompNP np = {
|
CompNP np = {
|
||||||
s = \\a_ => np.s ! Nom ; ---- InstrC in Pol
|
s = \\a_ => np.s ! Nom ; ---- InstrC in Pol
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
CompCN cn = {
|
||||||
|
s = \\a => case a of {
|
||||||
|
Ag _ n _ => cn.s ! n ! Nom ---- InstrC also possible
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
CompAdv adv = {
|
CompAdv adv = {
|
||||||
s = \\a_ => adv.s
|
s = \\a_ => adv.s
|
||||||
@@ -45,4 +69,24 @@ lin
|
|||||||
compl = \\a => vp.compl ! a ++ adv.s
|
compl = \\a => vp.compl ! a ++ adv.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- VerbForms has no passive participle yet, so the reflexive passive is used:
|
||||||
|
-- "číslo se dělí" = "the number is divided"
|
||||||
|
PassV2 v = {
|
||||||
|
verb = v ;
|
||||||
|
clit = \\_ => "se" ;
|
||||||
|
compl = \\_ => []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplVV vv vp = {
|
||||||
|
verb = vv ;
|
||||||
|
clit = vp.clit ;
|
||||||
|
compl = \\a => vp.verb.inf ++ vp.compl ! a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplVS vs s = {
|
||||||
|
verb = vs ;
|
||||||
|
clit = \\_ => [] ;
|
||||||
|
compl = \\_ => SOFT_BIND ++ "," ++ "že" ++ s.s
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,6 +111,21 @@ lin
|
|||||||
s3= ""
|
s3= ""
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
InflectionCl = \cl -> {
|
||||||
|
t = "cl" ;
|
||||||
|
s1 = heading1 "Clause" ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=\"3\"" "Simple tenses" ++
|
||||||
|
intagAttr "th" "colspan=\"3\"" "Perfect tenses") ++
|
||||||
|
tr (th "tense" ++ th "declarative" ++ th "interrogative" ++
|
||||||
|
th "tense" ++ th "declarative" ++ th "interrogative") ++
|
||||||
|
inflClauseTense "present" "present perfect" Pres cl ++
|
||||||
|
inflClauseTense "past" "past perfect" Past cl ++
|
||||||
|
inflClauseTense "future" "future perfect" Fut cl ++
|
||||||
|
inflClauseTense "conditional" "conditional perfect" Cond cl
|
||||||
|
)
|
||||||
|
} ;
|
||||||
|
|
||||||
InflectionV v = {
|
InflectionV v = {
|
||||||
t = "v" ;
|
t = "v" ;
|
||||||
s1= heading1 "Verb" ++
|
s1= heading1 "Verb" ++
|
||||||
@@ -227,6 +242,18 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
inflClauseTense : Str -> Str -> ResEng.Tense -> Cl -> Str = \simple,perfect,tense,cl ->
|
||||||
|
tr (intagAttr "th" "rowspan=\"2\"" simple ++
|
||||||
|
td (cl.s ! tense ! Simul ! CPos ! ODir False) ++
|
||||||
|
td (cl.s ! tense ! Simul ! CPos ! OQuest) ++
|
||||||
|
intagAttr "th" "rowspan=\"2\"" perfect ++
|
||||||
|
td (cl.s ! tense ! Anter ! CPos ! ODir False) ++
|
||||||
|
td (cl.s ! tense ! Anter ! CPos ! OQuest)) ++
|
||||||
|
tr (td (cl.s ! tense ! Simul ! CNeg True ! ODir False) ++
|
||||||
|
td (cl.s ! tense ! Simul ! CNeg True ! OQuest) ++
|
||||||
|
td (cl.s ! tense ! Anter ! CNeg True ! ODir False) ++
|
||||||
|
td (cl.s ! tense ! Anter ! CNeg True ! OQuest)) ;
|
||||||
|
|
||||||
inflVerb : Verb -> Str = \verb ->
|
inflVerb : Verb -> Str = \verb ->
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "infinitive" ++ td (verb.s ! VInf)) ++
|
tr (th "infinitive" ++ td (verb.s ! VInf)) ++
|
||||||
|
|||||||
@@ -500,4 +500,6 @@ lin CardCNCard card cn =
|
|||||||
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
|
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
|
||||||
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
|
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
|
||||||
|
|
||||||
|
lin UttAdV adv = adv ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ flags optimize=values ;
|
|||||||
stick_V = irregV "stick" "stuck" "stuck" ;
|
stick_V = irregV "stick" "stuck" "stuck" ;
|
||||||
sting_V = irregV "sting" "stung" "stung" ;
|
sting_V = irregV "sting" "stung" "stung" ;
|
||||||
stink_V = irregV "stink" "stank" "stunk" ;
|
stink_V = irregV "stink" "stank" "stunk" ;
|
||||||
stride_V = irregV "stride" "strod" "stridden" ;
|
stride_V = irregV "stride" "strode" "stridden" ;
|
||||||
strike_V = irregV "strike" "struck" "struck" ;
|
strike_V = irregV "strike" "struck" "struck" ;
|
||||||
string_V = irregV "string" "strung" "strung" ;
|
string_V = irregV "string" "strung" "strung" ;
|
||||||
strive_V = irregV "strive" "strove" "striven" ;
|
strive_V = irregV "strive" "strove" "striven" ;
|
||||||
|
|||||||
@@ -1,4 +1,32 @@
|
|||||||
concrete AdjectiveFao of Adjective = CatFao ** {
|
concrete AdjectiveFao of Adjective = CatFao ** open ResFao in {
|
||||||
lin
|
lin
|
||||||
PositA a = a ;
|
PositA a = a ;
|
||||||
|
ComparA a np = {
|
||||||
|
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c ++ "enn" ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
ComplA2 a np = {
|
||||||
|
s = \\g,n,c => a.s ! g ! n ! c ++ a.c2.s ++ np.s ! a.c2.c
|
||||||
|
} ;
|
||||||
|
ReflA2 a = {
|
||||||
|
s = \\g,n,c => a.s ! g ! n ! c ++ a.c2.s ++ "seg"
|
||||||
|
} ;
|
||||||
|
UseA2 a = a ;
|
||||||
|
UseComparA a = {
|
||||||
|
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c
|
||||||
|
} ;
|
||||||
|
CAdvAP cadv ap np = {
|
||||||
|
s = \\g,n,c => cadv.s ++ ap.s ! g ! n ! c ++ cadv.p ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
AdjOrd ord = {
|
||||||
|
s = ord.s
|
||||||
|
} ;
|
||||||
|
SentAP ap sc = {
|
||||||
|
s = \\g,n,c => ap.s ! g ! n ! c ++ sc.s
|
||||||
|
} ;
|
||||||
|
AdAP ada ap = {
|
||||||
|
s = \\g,n,c => ada.s ++ ap.s ! g ! n ! c
|
||||||
|
} ;
|
||||||
|
AdvAP ap adv = {
|
||||||
|
s = \\g,n,c => ap.s ! g ! n ! c ++ adv.s
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
concrete AdverbFao of Adverb = CatFao ** open Prelude,ResFao in {
|
||||||
|
lin
|
||||||
|
PositAdvAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
|
||||||
|
PrepNP p np = {s = p.s ++ np.s ! p.c} ;
|
||||||
|
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Neuter ! Sg ! Nom ++ cadv.p ++ np.s ! Nom} ;
|
||||||
|
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Neuter ! Sg ! Nom ++ cadv.p ++ s.s} ;
|
||||||
|
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
||||||
|
PositAdAAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
|
||||||
|
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||||
|
AdnCAdv cadv = {s = cadv.s} ;
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete AllFao of AllFaoAbs =
|
concrete AllFao of AllFaoAbs =
|
||||||
LangFao
|
LangFao,
|
||||||
|
ExtendFao
|
||||||
**
|
**
|
||||||
{} ;
|
{} ;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
abstract AllFaoAbs =
|
abstract AllFaoAbs =
|
||||||
Lang
|
Lang,
|
||||||
** {}
|
Extend
|
||||||
|
** {}
|
||||||
|
|||||||
+34
-1
@@ -1,4 +1,4 @@
|
|||||||
concrete CatFao of Cat = CommonX ** open ResFao in {
|
concrete CatFao of Cat = CommonX ** open ResFao, Prelude in {
|
||||||
|
|
||||||
lincat N = Noun ;
|
lincat N = Noun ;
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
lincat N2 = Noun ** {c2 : Compl} ;
|
||||||
@@ -9,10 +9,43 @@ lincat V = Verb ;
|
|||||||
lincat VV,VS,VQ,VA = Verb ;
|
lincat VV,VS,VQ,VA = Verb ;
|
||||||
lincat V2 = Verb ** {c2 : Compl} ;
|
lincat V2 = Verb ** {c2 : Compl} ;
|
||||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
|
lincat VP = VerbPhrase ;
|
||||||
|
lincat VPSlash = Verb ** {c2 : Compl ; sc : Str} ;
|
||||||
|
lincat Comp = {s : Gender => Number => Str} ;
|
||||||
|
lincat Cl = Clause ;
|
||||||
|
lincat ClSlash = {s : Tense => Polarity => Str ; c2 : Compl} ;
|
||||||
|
lincat SSlash = {s : Str ; c2 : Compl} ;
|
||||||
|
lincat Imp = {s : Polarity => Number => Str} ;
|
||||||
lincat Prep = Compl ;
|
lincat Prep = Compl ;
|
||||||
lincat CN = CommonNoun ;
|
lincat CN = CommonNoun ;
|
||||||
|
lincat NP, Pron = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||||
|
lincat QS = {s : Str} ;
|
||||||
|
lincat QCl = {s : Tense => Polarity => Str} ;
|
||||||
|
lincat IP = {s : Str ; n : Number} ;
|
||||||
|
lincat IComp = {s : Str} ;
|
||||||
|
lincat IDet = {s : Str ; n : Number} ;
|
||||||
|
lincat IQuant = {s : Str} ;
|
||||||
|
lincat RCl = {s : Tense => Polarity => Gender => PersNum => Str} ;
|
||||||
|
lincat RS = {s : Gender => PersNum => Str} ;
|
||||||
|
lincat RP = {s : Str} ;
|
||||||
lincat AP = AdjPhrase ;
|
lincat AP = AdjPhrase ;
|
||||||
|
lincat Det = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||||
|
lincat Predet = {s : Str} ;
|
||||||
|
lincat Quant = {s : Bool => Gender => Number => Case => Str; sp : Species} ;
|
||||||
|
lincat Num = {s : Gender => Case => Str ; n : Number ; hasCard : Bool} ;
|
||||||
|
lincat Card = {s : Gender => Case => Str ; n : Number} ;
|
||||||
|
lincat ACard = {s : Str} ;
|
||||||
|
lincat Ord = {s : Gender => Number => Case => Str} ;
|
||||||
|
lincat DAP = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||||
lincat S = {s : Str} ;
|
lincat S = {s : Str} ;
|
||||||
|
lincat Numeral = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
|
lincat Digits = {s : Str ; n : Number} ;
|
||||||
|
lincat Decimal = {s : Str ; n : Number ; hasDot : Bool} ;
|
||||||
|
lincat Conj = {s : Str} ;
|
||||||
|
lincat Subj = {s : Str} ;
|
||||||
|
|
||||||
lincat LN,SN,GN,PN = {s : Str} ;
|
lincat LN,SN,GN,PN = {s : Str} ;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
concrete ConjunctionFao of Conjunction = CatFao ** open ResFao, Prelude in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[S] = {s1,s2 : Str} ;
|
||||||
|
[RS] = {s1,s2 : Gender => PersNum => Str} ;
|
||||||
|
[Adv], [AdV], [IAdv] = {s1,s2 : Str} ;
|
||||||
|
[NP] = {s1,s2 : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||||
|
[AP] = {s1,s2 : Gender => Number => Case => Str} ;
|
||||||
|
[CN] = {s1,s2 : Species => Number => Case => Str ; g : Gender} ;
|
||||||
|
[DAP] = {s1,s2 : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjRS conj xs = {s = \\g,p => xs.s1 ! g ! p ++ conj.s ++ xs.s2 ! g ! p} ;
|
||||||
|
ConjAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjAdV conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjIAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||||
|
ConjNP conj xs = {
|
||||||
|
s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c ;
|
||||||
|
g = xs.g ;
|
||||||
|
n = Pl ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
ConjAP conj xs = {s = \\g,n,c => xs.s1 ! g ! n ! c ++ conj.s ++ xs.s2 ! g ! n ! c} ;
|
||||||
|
ConjCN conj xs = {
|
||||||
|
s = \\sp,n,c => xs.s1 ! sp ! n ! c ++ conj.s ++ xs.s2 ! sp ! n ! c ;
|
||||||
|
g = xs.g
|
||||||
|
} ;
|
||||||
|
ConjDet conj xs = {
|
||||||
|
s = \\g,c => xs.s1 ! g ! c ++ conj.s ++ xs.s2 ! g ! c ;
|
||||||
|
n = xs.n ;
|
||||||
|
sp = xs.sp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseS x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsS x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
|
||||||
|
BaseRS x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsRS x xs = {s1 = \\g,p => x.s ! g ! p ++ "," ++ xs.s1 ! g ! p ; s2 = xs.s2} ;
|
||||||
|
BaseAdv x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsAdv x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
|
||||||
|
BaseAdV x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsAdV x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
|
||||||
|
BaseIAdv x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsIAdv x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
|
||||||
|
BaseNP x y = {s1 = x.s ; s2 = y.s ; g = x.g ; n = Pl ; p = P3} ;
|
||||||
|
ConsNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ; s2 = xs.s2 ; g = xs.g ; n = Pl ; p = P3} ;
|
||||||
|
BaseAP x y = {s1 = x.s ; s2 = y.s} ;
|
||||||
|
ConsAP x xs = {s1 = \\g,n,c => x.s ! g ! n ! c ++ "," ++ xs.s1 ! g ! n ! c ; s2 = xs.s2} ;
|
||||||
|
BaseCN x y = {s1 = x.s ; s2 = y.s ; g = x.g} ;
|
||||||
|
ConsCN x xs = {s1 = \\sp,n,c => x.s ! sp ! n ! c ++ "," ++ xs.s1 ! sp ! n ! c ; s2 = xs.s2 ; g = xs.g} ;
|
||||||
|
BaseDAP x y = {s1 = x.s ; s2 = y.s ; n = y.n ; sp = y.sp} ;
|
||||||
|
ConsDAP x xs = {s1 = \\g,c => x.s ! g ! c ++ "," ++ xs.s1 ! g ! c ; s2 = xs.s2 ; n = xs.n ; sp = xs.sp} ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
concrete ConstructionFao of Construction = CatFao ** open ResFao, ParadigmsFao in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
hungry_VP = beVP "svangur" ;
|
||||||
|
thirsty_VP = beVP "tystur" ;
|
||||||
|
tired_VP = beVP "troyttur" ;
|
||||||
|
scared_VP = beVP "bangin" ;
|
||||||
|
ill_VP = beVP "sjúkur" ;
|
||||||
|
ready_VP = beVP "klárur" ;
|
||||||
|
has_age_VP card = beVP (cardStr card ++ "ára gamal") ;
|
||||||
|
have_name_Cl np name = {
|
||||||
|
Converb = np.s ! Nom ++ "eitur" ++ name.s ! Nom ;
|
||||||
|
Indicative = \\t,pol => np.s ! Nom ++ "eitur" ++ negStr pol ++ name.s ! Nom ;
|
||||||
|
Nonfinite = np.s ! Nom ++ "eita" ++ name.s ! Nom ;
|
||||||
|
Participle = \\_ => np.s ! Nom ++ "itið" ++ name.s ! Nom
|
||||||
|
} ;
|
||||||
|
married_Cl np spouse = {
|
||||||
|
Converb = np.s ! Nom ++ "er giftur við" ++ spouse.s ! Dat ;
|
||||||
|
Indicative = \\t,pol => np.s ! Nom ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ "giftur við" ++ spouse.s ! Dat ;
|
||||||
|
Nonfinite = np.s ! Nom ++ "vera giftur við" ++ spouse.s ! Dat ;
|
||||||
|
Participle = \\_ => np.s ! Nom ++ "verið giftur við" ++ spouse.s ! Dat
|
||||||
|
} ;
|
||||||
|
what_name_QCl np = {
|
||||||
|
s = \\t,pol => "hvat" ++ "eitur" ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
how_old_QCl np = {
|
||||||
|
s = \\t,pol => "hvussu gamal" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
how_far_QCl np = {
|
||||||
|
s = \\t,pol => "hvussu langt burtur" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
weather_adjCl ap = {
|
||||||
|
Converb = "tað er" ++ ap.s ! Neuter ! Sg ! Nom ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ ap.s ! Neuter ! Sg ! Nom ;
|
||||||
|
Nonfinite = "vera" ++ ap.s ! Neuter ! Sg ! Nom ;
|
||||||
|
Participle = \\_ => "verið" ++ ap.s ! Neuter ! Sg ! Nom
|
||||||
|
} ;
|
||||||
|
is_right_VP = beVP "rættur" ;
|
||||||
|
is_wrong_VP = beVP "skeivur" ;
|
||||||
|
n_units_AP card cn a = {
|
||||||
|
s = \\g,n,c => card.s ! cn.g ! Nom ++ cn.s ! Indef ! Pl ! Nom ++ a.s ! g ! n ! c
|
||||||
|
} ;
|
||||||
|
n_units_of_NP card cn np = mkNP (card.s ! cn.g ! Nom ++ cn.s ! Indef ! Pl ! Nom ++ "av" ++ np.s ! Dat) np.g np.n np.p ;
|
||||||
|
n_unit_CN card unit cn = mkCN (card.s ! unit.g ! Nom ++ unit.s ! Indef ! Sg ! Nom ++ cn.s ! Indef ! Sg ! Nom) cn.g ;
|
||||||
|
bottle_of_CN np = mkCN ("fløska av" ++ np.s ! Dat) Fem ;
|
||||||
|
cup_of_CN np = mkCN ("koppur av" ++ np.s ! Dat) Masc ;
|
||||||
|
glass_of_CN np = mkCN ("glas av" ++ np.s ! Dat) Neuter ;
|
||||||
|
few_X_short_of_Y np x y = {s = np.s ! Nom ++ "vantar nakrar" ++ x.s ! Indef ! Pl ! Acc ++ "í" ++ y.s ! Def ! Sg ! Acc} ;
|
||||||
|
|
||||||
|
timeunitAdv card unit = {s = "í" ++ cardStr card ++ unit.s} ;
|
||||||
|
timeunitRange c1 c2 unit = {s = "í" ++ cardStr c1 ++ "til" ++ cardStr c2 ++ unit.s} ;
|
||||||
|
oneHour = {s = "eitt"} ;
|
||||||
|
twoHour = {s = "tvey"} ;
|
||||||
|
threeHour = {s = "trý"} ;
|
||||||
|
fourHour = {s = "fýra"} ;
|
||||||
|
fiveHour = {s = "fimm"} ;
|
||||||
|
sixHour = {s = "seks"} ;
|
||||||
|
sevenHour = {s = "sjey"} ;
|
||||||
|
eightHour = {s = "átta"} ;
|
||||||
|
nineHour = {s = "níggju"} ;
|
||||||
|
tenHour = {s = "tíggju"} ;
|
||||||
|
elevenHour = {s = "ellivu"} ;
|
||||||
|
twelveHour = {s = "tólv"} ;
|
||||||
|
thirteenHour = {s = "trettan"} ;
|
||||||
|
fourteenHour = {s = "fjúrtan"} ;
|
||||||
|
fifteenHour = {s = "fimtan"} ;
|
||||||
|
sixteenHour = {s = "sekstan"} ;
|
||||||
|
seventeenHour = {s = "seytjan"} ;
|
||||||
|
eighteenHour = {s = "átjan"} ;
|
||||||
|
nineteenHour = {s = "nítjan"} ;
|
||||||
|
twentyHour = {s = "tjúgu"} ;
|
||||||
|
twentyOneHour = {s = "tjúgueitt"} ;
|
||||||
|
twentyTwoHour = {s = "tjúgutvey"} ;
|
||||||
|
twentyThreeHour = {s = "tjúgutrý"} ;
|
||||||
|
twentyFourHour = {s = "tjúgufýra"} ;
|
||||||
|
timeHour h = {s = "klokkan" ++ h.s} ;
|
||||||
|
timeHourMinute h m = {s = "klokkan" ++ h.s ++ cardStr m} ;
|
||||||
|
weekdayPunctualAdv w = {s = w.s} ;
|
||||||
|
weekdayHabitualAdv w = {s = w.s} ;
|
||||||
|
weekdayLastAdv w = {s = "seinasta" ++ w.s} ;
|
||||||
|
weekdayNextAdv w = {s = "næsta" ++ w.s} ;
|
||||||
|
monthAdv m = {s = "í" ++ m.s} ;
|
||||||
|
yearAdv y = {s = "í" ++ y.s} ;
|
||||||
|
dayMonthAdv d m = {s = d.s ++ m.s} ;
|
||||||
|
monthYearAdv m y = {s = m.s ++ y.s} ;
|
||||||
|
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
|
||||||
|
intYear i = {s = i.s} ;
|
||||||
|
intMonthday i = {s = i.s} ;
|
||||||
|
InLanguage l = {s = "á" ++ l.s} ;
|
||||||
|
weekdayN w = mkCN w.s Masc ;
|
||||||
|
monthN m = mkCN m.s Masc ;
|
||||||
|
weekdayPN w = {s = w.s} ;
|
||||||
|
monthPN m = {s = m.s} ;
|
||||||
|
languageNP l = mkNP l.s Neuter Sg P3 ;
|
||||||
|
languageCN l = mkCN l.s Neuter ;
|
||||||
|
|
||||||
|
second_Timeunit = {s = "sekund"} ;
|
||||||
|
minute_Timeunit = {s = "minutt"} ;
|
||||||
|
hour_Timeunit = {s = "tími"} ;
|
||||||
|
day_Timeunit = {s = "dagur"} ;
|
||||||
|
week_Timeunit = {s = "vika"} ;
|
||||||
|
month_Timeunit = {s = "mánaður"} ;
|
||||||
|
year_Timeunit = {s = "ár"} ;
|
||||||
|
monday_Weekday = {s = "mánadagur"} ;
|
||||||
|
tuesday_Weekday = {s = "týsdagur"} ;
|
||||||
|
wednesday_Weekday = {s = "mikudagur"} ;
|
||||||
|
thursday_Weekday = {s = "hósdagur"} ;
|
||||||
|
friday_Weekday = {s = "fríggjadagur"} ;
|
||||||
|
saturday_Weekday = {s = "leygardagur"} ;
|
||||||
|
sunday_Weekday = {s = "sunnudagur"} ;
|
||||||
|
january_Month = {s = "januar"} ;
|
||||||
|
february_Month = {s = "februar"} ;
|
||||||
|
march_Month = {s = "mars"} ;
|
||||||
|
april_Month = {s = "apríl"} ;
|
||||||
|
may_Month = {s = "mai"} ;
|
||||||
|
june_Month = {s = "juni"} ;
|
||||||
|
july_Month = {s = "juli"} ;
|
||||||
|
august_Month = {s = "august"} ;
|
||||||
|
september_Month = {s = "september"} ;
|
||||||
|
october_Month = {s = "oktober"} ;
|
||||||
|
november_Month = {s = "november"} ;
|
||||||
|
december_Month = {s = "desember"} ;
|
||||||
|
|
||||||
|
afrikaans_Language = {s = "afrikaans"} ;
|
||||||
|
amharic_Language = {s = "amhariskt"} ;
|
||||||
|
arabic_Language = {s = "arabiskt"} ;
|
||||||
|
bulgarian_Language = {s = "bulgarskt"} ;
|
||||||
|
catalan_Language = {s = "katalanskt"} ;
|
||||||
|
chinese_Language = {s = "kinesiskt"} ;
|
||||||
|
danish_Language = {s = "danskt"} ;
|
||||||
|
dutch_Language = {s = "hollendskt"} ;
|
||||||
|
english_Language = {s = "enskt"} ;
|
||||||
|
estonian_Language = {s = "estiskt"} ;
|
||||||
|
finnish_Language = {s = "finskt"} ;
|
||||||
|
french_Language = {s = "franskt"} ;
|
||||||
|
german_Language = {s = "týskt"} ;
|
||||||
|
greek_Language = {s = "grikskt"} ;
|
||||||
|
hebrew_Language = {s = "hebraiskt"} ;
|
||||||
|
hindi_Language = {s = "hindi"} ;
|
||||||
|
japanese_Language = {s = "japanskt"} ;
|
||||||
|
italian_Language = {s = "italskt"} ;
|
||||||
|
latin_Language = {s = "latín"} ;
|
||||||
|
latvian_Language = {s = "lettiskt"} ;
|
||||||
|
maltese_Language = {s = "maltesiskt"} ;
|
||||||
|
nepali_Language = {s = "nepalskt"} ;
|
||||||
|
norwegian_Language = {s = "norskt"} ;
|
||||||
|
persian_Language = {s = "persiskt"} ;
|
||||||
|
polish_Language = {s = "pólskt"} ;
|
||||||
|
punjabi_Language = {s = "punjabi"} ;
|
||||||
|
romanian_Language = {s = "rumenskt"} ;
|
||||||
|
russian_Language = {s = "russiskt"} ;
|
||||||
|
sindhi_Language = {s = "sindhi"} ;
|
||||||
|
spanish_Language = {s = "spanskt"} ;
|
||||||
|
swahili_Language = {s = "swahili"} ;
|
||||||
|
swedish_Language = {s = "svenskt"} ;
|
||||||
|
thai_Language = {s = "tailendskt"} ;
|
||||||
|
turkish_Language = {s = "turkiskt"} ;
|
||||||
|
urdu_Language = {s = "urdu"} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
beVP : Str -> VerbPhrase = \ap -> {
|
||||||
|
Converb = copula ! Pres ! PPl ++ ap ;
|
||||||
|
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ ap ;
|
||||||
|
Nonfinite = "vera" ++ ap ;
|
||||||
|
Participle = \\_ => "verið" ++ ap
|
||||||
|
} ;
|
||||||
|
|
||||||
|
cardStr : Card -> Str = \card ->
|
||||||
|
card.s ! Neuter ! Nom ;
|
||||||
|
}
|
||||||
@@ -55,8 +55,8 @@ lin
|
|||||||
paragraph x.Converb ++
|
paragraph x.Converb ++
|
||||||
heading2 "Imperative" ++
|
heading2 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Sg" ++ td (x.Imperative_Jussive ! Sg)) ++
|
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pl))) ++
|
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
|
||||||
heading2 "Indicative" ++
|
heading2 "Indicative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
|
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
concrete ExtendFao of Extend = CatFao **
|
||||||
|
open ParadigmsFao, ResFao, (P = ParamX) in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
VPS = {s : Gender => PersNum => Str} ;
|
||||||
|
[VPS] = {s1,s2 : Gender => PersNum => Str} ;
|
||||||
|
VPI = {s : Str} ;
|
||||||
|
[VPI] = {s1,s2 : Str} ;
|
||||||
|
VPS2 = {s : Gender => PersNum => Str ; c2 : Compl ; sc : Str} ;
|
||||||
|
[VPS2] = {s1,s2 : Gender => PersNum => Str ; c2 : Compl ; sc : Str} ;
|
||||||
|
VPI2 = {s : Str ; c2 : Compl ; sc : Str} ;
|
||||||
|
[VPI2] = {s1,s2 : Str ; c2 : Compl ; sc : Str} ;
|
||||||
|
[Comp] = {s1,s2 : Gender => Number => Str} ;
|
||||||
|
[Imp] = {s1,s2 : Polarity => Number => Str} ;
|
||||||
|
RNP = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||||
|
RNPList = {s1,s2 : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||||
|
X = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
UttAdV adv = {s = adv.s} ;
|
||||||
|
|
||||||
|
iFem_Pron = mkPron "eg" "meg" "mær" "mín" Masc Sg P1 ;
|
||||||
|
youFem_Pron = mkPron "tú" "teg" "tær" "tín" Masc Sg P2 ;
|
||||||
|
weFem_Pron = mkPron "vit" "okkum" "okkum" "okkara" Masc Pl P1 ;
|
||||||
|
youPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
theyFem_Pron = mkPron "tær" "tær" "teimum" "teirra" Masc Pl P3 ;
|
||||||
|
youPolFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
youPolPl_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
youPolPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
TPastSimple = {s = [] ; t = P.Past} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,5 +2,15 @@ concrete GrammarFao of Grammar =
|
|||||||
TenseX,
|
TenseX,
|
||||||
PhraseFao,
|
PhraseFao,
|
||||||
NounFao,
|
NounFao,
|
||||||
AdjectiveFao ** {
|
VerbFao,
|
||||||
}
|
AdjectiveFao,
|
||||||
|
AdverbFao,
|
||||||
|
NumeralFao,
|
||||||
|
SentenceFao,
|
||||||
|
QuestionFao,
|
||||||
|
RelativeFao,
|
||||||
|
ConjunctionFao,
|
||||||
|
StructuralFao,
|
||||||
|
IdiomFao,
|
||||||
|
NamesFao ** {
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
concrete IdiomFao of Idiom = CatFao ** open ResFao in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
ImpersCl vp = {
|
||||||
|
Converb = "tað" ++ vp.Converb ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ vp.Indicative ! t ! pol ! Neuter ! PSg P3 ;
|
||||||
|
Nonfinite = "tað" ++ vp.Nonfinite ;
|
||||||
|
Participle = \\t => "tað" ++ vp.Participle ! t
|
||||||
|
} ;
|
||||||
|
GenericCl vp = {
|
||||||
|
Converb = "mann" ++ vp.Converb ;
|
||||||
|
Indicative = \\t,pol => "mann" ++ vp.Indicative ! t ! pol ! Masc ! PSg P3 ;
|
||||||
|
Nonfinite = "mann" ++ vp.Nonfinite ;
|
||||||
|
Participle = \\t => "mann" ++ vp.Participle ! t
|
||||||
|
} ;
|
||||||
|
CleftNP np rs = {
|
||||||
|
Converb = "tað er" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||||
|
Nonfinite = "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||||
|
Participle = \\_ => "verið" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p
|
||||||
|
} ;
|
||||||
|
CleftAdv adv s = {
|
||||||
|
Converb = "tað er" ++ adv.s ++ s.s ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ adv.s ++ s.s ;
|
||||||
|
Nonfinite = "vera" ++ adv.s ++ s.s ;
|
||||||
|
Participle = \\_ => "verið" ++ adv.s ++ s.s
|
||||||
|
} ;
|
||||||
|
ExistNP np = {
|
||||||
|
Converb = "tað er" ++ np.s ! Nom ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ;
|
||||||
|
Nonfinite = "vera" ++ np.s ! Nom ;
|
||||||
|
Participle = \\_ => "verið" ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
ExistIP ip = {
|
||||||
|
s = \\t,pol => "hvat" ++ copula ! t ! persNum ip.n P3 ++ negStr pol
|
||||||
|
} ;
|
||||||
|
ExistNPAdv np adv = {
|
||||||
|
Converb = "tað er" ++ np.s ! Nom ++ adv.s ;
|
||||||
|
Indicative = \\t,pol => "tað" ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ++ adv.s ;
|
||||||
|
Nonfinite = "vera" ++ np.s ! Nom ++ adv.s ;
|
||||||
|
Participle = \\_ => "verið" ++ np.s ! Nom ++ adv.s
|
||||||
|
} ;
|
||||||
|
ExistIPAdv ip adv = {
|
||||||
|
s = \\t,pol => ip.s ++ copula ! t ! persNum ip.n P3 ++ negStr pol ++ adv.s
|
||||||
|
} ;
|
||||||
|
ProgrVP vp = {
|
||||||
|
Converb = "vera við at" ++ vp.Nonfinite ;
|
||||||
|
Indicative = \\t,pol,g,p => copula ! t ! p ++ negStr pol ++ "við at" ++ vp.Nonfinite ;
|
||||||
|
Nonfinite = "vera við at" ++ vp.Nonfinite ;
|
||||||
|
Participle = \\_ => "verið við at" ++ vp.Nonfinite
|
||||||
|
} ;
|
||||||
|
ImpPl1 vp = {s = "lat okkum" ++ vp.Nonfinite} ;
|
||||||
|
ImpP3 np vp = {s = "lat" ++ np.s ! Acc ++ vp.Nonfinite} ;
|
||||||
|
SelfAdvVP vp = vp ** {
|
||||||
|
Converb = vp.Converb ++ "sjálvur" ;
|
||||||
|
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ "sjálvur" ;
|
||||||
|
Nonfinite = vp.Nonfinite ++ "sjálvur" ;
|
||||||
|
Participle = \\t => vp.Participle ! t ++ "sjálvur"
|
||||||
|
} ;
|
||||||
|
SelfAdVVP = SelfAdvVP ;
|
||||||
|
SelfNP np = np ** {s = \\c => np.s ! c ++ "sjálvur"} ;
|
||||||
|
}
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
concrete LangFao of Lang =
|
concrete LangFao of Lang =
|
||||||
GrammarFao,
|
GrammarFao,
|
||||||
LexiconFao
|
LexiconFao
|
||||||
|
,ConstructionFao
|
||||||
,DocumentationFao --# notpresent
|
,DocumentationFao --# notpresent
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ;
|
flags startcat = Phr ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao in {
|
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao, ResFao in {
|
||||||
}
|
lin
|
||||||
|
apple_N = mkN "epli" ;
|
||||||
|
big_A = mkA "stórur" ;
|
||||||
|
child_N = mkN "barn" ;
|
||||||
|
die_V = mkV "doyggja" "doyrt" ;
|
||||||
|
good_A = mkA "góður" ;
|
||||||
|
go_V = mkVerb "farið" "far" "farið" "fari" "fert" "fer" "fara" "fór" "fórt" "fór" "fóru" "fara" "farandi" "farin" ;
|
||||||
|
}
|
||||||
|
|||||||
+128
-128
@@ -600,18 +600,18 @@ mkN016 base =
|
|||||||
Gen => base_1+"ar"
|
Gen => base_1+"ar"
|
||||||
} ;
|
} ;
|
||||||
Pl => table {
|
Pl => table {
|
||||||
Nom => base_1+"urin" ;
|
Nom => nonExist ;
|
||||||
Acc => base_1+"in" ;
|
Acc => nonExist ;
|
||||||
Dat => base_1+"inum" ;
|
Dat => nonExist ;
|
||||||
Gen => base_1+"arins"
|
Gen => nonExist
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Def => table {
|
Def => table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
Nom => nonExist ;
|
Nom => base_1+"urin" ;
|
||||||
Acc => nonExist ;
|
Acc => base_1+"in" ;
|
||||||
Dat => nonExist ;
|
Dat => base_1+"inum" ;
|
||||||
Gen => nonExist
|
Gen => base_1+"arins"
|
||||||
} ;
|
} ;
|
||||||
Pl => table {
|
Pl => table {
|
||||||
Nom => nonExist ;
|
Nom => nonExist ;
|
||||||
@@ -5670,18 +5670,18 @@ mkN146 base =
|
|||||||
Gen => base_1+"s"
|
Gen => base_1+"s"
|
||||||
} ;
|
} ;
|
||||||
Pl => table {
|
Pl => table {
|
||||||
Nom => base_1+"kurin" ;
|
Nom => nonExist ;
|
||||||
Acc => base_1+"kin" ;
|
Acc => nonExist ;
|
||||||
Dat => base_1+"kinum" ;
|
Dat => nonExist ;
|
||||||
Gen => base_1+"sins"
|
Gen => nonExist
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Def => table {
|
Def => table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
Nom => nonExist ;
|
Nom => base_1+"kurin" ;
|
||||||
Acc => nonExist ;
|
Acc => base_1+"kin" ;
|
||||||
Dat => nonExist ;
|
Dat => base_1+"kinum" ;
|
||||||
Gen => nonExist
|
Gen => base_1+"sins"
|
||||||
} ;
|
} ;
|
||||||
Pl => table {
|
Pl => table {
|
||||||
Nom => nonExist ;
|
Nom => nonExist ;
|
||||||
@@ -8769,7 +8769,7 @@ mkV001 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"að" ;
|
{ Converb = base_1+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a" ;
|
Sg => base_1+"a" ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -8802,7 +8802,7 @@ mkV002 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"ei"+base_1+"a" => lin V
|
"ei"+base_1+"a" => lin V
|
||||||
{ Converb = "hi"+base_1+"ið" ;
|
{ Converb = "hi"+base_1+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "ei"+base_1 ;
|
Sg => "ei"+base_1 ;
|
||||||
Pl => "ei"+base_1+"ið"
|
Pl => "ei"+base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -8835,7 +8835,7 @@ mkV003 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"a"+base_1+"a" => lin V
|
"a"+base_1+"a" => lin V
|
||||||
{ Converb = "i"+base_1+"ið" ;
|
{ Converb = "i"+base_1+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "a"+base_1 ;
|
Sg => "a"+base_1 ;
|
||||||
Pl => "a"+base_1+"ið"
|
Pl => "a"+base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -8868,7 +8868,7 @@ mkV004 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"a"+base_1+"a" => lin V
|
"a"+base_1+"a" => lin V
|
||||||
{ Converb = "a"+base_1+"ið" ;
|
{ Converb = "a"+base_1+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "a"+base_1 ;
|
Sg => "a"+base_1 ;
|
||||||
Pl => "a"+base_1+"ið"
|
Pl => "a"+base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -8901,7 +8901,7 @@ mkV005 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@(?+?) => lin V
|
base_1+"a"+base_2@(?+?) => lin V
|
||||||
{ Converb = base_1+"a"+base_2 ;
|
{ Converb = base_1+"a"+base_2 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -8934,7 +8934,7 @@ mkV006 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ða" => lin V
|
base_1+"ða" => lin V
|
||||||
{ Converb = base_1+"tt" ;
|
{ Converb = base_1+"tt" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ð" ;
|
Sg => base_1+"ð" ;
|
||||||
Pl => base_1+"ðið"
|
Pl => base_1+"ðið"
|
||||||
} ;
|
} ;
|
||||||
@@ -8967,7 +8967,7 @@ mkV007 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"eiga" => lin V
|
"eiga" => lin V
|
||||||
{ Converb = "átt" ;
|
{ Converb = "átt" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "eig" ;
|
Sg => "eig" ;
|
||||||
Pl => "eigið"
|
Pl => "eigið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9000,7 +9000,7 @@ mkV008 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"a" => lin V
|
base_1+"e"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9033,7 +9033,7 @@ mkV009 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9066,7 +9066,7 @@ mkV010 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"da" => lin V
|
base_1+"da" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"d" ;
|
Sg => base_1+"d" ;
|
||||||
Pl => base_1+"dið"
|
Pl => base_1+"dið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9099,7 +9099,7 @@ mkV011 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"ja" => lin V
|
base_1+"e"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"j" ;
|
Sg => base_1+"e"+base_2+"j" ;
|
||||||
Pl => base_1+"e"+base_2+"jið"
|
Pl => base_1+"e"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9132,7 +9132,7 @@ mkV012 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"ja" => lin V
|
base_1+"i"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2 ;
|
Sg => base_1+"i"+base_2 ;
|
||||||
Pl => base_1+"i"+base_2+"jið"
|
Pl => base_1+"i"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9165,7 +9165,7 @@ mkV013 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"da" => lin V
|
base_1+"i"+base_2@?+"da" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"dið" ;
|
{ Converb = base_1+"u"+base_2+"dið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2+"d" ;
|
Sg => base_1+"i"+base_2+"d" ;
|
||||||
Pl => base_1+"i"+base_2+"dið"
|
Pl => base_1+"i"+base_2+"dið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9198,7 +9198,7 @@ mkV014 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"í"+base_2@?+"a" => lin V
|
base_1+"í"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"í"+base_2 ;
|
Sg => base_1+"í"+base_2 ;
|
||||||
Pl => base_1+"í"+base_2+"ið"
|
Pl => base_1+"í"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9231,7 +9231,7 @@ mkV015 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"jó"+base_2@?+"a" => lin V
|
base_1+"jó"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"jó"+base_2 ;
|
Sg => base_1+"jó"+base_2 ;
|
||||||
Pl => base_1+"jó"+base_2+"ið"
|
Pl => base_1+"jó"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9264,7 +9264,7 @@ mkV016 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"gja" => lin V
|
base_1+"gja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"g" ;
|
Sg => base_1+"g" ;
|
||||||
Pl => base_1+"gið"
|
Pl => base_1+"gið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9297,7 +9297,7 @@ mkV017 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"na" => lin V
|
base_1+"e"+base_2@?+"na" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"nið" ;
|
{ Converb = base_1+"u"+base_2+"nið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"n" ;
|
Sg => base_1+"e"+base_2+"n" ;
|
||||||
Pl => base_1+"e"+base_2+"nið"
|
Pl => base_1+"e"+base_2+"nið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9330,7 +9330,7 @@ mkV018 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@("m"|(?+?))+"a" => lin V
|
base_1+"e"+base_2@("m"|(?+?))+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9363,7 +9363,7 @@ mkV019 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ó"+base_2@?+"a" => lin V
|
base_1+"ó"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ó"+base_2 ;
|
Sg => base_1+"ó"+base_2 ;
|
||||||
Pl => base_1+"ó"+base_2+"ið"
|
Pl => base_1+"ó"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9396,7 +9396,7 @@ mkV020 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9429,7 +9429,7 @@ mkV021 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"að" ;
|
{ Converb = base_1+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a" ;
|
Sg => base_1+"a" ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9462,7 +9462,7 @@ mkV022 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"úgva" => lin V
|
base_1+"úgva" => lin V
|
||||||
{ Converb = base_1+"úð" ;
|
{ Converb = base_1+"úð" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"úgv" ;
|
Sg => base_1+"úgv" ;
|
||||||
Pl => base_1+"úgvið"
|
Pl => base_1+"úgvið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9495,7 +9495,7 @@ mkV023 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9528,7 +9528,7 @@ mkV024 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+base_3@?+"a" => lin V
|
base_1+"e"+base_2@?+base_3@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+base_3+"ið" ;
|
{ Converb = base_1+"o"+base_2+base_3+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+base_3 ;
|
Sg => base_1+"e"+base_2+base_3 ;
|
||||||
Pl => base_1+"e"+base_2+base_3+"ið"
|
Pl => base_1+"e"+base_2+base_3+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9561,7 +9561,7 @@ mkV025 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ggja" => lin V
|
base_1+"ggja" => lin V
|
||||||
{ Converb = base_1+"ð" ;
|
{ Converb = base_1+"ð" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ggj" ;
|
Sg => base_1+"ggj" ;
|
||||||
Pl => base_1+"ggið"
|
Pl => base_1+"ggið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9594,7 +9594,7 @@ mkV026 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"aga" => lin V
|
base_1+"aga" => lin V
|
||||||
{ Converb = base_1+"igið" ;
|
{ Converb = base_1+"igið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ag" ;
|
Sg => base_1+"ag" ;
|
||||||
Pl => base_1+"agið"
|
Pl => base_1+"agið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9627,7 +9627,7 @@ mkV027 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"ka" => lin V
|
base_1+"e"+base_2@?+"ka" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"kið" ;
|
{ Converb = base_1+"u"+base_2+"kið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"k" ;
|
Sg => base_1+"e"+base_2+"k" ;
|
||||||
Pl => base_1+"e"+base_2+"kið"
|
Pl => base_1+"e"+base_2+"kið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9660,7 +9660,7 @@ mkV028 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"a" => lin V
|
base_1+"e"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9693,7 +9693,7 @@ mkV029 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"að" ;
|
{ Converb = base_1+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a" ;
|
Sg => base_1+"a" ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9726,7 +9726,7 @@ mkV030 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"ve"+base_1+"a" => lin V
|
"ve"+base_1+"a" => lin V
|
||||||
{ Converb = "ve"+base_1+"ið" ;
|
{ Converb = "ve"+base_1+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "ve"+base_1 ;
|
Sg => "ve"+base_1 ;
|
||||||
Pl => "ve"+base_1+"ið"
|
Pl => "ve"+base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9759,7 +9759,7 @@ mkV031 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"na" => lin V
|
base_1+"na" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"na" ;
|
Sg => base_1+"na" ;
|
||||||
Pl => base_1+"nið"
|
Pl => base_1+"nið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9792,7 +9792,7 @@ mkV032 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@(?+?)+"a" => lin V
|
base_1+"a"+base_2@(?+?)+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"ið" ;
|
{ Converb = base_1+"a"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9825,7 +9825,7 @@ mkV033 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"a" => lin V
|
base_1+"a"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"ið" ;
|
{ Converb = base_1+"a"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9858,7 +9858,7 @@ mkV034 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"áa" => lin V
|
base_1+"áa" => lin V
|
||||||
{ Converb = base_1+"ingið" ;
|
{ Converb = base_1+"ingið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"á" ;
|
Sg => base_1+"á" ;
|
||||||
Pl => base_1+"áið"
|
Pl => base_1+"áið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9891,7 +9891,7 @@ mkV035 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"la" => lin V
|
base_1+"la" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"la" ;
|
Sg => base_1+"la" ;
|
||||||
Pl => base_1+"lið"
|
Pl => base_1+"lið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9924,7 +9924,7 @@ mkV036 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ða"+base_2@(?+?) => lin V
|
base_1+"ða"+base_2@(?+?) => lin V
|
||||||
{ Converb = base_1+"da"+base_2 ;
|
{ Converb = base_1+"da"+base_2 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -9957,7 +9957,7 @@ mkV037 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1 ;
|
{ Converb = base_1 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -9990,7 +9990,7 @@ mkV038 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"ja" => lin V
|
base_1+"e"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10023,7 +10023,7 @@ mkV039 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"na" => lin V
|
base_1+"na" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"n" ;
|
Sg => base_1+"n" ;
|
||||||
Pl => base_1+"nið"
|
Pl => base_1+"nið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10056,7 +10056,7 @@ mkV040 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ú"+base_2@?+"va" => lin V
|
base_1+"ú"+base_2@?+"va" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ú"+base_2 ;
|
Sg => base_1+"ú"+base_2 ;
|
||||||
Pl => base_1+"ú"+base_2+"ið"
|
Pl => base_1+"ú"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10089,7 +10089,7 @@ mkV041 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"y"+base_2@?+"a" => lin V
|
base_1+"y"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"t" ;
|
{ Converb = base_1+"u"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"y"+base_2 ;
|
Sg => base_1+"y"+base_2 ;
|
||||||
Pl => base_1+"y"+base_2+"ið"
|
Pl => base_1+"y"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10122,7 +10122,7 @@ mkV042 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"ja" => lin V
|
base_1+"e"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"jið"
|
Pl => base_1+"e"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10155,7 +10155,7 @@ mkV043 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"tt" ;
|
{ Converb = base_1+"tt" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10188,7 +10188,7 @@ mkV044 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ú"+base_2@?+"a" => lin V
|
base_1+"ú"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ú"+base_2 ;
|
Sg => base_1+"ú"+base_2 ;
|
||||||
Pl => base_1+"ú"+base_2+"ið"
|
Pl => base_1+"ú"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10221,7 +10221,7 @@ mkV045 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"la" => lin V
|
base_1+"la" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"l" ;
|
Sg => base_1+"l" ;
|
||||||
Pl => base_1+"lið"
|
Pl => base_1+"lið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10254,7 +10254,7 @@ mkV046 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"a" => lin V
|
base_1+"a"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"ið" ;
|
{ Converb = base_1+"a"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10287,7 +10287,7 @@ mkV047 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"anga" => lin V
|
base_1+"anga" => lin V
|
||||||
{ Converb = base_1+"ingið" ;
|
{ Converb = base_1+"ingið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"akk" ;
|
Sg => base_1+"akk" ;
|
||||||
Pl => base_1+"angið"
|
Pl => base_1+"angið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10320,7 +10320,7 @@ mkV048 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja"+base_2@?+"da" => lin V
|
base_1+"ja"+base_2@?+"da" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"dið" ;
|
{ Converb = base_1+"o"+base_2+"dið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ja"+base_2+"d" ;
|
Sg => base_1+"ja"+base_2+"d" ;
|
||||||
Pl => base_1+"ja"+base_2+"dið"
|
Pl => base_1+"ja"+base_2+"dið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10353,7 +10353,7 @@ mkV049 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"a" => lin V
|
base_1+"e"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"jø"+base_2+"t" ;
|
{ Converb = base_1+"jø"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10386,7 +10386,7 @@ mkV050 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"jó"+base_2@?+"a" => lin V
|
base_1+"jó"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"jó"+base_2 ;
|
Sg => base_1+"jó"+base_2 ;
|
||||||
Pl => base_1+"jó"+base_2+"ið"
|
Pl => base_1+"jó"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10419,7 +10419,7 @@ mkV051 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"pa" => lin V
|
base_1+"e"+base_2@?+"pa" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"pið" ;
|
{ Converb = base_1+"o"+base_2+"pið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"p" ;
|
Sg => base_1+"e"+base_2+"p" ;
|
||||||
Pl => base_1+"e"+base_2+"pið"
|
Pl => base_1+"e"+base_2+"pið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10452,7 +10452,7 @@ mkV052 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"y"+base_2@?+"ja" => lin V
|
base_1+"y"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"t" ;
|
{ Converb = base_1+"u"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"y"+base_2 ;
|
Sg => base_1+"y"+base_2 ;
|
||||||
Pl => base_1+"y"+base_2+"ið"
|
Pl => base_1+"y"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10485,7 +10485,7 @@ mkV053 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"á"+base_2@?+"a" => lin V
|
base_1+"á"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"á"+base_2+"ið" ;
|
{ Converb = base_1+"á"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"á"+base_2 ;
|
Sg => base_1+"á"+base_2 ;
|
||||||
Pl => base_1+"á"+base_2+"ið"
|
Pl => base_1+"á"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10518,7 +10518,7 @@ mkV054 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"a" => lin V
|
base_1+"a"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10551,7 +10551,7 @@ mkV055 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ógva" => lin V
|
base_1+"ógva" => lin V
|
||||||
{ Converb = base_1+"óð" ;
|
{ Converb = base_1+"óð" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ógv" ;
|
Sg => base_1+"ógv" ;
|
||||||
Pl => base_1+"ógvið"
|
Pl => base_1+"ógvið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10584,7 +10584,7 @@ mkV056 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"da" => lin V
|
base_1+"a"+base_2@?+"da" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"dið" ;
|
{ Converb = base_1+"i"+base_2+"dið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2+"d" ;
|
Sg => base_1+"a"+base_2+"d" ;
|
||||||
Pl => base_1+"a"+base_2+"dið"
|
Pl => base_1+"a"+base_2+"dið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10617,7 +10617,7 @@ mkV057 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"anga" => lin V
|
base_1+"anga" => lin V
|
||||||
{ Converb = base_1+"ingið" ;
|
{ Converb = base_1+"ingið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ang" ;
|
Sg => base_1+"ang" ;
|
||||||
Pl => base_1+"angið"
|
Pl => base_1+"angið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10650,7 +10650,7 @@ mkV058 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"a" => lin V
|
base_1+"a"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10683,7 +10683,7 @@ mkV059 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ei"+base_2@(?+?)+"ja" => lin V
|
base_1+"ei"+base_2@(?+?)+"ja" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"t" ;
|
{ Converb = base_1+"o"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ei"+base_2+"j" ;
|
Sg => base_1+"ei"+base_2+"j" ;
|
||||||
Pl => base_1+"ei"+base_2+"jið"
|
Pl => base_1+"ei"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10716,7 +10716,7 @@ mkV060 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"vø"+base_2@(?+?)+"a" => lin V
|
base_1+"vø"+base_2@(?+?)+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"vø"+base_2 ;
|
Sg => base_1+"vø"+base_2 ;
|
||||||
Pl => base_1+"vø"+base_2+"ið"
|
Pl => base_1+"vø"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10749,7 +10749,7 @@ mkV061 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"y"+base_2@?+"gja" => lin V
|
base_1+"y"+base_2@?+"gja" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"t" ;
|
{ Converb = base_1+"u"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"y"+base_2+"g" ;
|
Sg => base_1+"y"+base_2+"g" ;
|
||||||
Pl => base_1+"y"+base_2+"gið"
|
Pl => base_1+"y"+base_2+"gið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10782,7 +10782,7 @@ mkV062 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"o"+base_2@?+"a" => lin V
|
base_1+"o"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"o"+base_2 ;
|
Sg => base_1+"o"+base_2 ;
|
||||||
Pl => base_1+"o"+base_2+"ið"
|
Pl => base_1+"o"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10815,7 +10815,7 @@ mkV063 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"pa" => lin V
|
base_1+"pa" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"p" ;
|
Sg => base_1+"p" ;
|
||||||
Pl => base_1+"pið"
|
Pl => base_1+"pið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10848,7 +10848,7 @@ mkV064 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"úgva" => lin V
|
base_1+"úgva" => lin V
|
||||||
{ Converb = base_1+"ovið" ;
|
{ Converb = base_1+"ovið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"úg" ;
|
Sg => base_1+"úg" ;
|
||||||
Pl => base_1+"úgið"
|
Pl => base_1+"úgið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10881,7 +10881,7 @@ mkV065 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"u"+base_2@?+"na" => lin V
|
base_1+"u"+base_2@?+"na" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"nað" ;
|
{ Converb = base_1+"u"+base_2+"nað" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -10914,7 +10914,7 @@ mkV066 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ø"+base_2@?+"a" => lin V
|
base_1+"ø"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"ø"+base_2+"ið" ;
|
{ Converb = base_1+"ø"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ø"+base_2 ;
|
Sg => base_1+"ø"+base_2 ;
|
||||||
Pl => base_1+"ø"+base_2+"ið"
|
Pl => base_1+"ø"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10947,7 +10947,7 @@ mkV067 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"sa" => lin V
|
base_1+"sa" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"s" ;
|
Sg => base_1+"s" ;
|
||||||
Pl => base_1+"sið"
|
Pl => base_1+"sið"
|
||||||
} ;
|
} ;
|
||||||
@@ -10980,7 +10980,7 @@ mkV068 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a" => lin V
|
base_1+"a" => lin V
|
||||||
{ Converb = base_1+"ið" ;
|
{ Converb = base_1+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11013,7 +11013,7 @@ mkV069 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"gja" => lin V
|
base_1+"e"+base_2@?+"gja" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"gj" ;
|
Sg => base_1+"e"+base_2+"gj" ;
|
||||||
Pl => base_1+"e"+base_2+"gjið"
|
Pl => base_1+"e"+base_2+"gjið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11046,7 +11046,7 @@ mkV070 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"iggja" => lin V
|
base_1+"iggja" => lin V
|
||||||
{ Converb = base_1+"igið" ;
|
{ Converb = base_1+"igið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"igg" ;
|
Sg => base_1+"igg" ;
|
||||||
Pl => base_1+"iggið"
|
Pl => base_1+"iggið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11079,7 +11079,7 @@ mkV071 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"a" => lin V
|
base_1+"e"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11112,7 +11112,7 @@ mkV072 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@?+"a" => lin V
|
base_1+"a"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"ið" ;
|
{ Converb = base_1+"a"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11145,7 +11145,7 @@ mkV073 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"á"+base_2@?+"a" => lin V
|
base_1+"á"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"á"+base_2+"ið" ;
|
{ Converb = base_1+"á"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"á"+base_2 ;
|
Sg => base_1+"á"+base_2 ;
|
||||||
Pl => base_1+"á"+base_2+"ið"
|
Pl => base_1+"á"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11178,7 +11178,7 @@ mkV074 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ey"+base_2@?+"a" => lin V
|
base_1+"ey"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ey"+base_2 ;
|
Sg => base_1+"ey"+base_2 ;
|
||||||
Pl => base_1+"ey"+base_2+"ið"
|
Pl => base_1+"ey"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11211,7 +11211,7 @@ mkV075 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ega" => lin V
|
base_1+"ega" => lin V
|
||||||
{ Converb = nonExist ;
|
{ Converb = nonExist ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -11244,7 +11244,7 @@ mkV076 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"u"+base_2@?+"na" => lin V
|
base_1+"u"+base_2@?+"na" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"nað" ;
|
{ Converb = base_1+"u"+base_2+"nað" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -11277,7 +11277,7 @@ mkV077 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja" => lin V
|
base_1+"ja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11310,7 +11310,7 @@ mkV078 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja" => lin V
|
base_1+"ja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"jið"
|
Pl => base_1+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11343,7 +11343,7 @@ mkV079 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ða" => lin V
|
base_1+"ða" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ð" ;
|
Sg => base_1+"ð" ;
|
||||||
Pl => base_1+"ðið"
|
Pl => base_1+"ðið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11376,7 +11376,7 @@ mkV080 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"áa" => lin V
|
base_1+"áa" => lin V
|
||||||
{ Converb = base_1+"átt" ;
|
{ Converb = base_1+"átt" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"á" ;
|
Sg => base_1+"á" ;
|
||||||
Pl => base_1+"áið"
|
Pl => base_1+"áið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11409,7 +11409,7 @@ mkV081 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"áða" => lin V
|
base_1+"áða" => lin V
|
||||||
{ Converb = base_1+"átt" ;
|
{ Converb = base_1+"átt" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"áð" ;
|
Sg => base_1+"áð" ;
|
||||||
Pl => base_1+"áðið"
|
Pl => base_1+"áðið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11442,7 +11442,7 @@ mkV082 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ða"+base_2@(?+?) => lin V
|
base_1+"ða"+base_2@(?+?) => lin V
|
||||||
{ Converb = base_1+"ð"+base_2 ;
|
{ Converb = base_1+"ð"+base_2 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -11475,7 +11475,7 @@ mkV083 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ø"+base_2@?+"ka" => lin V
|
base_1+"ø"+base_2@?+"ka" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"kið" ;
|
{ Converb = base_1+"o"+base_2+"kið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ø"+base_2+"k" ;
|
Sg => base_1+"ø"+base_2+"k" ;
|
||||||
Pl => base_1+"ø"+base_2+"kið"
|
Pl => base_1+"ø"+base_2+"kið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11508,7 +11508,7 @@ mkV084 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"íggja" => lin V
|
base_1+"íggja" => lin V
|
||||||
{ Converb = base_1+"æð" ;
|
{ Converb = base_1+"æð" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"íggj" ;
|
Sg => base_1+"íggj" ;
|
||||||
Pl => base_1+"íggið"
|
Pl => base_1+"íggið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11541,7 +11541,7 @@ mkV085 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"kja" => lin V
|
base_1+"kja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"k" ;
|
Sg => base_1+"k" ;
|
||||||
Pl => base_1+"kið"
|
Pl => base_1+"kið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11574,7 +11574,7 @@ mkV086 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"a" => lin V
|
base_1+"i"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2 ;
|
Sg => base_1+"i"+base_2 ;
|
||||||
Pl => base_1+"i"+base_2+"ið"
|
Pl => base_1+"i"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11607,7 +11607,7 @@ mkV087 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"a" => lin V
|
base_1+"i"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2 ;
|
Sg => base_1+"i"+base_2 ;
|
||||||
Pl => base_1+"i"+base_2+"ið"
|
Pl => base_1+"i"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11640,7 +11640,7 @@ mkV088 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"u"+base_2@?+"a" => lin V
|
base_1+"u"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"að" ;
|
{ Converb = base_1+"u"+base_2+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -11673,7 +11673,7 @@ mkV089 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ei"+base_2@(?+?)+"ja" => lin V
|
base_1+"ei"+base_2@(?+?)+"ja" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"t" ;
|
{ Converb = base_1+"o"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ei"+base_2+"j" ;
|
Sg => base_1+"ei"+base_2+"j" ;
|
||||||
Pl => base_1+"ei"+base_2+"jið"
|
Pl => base_1+"ei"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11706,7 +11706,7 @@ mkV090 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja" => lin V
|
base_1+"ja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"j" ;
|
Sg => base_1+"j" ;
|
||||||
Pl => base_1+"jið"
|
Pl => base_1+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11739,7 +11739,7 @@ mkV091 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"jó"+base_2@?+"a" => lin V
|
base_1+"jó"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"jó"+base_2 ;
|
Sg => base_1+"jó"+base_2 ;
|
||||||
Pl => base_1+"jó"+base_2+"ið"
|
Pl => base_1+"jó"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11772,7 +11772,7 @@ mkV092 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"áa" => lin V
|
base_1+"áa" => lin V
|
||||||
{ Converb = base_1+"igið" ;
|
{ Converb = base_1+"igið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"á" ;
|
Sg => base_1+"á" ;
|
||||||
Pl => base_1+"áið"
|
Pl => base_1+"áið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11805,7 +11805,7 @@ mkV093 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"y"+base_2@?+"ja" => lin V
|
base_1+"y"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"t" ;
|
{ Converb = base_1+"u"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"y"+base_2 ;
|
Sg => base_1+"y"+base_2 ;
|
||||||
Pl => base_1+"y"+base_2+"ið"
|
Pl => base_1+"y"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11838,7 +11838,7 @@ mkV094 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"na" => lin V
|
base_1+"i"+base_2@?+"na" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"nið" ;
|
{ Converb = base_1+"u"+base_2+"nið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2+"n" ;
|
Sg => base_1+"i"+base_2+"n" ;
|
||||||
Pl => base_1+"i"+base_2+"nið"
|
Pl => base_1+"i"+base_2+"nið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11871,7 +11871,7 @@ mkV095 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"anda" => lin V
|
base_1+"anda" => lin V
|
||||||
{ Converb = base_1+"aðið" ;
|
{ Converb = base_1+"aðið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"att" ;
|
Sg => base_1+"att" ;
|
||||||
Pl => base_1+"andið"
|
Pl => base_1+"andið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11904,7 +11904,7 @@ mkV096 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ei"+base_2@?+"ja" => lin V
|
base_1+"ei"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"t" ;
|
{ Converb = base_1+"o"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ei"+base_2 ;
|
Sg => base_1+"ei"+base_2 ;
|
||||||
Pl => base_1+"ei"+base_2+"ið"
|
Pl => base_1+"ei"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11937,7 +11937,7 @@ mkV097 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"inga" => lin V
|
base_1+"inga" => lin V
|
||||||
{ Converb = base_1+"ungið" ;
|
{ Converb = base_1+"ungið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ikk" ;
|
Sg => base_1+"ikk" ;
|
||||||
Pl => base_1+"ingið"
|
Pl => base_1+"ingið"
|
||||||
} ;
|
} ;
|
||||||
@@ -11970,7 +11970,7 @@ mkV098 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja"+base_2@?+"a" => lin V
|
base_1+"ja"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ja"+base_2 ;
|
Sg => base_1+"ja"+base_2 ;
|
||||||
Pl => base_1+"ja"+base_2+"ið"
|
Pl => base_1+"ja"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12003,7 +12003,7 @@ mkV099 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"o"+base_2@?+"a" => lin V
|
base_1+"o"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"o"+base_2 ;
|
Sg => base_1+"o"+base_2 ;
|
||||||
Pl => base_1+"o"+base_2+"ið"
|
Pl => base_1+"o"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12036,7 +12036,7 @@ mkV100 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"í"+base_2@?+"ja" => lin V
|
base_1+"í"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"i"+base_2+"ið" ;
|
{ Converb = base_1+"i"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"í"+base_2+"j" ;
|
Sg => base_1+"í"+base_2+"j" ;
|
||||||
Pl => base_1+"í"+base_2+"jið"
|
Pl => base_1+"í"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12069,7 +12069,7 @@ mkV101 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"ja" => lin V
|
base_1+"i"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2 ;
|
Sg => base_1+"i"+base_2 ;
|
||||||
Pl => base_1+"i"+base_2+"jið"
|
Pl => base_1+"i"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12102,7 +12102,7 @@ mkV102 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja" => lin V
|
base_1+"ja" => lin V
|
||||||
{ Converb = base_1+"t" ;
|
{ Converb = base_1+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1 ;
|
Sg => base_1 ;
|
||||||
Pl => base_1+"ið"
|
Pl => base_1+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12135,7 +12135,7 @@ mkV103 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ø"+base_2@?+"ja" => lin V
|
base_1+"ø"+base_2@?+"ja" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"ø"+base_2+"j" ;
|
Sg => base_1+"ø"+base_2+"j" ;
|
||||||
Pl => base_1+"ø"+base_2+"jið"
|
Pl => base_1+"ø"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12168,7 +12168,7 @@ mkV104 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"y"+base_2@(?+?)+"ja" => lin V
|
base_1+"y"+base_2@(?+?)+"ja" => lin V
|
||||||
{ Converb = base_1+"u"+base_2+"ið" ;
|
{ Converb = base_1+"u"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"y"+base_2+"j" ;
|
Sg => base_1+"y"+base_2+"j" ;
|
||||||
Pl => base_1+"y"+base_2+"jið"
|
Pl => base_1+"y"+base_2+"jið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12201,7 +12201,7 @@ mkV105 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"i"+base_2@?+"a" => lin V
|
base_1+"i"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"t" ;
|
{ Converb = base_1+"a"+base_2+"t" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"i"+base_2 ;
|
Sg => base_1+"i"+base_2 ;
|
||||||
Pl => base_1+"i"+base_2+"ið"
|
Pl => base_1+"i"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12234,7 +12234,7 @@ mkV106 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"fa" => lin V
|
base_1+"e"+base_2@?+"fa" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"fið" ;
|
{ Converb = base_1+"o"+base_2+"fið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2+"f" ;
|
Sg => base_1+"e"+base_2+"f" ;
|
||||||
Pl => base_1+"e"+base_2+"fið"
|
Pl => base_1+"e"+base_2+"fið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12267,7 +12267,7 @@ mkV107 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"a"+base_2@(?+?)+"a" => lin V
|
base_1+"a"+base_2@(?+?)+"a" => lin V
|
||||||
{ Converb = base_1+"a"+base_2+"ið" ;
|
{ Converb = base_1+"a"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"a"+base_2 ;
|
Sg => base_1+"a"+base_2 ;
|
||||||
Pl => base_1+"a"+base_2+"ið"
|
Pl => base_1+"a"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12300,7 +12300,7 @@ mkV108 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@(?+?)+"a" => lin V
|
base_1+"e"+base_2@(?+?)+"a" => lin V
|
||||||
{ Converb = nonExist ;
|
{ Converb = nonExist ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12333,7 +12333,7 @@ mkV109 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+base_2@?+base_3@?+"a" => lin V
|
base_1+base_2@?+base_3@?+"a" => lin V
|
||||||
{ Converb = base_1+base_2+base_3+"að" ;
|
{ Converb = base_1+base_2+base_3+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
@@ -12366,7 +12366,7 @@ mkV110 base =
|
|||||||
case base of {
|
case base of {
|
||||||
"d"+base_1+"finite" => lin V
|
"d"+base_1+"finite" => lin V
|
||||||
{ Converb = "v"+base_1+"rð" ;
|
{ Converb = "v"+base_1+"rð" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => "v"+base_1+"rðsins" ;
|
Sg => "v"+base_1+"rðsins" ;
|
||||||
Pl => "v"+base_1+"rðanna"
|
Pl => "v"+base_1+"rðanna"
|
||||||
} ;
|
} ;
|
||||||
@@ -12399,7 +12399,7 @@ mkV111 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"e"+base_2@?+"a" => lin V
|
base_1+"e"+base_2@?+"a" => lin V
|
||||||
{ Converb = base_1+"o"+base_2+"ið" ;
|
{ Converb = base_1+"o"+base_2+"ið" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => base_1+"e"+base_2 ;
|
Sg => base_1+"e"+base_2 ;
|
||||||
Pl => base_1+"e"+base_2+"ið"
|
Pl => base_1+"e"+base_2+"ið"
|
||||||
} ;
|
} ;
|
||||||
@@ -12432,7 +12432,7 @@ mkV112 base =
|
|||||||
case base of {
|
case base of {
|
||||||
base_1+"ja" => lin V
|
base_1+"ja" => lin V
|
||||||
{ Converb = base_1+"að" ;
|
{ Converb = base_1+"að" ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => nonExist ;
|
Sg => nonExist ;
|
||||||
Pl => nonExist
|
Pl => nonExist
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
concrete NamesFao of Names = CatFao ** open ResFao in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
GivenName gn = mkNP gn.s Masc Sg P3 ;
|
||||||
|
MaleSurname sn = mkNP sn.s Masc Sg P3 ;
|
||||||
|
FemaleSurname sn = mkNP sn.s Fem Sg P3 ;
|
||||||
|
PlSurname sn = mkNP sn.s Masc Pl P3 ;
|
||||||
|
FullName gn sn = mkNP (gn.s ++ sn.s) Masc Sg P3 ;
|
||||||
|
|
||||||
|
UseLN ln = mkNP ln.s Neuter Sg P3 ;
|
||||||
|
PlainLN ln = mkNP ln.s Neuter Sg P3 ;
|
||||||
|
InLN ln = {s = "í" ++ ln.s} ;
|
||||||
|
AdjLN ap ln = {s = ap.s ! Neuter ! Sg ! Nom ++ ln.s} ;
|
||||||
|
}
|
||||||
+158
-1
@@ -1,4 +1,161 @@
|
|||||||
concrete NounFao of Noun = CatFao ** {
|
concrete NounFao of Noun = CatFao ** open ResFao, Prelude in {
|
||||||
lin
|
lin
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
|
UseN2 n = n ;
|
||||||
|
Use2N3 n = n ** {c2 = n.c2} ;
|
||||||
|
Use3N3 n = n ** {c2 = n.c3} ;
|
||||||
|
UsePN pn = mkNP pn.s Masc Sg P3 ;
|
||||||
|
UsePron p = p ;
|
||||||
|
RelNP np rs =
|
||||||
|
np ** {s = \\c => np.s ! c ++ "," ++ rs.s ! np.g ! persNum np.n np.p} ;
|
||||||
|
DetNP det = {
|
||||||
|
s = \\c => det.s ! Masc ! c ;
|
||||||
|
g = Masc ;
|
||||||
|
n = det.n ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
PredetNP pred np = np ** {
|
||||||
|
s = \\c => pred.s ++ np.s ! c
|
||||||
|
} ;
|
||||||
|
PPartNP np v2 = np ** {
|
||||||
|
s = \\c => np.s ! c ++ v2.Participle ! Past
|
||||||
|
} ;
|
||||||
|
AdvNP np adv = np ** {
|
||||||
|
s = \\c => np.s ! c ++ adv.s
|
||||||
|
} ;
|
||||||
|
ExtAdvNP np adv = np ** {
|
||||||
|
s = \\c => np.s ! c ++ "," ++ adv.s
|
||||||
|
} ;
|
||||||
|
DetCN det cn = {
|
||||||
|
s = \\c => det.s ! cn.g ! c ++ cn.s ! det.sp ! det.n ! c ;
|
||||||
|
g = cn.g ;
|
||||||
|
n = det.n ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
DefArt = {
|
||||||
|
s = \\_,_,_,_ => [] ;
|
||||||
|
sp = Def ;
|
||||||
|
} ;
|
||||||
|
IndefArt = {
|
||||||
|
s = \\b =>
|
||||||
|
table {
|
||||||
|
Masc => table {
|
||||||
|
Sg => case b of {
|
||||||
|
False => table {Nom => "ein" ; Acc => "ein" ; Dat => "einum" ; Gen => "eins"} ;
|
||||||
|
True => \\_ => []
|
||||||
|
} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
} ;
|
||||||
|
Fem => table {
|
||||||
|
Sg => case b of {
|
||||||
|
False => table {Nom => "ein" ; Acc => "eina" ; Dat => "einari" ; Gen => "einar"} ;
|
||||||
|
True => \\_ => []
|
||||||
|
} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
} ;
|
||||||
|
Neuter => table {
|
||||||
|
Sg => case b of {
|
||||||
|
False => table {Nom => "eitt" ; Acc => "eitt" ; Dat => "einum" ; Gen => "eins"} ;
|
||||||
|
True => \\_ => []
|
||||||
|
} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
sp = Indef ;
|
||||||
|
} ;
|
||||||
|
DetQuant quant num = {
|
||||||
|
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
|
||||||
|
num.s ! g ! c ;
|
||||||
|
n = num.n ;
|
||||||
|
sp = quant.sp
|
||||||
|
} ;
|
||||||
|
DetQuantOrd quant num ord = {
|
||||||
|
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
|
||||||
|
num.s ! g ! c ++ ord.s ! g ! num.n ! c ;
|
||||||
|
n = num.n ;
|
||||||
|
sp = quant.sp
|
||||||
|
} ;
|
||||||
|
NumSg = {
|
||||||
|
s = \\_,_ => [] ;
|
||||||
|
n = Sg ;
|
||||||
|
hasCard = False
|
||||||
|
} ;
|
||||||
|
NumPl = {
|
||||||
|
s = \\_,_ => [] ;
|
||||||
|
n = Pl ;
|
||||||
|
hasCard = False
|
||||||
|
} ;
|
||||||
|
NumCard card = card ** {hasCard = True} ;
|
||||||
|
NumDigits digits = {s = \\_,_ => digits.s ; n = Pl} ;
|
||||||
|
NumDecimal dec = {s = \\_,_ => dec.s ; n = Pl} ;
|
||||||
|
NumNumeral numeral = {s=numeral.s ! NCard; n=numeral.n} ;
|
||||||
|
AdNum adn card = {s = \\g,c => adn.s ++ card.s ! g ! c ; n = card.n} ;
|
||||||
|
OrdDigits digits = {s = \\_,_,_ => digits.s ++ BIND ++ "."} ;
|
||||||
|
OrdNumeral numeral = {s = \\g,n,c => numeral.s ! NOrd n ! g ! c} ;
|
||||||
|
OrdSuperl a = {s = a.s} ;
|
||||||
|
OrdNumeralSuperl numeral a = {
|
||||||
|
s = \\g,n,c => numeral.s ! NOrd n ! g ! c ++ a.s ! g ! n ! c
|
||||||
|
} ;
|
||||||
|
MassNP cn = {
|
||||||
|
s = \\c => cn.s ! Indef ! Sg ! c ;
|
||||||
|
g = cn.g ;
|
||||||
|
n = Sg ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
PossPron pron = {
|
||||||
|
s = \\_,_,_,_ => pron.s ! Gen ;
|
||||||
|
sp = Def
|
||||||
|
} ;
|
||||||
|
ComplN2 n2 np = {
|
||||||
|
s = \\sp,n,c => n2.s ! sp ! n ! c ++ n2.c2.s ++ np.s ! n2.c2.c ;
|
||||||
|
g = n2.g
|
||||||
|
} ;
|
||||||
|
ComplN3 n3 np = n3 ** {
|
||||||
|
s = \\sp,n,c => n3.s ! sp ! n ! c ++ n3.c2.s ++ np.s ! n3.c2.c ;
|
||||||
|
c2 = n3.c3
|
||||||
|
} ;
|
||||||
|
AdjCN ap cn = {
|
||||||
|
s = \\sp,n,c => ap.s ! cn.g ! n ! c ++ cn.s ! sp ! n ! c ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
RelCN cn rs = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ rs.s ! cn.g ! persNum n P3 ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
AdvCN cn adv = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ adv.s ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
SentCN cn sc = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ sc.s ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
ApposCN cn np = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Nom ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
PossNP cn np = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Gen ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
PartNP cn np = {
|
||||||
|
s = \\sp,n,c => cn.s ! sp ! n ! c ++ "av" ++ np.s ! Dat ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
|
CountNP det np = {
|
||||||
|
s = \\c => det.s ! np.g ! c ++ "av" ++ np.s ! Dat ;
|
||||||
|
g = np.g ;
|
||||||
|
n = det.n ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
AdjDAP dap ap = dap ** {
|
||||||
|
s = \\g,c => dap.s ! g ! c ++ ap.s ! g ! dap.n ! c
|
||||||
|
} ;
|
||||||
|
DetDAP det = det ;
|
||||||
|
QuantityNP dec mu = {
|
||||||
|
s = \\_ => dec.s ++ mu.s ;
|
||||||
|
g = Neuter ;
|
||||||
|
n = Pl ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,316 @@
|
|||||||
|
concrete NumeralFao of Numeral = CatFao [Numeral, Digits, Decimal] ** open Prelude, ResFao in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Digit = {
|
||||||
|
s,teen,ten : CardOrd => Gender => Case => Str ;
|
||||||
|
n : Number ;
|
||||||
|
} ;
|
||||||
|
Sub10 = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
hundredth, thousandth, millionth, milliardth : Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
|
Sub100, Sub1000 = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
thousandth, millionth, milliardth : Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
|
Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||||
|
{s : CardOrd => Gender => Case => Str ; n : Number} ;
|
||||||
|
Dig = {s : Str; n : Number} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
num n = n ;
|
||||||
|
|
||||||
|
n2 = {
|
||||||
|
s = table {
|
||||||
|
NCard => table {
|
||||||
|
Masc => caseList "tveir" "tveir" "tveimum" "tveggja" ;
|
||||||
|
Fem => caseList "tvær" "tvær" "tveimum" "tveggja" ;
|
||||||
|
Neuter => caseList "tvey" "tvey" "tveimum" "tveggja"
|
||||||
|
} ;
|
||||||
|
NOrd n => table {
|
||||||
|
Masc => case n of {
|
||||||
|
Sg => caseList "annar" "annan" "øðrum" "annars" ;
|
||||||
|
Pl => caseList "aðrir" "aðrar" "øðrum" "annara"
|
||||||
|
} ;
|
||||||
|
Fem => case n of {
|
||||||
|
Sg => caseList "onnur" "aðra" "aðrari" "annarar" ;
|
||||||
|
Pl => caseList "aðrar" "aðrar" "øðrum" "annara"
|
||||||
|
} ;
|
||||||
|
Neuter => case n of {
|
||||||
|
Sg => caseList "annað" "annað" "øðrum" "annars" ;
|
||||||
|
Pl => caseList "onnur" "onnur" "øðrum" "annara"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
teen = table {
|
||||||
|
NCard => \\_,_ => "tólv" ;
|
||||||
|
NOrd n => mkWeakOrd "tólvti" ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => "tjúgu" ;
|
||||||
|
NOrd n => mkWeakOrd "tjúgundi" ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
n3 = {
|
||||||
|
s = table {
|
||||||
|
NCard => table {
|
||||||
|
Masc => caseList "tríggir" "tríggjar" "trimum" "tríggja" ;
|
||||||
|
Fem => caseList "tríggjar" "tríggjar" "trimum" "tríggja" ;
|
||||||
|
Neuter => caseList "trý" "trý" "trimum" "tríggja"
|
||||||
|
} ;
|
||||||
|
NOrd n => mkOrdForms "triði" "triðja" "triðju" ! n
|
||||||
|
} ;
|
||||||
|
teen = table {
|
||||||
|
NCard => \\_,_ => "trettan" ;
|
||||||
|
NOrd n => mkWeakOrd "trettandi" ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => "tríati" ;
|
||||||
|
NOrd n => mkWeakOrd "tretivundi" ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
n4 = mkDigit "fýra" "fjúrtan" "fýrati" "fjórði" "fjúrtandi" "fjørutandi" ;
|
||||||
|
n5 = mkDigit "fimm" "fimtan" "fimmti" "fimti" "fimtandi" "fimtandi" ;
|
||||||
|
n6 = mkDigit "seks" "sekstan" "seksti" "sætti" "sekstandi" "sekstandi" ;
|
||||||
|
n7 = mkDigit "sjey" "seytjan" "sjeyti" "sjeyndi" "seytjandi" "sjútandi" ;
|
||||||
|
n8 = mkDigit "átta" "átjan" "áttati" "áttandi" "átjandi" "áttandi" ;
|
||||||
|
n9 = mkDigit "níggju" "nítjan" "níti" "níggjundi" "nítjandi" "nítandi" ;
|
||||||
|
|
||||||
|
pot01 = {
|
||||||
|
s = table {
|
||||||
|
NCard => table {
|
||||||
|
Masc => caseList "ein" "ein" "einum" "eins" ;
|
||||||
|
Fem => caseList "einar" "eina" "einari" "einar" ;
|
||||||
|
Neuter => caseList "eitt" "eitt" "einum" "eins"
|
||||||
|
} ;
|
||||||
|
NOrd n => mkWeakOrd "fyrsti" ! n
|
||||||
|
} ;
|
||||||
|
hundredth = mkWeakOrd "hundraðandi" ! Sg ;
|
||||||
|
thousandth = mkWeakOrd "túsundandi" ! Sg ;
|
||||||
|
millionth = mkWeakOrd "milliónandi" ! Sg ;
|
||||||
|
milliardth = mkWeakOrd "milliardandi" ! Sg ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
|
pot0 d = d ** {
|
||||||
|
hundredth = mkCompoundOrd (numBase d) "hundraðandi" ! Pl ;
|
||||||
|
thousandth = mkCompoundOrd (numBase d) "túsundandi" ! Pl ;
|
||||||
|
millionth = mkCompoundOrd (numBase d) "milliónandi" ! Pl ;
|
||||||
|
milliardth = mkCompoundOrd (numBase d) "milliardandi" ! Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot0as1 n = n ;
|
||||||
|
|
||||||
|
pot110 =
|
||||||
|
let ten : Gender => Case => Str =
|
||||||
|
table {
|
||||||
|
Neuter => \\_ => "ti" ;
|
||||||
|
_ => \\_ => "tíggju"
|
||||||
|
} ;
|
||||||
|
in mkCardOrd ten
|
||||||
|
(mkWeakOrd "tíggjundi") ** {
|
||||||
|
thousandth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot111 =
|
||||||
|
mkCardOrd (\\_,_ => "ellivu")
|
||||||
|
(mkWeakOrd "ellivti") ** {
|
||||||
|
thousandth = \\g,c => "ellivu" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => "ellivu" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => "ellivu" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot1to19 d =
|
||||||
|
mkCardOrd (d.teen ! NCard)
|
||||||
|
(\\n => d.teen ! NOrd n) ** {
|
||||||
|
thousandth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot1 d =
|
||||||
|
mkCardOrd (d.ten ! NCard)
|
||||||
|
(\\n => d.ten ! NOrd n) ** {
|
||||||
|
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
pot1plus d e = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => e.s ! NCard ! g ! c ++ "og" ++ d.ten ! NCard ! g ! Nom ;
|
||||||
|
NOrd n => \\g,c => d.ten ! NCard ! g ! c ++ "og" ++ e.s ! NOrd n ! g ! Nom
|
||||||
|
} ;
|
||||||
|
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot1as2 n = n ;
|
||||||
|
|
||||||
|
pot21 =
|
||||||
|
mkCardOrd (\\_,_ => "hundrað")
|
||||||
|
(mkWeakOrd "hundraðandi") ** {
|
||||||
|
thousandth = \\g,c => "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2 d =
|
||||||
|
mkCardOrd (\\_,_ => numBase d ++ "hundrað")
|
||||||
|
(\\_ => d.hundredth) ** {
|
||||||
|
thousandth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2plus d e = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ;
|
||||||
|
NOrd n => \\g,c => numBase d ++ "hundrað" ++ "og" ++ e.s ! NOrd n ! g ! c
|
||||||
|
} ;
|
||||||
|
thousandth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2as3 n = n ;
|
||||||
|
|
||||||
|
pot31 = mkCardOrd (\\_,_ => "túsund")
|
||||||
|
(mkWeakOrd "túsundandi") ;
|
||||||
|
|
||||||
|
pot3 n = mkCardOrd (\\_,_ => numBase n ++ "túsund")
|
||||||
|
(\\_ => n.thousandth) ;
|
||||||
|
|
||||||
|
pot3plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "túsund" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "túsund" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot3as4 n = n ;
|
||||||
|
|
||||||
|
pot3decimal d = mkCardOrd (\\_,_ => d.s ++ "túsund")
|
||||||
|
(\\_,_,_ => d.s ++ "túsundandi") ;
|
||||||
|
|
||||||
|
pot41 = mkCardOrd (\\_,_ => "millión")
|
||||||
|
(mkWeakOrd "milliónandi") ;
|
||||||
|
|
||||||
|
pot4 n = mkCardOrd (\\_,_ => numBase n ++ "millión")
|
||||||
|
(\\_ => n.millionth) ;
|
||||||
|
|
||||||
|
pot4plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "millión" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "millión" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot4as5 n = n ;
|
||||||
|
|
||||||
|
pot4decimal d = mkCardOrd (\\_,_ => d.s ++ "millión")
|
||||||
|
(\\_,_,_ => d.s ++ "milliónandi") ;
|
||||||
|
|
||||||
|
pot51 = mkCardOrd (\\_,_ => "milliard")
|
||||||
|
(mkWeakOrd "milliardandi") ;
|
||||||
|
|
||||||
|
pot5 n = mkCardOrd (\\_,_ => numBase n ++ "milliard")
|
||||||
|
(\\_ => n.milliardth) ;
|
||||||
|
|
||||||
|
pot5plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "milliard" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "milliard" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot5decimal d = mkCardOrd (\\_,_ => d.s ++ "milliard")
|
||||||
|
(\\_,_,_ => d.s ++ "milliardandi") ;
|
||||||
|
|
||||||
|
IDig d = d ;
|
||||||
|
IIDig d ds = {s = d.s ++ BIND ++ ds.s; n = Pl} ;
|
||||||
|
|
||||||
|
D_0 = {s = "0"; n = Pl} ;
|
||||||
|
D_1 = {s = "1"; n = Sg} ;
|
||||||
|
D_2 = {s = "2"; n = Pl} ;
|
||||||
|
D_3 = {s = "3"; n = Pl} ;
|
||||||
|
D_4 = {s = "4"; n = Pl} ;
|
||||||
|
D_5 = {s = "5"; n = Pl} ;
|
||||||
|
D_6 = {s = "6"; n = Pl} ;
|
||||||
|
D_7 = {s = "7"; n = Pl} ;
|
||||||
|
D_8 = {s = "8"; n = Pl} ;
|
||||||
|
D_9 = {s = "9"; n = Pl} ;
|
||||||
|
|
||||||
|
PosDecimal d = d ** {hasDot = False} ;
|
||||||
|
NegDecimal d = {s = "-" ++ BIND ++ d.s; n = Pl; hasDot = False} ;
|
||||||
|
IFrac d i = {s = d.s ++ if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ i.s; n = Pl; hasDot = True} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
caseList : Str -> Str -> Str -> Str -> Case => Str = \nom,acc,dat,gen ->
|
||||||
|
table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
||||||
|
|
||||||
|
mkCardOrd :
|
||||||
|
(Gender => Case => Str) ->
|
||||||
|
(Number => Gender => Case => Str) ->
|
||||||
|
{s : CardOrd => Gender => Case => Str ; n : Number} =
|
||||||
|
\card,ord -> {
|
||||||
|
s = table {
|
||||||
|
NCard => card ;
|
||||||
|
NOrd n => ord ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkDigit :
|
||||||
|
Str -> Str -> Str -> Str -> Str -> Str -> Digit =
|
||||||
|
\str,teen,ten,unitOrd,teenOrd,tenOrd -> lin Digit {
|
||||||
|
s = table {
|
||||||
|
NCard => \\_,_ => str ;
|
||||||
|
NOrd n => mkWeakOrd unitOrd ! n
|
||||||
|
} ;
|
||||||
|
teen = table {
|
||||||
|
NCard => \\_,_ => teen ;
|
||||||
|
NOrd n => mkWeakOrd teenOrd ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => ten ;
|
||||||
|
NOrd n => mkWeakOrd tenOrd ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkOrdForms : Str -> Str -> Str -> Number => Gender => Case => Str = \masc,obl,pl ->
|
||||||
|
table {
|
||||||
|
Sg =>
|
||||||
|
table {
|
||||||
|
Masc => caseList masc obl obl obl ;
|
||||||
|
Fem => caseList obl pl pl pl ;
|
||||||
|
Neuter => \\_ => obl
|
||||||
|
} ;
|
||||||
|
Pl => \\_,_ => pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkWeakOrd : Str -> Number => Gender => Case => Str = \lemma ->
|
||||||
|
let stem : Str = init lemma in
|
||||||
|
mkOrdForms lemma (stem + "a") (stem + "u") ;
|
||||||
|
|
||||||
|
mkCompoundOrd : Str -> Str -> Number => Gender => Case => Str = \prefix,lemma ->
|
||||||
|
let stem : Str = init lemma in
|
||||||
|
mkOrdForms
|
||||||
|
(prefix ++ BIND ++ lemma)
|
||||||
|
(prefix ++ BIND ++ (stem + "a"))
|
||||||
|
(prefix ++ BIND ++ (stem + "u")) ;
|
||||||
|
|
||||||
|
numBase : {s : CardOrd => Gender => Case => Str} -> Str = \n ->
|
||||||
|
n.s ! NCard ! Neuter ! Nom ;
|
||||||
|
}
|
||||||
@@ -319,6 +319,19 @@ oper
|
|||||||
_ => regN form1
|
_ => regN form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkPron : (_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
|
||||||
|
\nom,acc,dat,gen,g,n,p -> lin Pron {
|
||||||
|
s = table {
|
||||||
|
Nom => nom ;
|
||||||
|
Acc => acc ;
|
||||||
|
Dat => dat ;
|
||||||
|
Gen => gen
|
||||||
|
} ;
|
||||||
|
g = g ;
|
||||||
|
n = n ;
|
||||||
|
p = p
|
||||||
|
} ;
|
||||||
|
|
||||||
regA : Str -> A -- s;Masc;Sg;Nom
|
regA : Str -> A -- s;Masc;Sg;Nom
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "dur" => mkA001 form;
|
_ + "dur" => mkA001 form;
|
||||||
@@ -489,11 +502,20 @@ oper
|
|||||||
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
invarN : Str -> N = \s -> lin N {
|
||||||
|
s = \\_,_,_ => s ;
|
||||||
|
g = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : Str -> A = regA; -- s;Masc;Sg;Nom
|
mkA : Str -> A = regA; -- s;Masc;Sg;Nom
|
||||||
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
invarA : Str -> A = \s -> lin A {
|
||||||
|
s = \\_,_,_ => s
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA2 = overload {
|
mkA2 = overload {
|
||||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||||
@@ -502,10 +524,19 @@ oper
|
|||||||
mkV = overload {
|
mkV = overload {
|
||||||
mkV : Str -> V = regV; -- Nonfinite
|
mkV : Str -> V = regV; -- Nonfinite
|
||||||
mkV : Str -> Str -> V = reg2V ; -- Nonfinite Indicative;Pres;('PSg', P2)
|
mkV : Str -> Str -> V = reg2V ; -- Nonfinite Indicative;Pres;('PSg', P2)
|
||||||
mkV : V -> Str -> V -- particle verb
|
mkV : V -> Str -> V -- particle verb
|
||||||
= \v,p -> v ** {particle = p}
|
= \v,p -> v ** {particle = p}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
invarV : Str -> V = \s -> lin V {
|
||||||
|
Converb = s ;
|
||||||
|
imperative = \\_ => s ;
|
||||||
|
Indicative = \\_,_ => s ;
|
||||||
|
Nonfinite = s ;
|
||||||
|
Participle = \\_ => s ;
|
||||||
|
particle = []
|
||||||
|
} ;
|
||||||
|
|
||||||
mkVV : V -> VV = \v -> lin VV v ;
|
mkVV : V -> VV = \v -> lin VV v ;
|
||||||
mkVS : V -> VS = \v -> lin VS v ;
|
mkVS : V -> VS = \v -> lin VS v ;
|
||||||
mkVQ : V -> VQ = \v -> lin VQ v ;
|
mkVQ : V -> VQ = \v -> lin VQ v ;
|
||||||
@@ -552,14 +583,15 @@ oper
|
|||||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||||
|
|
||||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
mkIP : Str -> IP = \s -> lin IP {s=s; n=Sg} ;
|
||||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
mkIDet : Str -> IDet = \s -> lin IDet {s=s; n=Sg} ;
|
||||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
|
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_,_ => s; sp=Indef} ;
|
||||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef} ;
|
||||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
mkCard : Str -> Card = \s -> lin Card {s=\\_,_ => s; n=Pl} ;
|
||||||
|
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
|
||||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||||
|
|||||||
@@ -1,11 +1,25 @@
|
|||||||
concrete PhraseFao of Phrase = CatFao ** {
|
concrete PhraseFao of Phrase = CatFao ** open ResFao in {
|
||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = s ;
|
UttS s = s ;
|
||||||
|
UttQS qs = qs ;
|
||||||
|
UttImpSg pol imp = {s = imp.s ! pol.p ! Sg} ;
|
||||||
|
UttImpPl pol imp = {s = imp.s ! pol.p ! Pl} ;
|
||||||
|
UttImpPol pol imp = {s = imp.s ! pol.p ! Pl} ;
|
||||||
|
UttIP ip = {s = ip.s} ;
|
||||||
|
UttIAdv iadv = iadv ;
|
||||||
|
UttNP np = {s = np.s ! Nom} ;
|
||||||
|
UttVP vp = {s = vp.Nonfinite} ;
|
||||||
|
UttCN cn = {s = cn.s ! Indef ! Sg ! Nom} ;
|
||||||
|
UttCard card = {s = card.s ! Neuter ! Nom} ;
|
||||||
|
UttAP ap = {s = ap.s ! Masc ! Sg ! Nom} ;
|
||||||
|
UttAdv adv = adv ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
PConjConj conj = conj ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
|
VocNP np = {s = "," ++ np.s ! Nom} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
concrete QuestionFao of Question = CatFao ** open ResFao in {
|
||||||
|
|
||||||
|
lincat QVP = {s : Tense => Polarity => Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
QuestCl cl = {s = cl.Indicative} ;
|
||||||
|
QuestVP ip vp = {
|
||||||
|
s = \\t,pol => ip.s ++ vp.Indicative ! t ! pol ! Masc ! persNum ip.n P3
|
||||||
|
} ;
|
||||||
|
QuestSlash ip cls = {
|
||||||
|
s = \\t,pol => ip.s ++ cls.s ! t ! pol
|
||||||
|
} ;
|
||||||
|
QuestIAdv iadv cl = {
|
||||||
|
s = \\t,pol => iadv.s ++ cl.Indicative ! t ! pol
|
||||||
|
} ;
|
||||||
|
QuestIComp icomp np = {
|
||||||
|
s = \\t,pol => icomp.s ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IdetCN idet cn = {
|
||||||
|
s = idet.s ++ cn.s ! Indef ! idet.n ! Nom ;
|
||||||
|
n = idet.n
|
||||||
|
} ;
|
||||||
|
IdetIP idet = {
|
||||||
|
s = idet.s ;
|
||||||
|
n = idet.n
|
||||||
|
} ;
|
||||||
|
AdvIP ip adv = ip ** {s = ip.s ++ adv.s} ;
|
||||||
|
IdetQuant iquant num = {
|
||||||
|
s = iquant.s ++ num.s ! Masc ! Nom ;
|
||||||
|
n = num.n
|
||||||
|
} ;
|
||||||
|
PrepIP prep ip = {s = prep.s ++ ip.s} ;
|
||||||
|
AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ;
|
||||||
|
CompIAdv iadv = iadv ;
|
||||||
|
CompIP ip = {s = ip.s} ;
|
||||||
|
|
||||||
|
ComplSlashIP vps ip = {
|
||||||
|
s = \\t,pol => vps.Indicative ! t ! PSg P3 ++ vps.particle ++ negStr pol ++ vps.c2.s ++ ip.s ++ vps.sc
|
||||||
|
} ;
|
||||||
|
AdvQVP vp iadv = {
|
||||||
|
s = \\t,pol => vp.Indicative ! t ! pol ! Masc ! PSg P3 ++ iadv.s
|
||||||
|
} ;
|
||||||
|
AddAdvQVP qvp iadv = {
|
||||||
|
s = \\t,pol => qvp.s ! t ! pol ++ iadv.s
|
||||||
|
} ;
|
||||||
|
QuestQVP ip qvp = {
|
||||||
|
s = \\t,pol => ip.s ++ qvp.s ! t ! pol
|
||||||
|
} ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
concrete RelativeFao of Relative = CatFao ** open ResFao in {
|
||||||
|
lin
|
||||||
|
IdRP = {s = "sum"} ;
|
||||||
|
RelCl cl = {
|
||||||
|
s = \\t,pol,_,_ => "sum" ++ cl.Indicative ! t ! pol
|
||||||
|
} ;
|
||||||
|
RelVP rp vp = {
|
||||||
|
s = \\t,pol,g,pn => rp.s ++ vp.Indicative ! t ! pol ! g ! pn
|
||||||
|
} ;
|
||||||
|
RelSlash rp cls = {
|
||||||
|
s = \\t,pol,_,_ => rp.s ++ cls.s ! t ! pol
|
||||||
|
} ;
|
||||||
|
FunRP prep np rp = {
|
||||||
|
s = prep.s ++ np.s ! prep.c ++ rp.s
|
||||||
|
} ;
|
||||||
|
}
|
||||||
+79
-9
@@ -1,7 +1,9 @@
|
|||||||
resource ResFao = {
|
resource ResFao = ParamX - [Tense,Pres,Past] ** {
|
||||||
|
|
||||||
|
param
|
||||||
|
CardOrd = NCard | NOrd Number ;
|
||||||
|
|
||||||
param Species = Indef | Def ;
|
param Species = Indef | Def ;
|
||||||
param Number = Sg | Pl ;
|
|
||||||
param Case = Nom | Acc | Dat | Gen ;
|
param Case = Nom | Acc | Dat | Gen ;
|
||||||
param Gender = Masc | Fem | Neuter ;
|
param Gender = Masc | Fem | Neuter ;
|
||||||
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
|
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
|
||||||
@@ -90,17 +92,28 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
param Tense = Past | Pres ;
|
param Tense = Pres | Past ;
|
||||||
|
|
||||||
param PersNum = PSg Person | PPl ;
|
param PersNum = PSg Person | PPl ;
|
||||||
param Person = P1 | P3 | P2 ;
|
oper persNum : Number -> Person -> PersNum =
|
||||||
oper Verb = {Converb: Str; Imperative_Jussive: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
|
\n,p -> case n of {
|
||||||
|
Sg => PSg p ;
|
||||||
|
Pl => PPl
|
||||||
|
} ;
|
||||||
|
oper persNumNumber : PersNum -> Number =
|
||||||
|
\pn -> case pn of {
|
||||||
|
PSg _ => Sg ;
|
||||||
|
PPl => Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper Verb = {Converb: Str; imperative: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
|
||||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
|
||||||
{ Converb = f1 ;
|
{ Converb = f1 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => f2 ;
|
Sg => f2 ;
|
||||||
Pl => f3
|
Pl => f3
|
||||||
} ;
|
} ;
|
||||||
Indicative = table {
|
Indicative = table {
|
||||||
Pres => table {
|
Pres => table {
|
||||||
PSg P1 => f4 ;
|
PSg P1 => f4 ;
|
||||||
@@ -129,5 +142,62 @@ oper noPrep : Compl = {s=""; c=Acc} ;
|
|||||||
|
|
||||||
oper CommonNoun = Noun ;
|
oper CommonNoun = Noun ;
|
||||||
oper AdjPhrase = Adj ;
|
oper AdjPhrase = Adj ;
|
||||||
|
oper VerbPhrase = {
|
||||||
|
Converb : Str ;
|
||||||
|
Indicative : Tense => Polarity => Gender => PersNum => Str ;
|
||||||
|
Nonfinite : Str ;
|
||||||
|
Participle : Tense => Str ;
|
||||||
|
} ;
|
||||||
|
oper Clause = {
|
||||||
|
Converb : Str ;
|
||||||
|
Indicative : Tense => Polarity => Str ;
|
||||||
|
Nonfinite : Str ;
|
||||||
|
Participle : Tense => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
copula : Tense => PersNum => Str =
|
||||||
|
table {
|
||||||
|
Pres => table {
|
||||||
|
PSg P1 => "eri" ;
|
||||||
|
PSg P2 => "ert" ;
|
||||||
|
PSg P3 => "er" ;
|
||||||
|
PPl => "eru"
|
||||||
|
} ;
|
||||||
|
Past => table {
|
||||||
|
PSg P1 => "var" ;
|
||||||
|
PSg P2 => "vart" ;
|
||||||
|
PSg P3 => "var" ;
|
||||||
|
PPl => "vóru"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
negStr : Polarity -> Str = \pol -> case pol of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => "ikki"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkNP : Str -> Gender -> Number -> Person -> {s : Case => Str ; g : Gender ; n : Number ; p : Person} =
|
||||||
|
\str,g,n,p -> {
|
||||||
|
s = \\_ => str ;
|
||||||
|
g = g ;
|
||||||
|
n = n ;
|
||||||
|
p = p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkCN : Str -> Gender -> CommonNoun =
|
||||||
|
\str,g -> {
|
||||||
|
s = \\_,_,_ => str ;
|
||||||
|
g = g
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkVP : Str -> VerbPhrase =
|
||||||
|
\str -> {
|
||||||
|
Converb = str ;
|
||||||
|
Indicative = \\_,pol,_,_ => str ++ negStr pol ;
|
||||||
|
Nonfinite = str ;
|
||||||
|
Participle = \\_ => str
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX) in {
|
||||||
|
lin PredVP np vp = {Converb = np.s ! Nom ++ vp.Converb;
|
||||||
|
Indicative = \\t,pol =>
|
||||||
|
let p = persNum np.n np.p
|
||||||
|
in np.s ! Nom ++ vp.Indicative ! t ! pol ! np.g ! p;
|
||||||
|
Nonfinite = np.s ! Nom ++ vp.Nonfinite;
|
||||||
|
Participle = \\t => np.s ! Nom ++ vp.Participle ! t} ;
|
||||||
|
PredSCVP sc vp = {Converb = sc.s ++ vp.Converb;
|
||||||
|
Indicative = \\t,pol => sc.s ++ vp.Indicative ! t ! pol ! Neuter ! PSg P3;
|
||||||
|
Nonfinite = sc.s ++ vp.Nonfinite;
|
||||||
|
Participle = \\t => sc.s ++ vp.Participle ! t} ;
|
||||||
|
SlashVP np vps = {
|
||||||
|
s = \\t,pol =>
|
||||||
|
let p = persNum np.n np.p in
|
||||||
|
np.s ! Nom ++ vps.Indicative ! t ! p ++ vps.particle ++ negStr pol ++ vps.sc ;
|
||||||
|
c2 = vps.c2
|
||||||
|
} ;
|
||||||
|
AdvSlash cls adv = cls ** {
|
||||||
|
s = \\t,pol => cls.s ! t ! pol ++ adv.s
|
||||||
|
} ;
|
||||||
|
SlashPrep cl prep = {
|
||||||
|
s = cl.Indicative ;
|
||||||
|
c2 = prep
|
||||||
|
} ;
|
||||||
|
SlashVS np vs sslash = {
|
||||||
|
s = \\t,pol =>
|
||||||
|
let p = persNum np.n np.p in
|
||||||
|
np.s ! Nom ++ vs.Indicative ! t ! p ++ vs.particle ++ negStr pol ++ sslash.s ;
|
||||||
|
c2 = sslash.c2
|
||||||
|
} ;
|
||||||
|
ImpVP vp = {
|
||||||
|
s = \\pol,n => negStr pol ++ vp.Nonfinite
|
||||||
|
} ;
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s = \\pol,n => adv.s ++ imp.s ! pol ! n
|
||||||
|
} ;
|
||||||
|
UseCl temp pol cl =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
} ;
|
||||||
|
in {
|
||||||
|
s = temp.s ++ pol.s ++ cl.Indicative ! tense ! pol.p
|
||||||
|
} ;
|
||||||
|
UseQCl temp pol qcl =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
} ;
|
||||||
|
in {
|
||||||
|
s = temp.s ++ pol.s ++ qcl.s ! tense ! pol.p
|
||||||
|
} ;
|
||||||
|
UseRCl temp pol rcl =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
}
|
||||||
|
in {
|
||||||
|
s = \\g,pn =>
|
||||||
|
temp.s ++ pol.s ++ rcl.s ! tense ! pol.p ! g ! pn
|
||||||
|
} ;
|
||||||
|
UseSlash temp pol cls =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
} ;
|
||||||
|
in {
|
||||||
|
s = temp.s ++ pol.s ++ cls.s ! tense ! pol.p ;
|
||||||
|
c2 = cls.c2
|
||||||
|
} ;
|
||||||
|
EmbedS s = {s = "at" ++ s.s} ;
|
||||||
|
EmbedQS qs = {s = qs.s} ;
|
||||||
|
EmbedVP vp = {s = vp.Nonfinite} ;
|
||||||
|
AdvS adv s = {s = adv.s ++ s.s} ;
|
||||||
|
ExtAdvS adv s = {s = adv.s ++ "," ++ s.s} ;
|
||||||
|
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
|
||||||
|
RelS s rs = {s = s.s ++ "," ++ rs.s ! Neuter ! PSg P3} ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
concrete StructuralFao of Structural = CatFao **
|
||||||
|
open ParadigmsFao, ResFao in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
i_Pron = mkPron "eg" "meg" "mær" "mín" Masc Sg P1 ;
|
||||||
|
youSg_Pron = mkPron "tú" "teg" "tær" "tín" Masc Sg P2 ;
|
||||||
|
he_Pron = mkPron "hann" "hann" "honum" "hansara" Masc Sg P3 ;
|
||||||
|
she_Pron = mkPron "hon" "hana" "henni" "hennara" Fem Sg P3 ;
|
||||||
|
it_Pron = mkPron "tað" "tað" "tí" "tess" Neuter Sg P3 ;
|
||||||
|
we_Pron = mkPron "vit" "okkum" "okkum" "okkara" Masc Pl P1 ;
|
||||||
|
youPl_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
they_Pron = mkPron "teir" "teir" "teimum" "teirra" Masc Pl P3 ;
|
||||||
|
youPol_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
concrete VerbFao of Verb = CatFao ** open Prelude,ResFao in {
|
||||||
|
lin UseV v = {Converb = v.Converb ++ v.particle;
|
||||||
|
Indicative = \\t,pol,g,p => v.Indicative ! t ! p ++ v.particle ++
|
||||||
|
negStr pol ;
|
||||||
|
Nonfinite = v.Nonfinite ++ v.particle;
|
||||||
|
Participle = \\t => v.Participle ! t ++ v.particle} ;
|
||||||
|
lin ComplVV vv vp = {Converb = vv.Converb ++ vv.particle ++ vp.Nonfinite;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vv.Indicative ! t ! p ++ vv.particle ++ negStr pol ++ vp.Nonfinite;
|
||||||
|
Nonfinite = vv.Nonfinite ++ vv.particle ++ vp.Nonfinite;
|
||||||
|
Participle = \\t => vv.Participle ! t ++ vv.particle ++ vp.Nonfinite} ;
|
||||||
|
lin ComplVS vs s = {Converb = vs.Converb ++ vs.particle ++ "at" ++ s.s;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vs.Indicative ! t ! p ++ vs.particle ++ negStr pol ++ "at" ++ s.s;
|
||||||
|
Nonfinite = vs.Nonfinite ++ vs.particle ++ "at" ++ s.s;
|
||||||
|
Participle = \\t => vs.Participle ! t ++ vs.particle ++ "at" ++ s.s} ;
|
||||||
|
lin ComplVQ vq qs = {Converb = vq.Converb ++ vq.particle ++ qs.s;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vq.Indicative ! t ! p ++ vq.particle ++ negStr pol ++ qs.s;
|
||||||
|
Nonfinite = vq.Nonfinite ++ vq.particle ++ qs.s;
|
||||||
|
Participle = \\t => vq.Participle ! t ++ vq.particle ++ qs.s} ;
|
||||||
|
lin ComplVA va ap = {Converb = va.Converb ++ va.particle ++ ap.s ! Neuter ! Sg ! Nom;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
va.Indicative ! t ! p ++ va.particle ++ negStr pol ++ ap.s ! g ! persNumNumber p ! Nom;
|
||||||
|
Nonfinite = va.Nonfinite ++ va.particle ++ ap.s ! Neuter ! Sg ! Nom;
|
||||||
|
Participle = \\t => va.Participle ! t ++ va.particle ++ ap.s ! Neuter ! Sg ! Nom} ;
|
||||||
|
lin AdvVP vp adv = {Converb = vp.Converb ++ adv.s;
|
||||||
|
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ adv.s;
|
||||||
|
Nonfinite = vp.Nonfinite ++ adv.s;
|
||||||
|
Participle = \\t => vp.Participle ! t ++ adv.s} ;
|
||||||
|
lin ExtAdvVP vp adv = {Converb = vp.Converb ++ "," ++ adv.s;
|
||||||
|
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ "," ++ adv.s;
|
||||||
|
Nonfinite = vp.Nonfinite ++ "," ++ adv.s;
|
||||||
|
Participle = \\t => vp.Participle ! t ++ "," ++ adv.s} ;
|
||||||
|
lin AdVVP adv vp = {Converb = adv.s ++ vp.Converb;
|
||||||
|
Indicative = \\t,pol,g,p => adv.s ++ vp.Indicative ! t ! pol ! g ! p;
|
||||||
|
Nonfinite = adv.s ++ vp.Nonfinite;
|
||||||
|
Participle = \\t => adv.s ++ vp.Participle ! t} ;
|
||||||
|
lin ComplSlash vps np = {Converb = vps.Converb ++ vps.particle
|
||||||
|
++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vps.Indicative ! t ! p ++ vps.particle ++
|
||||||
|
negStr pol ++
|
||||||
|
vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc ;
|
||||||
|
Nonfinite = vps.Nonfinite ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc;
|
||||||
|
Participle = \\t => vps.Participle ! t ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc} ;
|
||||||
|
lin UseComp comp = {
|
||||||
|
Converb = copula ! Pres ! PPl ++ comp.s ! Masc ! Sg ;
|
||||||
|
Indicative = \\t,pol,g,p => copula ! t ! p ++
|
||||||
|
negStr pol ++
|
||||||
|
comp.s ! g ! persNumNumber p ;
|
||||||
|
Nonfinite = "vera" ++ comp.s ! Masc ! Sg ;
|
||||||
|
Participle = \\t => "verið" ++ comp.s ! Masc ! Sg
|
||||||
|
} ;
|
||||||
|
lin CompAP ap = {s = \\g,n => ap.s ! g ! n ! Nom} ;
|
||||||
|
lin CompNP np = {s = \\_,_ => np.s ! Nom} ;
|
||||||
|
lin CompAdv adv = {s = \\_,_ => adv.s} ;
|
||||||
|
lin CompCN cn = {s = \\_,n => cn.s ! Indef ! n ! Nom} ;
|
||||||
|
lin UseCopula = {
|
||||||
|
Converb = "verið" ;
|
||||||
|
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ;
|
||||||
|
Nonfinite = "vera" ;
|
||||||
|
Participle = \\_ => "verið"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin SlashV2a v = v ** {sc = []} ;
|
||||||
|
lin Slash2V3 v np = v ** {
|
||||||
|
Converb = v.Converb ++ v.particle ++ v.c2.s ++ np.s ! v.c2.c ;
|
||||||
|
Indicative = \\t,p => v.Indicative ! t ! p ++ v.particle ++ v.c2.s ++ np.s ! v.c2.c ;
|
||||||
|
Nonfinite = v.Nonfinite ++ v.particle ++ v.c2.s ++ np.s ! v.c2.c ;
|
||||||
|
Participle = \\t => v.Participle ! t ++ v.particle ++ v.c2.s ++ np.s ! v.c2.c ;
|
||||||
|
particle = [] ;
|
||||||
|
c2 = v.c3 ;
|
||||||
|
sc = []
|
||||||
|
} ;
|
||||||
|
lin Slash3V3 v np = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = v.c3.s ++ np.s ! v.c3.c
|
||||||
|
} ;
|
||||||
|
lin SlashV2A v ap = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = ap.s ! Neuter ! Sg ! Nom
|
||||||
|
} ;
|
||||||
|
lin SlashV2S v s = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = "at" ++ s.s
|
||||||
|
} ;
|
||||||
|
lin SlashV2Q v qs = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = qs.s
|
||||||
|
} ;
|
||||||
|
lin SlashV2V v vp = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = vp.Nonfinite
|
||||||
|
} ;
|
||||||
|
lin SlashVV vv vps = vps ** {
|
||||||
|
Converb = vv.Converb ++ vv.particle ++ vps.Nonfinite ;
|
||||||
|
Indicative = \\t,p => vv.Indicative ! t ! p ++ vv.particle ++ vps.Nonfinite ;
|
||||||
|
Nonfinite = vv.Nonfinite ++ vv.particle ++ vps.Nonfinite ;
|
||||||
|
Participle = \\t => vv.Participle ! t ++ vv.particle ++ vps.Nonfinite ;
|
||||||
|
particle = []
|
||||||
|
} ;
|
||||||
|
lin SlashV2VNP v np vps = v ** {
|
||||||
|
c2 = v.c2 ;
|
||||||
|
sc = v.c3.s ++ np.s ! v.c3.c ++ vps.Nonfinite
|
||||||
|
} ;
|
||||||
|
lin ReflVP vps =
|
||||||
|
let np = mkNP "seg" Masc Sg P3 in {
|
||||||
|
Converb = vps.Converb ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc ;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vps.Indicative ! t ! p ++ vps.particle ++ negStr pol ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc ;
|
||||||
|
Nonfinite = vps.Nonfinite ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc ;
|
||||||
|
Participle = \\t => vps.Participle ! t ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c ++ vps.sc
|
||||||
|
} ;
|
||||||
|
lin PassV2 v = {
|
||||||
|
Converb = "verið" ++ v.Participle ! Past ;
|
||||||
|
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ v.Participle ! Past ;
|
||||||
|
Nonfinite = "vera" ++ v.Participle ! Past ;
|
||||||
|
Participle = \\_ => "verið" ++ v.Participle ! Past
|
||||||
|
} ;
|
||||||
|
lin AdvVPSlash vps adv = vps ** {sc = vps.sc ++ adv.s} ;
|
||||||
|
lin AdVVPSlash adv vps = vps ** {
|
||||||
|
Converb = adv.s ++ vps.Converb ;
|
||||||
|
Indicative = \\t,p => adv.s ++ vps.Indicative ! t ! p ;
|
||||||
|
Nonfinite = adv.s ++ vps.Nonfinite ;
|
||||||
|
Participle = \\t => adv.s ++ vps.Participle ! t
|
||||||
|
} ;
|
||||||
|
lin VPSlashPrep vp prep = {
|
||||||
|
Converb = vp.Converb ;
|
||||||
|
imperative = \\_ => vp.Nonfinite ;
|
||||||
|
Indicative = \\t,p => vp.Indicative ! t ! Pos ! Masc ! p ;
|
||||||
|
Nonfinite = vp.Nonfinite ;
|
||||||
|
Participle = vp.Participle ;
|
||||||
|
particle = [] ;
|
||||||
|
c2 = prep ;
|
||||||
|
sc = []
|
||||||
|
} ;
|
||||||
|
}
|
||||||
@@ -66,6 +66,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
|
|||||||
Predet = {s : Number => NPForm => Str} ;
|
Predet = {s : Number => NPForm => Str} ;
|
||||||
Quant = {s1,sp : Number => Case => Str ; s2 : Harmony => Str ; isPoss : Bool ; isDef : Bool ; isNeg : Bool} ;
|
Quant = {s1,sp : Number => Case => Str ; s2 : Harmony => Str ; isPoss : Bool ; isDef : Bool ; isNeg : Bool} ;
|
||||||
Card = {s : Number => Case => Str ; n : Number} ;
|
Card = {s : Number => Case => Str ; n : Number} ;
|
||||||
|
ACard = {s : Number => Case => Str ; n : Number} ;
|
||||||
Num = {s : Number => Case => Str ; isNum : Bool ; n : Number} ;
|
Num = {s : Number => Case => Str ; isNum : Bool ; n : Number} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ lin
|
|||||||
is_wrong_VP = mkVP (ParadigmsFin.mkAdv "väärässä") ;
|
is_wrong_VP = mkVP (ParadigmsFin.mkAdv "väärässä") ;
|
||||||
|
|
||||||
n_units_AP card cn a = mkAP (lin AdA (mkUtt (lin NP (mkNP <lin Card card : Card> (lin CN cn))))) (lin A a) ;
|
n_units_AP card cn a = mkAP (lin AdA (mkUtt (lin NP (mkNP <lin Card card : Card> (lin CN cn))))) (lin A a) ;
|
||||||
|
n_units_of_NP card cn np =
|
||||||
|
mkNP (mkNP <lin Card card : Card> (lin CN cn))
|
||||||
|
(SyntaxFin.mkAdv part_Prep (lin NP np)) ;
|
||||||
|
|
||||||
bottle_of_CN np = mkCN (lin N2 (mkN2 (mkN "pullo") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "pullollinen") (mkPrep partitive))) (lin NP np);
|
bottle_of_CN np = mkCN (lin N2 (mkN2 (mkN "pullo") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "pullollinen") (mkPrep partitive))) (lin NP np);
|
||||||
cup_of_CN np = mkCN (lin N2 (mkN2 (mkN "kuppi") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "kupillinen") (mkPrep partitive))) (lin NP np) ;
|
cup_of_CN np = mkCN (lin N2 (mkN2 (mkN "kuppi") (mkPrep partitive))) (lin NP np) | mkCN (lin N2 (mkN2 (mkN "kupillinen") (mkPrep partitive))) (lin NP np) ;
|
||||||
|
|||||||
@@ -80,6 +80,29 @@ lin
|
|||||||
s2 = paragraph ((S.mkAdv (lin Prep p) S.it_NP).s ++ ";" ++ (S.mkAdv (lin Prep p) S.we_NP).s)
|
s2 = paragraph ((S.mkAdv (lin Prep p) S.it_NP).s ++ ";" ++ (S.mkAdv (lin Prep p) S.we_NP).s)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
InflectionCl = \cl -> {
|
||||||
|
t = "lause" ;
|
||||||
|
s1 = heading1 "Lause" ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=3" "Yksinkertaiset aikamuodot" ++
|
||||||
|
intagAttr "th" "colspan=3" "Perfektimuodot") ++
|
||||||
|
tr (th "aikamuoto" ++ th "väitelause" ++ th "kysymys" ++
|
||||||
|
th "aikamuoto" ++ th "väitelause" ++ th "kysymys") ++
|
||||||
|
inflClauseTense (heading present_Parameter)
|
||||||
|
(heading present_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Pres cl ++
|
||||||
|
inflClauseTense (heading past_Parameter)
|
||||||
|
(heading past_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Past cl ++
|
||||||
|
inflClauseTense (heading future_Parameter)
|
||||||
|
(heading future_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Fut cl ++
|
||||||
|
inflClauseTense (heading conditional_Parameter)
|
||||||
|
(heading conditional_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Cond cl
|
||||||
|
)
|
||||||
|
} ;
|
||||||
|
|
||||||
InflectionV v = {
|
InflectionV v = {
|
||||||
t = "v" ;
|
t = "v" ;
|
||||||
s1 = heading1 (heading verb_Category) ++
|
s1 = heading1 (heading verb_Category) ++
|
||||||
@@ -159,6 +182,20 @@ lin
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ;
|
verbExample : CatFin.Cl -> Str = \cl -> (S.mkUtt cl).s ;
|
||||||
|
|
||||||
|
inflClauseTense : Str -> Str -> ResFin.Tense -> CatFin.Cl -> Str =
|
||||||
|
\simple,perfect,tense,cl ->
|
||||||
|
tr (intagAttr "th" "rowspan=2" simple ++
|
||||||
|
td (cl.s ! tense ! Simul ! Pos ! SDecl) ++
|
||||||
|
td (cl.s ! tense ! Simul ! Pos ! SQuest) ++
|
||||||
|
intagAttr "th" "rowspan=2" perfect ++
|
||||||
|
td (cl.s ! tense ! Anter ! Pos ! SDecl) ++
|
||||||
|
td (cl.s ! tense ! Anter ! Pos ! SQuest)) ++
|
||||||
|
tr (td (cl.s ! tense ! Simul ! Neg ! SDecl) ++
|
||||||
|
td (cl.s ! tense ! Simul ! Neg ! SQuest) ++
|
||||||
|
td (cl.s ! tense ! Anter ! Neg ! SDecl) ++
|
||||||
|
td (cl.s ! tense ! Anter ! Neg ! SQuest)) ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
-} --# notpresent
|
-} --# notpresent
|
||||||
inflVerb : SVerb1 -> Str = \verb0 ->
|
inflVerb : SVerb1 -> Str = \verb0 ->
|
||||||
|
|||||||
+189
-6
@@ -3,15 +3,23 @@
|
|||||||
concrete ExtendFin of Extend =
|
concrete ExtendFin of Extend =
|
||||||
CatFin ** ExtendFunctor - [
|
CatFin ** ExtendFunctor - [
|
||||||
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
||||||
|
MkVPI,BaseVPI,ConsVPI,ConjVPI,ComplVPIVV,
|
||||||
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
||||||
|
,ListComp, BaseComp, ConsComp, ConjComp
|
||||||
|
,ListImp, BaseImp, ConsImp, ConjImp
|
||||||
|
|
||||||
,ExistCN, ExistMassCN, ICompAP, ByVP
|
,ExistCN, ExistMassCN, ICompAP, ByVP
|
||||||
,CompoundN, GenNP, GenIP, GenRP, AdvIsNP, EmbedSSlash
|
,CompoundN, CompoundAP, GenNP, GenIP, GenRP, AdvIsNP, EmbedSSlash
|
||||||
,PassVPSlash, PassAgentVPSlash
|
,PassVPSlash, PassAgentVPSlash
|
||||||
,CardCNCard
|
,CardCNCard
|
||||||
,UttAccNP
|
,UttAccNP
|
||||||
,AdjAsCN, AdjAsNP
|
,AdjAsCN, AdjAsNP, GerundCN, GerundNP, GerundAdv
|
||||||
,ApposNP
|
,ApposNP
|
||||||
,PresPartAP, PastPartAP
|
,PresPartAP, PastPartAP, PastPartAgentAP
|
||||||
|
,PositAdVAdj, ProgrVPSlash
|
||||||
|
,RNP,RNPList,ReflPron,ReflPoss,ReflVPSlash,ReflVPS2,ReflA2
|
||||||
|
,PredetRNP,AdvRNP,AdvRVP,AdvRAP,PossPronRNP
|
||||||
|
,Base_rr_RNP,Base_nr_RNP,Base_rn_RNP,Cons_rr_RNP,Cons_nr_RNP,ConjRNP
|
||||||
]
|
]
|
||||||
with
|
with
|
||||||
(Grammar = GrammarFin) **
|
(Grammar = GrammarFin) **
|
||||||
@@ -97,13 +105,24 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
BaseVPI = twoTable2 VVType Agr ;
|
BaseVPI x y = {
|
||||||
ConsVPI = consrTable2 VVType Agr comma ;
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
sc = x.sc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsVPI x xs = {
|
||||||
|
s1 = \\vt,agr => x.s ! vt ! agr ++ comma ;
|
||||||
|
s2 = \\vt,agr => xs.s1 ! vt ! agr ++ xs.s2 ! vt ! agr ;
|
||||||
|
sc = x.sc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjVPI conj xs = {
|
||||||
|
s = \\vt,agr => conj.s1 ++ xs.s1 ! vt ! agr ++ conj.s2 ++ xs.s2 ! vt ! agr ;
|
||||||
|
sc = xs.sc
|
||||||
|
} ;
|
||||||
|
|
||||||
MkVPI vp = mkVPI vp ;
|
MkVPI vp = mkVPI vp ;
|
||||||
ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ;
|
|
||||||
ComplVPIVV vv vpi =
|
ComplVPIVV vv vpi =
|
||||||
S.insertObj (\\_,_,a => vpi.s ! vv.vi ! a)
|
S.insertObj (\\_,_,a => vpi.s ! vv.vi ! a)
|
||||||
(S.predV (vv ** {sc = case vpi.sc of {
|
(S.predV (vv ** {sc = case vpi.sc of {
|
||||||
@@ -112,6 +131,16 @@ oper
|
|||||||
) ;
|
) ;
|
||||||
|
|
||||||
|
|
||||||
|
lincat [Comp] = {s1,s2 : Agr => Str} ;
|
||||||
|
lin BaseComp = twoTable Agr ;
|
||||||
|
ConsComp = consrTable Agr comma ;
|
||||||
|
ConjComp conj xs = conjunctDistrTable Agr conj xs ;
|
||||||
|
|
||||||
|
lincat [Imp] = {s1,s2 : Polarity => Agr => Str} ;
|
||||||
|
lin BaseImp = twoTable2 Polarity Agr ;
|
||||||
|
ConsImp = consrTable2 Polarity Agr comma ;
|
||||||
|
ConjImp conj xs = conjunctDistrTable2 Polarity Agr conj xs ;
|
||||||
|
|
||||||
-------- two-place verb conjunction
|
-------- two-place verb conjunction
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
@@ -163,6 +192,13 @@ lin
|
|||||||
h = n2.h
|
h = n2.h
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
CompoundAP n a =
|
||||||
|
let prefix = (S.snoun2nounBind n).s ! NCompound in {
|
||||||
|
s = \\_,af => prefix ++ BIND ++ sAdjFull2nforms Posit a ! af ;
|
||||||
|
p = [] ;
|
||||||
|
hasPrefix = True
|
||||||
|
} ;
|
||||||
|
|
||||||
---- copied from VerbFin.CompAP, should be shared
|
---- copied from VerbFin.CompAP, should be shared
|
||||||
ICompAP ap = {
|
ICompAP ap = {
|
||||||
s = \\agr =>
|
s = \\agr =>
|
||||||
@@ -262,6 +298,145 @@ lin PastPartAP vps = {
|
|||||||
p = vps.c2.s.p1 ;
|
p = vps.c2.s.p1 ;
|
||||||
hasPrefix = False
|
hasPrefix = False
|
||||||
} ;
|
} ;
|
||||||
|
PastPartAgentAP vps np = {
|
||||||
|
s = \\_,nf => np.s ! NPCase Gen ++ preCompVP (lin VP vps) (AgentPart (AN nf)) ;
|
||||||
|
p = vps.c2.s.p1 ;
|
||||||
|
hasPrefix = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin GerundCN vp = {
|
||||||
|
s = \\nf => let infForm : InfForm =
|
||||||
|
case nf of {
|
||||||
|
NCase _ Part => Inf4Part ;
|
||||||
|
_ => Inf4Nom
|
||||||
|
}
|
||||||
|
in infVP vp.s.sc Pos (agrP3 (numN nf)) vp infForm ;
|
||||||
|
postmod = \\_ => [] ;
|
||||||
|
h = Back
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GerundNP vp =
|
||||||
|
MassNP {
|
||||||
|
s = \\nf => let infForm : InfForm =
|
||||||
|
case nf of {
|
||||||
|
NCase _ Part => Inf4Part ;
|
||||||
|
_ => Inf4Nom
|
||||||
|
}
|
||||||
|
in infVP vp.s.sc Pos (agrP3 (numN nf)) vp infForm ;
|
||||||
|
postmod = \\_ => [] ;
|
||||||
|
h = Back
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GerundAdv vp = {
|
||||||
|
s = infVP vp.s.sc Pos (agrP3 Sg) vp Inf3Adess
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PositAdVAdj a = {s = a.s ! Posit ! sAAdv} ;
|
||||||
|
|
||||||
|
lin ProgrVPSlash vp =
|
||||||
|
let
|
||||||
|
inf = (sverb2verbSep vp.s).s ! Inf Inf3Iness ;
|
||||||
|
on = predV olla
|
||||||
|
in vp ** {
|
||||||
|
s = on.s ;
|
||||||
|
s2 = \\b,p,a => inf ++ vp.s2 ! b ! p ! a ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
RNP = {s : Agr => NPForm => Str ; isPron : Bool ; isNeg : Bool} ;
|
||||||
|
RNPList = {s1,s2 : Agr => NPForm => Str ; isPron : Bool ; isNeg : Bool} ;
|
||||||
|
|
||||||
|
lin ReflPron = {
|
||||||
|
s = \\agr,npf => (reflPron agr).s ! npf ;
|
||||||
|
isPron = True ;
|
||||||
|
isNeg = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflPoss num cn = {
|
||||||
|
s = \\agr, npf =>
|
||||||
|
let
|
||||||
|
quant : Quant = lin Quant { -- possessive pronoun with suffix only
|
||||||
|
s2 : Harmony => Str = \\harm => possSuffixGen harm agr ;
|
||||||
|
s1,sp = \\_,_ => [] ; isNum,isNeg = False ; isPoss,isDef = True
|
||||||
|
}
|
||||||
|
in (DetCN (DetQuant quant num) cn).s ! npf ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflVPS2 vps rnp = {
|
||||||
|
s = \\agr => vps.s ! agr ++ appCompl True vps.p vps.c2 (rnp2np agr rnp) ;
|
||||||
|
sc = vps.sc ;
|
||||||
|
h = vps.h
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PredetRNP pred rnp = {
|
||||||
|
s = \\agr,npf => pred.s ! complNumAgr agr ! npf ++ rnp.s ! agr ! npf ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = rnp.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRNP np prep rnp = {
|
||||||
|
s = \\agr,npf => np.s ! npf ++ appCompl True Pos prep (rnp2np agr rnp) ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB np.isNeg rnp.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRVP vp prep rnp =
|
||||||
|
insertObj (\\_,b,agr => appCompl True b prep (rnp2np agr rnp)) vp ;
|
||||||
|
|
||||||
|
AdvRAP ap prep rnp = ap ** {
|
||||||
|
s = \\isMod,af => ap.s ! isMod ! af ++ appCompl True Pos prep (rnp2np (agrP3 Sg) rnp) ;
|
||||||
|
hasPrefix = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PossPronRNP p num cn rnp =
|
||||||
|
let np = DetCN (DetQuant (PossPron p) num) cn in
|
||||||
|
np ** {
|
||||||
|
s = \\npf => np.s ! npf ++ rnp.s ! p.a ! NPCase Gen ;
|
||||||
|
isNeg = orB np.isNeg rnp.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_rr_RNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB x.isNeg y.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_nr_RNP x y = {
|
||||||
|
s1 = \\_,npf => x.s ! npf ;
|
||||||
|
s2 = y.s ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB x.isNeg y.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_rn_RNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = \\_,npf => y.s ! npf ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB x.isNeg y.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Cons_rr_RNP x xs = {
|
||||||
|
s1 = \\agr,npf => x.s ! agr ! npf ++ comma ;
|
||||||
|
s2 = \\agr,npf => xs.s1 ! agr ! npf ++ xs.s2 ! agr ! npf ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB x.isNeg xs.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Cons_nr_RNP x xs = {
|
||||||
|
s1 = \\_,npf => x.s ! npf ++ comma ;
|
||||||
|
s2 = \\agr,npf => xs.s1 ! agr ! npf ++ xs.s2 ! agr ! npf ;
|
||||||
|
isPron = False ;
|
||||||
|
isNeg = orB x.isNeg xs.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjRNP conj xs = {
|
||||||
|
s = \\agr,npf => conj.s1 ++ xs.s1 ! agr ! npf ++ conj.s2 ++ xs.s2 ! agr ! npf ;
|
||||||
|
isPron = xs.isPron ;
|
||||||
|
isNeg = xs.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
-- ruohoa syövä, Ranskassa valmistettu
|
-- ruohoa syövä, Ranskassa valmistettu
|
||||||
@@ -271,4 +446,12 @@ oper
|
|||||||
vp.s.s ! vform ++
|
vp.s.s ! vform ++
|
||||||
vp.ext ;
|
vp.ext ;
|
||||||
|
|
||||||
|
rnp2np : Agr -> RNP -> NP ;
|
||||||
|
rnp2np agr rnp = {
|
||||||
|
s = rnp.s ! agr ;
|
||||||
|
a = agr ;
|
||||||
|
isPron = rnp.isPron ;
|
||||||
|
isNeg = rnp.isNeg
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,8 +148,7 @@ lin
|
|||||||
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
|
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
|
||||||
policeman_N = mkN "poliisi" ;
|
policeman_N = mkN "poliisi" ;
|
||||||
priest_N = mkN "pappi" ;
|
priest_N = mkN "pappi" ;
|
||||||
probable_AS = mkAS --- for vowel harmony
|
probable_AS = mkAS (compoundA "toden" (mkA "näköinen")) ;
|
||||||
(mkA (mkN "todennäköinen") "tonennäköisempi" "todennäköisin") ; ---- sta
|
|
||||||
queen_N = mkN "kuningatar" ;
|
queen_N = mkN "kuningatar" ;
|
||||||
radio_N = mk2N "radio" "radioita" ;
|
radio_N = mk2N "radio" "radioita" ;
|
||||||
rain_V0 = mkV0 (mk2V "sataa" "satoi") ;
|
rain_V0 = mkV0 (mk2V "sataa" "satoi") ;
|
||||||
|
|||||||
@@ -1064,7 +1064,7 @@ oper
|
|||||||
Transl => "niiksi" ;
|
Transl => "niiksi" ;
|
||||||
Ess => "niinä" ;
|
Ess => "niinä" ;
|
||||||
Iness => "niissä" ;
|
Iness => "niissä" ;
|
||||||
Elat => "niitä" ;
|
Elat => "niistä" ;
|
||||||
Illat => "niihin" ;
|
Illat => "niihin" ;
|
||||||
Adess => "niillä" ;
|
Adess => "niillä" ;
|
||||||
Ablat => "niiltä" ;
|
Ablat => "niiltä" ;
|
||||||
|
|||||||
@@ -36,4 +36,8 @@ lin InLN ln =
|
|||||||
let c = case ln.extCase of {True => Adess ; False => Iness}
|
let c = case ln.extCase of {True => Adess ; False => Iness}
|
||||||
in {s = ln.s ! c} ;
|
in {s = ln.s ! c} ;
|
||||||
|
|
||||||
|
lin AdjLN ap ln = ln ** {
|
||||||
|
s = \\c => ap.s ! True ! NCase ln.n c ++ ln.s ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,6 +294,11 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
|
|||||||
isPron = False ; isNeg = det.isNeg
|
isPron = False ; isNeg = det.isNeg
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
AdjDAP dap ap = dap ** {
|
||||||
|
s1 = \\c => dap.s1 ! c ++ ap.s ! True ! NCase dap.n c ;
|
||||||
|
sp = \\c => dap.sp ! c ++ ap.s ! False ! NCase dap.n c
|
||||||
|
} ;
|
||||||
|
|
||||||
DetDAP d = d ;
|
DetDAP d = d ;
|
||||||
|
|
||||||
QuantityNP n m = {
|
QuantityNP n m = {
|
||||||
|
|||||||
@@ -75,10 +75,24 @@ lin
|
|||||||
pot3as4 n = n ;
|
pot3as4 n = n ;
|
||||||
pot3decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ BIND ++ tuhattaN.s ! Pl ! c} ;
|
pot3decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ BIND ++ tuhattaN.s ! Pl ! c} ;
|
||||||
|
|
||||||
|
pot41 = {n = Pl ; s = miljoonaN.s} ;
|
||||||
|
pot4 d = {n = Pl ; s = \\c => d.s ! NumAttr ! NCard (NCase Sg Nom) ++ nBIND d.n ++ miljoonaaN.s ! d.n ! c} ;
|
||||||
|
pot4plus d e = {
|
||||||
|
n = Pl ;
|
||||||
|
s = \\c => d.s ! NumAttr ! NCard (NCase Sg Nom) ++ nBIND d.n ++ miljoonaaN.s ! d.n ! c ++
|
||||||
|
e.s ! c
|
||||||
|
} ;
|
||||||
pot4as5 n = n ;
|
pot4as5 n = n ;
|
||||||
pot4decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ "miljoonaa"} ; -- KA: case inflection missing
|
pot4decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ "miljoonaa"} ; -- KA: case inflection missing
|
||||||
|
|
||||||
pot51 = {n = Pl ; s = \\c => "miljardi"} ; -- KA: case inflection missing
|
pot51 = {n = Pl ; s = miljardiN.s} ;
|
||||||
|
pot5 d = {n = Pl ; s = \\c => d.s ! NumAttr ! NCard (NCase Sg Nom) ++ nBIND d.n ++ miljardiaN.s ! d.n ! c} ;
|
||||||
|
pot5plus d e = {
|
||||||
|
n = Pl ;
|
||||||
|
s = \\c => d.s ! NumAttr ! NCard (NCase Sg Nom) ++ nBIND d.n ++ miljardiaN.s ! d.n ! c ++
|
||||||
|
e.s ! c
|
||||||
|
} ;
|
||||||
|
pot5decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ "miljardia"} ; -- KA: case inflection missing
|
||||||
|
|
||||||
oper
|
oper
|
||||||
-- co : (c,o : {s : NForm => Str}) -> {s : CardOrd => Str} = \c,o -> {
|
-- co : (c,o : {s : NForm => Str}) -> {s : CardOrd => Str} = \c,o -> {
|
||||||
@@ -128,7 +142,7 @@ oper
|
|||||||
(ordN "a" "sadas") ;
|
(ordN "a" "sadas") ;
|
||||||
|
|
||||||
tuhatN = co
|
tuhatN = co
|
||||||
(snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "ruhantena" "tuhanteen"
|
(snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "tuhantena" "tuhanteen"
|
||||||
"tuhansien" "tuhansia" "tuhansina" "tuhansissa" "tuhansiin"))
|
"tuhansien" "tuhansia" "tuhansina" "tuhansissa" "tuhansiin"))
|
||||||
(ordN "a" "tuhannes") ;
|
(ordN "a" "tuhannes") ;
|
||||||
|
|
||||||
@@ -157,6 +171,32 @@ oper
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
miljoonaN = co
|
||||||
|
(snoun2nounBind (mkN "miljoona"))
|
||||||
|
(ordN "a" "miljoonas") ;
|
||||||
|
|
||||||
|
miljoonaaN = {s = table {
|
||||||
|
Sg => miljoonaN.s ;
|
||||||
|
Pl => table {
|
||||||
|
NCard (NCase Sg Nom) => "miljoonaa" ;
|
||||||
|
k => miljoonaN.s ! k
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
miljardiN = co
|
||||||
|
(snoun2nounBind (mkN "miljardi"))
|
||||||
|
(ordN "a" "miljardis") ;
|
||||||
|
|
||||||
|
miljardiaN = {s = table {
|
||||||
|
Sg => miljardiN.s ;
|
||||||
|
Pl => table {
|
||||||
|
NCard (NCase Sg Nom) => "miljardia" ;
|
||||||
|
k => miljardiN.s ! k
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Dig = TDigit ;
|
Dig = TDigit ;
|
||||||
|
|||||||
@@ -221,7 +221,15 @@ oper
|
|||||||
= \s -> lin A {s = \\_,_ => s ; h = Back ; p = [] ; hasPrefix = False} ; ----- stemming adds bogus endings
|
= \s -> lin A {s = \\_,_ => s ; h = Back ; p = [] ; hasPrefix = False} ; ----- stemming adds bogus endings
|
||||||
|
|
||||||
compoundA : Str -> A -> A -- prefix glued to adjective, e.g. "hevos"+"vetoinen"
|
compoundA : Str -> A -> A -- prefix glued to adjective, e.g. "hevos"+"vetoinen"
|
||||||
= \s,a -> lin A {s = \\d,c => s + a.s ! d ! c ; h = a.h ; p = s + a.p ; hasPrefix = a.hasPrefix} ;
|
= \s,a -> lin A {
|
||||||
|
s = \\d,c => s + a.s ! d ! c ;
|
||||||
|
h = a.h ;
|
||||||
|
p = case a.hasPrefix of {
|
||||||
|
True => s + a.p ;
|
||||||
|
False => []
|
||||||
|
} ;
|
||||||
|
hasPrefix = a.hasPrefix
|
||||||
|
} ;
|
||||||
|
|
||||||
prefixA : Str -> A -> A -- in modifying use, an uninflected glued prefix, e.g. "sähkö" for "sähköinen"
|
prefixA : Str -> A -> A -- in modifying use, an uninflected glued prefix, e.g. "sähkö" for "sähköinen"
|
||||||
= \pr,a -> a ** {
|
= \pr,a -> a ** {
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin, StemFin in {
|
|||||||
verb.fin ++ verb.inf ++ compl ;
|
verb.fin ++ verb.inf ++ compl ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s = \\pol,agr => adv.s ++ imp.s ! pol ! agr
|
||||||
|
} ;
|
||||||
|
|
||||||
-- The object case is formed at the use site of $c2$, in $Relative$ and $Question$.
|
-- The object case is formed at the use site of $c2$, in $Relative$ and $Question$.
|
||||||
|
|
||||||
SlashVP np vp = {
|
SlashVP np vp = {
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ oper
|
|||||||
let
|
let
|
||||||
tuoree = init (tuore.s ! NCase Sg Gen) ;
|
tuoree = init (tuore.s ! NCase Sg Gen) ;
|
||||||
tuoreesti = tuoree + "sti" ;
|
tuoreesti = tuoree + "sti" ;
|
||||||
tuoreemmin = init tuoree ;
|
tuoreemmin = init tuoree + "in" ;
|
||||||
in {s = table {
|
in {s = table {
|
||||||
AN f => tuore.s ! f ;
|
AN f => tuore.s ! f ;
|
||||||
AAdv => if_then_Str isPos tuoreesti tuoreemmin
|
AAdv => if_then_Str isPos tuoreesti tuoreemmin
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ oper
|
|||||||
let
|
let
|
||||||
tuoree = tuore.s ! 1 ;
|
tuoree = tuore.s ! 1 ;
|
||||||
tuoreesti = tuoree + "sti" ;
|
tuoreesti = tuoree + "sti" ;
|
||||||
tuoreemmin = init tuoree ;
|
tuoreemmin = init tuoree + "in" ;
|
||||||
in {s = table {
|
in {s = table {
|
||||||
SAN f => tuore.s ! f ;
|
SAN f => tuore.s ! f ;
|
||||||
SAAdv => if_then_Str isPos tuoreesti tuoreemmin
|
SAAdv => if_then_Str isPos tuoreesti tuoreemmin
|
||||||
|
|||||||
@@ -108,6 +108,32 @@ lin
|
|||||||
s2 = paragraph p.s
|
s2 = paragraph p.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
InflectionCl = \cl -> {
|
||||||
|
t = "cl" ;
|
||||||
|
s1 = heading1 "Phrase" ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=3" "Temps simples" ++
|
||||||
|
intagAttr "th" "colspan=3" "Temps composés") ++
|
||||||
|
tr (th "Temps" ++ th "Affirmation" ++ th "Question" ++
|
||||||
|
th "Temps" ++ th "Affirmation" ++ th "Question") ++
|
||||||
|
inflClauseTense (heading present_Parameter)
|
||||||
|
(heading present_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
RPres cl ++
|
||||||
|
inflClauseTense (heading past_Parameter)
|
||||||
|
(heading past_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
RPast cl ++
|
||||||
|
inflClauseTense (heading past_Parameter)
|
||||||
|
(heading past_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
RPasse cl ++
|
||||||
|
inflClauseTense (heading future_Parameter)
|
||||||
|
(heading future_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
RFut cl ++
|
||||||
|
inflClauseTense (heading conditional_Parameter)
|
||||||
|
(heading conditional_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
RCond cl
|
||||||
|
)
|
||||||
|
} ;
|
||||||
|
|
||||||
InflectionV v = {
|
InflectionV v = {
|
||||||
t = "v" ;
|
t = "v" ;
|
||||||
s1 = heading1 (heading verb_Category) ++
|
s1 = heading1 (heading verb_Category) ++
|
||||||
@@ -188,6 +214,18 @@ lin
|
|||||||
MkTag i = ss i.t ;
|
MkTag i = ss i.t ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
inflClauseTense : Str -> Str -> RTense -> Cl -> Str = \simple,perfect,tense,cl ->
|
||||||
|
tr (intagAttr "th" "rowspan=2" simple ++
|
||||||
|
td (cl.s ! DDir ! tense ! Simul ! RPos ! Indic) ++
|
||||||
|
td (cl.s ! DInv ! tense ! Simul ! RPos ! Indic) ++
|
||||||
|
intagAttr "th" "rowspan=2" perfect ++
|
||||||
|
td (cl.s ! DDir ! tense ! Anter ! RPos ! Indic) ++
|
||||||
|
td (cl.s ! DInv ! tense ! Anter ! RPos ! Indic)) ++
|
||||||
|
tr (td (cl.s ! DDir ! tense ! Simul ! (RNeg True) ! Indic) ++
|
||||||
|
td (cl.s ! DInv ! tense ! Simul ! (RNeg True) ! Indic) ++
|
||||||
|
td (cl.s ! DDir ! tense ! Anter ! (RNeg True) ! Indic) ++
|
||||||
|
td (cl.s ! DInv ! tense ! Anter ! (RNeg True) ! Indic)) ;
|
||||||
|
|
||||||
verbExample : CatFre.Cl -> Str = \cl ->
|
verbExample : CatFre.Cl -> Str = \cl ->
|
||||||
(S.mkUtt cl).s
|
(S.mkUtt cl).s
|
||||||
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ concrete CatGer of Cat =
|
|||||||
|
|
||||||
Num = {s,sp : AForm => Str ; n : Number ; isNum : Bool} ; -- Num,Card.s AForm HL 12/23
|
Num = {s,sp : AForm => Str ; n : Number ; isNum : Bool} ; -- Num,Card.s AForm HL 12/23
|
||||||
Card = {s : AForm => Str ; n : Number} ; -- inflection mainly for: einer,eine,eines
|
Card = {s : AForm => Str ; n : Number} ; -- inflection mainly for: einer,eine,eines
|
||||||
|
ACard = {s : Str ; n : Number} ;
|
||||||
Ord = {s : AForm => Str} ;
|
Ord = {s : AForm => Str} ;
|
||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ lin
|
|||||||
is_wrong_VP = mkVP have_V2 (mkNP (P.mkN "Unrecht")) ;
|
is_wrong_VP = mkVP have_V2 (mkNP (P.mkN "Unrecht")) ;
|
||||||
|
|
||||||
n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP <lin Card card : Card> (lin CN cn)))) (lin A a) ;
|
n_units_AP card cn a = mkAP (lin AdA (mkUtt (mkNP <lin Card card : Card> (lin CN cn)))) (lin A a) ;
|
||||||
|
n_units_of_NP card cn np =
|
||||||
|
G.AdvNP
|
||||||
|
(mkNP <lin Card card : Card> (lin CN cn))
|
||||||
|
(SyntaxGer.mkAdv P.von_Prep (lin NP np)) ;
|
||||||
n_unit_CN card unit cn = mkCN (invarA (mkUtt (mkNP <lin Card card : Card> (lin CN unit))).s) cn ;
|
n_unit_CN card unit cn = mkCN (invarA (mkUtt (mkNP <lin Card card : Card> (lin CN unit))).s) cn ;
|
||||||
|
|
||||||
bottle_of_CN np = N.ApposCN (mkCN (P.mkN "Flasche")) np ;
|
bottle_of_CN np = N.ApposCN (mkCN (P.mkN "Flasche")) np ;
|
||||||
|
|||||||
@@ -134,6 +134,29 @@ lin
|
|||||||
s2 = paragraph (S.mkAdv (lin Prep p) (S.mkNP S.a_Det L.computer_N)).s
|
s2 = paragraph (S.mkAdv (lin Prep p) (S.mkNP S.a_Det L.computer_N)).s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
InflectionCl = \cl -> {
|
||||||
|
t = "satz" ;
|
||||||
|
s1 = heading1 "Satz" ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (intagAttr "th" "colspan=3" "Einfache Tempora" ++
|
||||||
|
intagAttr "th" "colspan=3" "Perfekte Tempora") ++
|
||||||
|
tr (th "Tempus" ++ th "Aussage" ++ th "Frage" ++
|
||||||
|
th "Tempus" ++ th "Aussage" ++ th "Frage") ++
|
||||||
|
inflClauseTense (heading present_Parameter)
|
||||||
|
(heading present_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Pres cl ++
|
||||||
|
inflClauseTense (heading past_Parameter)
|
||||||
|
(heading past_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Past cl ++
|
||||||
|
inflClauseTense (heading future_Parameter)
|
||||||
|
(heading future_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Fut cl ++
|
||||||
|
inflClauseTense (heading conditional_Parameter)
|
||||||
|
(heading conditional_Parameter ++ " " ++ heading perfect_Parameter)
|
||||||
|
Cond cl
|
||||||
|
)
|
||||||
|
} ;
|
||||||
|
|
||||||
InflectionV v = {
|
InflectionV v = {
|
||||||
t = "v" ;
|
t = "v" ;
|
||||||
s1 = heading1 (heading verb_Category) ++
|
s1 = heading1 (heading verb_Category) ++
|
||||||
@@ -213,7 +236,19 @@ lin
|
|||||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
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 ;
|
MkTag i = ss i.t ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
inflClauseTense : Str -> Str -> ResGer.Tense -> Cl -> Str = \simple,perfect,tense,cl ->
|
||||||
|
tr (intagAttr "th" "rowspan=2" simple ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Simul ! Pos ! Main) ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Simul ! Pos ! Inv) ++
|
||||||
|
intagAttr "th" "rowspan=2" perfect ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Anter ! Pos ! Main) ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Anter ! Pos ! Inv)) ++
|
||||||
|
tr (td (cl.s ! MIndic ! tense ! Simul ! Neg ! Main) ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Simul ! Neg ! Inv) ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Anter ! Neg ! Main) ++
|
||||||
|
td (cl.s ! MIndic ! tense ! Anter ! Neg ! Inv)) ;
|
||||||
|
|
||||||
verbExample : CatGer.Cl -> Str = \cl ->
|
verbExample : CatGer.Cl -> Str = \cl ->
|
||||||
(S.mkUtt cl).s
|
(S.mkUtt cl).s
|
||||||
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user