mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-18 08:16:05 -06:00
more updates from Codex
This commit is contained in:
@@ -2,31 +2,31 @@ concrete AdjectiveFao of Adjective = CatFao ** open ResFao in {
|
||||
lin
|
||||
PositA a = a ;
|
||||
ComparA a np = {
|
||||
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c ++ "enn" ++ np.s ! Nom
|
||||
s = \\af,g,n,c => "meir" ++ a.s ! af ! 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
|
||||
s = \\af,g,n,c => a.s ! af ! 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"
|
||||
s = \\af,g,n,c => a.s ! af ! g ! n ! c ++ a.c2.s ++ "seg"
|
||||
} ;
|
||||
UseA2 a = a ;
|
||||
UseComparA a = {
|
||||
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c
|
||||
s = \\af,g,n,c => "meir" ++ a.s ! af ! g ! n ! c
|
||||
} ;
|
||||
CAdvAP cadv ap np = {
|
||||
s = \\g,n,c => cadv.s ++ ap.s ! g ! n ! c ++ cadv.p ++ np.s ! Nom
|
||||
s = \\af,g,n,c => cadv.s ++ ap.s ! af ! 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
|
||||
s = \\af,g,n,c => ap.s ! af ! g ! n ! c ++ sc.s
|
||||
} ;
|
||||
AdAP ada ap = {
|
||||
s = \\g,n,c => ada.s ++ ap.s ! g ! n ! c
|
||||
s = \\af,g,n,c => ada.s ++ ap.s ! af ! g ! n ! c
|
||||
} ;
|
||||
AdvAP ap adv = {
|
||||
s = \\g,n,c => ap.s ! g ! n ! c ++ adv.s
|
||||
s = \\af,g,n,c => ap.s ! af ! g ! n ! c ++ adv.s
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
concrete AdverbFao of Adverb = CatFao ** open Prelude,ResFao in {
|
||||
lin
|
||||
PositAdvAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
|
||||
PositAdvAdj a = {s = a.s ! Strong ! 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} ;
|
||||
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Strong ! Neuter ! Sg ! Nom ++ cadv.p ++ np.s ! Nom} ;
|
||||
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Strong ! Neuter ! Sg ! Nom ++ cadv.p ++ s.s} ;
|
||||
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
||||
PositAdAAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
|
||||
PositAdAAdj a = {s = a.s ! Strong ! Neuter ! Sg ! Nom} ;
|
||||
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||
AdnCAdv cadv = {s = cadv.s} ;
|
||||
}
|
||||
|
||||
+14
-6
@@ -18,9 +18,17 @@ lincat SSlash = {s : Str ; c2 : Compl} ;
|
||||
lincat Imp = {s : Polarity => Number => Str} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat CN = CommonNoun ;
|
||||
lincat NP, Pron = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||
lincat NP = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||
lincat Pron = {
|
||||
s : Case => Str ;
|
||||
poss : Gender => Number => Case => Str ;
|
||||
g : Gender ; n : Number ; p : Person
|
||||
} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat QCl = {s : Tense => Polarity => Str} ;
|
||||
lincat QCl = {
|
||||
s,anterior : Tense => Polarity => Str ;
|
||||
future,conditional : Polarity => Str
|
||||
} ;
|
||||
lincat IP = {s : Str ; n : Number} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str ; n : Number} ;
|
||||
@@ -29,14 +37,14 @@ lincat RCl = {s : Tense => Polarity => Gender => PersNum => Str} ;
|
||||
lincat RS = {s : Gender => PersNum => Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat AP = AdjPhrase ;
|
||||
lincat Det = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||
lincat Det = {s : Gender => Case => Str ; n : Number ; sp : Species ; d : Declension} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Quant = {s : Bool => Gender => Number => Case => Str; sp : Species} ;
|
||||
lincat Quant = {s : Bool => Gender => Number => Case => Str; sp : Species ; d : Declension} ;
|
||||
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 Ord = {s : Declension => Gender => Number => Case => Str} ;
|
||||
lincat DAP = {s : Gender => Case => Str ; n : Number ; sp : Species ; d : Declension} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat Numeral = {
|
||||
s : CardOrd => Gender => Case => Str ;
|
||||
|
||||
@@ -5,9 +5,9 @@ lincat
|
||||
[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} ;
|
||||
[AP] = {s1,s2 : Declension => Gender => Number => Case => Str} ;
|
||||
[CN] = {s1,s2 : Species => Number => Case => Str ; p1,p2 : Number => Case => Str ; g : Gender} ;
|
||||
[DAP] = {s1,s2 : Gender => Case => Str ; n : Number ; sp : Species ; d : Declension} ;
|
||||
|
||||
lin
|
||||
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
@@ -21,15 +21,19 @@ lin
|
||||
n = Pl ;
|
||||
p = P3
|
||||
} ;
|
||||
ConjAP conj xs = {s = \\g,n,c => xs.s1 ! g ! n ! c ++ conj.s ++ xs.s2 ! g ! n ! c} ;
|
||||
ConjAP conj xs = {
|
||||
s = \\af,g,n,c => xs.s1 ! af ! g ! n ! c ++ conj.s ++ xs.s2 ! af ! g ! n ! c
|
||||
} ;
|
||||
ConjCN conj xs = {
|
||||
s = \\sp,n,c => xs.s1 ! sp ! n ! c ++ conj.s ++ xs.s2 ! sp ! n ! c ;
|
||||
p = \\n,c => xs.p1 ! n ! c ++ conj.s ++ xs.p2 ! 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
|
||||
sp = xs.sp ;
|
||||
d = xs.d
|
||||
} ;
|
||||
|
||||
BaseS x y = {s1 = x.s ; s2 = y.s} ;
|
||||
@@ -45,9 +49,15 @@ lin
|
||||
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} ;
|
||||
ConsAP x xs = {
|
||||
s1 = \\af,g,n,c => x.s ! af ! g ! n ! c ++ "," ++ xs.s1 ! af ! g ! n ! c ;
|
||||
s2 = xs.s2
|
||||
} ;
|
||||
BaseCN x y = {s1 = x.s ; s2 = y.s ; p1 = x.p ; p2 = y.p ; g = x.g} ;
|
||||
ConsCN x xs = {
|
||||
s1 = \\sp,n,c => x.s ! sp ! n ! c ++ "," ++ xs.s1 ! sp ! n ! c ; s2 = xs.s2 ;
|
||||
p1 = \\n,c => x.p ! n ! c ++ "," ++ xs.p1 ! n ! c ; p2 = xs.p2 ; g = xs.g
|
||||
} ;
|
||||
BaseDAP x y = {s1 = x.s ; s2 = y.s ; n = y.n ; sp = y.sp ; d = y.d} ;
|
||||
ConsDAP x xs = {s1 = \\g,c => x.s ! g ! c ++ "," ++ xs.s1 ! g ! c ; s2 = xs.s2 ; n = xs.n ; sp = xs.sp ; d = xs.d} ;
|
||||
}
|
||||
|
||||
@@ -14,34 +14,64 @@ lin
|
||||
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 ;
|
||||
Interrogative = \\t,pol => "eitur" ++ np.s ! Nom ++ negStr pol ++ name.s ! Nom ;
|
||||
Future = \\pol => np.s ! Nom ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "eita" ++ name.s ! Nom ;
|
||||
FutureInterrogative = \\pol => futureAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "eita" ++ name.s ! Nom ;
|
||||
Conditional = \\pol => np.s ! Nom ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "eita" ++ name.s ! Nom ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "eita" ++ name.s ! Nom ;
|
||||
Anterior = \\t,pol => np.s ! Nom ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "itið" ++ name.s ! Nom ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "itið" ++ 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 ;
|
||||
Interrogative = \\t,pol => copula ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "giftur við" ++ spouse.s ! Dat ;
|
||||
Future = \\pol => np.s ! Nom ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "vera giftur við" ++ spouse.s ! Dat ;
|
||||
FutureInterrogative = \\pol => futureAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "vera giftur við" ++ spouse.s ! Dat ;
|
||||
Conditional = \\pol => np.s ! Nom ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "vera giftur við" ++ spouse.s ! Dat ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "vera giftur við" ++ spouse.s ! Dat ;
|
||||
Anterior = \\t,pol => np.s ! Nom ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "verið giftur við" ++ spouse.s ! Dat ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! persNum np.n np.p ++ np.s ! Nom ++ negStr pol ++ "verið 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
|
||||
s = \\t,pol => "hvat" ++ "eitur" ++ np.s ! Nom ;
|
||||
anterior = \\t,pol => "hvat" ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "itið" ++ np.s ! Nom ;
|
||||
future = \\pol => "hvat" ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "eita" ++ np.s ! Nom ;
|
||||
conditional = \\pol => "hvat" ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "eita" ++ np.s ! Nom
|
||||
} ;
|
||||
how_old_QCl np = {
|
||||
s = \\t,pol => "hvussu gamal" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
|
||||
s = \\t,pol => "hvussu gamal" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom ;
|
||||
anterior = \\t,pol => "hvussu gamal" ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "verið" ++ np.s ! Nom ;
|
||||
future = \\pol => "hvussu gamal" ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
conditional = \\pol => "hvussu gamal" ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ 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
|
||||
s = \\t,pol => "hvussu langt burtur" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom ;
|
||||
anterior = \\t,pol => "hvussu langt burtur" ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "verið" ++ np.s ! Nom ;
|
||||
future = \\pol => "hvussu langt burtur" ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
conditional = \\pol => "hvussu langt burtur" ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ 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
|
||||
Converb = "tað er" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Interrogative = \\t,pol => copula ! t ! PSg P3 ++ "tað" ++ negStr pol ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Nonfinite = "vera" ++ ap.s ! Strong ! Neuter ! Sg ! Nom ;
|
||||
Participle = \\_ => "verið" ++ ap.s ! Strong ! 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
|
||||
s = \\af,g,n,c => card.s ! cn.g ! Nom ++ cn.s ! Indef ! Pl ! Nom ++ a.s ! af ! 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 ;
|
||||
@@ -162,8 +192,11 @@ lin
|
||||
|
||||
oper
|
||||
beVP : Str -> VerbPhrase = \ap -> {
|
||||
Converb = copula ! Pres ! PPl ++ ap ;
|
||||
Converb = "verið" ++ ap ;
|
||||
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ ap ;
|
||||
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ ap ;
|
||||
Finite = copula ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ ap ;
|
||||
Nonfinite = "vera" ++ ap ;
|
||||
Participle = \\_ => "verið" ++ ap
|
||||
} ;
|
||||
|
||||
@@ -36,15 +36,15 @@ lin
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neuter") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neuter ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neuter ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neuter ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neuter ! Sg ! Gen)) ++
|
||||
th "Nom" ++ td (x.s ! Strong ! Masc ! Sg ! Nom) ++ td (x.s ! Strong ! Fem ! Sg ! Nom) ++ td (x.s ! Strong ! Neuter ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Strong ! Masc ! Sg ! Acc) ++ td (x.s ! Strong ! Fem ! Sg ! Acc) ++ td (x.s ! Strong ! Neuter ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Strong ! Masc ! Sg ! Dat) ++ td (x.s ! Strong ! Fem ! Sg ! Dat) ++ td (x.s ! Strong ! Neuter ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Strong ! Masc ! Sg ! Gen) ++ td (x.s ! Strong ! Fem ! Sg ! Gen) ++ td (x.s ! Strong ! Neuter ! Sg ! Gen)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pl" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neuter ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neuter ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neuter ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neuter ! Pl ! Gen))) ;
|
||||
th "Nom" ++ td (x.s ! Strong ! Masc ! Pl ! Nom) ++ td (x.s ! Strong ! Fem ! Pl ! Nom) ++ td (x.s ! Strong ! Neuter ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Strong ! Masc ! Pl ! Acc) ++ td (x.s ! Strong ! Fem ! Pl ! Acc) ++ td (x.s ! Strong ! Neuter ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Strong ! Masc ! Pl ! Dat) ++ td (x.s ! Strong ! Fem ! Pl ! Dat) ++ td (x.s ! Strong ! Neuter ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Strong ! Masc ! Pl ! Gen) ++ td (x.s ! Strong ! Fem ! Pl ! Gen) ++ td (x.s ! Strong ! Neuter ! Pl ! Gen))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
|
||||
+54
-2
@@ -4,48 +4,99 @@ lin
|
||||
ImpersCl vp = {
|
||||
Converb = "tað" ++ vp.Converb ;
|
||||
Indicative = \\t,pol => "tað" ++ vp.Indicative ! t ! pol ! Neuter ! PSg P3 ;
|
||||
Interrogative = \\t,pol => vp.Finite ! t ! PSg P3 ++ "tað" ++ vp.Remainder ! pol ! Neuter ! PSg P3 ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ vp.Nonfinite ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ vp.Nonfinite ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ vp.Converb ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ vp.Converb ;
|
||||
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 ;
|
||||
Interrogative = \\t,pol => vp.Finite ! t ! PSg P3 ++ "mann" ++ vp.Remainder ! pol ! Masc ! PSg P3 ;
|
||||
Future = \\pol => "mann" ++ futureAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "mann" ++ negStr pol ++ vp.Nonfinite ;
|
||||
Conditional = \\pol => "mann" ++ conditionalAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "mann" ++ negStr pol ++ vp.Nonfinite ;
|
||||
Anterior = \\t,pol => "mann" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ vp.Converb ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "mann" ++ negStr pol ++ vp.Converb ;
|
||||
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 ;
|
||||
Interrogative = \\t,pol => copula ! t ! PSg P3 ++ "tað" ++ negStr pol ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ 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 ;
|
||||
Interrogative = \\t,pol => copula ! t ! PSg P3 ++ "tað" ++ negStr pol ++ adv.s ++ s.s ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ adv.s ++ s.s ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ adv.s ++ s.s ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ adv.s ++ s.s ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ adv.s ++ s.s ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ adv.s ++ s.s ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ 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 ;
|
||||
Interrogative = \\t,pol => copula ! t ! persNum np.n P3 ++ "tað" ++ negStr pol ++ np.s ! Nom ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ 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
|
||||
s = \\t,pol => "hvat" ++ copula ! t ! persNum ip.n P3 ++ negStr pol ;
|
||||
anterior = \\t,pol => "hvat" ++ perfectAux ! t ! persNum ip.n P3 ++ negStr pol ++ "verið" ;
|
||||
future = \\pol => "hvat" ++ futureAux ! persNum ip.n P3 ++ negStr pol ++ "vera" ;
|
||||
conditional = \\pol => "hvat" ++ conditionalAux ! persNum ip.n P3 ++ negStr pol ++ "vera"
|
||||
} ;
|
||||
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 ;
|
||||
Interrogative = \\t,pol => copula ! t ! persNum np.n P3 ++ "tað" ++ negStr pol ++ np.s ! Nom ++ adv.s ;
|
||||
Future = \\pol => "tað" ++ futureAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ++ adv.s ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ++ adv.s ;
|
||||
Conditional = \\pol => "tað" ++ conditionalAux ! PSg P3 ++ negStr pol ++ "vera" ++ np.s ! Nom ++ adv.s ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ "tað" ++ negStr pol ++ "vera" ++ np.s ! Nom ++ adv.s ;
|
||||
Anterior = \\t,pol => "tað" ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ "verið" ++ np.s ! Nom ++ adv.s ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ "tað" ++ negStr pol ++ "verið" ++ 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
|
||||
s = \\t,pol => ip.s ++ copula ! t ! persNum ip.n P3 ++ negStr pol ++ adv.s ;
|
||||
anterior = \\t,pol => ip.s ++ perfectAux ! t ! persNum ip.n P3 ++ negStr pol ++ "verið" ++ adv.s ;
|
||||
future = \\pol => ip.s ++ futureAux ! persNum ip.n P3 ++ negStr pol ++ "vera" ++ adv.s ;
|
||||
conditional = \\pol => ip.s ++ conditionalAux ! persNum ip.n P3 ++ negStr pol ++ "vera" ++ adv.s
|
||||
} ;
|
||||
ProgrVP vp = {
|
||||
Converb = "vera við at" ++ vp.Nonfinite ;
|
||||
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ "við at" ++ vp.Nonfinite ;
|
||||
Indicative = \\t,pol,g,p => copula ! t ! p ++ negStr pol ++ "við at" ++ vp.Nonfinite ;
|
||||
Finite = copula ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ "við at" ++ vp.Nonfinite ;
|
||||
Nonfinite = "vera við at" ++ vp.Nonfinite ;
|
||||
Participle = \\_ => "verið við at" ++ vp.Nonfinite
|
||||
} ;
|
||||
@@ -54,6 +105,7 @@ lin
|
||||
SelfAdvVP vp = vp ** {
|
||||
Converb = vp.Converb ++ "sjálvur" ;
|
||||
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ "sjálvur" ;
|
||||
Remainder = \\pol,g,p => vp.Remainder ! pol ! g ! p ++ "sjálvur" ;
|
||||
Nonfinite = vp.Nonfinite ++ "sjálvur" ;
|
||||
Participle = \\t => vp.Participle ! t ++ "sjálvur"
|
||||
} ;
|
||||
|
||||
+202
-79
@@ -54,24 +54,24 @@ mkN002 base =
|
||||
Gen => base_1+"s"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => base_1+"ð" ;
|
||||
Acc => base_1+"ð" ;
|
||||
Dat => base_1+"num" ;
|
||||
Gen => base_1+"sins"
|
||||
Nom => base_1 ;
|
||||
Acc => base_1 ;
|
||||
Dat => base_1+"um" ;
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
} ;
|
||||
Def => table {
|
||||
Sg => table {
|
||||
Nom => nonExist ;
|
||||
Acc => nonExist ;
|
||||
Dat => nonExist ;
|
||||
Gen => nonExist
|
||||
Nom => base_1+"ð" ;
|
||||
Acc => base_1+"ð" ;
|
||||
Dat => base_1+"num" ;
|
||||
Gen => base_1+"sins"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => nonExist ;
|
||||
Acc => nonExist ;
|
||||
Dat => nonExist ;
|
||||
Gen => nonExist
|
||||
Nom => base_1+"ni" ;
|
||||
Acc => base_1+"ni" ;
|
||||
Dat => base_1+"unum" ;
|
||||
Gen => base_1+"anna"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
@@ -249,24 +249,24 @@ mkN007 base =
|
||||
Gen => base_1+"ar"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => base_1+"in" ;
|
||||
Acc => base_1+"ina" ;
|
||||
Dat => base_1+"ini" ;
|
||||
Gen => base_1+"arinnar"
|
||||
Nom => base_1+"ir" ;
|
||||
Acc => base_1+"ir" ;
|
||||
Dat => base_1+"um" ;
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
} ;
|
||||
Def => table {
|
||||
Sg => table {
|
||||
Nom => nonExist ;
|
||||
Acc => nonExist ;
|
||||
Dat => nonExist ;
|
||||
Gen => nonExist
|
||||
Nom => base_1+"in" ;
|
||||
Acc => base_1+"ina" ;
|
||||
Dat => base_1+"ini" ;
|
||||
Gen => base_1+"arinnar"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => nonExist ;
|
||||
Acc => nonExist ;
|
||||
Dat => nonExist ;
|
||||
Gen => nonExist
|
||||
Nom => base_1+"irnar" ;
|
||||
Acc => base_1+"irnar" ;
|
||||
Dat => base_1+"unum" ;
|
||||
Gen => base_1+"anna"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
@@ -288,24 +288,24 @@ mkN008 base =
|
||||
Gen => base_1+"s"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => base_1+"ið" ;
|
||||
Acc => base_1+"ið" ;
|
||||
Dat => base_1+"inum" ;
|
||||
Gen => base_1+"sins"
|
||||
Nom => base_1 ;
|
||||
Acc => base_1 ;
|
||||
Dat => base_1+"um" ;
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
} ;
|
||||
Def => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"in" ;
|
||||
Acc => base_1+"in" ;
|
||||
Nom => base_1+"ið" ;
|
||||
Acc => base_1+"ið" ;
|
||||
Dat => base_1+"inum" ;
|
||||
Gen => base_1+"sins"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom => nonExist ;
|
||||
Acc => nonExist ;
|
||||
Dat => nonExist ;
|
||||
Gen => nonExist
|
||||
Nom => base_1+"ini" ;
|
||||
Acc => base_1+"ini" ;
|
||||
Dat => base_1+"unum" ;
|
||||
Gen => base_1+"anna"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
@@ -6637,6 +6637,7 @@ mkA001 base =
|
||||
case base of {
|
||||
base_1+"dur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"dur" ;
|
||||
@@ -6679,7 +6680,9 @@ mkA001 base =
|
||||
Gen => base_1+"da"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA001"
|
||||
} ;
|
||||
@@ -6689,6 +6692,7 @@ mkA002 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@(?+?)+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"ur" ;
|
||||
@@ -6731,7 +6735,9 @@ mkA002 base =
|
||||
Gen => base_1+"a"+base_2+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA002"
|
||||
} ;
|
||||
@@ -6741,6 +6747,7 @@ mkA003 base =
|
||||
case base of {
|
||||
base_1+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ur" ;
|
||||
@@ -6783,7 +6790,9 @@ mkA003 base =
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA003"
|
||||
} ;
|
||||
@@ -6793,6 +6802,7 @@ mkA004 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"u"+base_3@? => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"u"+base_3 ;
|
||||
@@ -6835,7 +6845,9 @@ mkA004 base =
|
||||
Gen => base_1+"a"+base_2+base_3+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA004"
|
||||
} ;
|
||||
@@ -6845,6 +6857,7 @@ mkA005 base =
|
||||
case base of {
|
||||
"a"+base_1+"lur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => "a"+base_1+"lur" ;
|
||||
@@ -6887,7 +6900,9 @@ mkA005 base =
|
||||
Gen => "a"+base_1+"la"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA005"
|
||||
} ;
|
||||
@@ -6897,6 +6912,7 @@ mkA006 base =
|
||||
case base of {
|
||||
base_1+"nur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"nur" ;
|
||||
@@ -6939,7 +6955,9 @@ mkA006 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA006"
|
||||
} ;
|
||||
@@ -6949,6 +6967,7 @@ mkA007 base =
|
||||
case base of {
|
||||
base_1+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ur" ;
|
||||
@@ -6991,7 +7010,9 @@ mkA007 base =
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA007"
|
||||
} ;
|
||||
@@ -7001,6 +7022,7 @@ mkA008 base =
|
||||
case base of {
|
||||
base_1+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ur" ;
|
||||
@@ -7043,7 +7065,9 @@ mkA008 base =
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA008"
|
||||
} ;
|
||||
@@ -7053,6 +7077,7 @@ mkA009 base =
|
||||
case base of {
|
||||
base_1+"in" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"in" ;
|
||||
@@ -7095,7 +7120,9 @@ mkA009 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA009"
|
||||
} ;
|
||||
@@ -7105,6 +7132,7 @@ mkA010 base =
|
||||
case base of {
|
||||
base_1+"ður" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ður" ;
|
||||
@@ -7147,7 +7175,9 @@ mkA010 base =
|
||||
Gen => base_1+"ða"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA010"
|
||||
} ;
|
||||
@@ -7157,6 +7187,7 @@ mkA011 base =
|
||||
case base of {
|
||||
base_1+"tur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"tur" ;
|
||||
@@ -7199,7 +7230,9 @@ mkA011 base =
|
||||
Gen => base_1+"ta"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA011"
|
||||
} ;
|
||||
@@ -7209,6 +7242,7 @@ mkA012 base =
|
||||
case base of {
|
||||
base_1+"gvin" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"gvin" ;
|
||||
@@ -7251,7 +7285,9 @@ mkA012 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA012"
|
||||
} ;
|
||||
@@ -7261,6 +7297,7 @@ mkA013 base =
|
||||
case base of {
|
||||
base_1+"gur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"gur" ;
|
||||
@@ -7303,7 +7340,9 @@ mkA013 base =
|
||||
Gen => base_1+"ga"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA013"
|
||||
} ;
|
||||
@@ -7313,6 +7352,7 @@ mkA014 base =
|
||||
case base of {
|
||||
base_1+"ddur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ddur" ;
|
||||
@@ -7355,7 +7395,9 @@ mkA014 base =
|
||||
Gen => base_1+"dda"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA014"
|
||||
} ;
|
||||
@@ -7365,6 +7407,7 @@ mkA015 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@("ng"|"m"|(?+?+?))+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"ur" ;
|
||||
@@ -7407,7 +7450,9 @@ mkA015 base =
|
||||
Gen => base_1+"a"+base_2+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA015"
|
||||
} ;
|
||||
@@ -7417,6 +7462,7 @@ mkA016 base =
|
||||
case base of {
|
||||
base_1+"mur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"mur" ;
|
||||
@@ -7459,7 +7505,9 @@ mkA016 base =
|
||||
Gen => base_1+"madimra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA016"
|
||||
} ;
|
||||
@@ -7469,6 +7517,7 @@ mkA017 base =
|
||||
case base of {
|
||||
base_1+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ur" ;
|
||||
@@ -7511,7 +7560,9 @@ mkA017 base =
|
||||
Gen => base_1+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA017"
|
||||
} ;
|
||||
@@ -7521,6 +7572,7 @@ mkA018 base =
|
||||
case base of {
|
||||
base_1+"kur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"kur" ;
|
||||
@@ -7563,7 +7615,9 @@ mkA018 base =
|
||||
Gen => base_1+"kadøkra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA018"
|
||||
} ;
|
||||
@@ -7573,6 +7627,7 @@ mkA019 base =
|
||||
case base of {
|
||||
base_1+"tin" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"tin" ;
|
||||
@@ -7615,7 +7670,9 @@ mkA019 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA019"
|
||||
} ;
|
||||
@@ -7625,6 +7682,7 @@ mkA020 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"dur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"dur" ;
|
||||
@@ -7667,7 +7725,9 @@ mkA020 base =
|
||||
Gen => base_1+"a"+base_2+"da"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA020"
|
||||
} ;
|
||||
@@ -7677,6 +7737,7 @@ mkA021 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"lur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"lur" ;
|
||||
@@ -7719,7 +7780,9 @@ mkA021 base =
|
||||
Gen => base_1+"a"+base_2+"la"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA021"
|
||||
} ;
|
||||
@@ -7729,6 +7792,7 @@ mkA022 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"ur" ;
|
||||
@@ -7771,7 +7835,9 @@ mkA022 base =
|
||||
Gen => base_1+"a"+base_2+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA022"
|
||||
} ;
|
||||
@@ -7781,6 +7847,7 @@ mkA023 base =
|
||||
case base of {
|
||||
base_1+"rin" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"rin" ;
|
||||
@@ -7823,7 +7890,9 @@ mkA023 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA023"
|
||||
} ;
|
||||
@@ -7833,6 +7902,7 @@ mkA024 base =
|
||||
case base of {
|
||||
base_1+"lur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"lur" ;
|
||||
@@ -7875,7 +7945,9 @@ mkA024 base =
|
||||
Gen => base_1+"lafulra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA024"
|
||||
} ;
|
||||
@@ -7885,6 +7957,7 @@ mkA025 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"a"+base_3@? => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"a"+base_3 ;
|
||||
@@ -7927,7 +8000,9 @@ mkA025 base =
|
||||
Gen => base_1+"a"+base_2+base_3+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA025"
|
||||
} ;
|
||||
@@ -7937,6 +8012,7 @@ mkA026 base =
|
||||
case base of {
|
||||
base_1+"óður" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"óður" ;
|
||||
@@ -7979,7 +8055,9 @@ mkA026 base =
|
||||
Gen => base_1+"óða"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA026"
|
||||
} ;
|
||||
@@ -7989,6 +8067,7 @@ mkA027 base =
|
||||
case base of {
|
||||
base_1+"ei"+base_2@?+"a"+base_3@?+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ei"+base_2+"a"+base_3+"ur" ;
|
||||
@@ -8031,7 +8110,9 @@ mkA027 base =
|
||||
Gen => base_1+"ei"+base_2+"a"+base_3+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA027"
|
||||
} ;
|
||||
@@ -8041,6 +8122,7 @@ mkA028 base =
|
||||
case base of {
|
||||
base_1+"pin" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"pin" ;
|
||||
@@ -8083,7 +8165,9 @@ mkA028 base =
|
||||
Gen => base_1+"na"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA028"
|
||||
} ;
|
||||
@@ -8093,6 +8177,7 @@ mkA029 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"sur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"sur" ;
|
||||
@@ -8135,7 +8220,9 @@ mkA029 base =
|
||||
Gen => base_1+"a"+base_2+"sa"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA029"
|
||||
} ;
|
||||
@@ -8145,6 +8232,7 @@ mkA030 base =
|
||||
case base of {
|
||||
base_1+"ddur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ddur" ;
|
||||
@@ -8187,7 +8275,9 @@ mkA030 base =
|
||||
Gen => base_1+"dda"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA030"
|
||||
} ;
|
||||
@@ -8197,6 +8287,7 @@ mkA031 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"ur" ;
|
||||
@@ -8239,7 +8330,9 @@ mkA031 base =
|
||||
Gen => base_1+"a"+base_2+"alatra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA031"
|
||||
} ;
|
||||
@@ -8249,6 +8342,7 @@ mkA032 base =
|
||||
case base of {
|
||||
base_1+"ðin" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ðin" ;
|
||||
@@ -8291,7 +8385,9 @@ mkA032 base =
|
||||
Gen => base_1+"dna"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA032"
|
||||
} ;
|
||||
@@ -8301,6 +8397,7 @@ mkA033 base =
|
||||
case base of {
|
||||
base_1+"ggjur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"ggjur" ;
|
||||
@@ -8343,7 +8440,9 @@ mkA033 base =
|
||||
Gen => base_1+"ggja"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA033"
|
||||
} ;
|
||||
@@ -8353,6 +8452,7 @@ mkA034 base =
|
||||
case base of {
|
||||
base_1+"a"+base_2@?+"ur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"a"+base_2+"ur" ;
|
||||
@@ -8395,7 +8495,9 @@ mkA034 base =
|
||||
Gen => base_1+"a"+base_2+"amakra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA034"
|
||||
} ;
|
||||
@@ -8405,6 +8507,7 @@ mkA035 base =
|
||||
case base of {
|
||||
base_1+"il" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"il" ;
|
||||
@@ -8447,7 +8550,9 @@ mkA035 base =
|
||||
Gen => base_1+"la"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA035"
|
||||
} ;
|
||||
@@ -8457,6 +8562,7 @@ mkA036 base =
|
||||
case base of {
|
||||
base_1+"lur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"lur" ;
|
||||
@@ -8499,7 +8605,9 @@ mkA036 base =
|
||||
Gen => base_1+"la"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA036"
|
||||
} ;
|
||||
@@ -8509,6 +8617,7 @@ mkA037 base =
|
||||
case base of {
|
||||
base_1+"gvur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"gvur" ;
|
||||
@@ -8551,7 +8660,9 @@ mkA037 base =
|
||||
Gen => base_1+"gva"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA037"
|
||||
} ;
|
||||
@@ -8561,6 +8672,7 @@ mkA038 base =
|
||||
case base of {
|
||||
base_1+"u"+base_2@? => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"u"+base_2 ;
|
||||
@@ -8603,7 +8715,9 @@ mkA038 base =
|
||||
Gen => base_1+base_2+"a"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA038"
|
||||
} ;
|
||||
@@ -8613,6 +8727,7 @@ mkA039 base =
|
||||
case base of {
|
||||
base_1+"rur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"rur" ;
|
||||
@@ -8655,7 +8770,9 @@ mkA039 base =
|
||||
Gen => base_1+"ra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA039"
|
||||
} ;
|
||||
@@ -8665,6 +8782,7 @@ mkA040 base =
|
||||
case base of {
|
||||
base_1+"lur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"lur" ;
|
||||
@@ -8707,7 +8825,9 @@ mkA040 base =
|
||||
Gen => base_1+"lavilra"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA040"
|
||||
} ;
|
||||
@@ -8717,6 +8837,7 @@ mkA041 base =
|
||||
case base of {
|
||||
base_1+"sur" => lin A
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => base_1+"sur" ;
|
||||
@@ -8759,7 +8880,9 @@ mkA041 base =
|
||||
Gen => base_1+"sa"
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms base
|
||||
}
|
||||
};
|
||||
_ => error "Can't apply paradigm mkA041"
|
||||
} ;
|
||||
@@ -8902,8 +9025,8 @@ mkV005 base =
|
||||
base_1+"a"+base_2@(?+?) => lin V
|
||||
{ Converb = base_1+"a"+base_2 ;
|
||||
imperative = table {
|
||||
Sg => nonExist ;
|
||||
Pl => nonExist
|
||||
Sg => base_1+base_2 ;
|
||||
Pl => base_1+"i"+base_2
|
||||
} ;
|
||||
Indicative = table {
|
||||
Pres => table {
|
||||
@@ -10882,8 +11005,8 @@ mkV065 base =
|
||||
base_1+"u"+base_2@?+"na" => lin V
|
||||
{ Converb = base_1+"u"+base_2+"nað" ;
|
||||
imperative = table {
|
||||
Sg => nonExist ;
|
||||
Pl => nonExist
|
||||
Sg => base_1+"u"+base_2+"n" ;
|
||||
Pl => base_1+"u"+base_2+"nið"
|
||||
} ;
|
||||
Indicative = table {
|
||||
Pres => table {
|
||||
|
||||
@@ -10,5 +10,5 @@ lin
|
||||
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} ;
|
||||
AdjLN ap ln = {s = ap.s ! Strong ! Neuter ! Sg ! Nom ++ ln.s} ;
|
||||
}
|
||||
|
||||
+39
-13
@@ -1,7 +1,7 @@
|
||||
concrete NounFao of Noun = CatFao ** open ResFao, Prelude in {
|
||||
lin
|
||||
UseN n = n ;
|
||||
UseN2 n = n ;
|
||||
UseN n = {s = n.s ; p = n.s ! Indef ; g = n.g} ;
|
||||
UseN2 n = {s = n.s ; p = n.s ! Indef ; g = n.g} ;
|
||||
Use2N3 n = n ** {c2 = n.c2} ;
|
||||
Use3N3 n = n ** {c2 = n.c3} ;
|
||||
UsePN pn = mkNP pn.s Masc Sg P3 ;
|
||||
@@ -27,7 +27,10 @@ lin
|
||||
s = \\c => np.s ! c ++ "," ++ adv.s
|
||||
} ;
|
||||
DetCN det cn = {
|
||||
s = \\c => det.s ! cn.g ! c ++ cn.s ! det.sp ! det.n ! c ;
|
||||
s = \\c => det.s ! cn.g ! c ++ case det.d of {
|
||||
Weak => cn.p ! det.n ! c ;
|
||||
Strong => cn.s ! det.sp ! det.n ! c
|
||||
} ;
|
||||
g = cn.g ;
|
||||
n = det.n ;
|
||||
p = P3
|
||||
@@ -35,6 +38,7 @@ lin
|
||||
DefArt = {
|
||||
s = \\_,_,_,_ => [] ;
|
||||
sp = Def ;
|
||||
d = Strong
|
||||
} ;
|
||||
IndefArt = {
|
||||
s = \\b =>
|
||||
@@ -62,18 +66,24 @@ lin
|
||||
}
|
||||
} ;
|
||||
sp = Indef ;
|
||||
d = Strong
|
||||
} ;
|
||||
DetQuant quant num = {
|
||||
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
|
||||
num.s ! g ! c ;
|
||||
n = num.n ;
|
||||
sp = quant.sp
|
||||
sp = quant.sp ;
|
||||
d = quant.d
|
||||
} ;
|
||||
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 ;
|
||||
num.s ! g ! c ++ case quant.sp of {
|
||||
Indef => ord.s ! Strong ! g ! num.n ! c ;
|
||||
Def => ord.s ! Weak ! g ! num.n ! c
|
||||
} ;
|
||||
n = num.n ;
|
||||
sp = quant.sp
|
||||
sp = quant.sp ;
|
||||
d = quant.d
|
||||
} ;
|
||||
NumSg = {
|
||||
s = \\_,_ => [] ;
|
||||
@@ -90,11 +100,11 @@ lin
|
||||
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} ;
|
||||
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
|
||||
s = \\af,g,n,c => numeral.s ! NOrd n ! g ! c ++ a.s ! af ! g ! n ! c
|
||||
} ;
|
||||
MassNP cn = {
|
||||
s = \\c => cn.s ! Indef ! Sg ! c ;
|
||||
@@ -103,43 +113,59 @@ lin
|
||||
p = P3
|
||||
} ;
|
||||
PossPron pron = {
|
||||
s = \\_,_,_,_ => pron.s ! Gen ;
|
||||
sp = Def
|
||||
s = \\_,g,n,c => pron.poss ! g ! n ! c ;
|
||||
-- A preposed possessive replaces, rather than licenses, the suffixed
|
||||
-- definite article: mín vinur, not *mín vinurin.
|
||||
sp = Indef ;
|
||||
d = Weak
|
||||
} ;
|
||||
ComplN2 n2 np = {
|
||||
s = \\sp,n,c => n2.s ! sp ! n ! c ++ n2.c2.s ++ np.s ! n2.c2.c ;
|
||||
p = \\n,c => n2.s ! Indef ! 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 ;
|
||||
p = \\n,c => n3.s ! Indef ! 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 ;
|
||||
s = \\sp,n,c =>
|
||||
case sp of {
|
||||
Indef => ap.s ! Strong ! cn.g ! n ! c ++ cn.s ! sp ! n ! c ;
|
||||
Def => weakAdj ap cn.g n c ++ cn.s ! sp ! n ! c
|
||||
} ;
|
||||
p = \\n,c => ap.s ! Weak ! cn.g ! n ! c ++ cn.p ! n ! c ;
|
||||
g = cn.g
|
||||
} ;
|
||||
RelCN cn rs = {
|
||||
s = \\sp,n,c => cn.s ! sp ! n ! c ++ rs.s ! cn.g ! persNum n P3 ;
|
||||
p = \\n,c => cn.p ! 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 ;
|
||||
p = \\n,c => cn.p ! n ! c ++ adv.s ;
|
||||
g = cn.g
|
||||
} ;
|
||||
SentCN cn sc = {
|
||||
s = \\sp,n,c => cn.s ! sp ! n ! c ++ sc.s ;
|
||||
p = \\n,c => cn.p ! n ! c ++ sc.s ;
|
||||
g = cn.g
|
||||
} ;
|
||||
ApposCN cn np = {
|
||||
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Nom ;
|
||||
p = \\n,c => cn.p ! n ! c ++ np.s ! Nom ;
|
||||
g = cn.g
|
||||
} ;
|
||||
PossNP cn np = {
|
||||
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Gen ;
|
||||
p = \\n,c => cn.p ! n ! c ++ np.s ! Gen ;
|
||||
g = cn.g
|
||||
} ;
|
||||
PartNP cn np = {
|
||||
s = \\sp,n,c => cn.s ! sp ! n ! c ++ "av" ++ np.s ! Dat ;
|
||||
p = \\n,c => cn.p ! n ! c ++ "av" ++ np.s ! Dat ;
|
||||
g = cn.g
|
||||
} ;
|
||||
CountNP det np = {
|
||||
@@ -149,7 +175,7 @@ lin
|
||||
p = P3
|
||||
} ;
|
||||
AdjDAP dap ap = dap ** {
|
||||
s = \\g,c => dap.s ! g ! c ++ ap.s ! g ! dap.n ! c
|
||||
s = \\g,c => dap.s ! g ! c ++ ap.s ! dap.d ! g ! dap.n ! c
|
||||
} ;
|
||||
DetDAP det = det ;
|
||||
QuantityNP dec mu = {
|
||||
|
||||
@@ -327,11 +327,32 @@ oper
|
||||
Dat => dat ;
|
||||
Gen => gen
|
||||
} ;
|
||||
poss = case <n,p> of {
|
||||
<Sg,P1> => possessiveForms "mín" "mítt" ;
|
||||
<Sg,P2> => possessiveForms "tín" "títt" ;
|
||||
_ => \\_,_,_ => gen
|
||||
} ;
|
||||
g = g ;
|
||||
n = n ;
|
||||
p = p
|
||||
} ;
|
||||
|
||||
possessiveForms : Str -> Str -> Gender => Number => Case => Str = \common,neuter ->
|
||||
table {
|
||||
Masc => table {
|
||||
Sg => table {Nom => common ; Acc => common ; Dat => common + "um" ; Gen => common + "s"} ;
|
||||
Pl => table {Nom => common + "ir" ; Acc => common + "ar" ; Dat => common + "um" ; Gen => common + "a"}
|
||||
} ;
|
||||
Fem => table {
|
||||
Sg => table {Nom => common ; Acc => common + "a" ; Dat => common + "i" ; Gen => common + "ar"} ;
|
||||
Pl => table {Nom => common + "ar" ; Acc => common + "ar" ; Dat => common + "um" ; Gen => common + "a"}
|
||||
} ;
|
||||
Neuter => table {
|
||||
Sg => table {Nom => neuter ; Acc => neuter ; Dat => common + "um" ; Gen => common + "s"} ;
|
||||
Pl => table {Nom => common + "i" ; Acc => common + "i" ; Dat => common + "um" ; Gen => common + "a"}
|
||||
}
|
||||
} ;
|
||||
|
||||
regA : Str -> A -- s;Masc;Sg;Nom
|
||||
= \form -> case form of {
|
||||
_ + "dur" => mkA001 form;
|
||||
@@ -513,7 +534,7 @@ oper
|
||||
} ;
|
||||
|
||||
invarA : Str -> A = \s -> lin A {
|
||||
s = \\_,_,_ => s
|
||||
s = \\_,_,_,_ => s
|
||||
} ;
|
||||
|
||||
mkA2 = overload {
|
||||
@@ -580,16 +601,19 @@ oper
|
||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
mkPrep : Str -> Case -> Prep = \s,c -> lin Prep {s=s; c=c}
|
||||
} ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP {s=s; n=Sg} ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s; n=Sg} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_,_ => s; sp=Indef} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_,_ => s; sp=Indef; d=Strong} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef; d=Strong} ;
|
||||
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} ;
|
||||
|
||||
@@ -13,7 +13,7 @@ lin
|
||||
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} ;
|
||||
UttAP ap = {s = ap.s ! Strong ! Masc ! Sg ! Nom} ;
|
||||
UttAdv adv = adv ;
|
||||
UttInterj i = i ;
|
||||
|
||||
|
||||
+36
-10
@@ -1,20 +1,36 @@
|
||||
concrete QuestionFao of Question = CatFao ** open ResFao in {
|
||||
|
||||
lincat QVP = {s : Tense => Polarity => Str} ;
|
||||
lincat QVP = {
|
||||
s,anterior : Tense => Polarity => Str ;
|
||||
future,conditional : Polarity => Str
|
||||
} ;
|
||||
|
||||
lin
|
||||
QuestCl cl = {s = cl.Indicative} ;
|
||||
QuestCl cl = {
|
||||
s = cl.Interrogative ; anterior = cl.AnteriorInterrogative ;
|
||||
future = cl.FutureInterrogative ; conditional = cl.ConditionalInterrogative
|
||||
} ;
|
||||
QuestVP ip vp = {
|
||||
s = \\t,pol => ip.s ++ vp.Indicative ! t ! pol ! Masc ! persNum ip.n P3
|
||||
s = \\t,pol => ip.s ++ vp.Indicative ! t ! pol ! Masc ! persNum ip.n P3 ;
|
||||
anterior = \\t,pol => ip.s ++ perfectAux ! t ! persNum ip.n P3 ++ negStr pol ++ vp.Converb ;
|
||||
future = \\pol => ip.s ++ futureAux ! persNum ip.n P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
conditional = \\pol => ip.s ++ conditionalAux ! persNum ip.n P3 ++ negStr pol ++ vp.Nonfinite
|
||||
} ;
|
||||
QuestSlash ip cls = {
|
||||
s = \\t,pol => ip.s ++ cls.s ! t ! pol
|
||||
s = \\t,pol => ip.s ++ cls.s ! t ! pol ; anterior = \\t,pol => ip.s ++ cls.s ! t ! pol ;
|
||||
future = \\pol => ip.s ++ cls.s ! Pres ! pol ; conditional = \\pol => ip.s ++ cls.s ! Past ! pol
|
||||
} ;
|
||||
QuestIAdv iadv cl = {
|
||||
s = \\t,pol => iadv.s ++ cl.Indicative ! t ! pol
|
||||
s = \\t,pol => iadv.s ++ cl.Interrogative ! t ! pol ;
|
||||
anterior = \\t,pol => iadv.s ++ cl.AnteriorInterrogative ! t ! pol ;
|
||||
future = \\pol => iadv.s ++ cl.FutureInterrogative ! pol ;
|
||||
conditional = \\pol => iadv.s ++ cl.ConditionalInterrogative ! pol
|
||||
} ;
|
||||
QuestIComp icomp np = {
|
||||
s = \\t,pol => icomp.s ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
|
||||
s = \\t,pol => icomp.s ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom ;
|
||||
anterior = \\t,pol => icomp.s ++ perfectAux ! t ! persNum np.n np.p ++ negStr pol ++ "verið" ++ np.s ! Nom ;
|
||||
future = \\pol => icomp.s ++ futureAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ np.s ! Nom ;
|
||||
conditional = \\pol => icomp.s ++ conditionalAux ! persNum np.n np.p ++ negStr pol ++ "vera" ++ np.s ! Nom
|
||||
} ;
|
||||
|
||||
IdetCN idet cn = {
|
||||
@@ -36,15 +52,25 @@ lin
|
||||
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
|
||||
s = \\t,pol => vps.Indicative ! t ! PSg P3 ++ vps.particle ++ negStr pol ++ vps.c2.s ++ ip.s ++ vps.sc ;
|
||||
anterior = \\t,pol => perfectAux ! t ! PSg P3 ++ negStr pol ++ vps.Converb ++ vps.c2.s ++ ip.s ++ vps.sc ;
|
||||
future = \\pol => futureAux ! PSg P3 ++ negStr pol ++ vps.Nonfinite ++ vps.c2.s ++ ip.s ++ vps.sc ;
|
||||
conditional = \\pol => conditionalAux ! PSg P3 ++ negStr pol ++ vps.Nonfinite ++ vps.c2.s ++ ip.s ++ vps.sc
|
||||
} ;
|
||||
AdvQVP vp iadv = {
|
||||
s = \\t,pol => vp.Indicative ! t ! pol ! Masc ! PSg P3 ++ iadv.s
|
||||
s = \\t,pol => vp.Indicative ! t ! pol ! Masc ! PSg P3 ++ iadv.s ;
|
||||
anterior = \\t,pol => perfectAux ! t ! PSg P3 ++ negStr pol ++ vp.Converb ++ iadv.s ;
|
||||
future = \\pol => futureAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ++ iadv.s ;
|
||||
conditional = \\pol => conditionalAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ++ iadv.s
|
||||
} ;
|
||||
AddAdvQVP qvp iadv = {
|
||||
s = \\t,pol => qvp.s ! t ! pol ++ iadv.s
|
||||
s = \\t,pol => qvp.s ! t ! pol ++ iadv.s ;
|
||||
anterior = \\t,pol => qvp.anterior ! t ! pol ++ iadv.s ;
|
||||
future = \\pol => qvp.future ! pol ++ iadv.s ; conditional = \\pol => qvp.conditional ! pol ++ iadv.s
|
||||
} ;
|
||||
QuestQVP ip qvp = {
|
||||
s = \\t,pol => ip.s ++ qvp.s ! t ! pol
|
||||
s = \\t,pol => ip.s ++ qvp.s ! t ! pol ;
|
||||
anterior = \\t,pol => ip.s ++ qvp.anterior ! t ! pol ;
|
||||
future = \\pol => ip.s ++ qvp.future ! pol ; conditional = \\pol => ip.s ++ qvp.conditional ! pol
|
||||
} ;
|
||||
}
|
||||
|
||||
+76
-3
@@ -43,10 +43,52 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
} ;
|
||||
|
||||
|
||||
oper Adj = {s: Gender => Number => Case => Str} ; -- 346
|
||||
param Declension = Strong | Weak ;
|
||||
oper Adj = {
|
||||
s : Declension => Gender => Number => Case => Str ;
|
||||
} ; -- 346
|
||||
|
||||
-- The weak adjective is used attributively in definite noun phrases. The
|
||||
-- generated morphology contains the strong paradigm; the three weak forms
|
||||
-- can be recovered from it (e.g. langa -> langi, longum -> longu).
|
||||
oper weakAdj : Adj -> Gender -> Number -> Case -> Str =
|
||||
\a,g,n,c -> a.s ! Weak ! g ! n ! c ;
|
||||
|
||||
oper weakAdjForms : Str -> Gender => Number => Case => Str = \lemma ->
|
||||
let stem = case lemma of {
|
||||
x + "ur" => x ;
|
||||
x + "nin" => x + "n" ;
|
||||
x + "in" => x + "n" ;
|
||||
x + "il" => x + "il" ;
|
||||
x => x
|
||||
} in table {
|
||||
Masc => table {
|
||||
Sg => table {Nom => stem + "i" ; _ => stem + "a"} ;
|
||||
Pl => \\_ => stem + "u"
|
||||
} ;
|
||||
_ => table {
|
||||
Sg => \\_ => stem + "a" ;
|
||||
Pl => \\_ => stem + "u"
|
||||
}
|
||||
} ;
|
||||
|
||||
oper reflPoss : Gender -> Number -> Case -> Str = \g,n,c ->
|
||||
case <g,n,c> of {
|
||||
<Masc,Sg,Nom> => "sín" ; <Masc,Sg,Acc> => "sín" ;
|
||||
<Masc,Sg,Dat> => "sínum" ; <Masc,Sg,Gen> => "síns" ;
|
||||
<Fem,Sg,Nom> => "sín" ; <Fem,Sg,Acc> => "sína" ;
|
||||
<Fem,Sg,Dat> => "síni" ; <Fem,Sg,Gen> => "sínar" ;
|
||||
<Neuter,Sg,Nom> => "sítt" ; <Neuter,Sg,Acc> => "sítt" ;
|
||||
<Neuter,Sg,Dat> => "sínum" ; <Neuter,Sg,Gen> => "síns" ;
|
||||
<Masc,Pl,Nom> => "sínir" ; <Masc,Pl,Acc> => "sínar" ;
|
||||
<Fem,Pl,Nom> => "sínar" ; <Fem,Pl,Acc> => "sínar" ;
|
||||
<Neuter,Pl,Nom> => "síni" ; <Neuter,Pl,Acc> => "síni" ;
|
||||
<_,Pl,Dat> => "sínum" ; <_,Pl,Gen> => "sína"
|
||||
} ;
|
||||
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 ->
|
||||
{ s = table {
|
||||
Strong => table {
|
||||
Masc => table {
|
||||
Sg => table {
|
||||
Nom => f1 ;
|
||||
@@ -89,7 +131,9 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||
Gen => f24
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Weak => weakAdjForms f1
|
||||
}
|
||||
} ;
|
||||
|
||||
param Tense = Pres | Past ;
|
||||
@@ -140,17 +184,31 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||
|
||||
oper CommonNoun = Noun ;
|
||||
oper CommonNoun = {
|
||||
s : Species => Number => Case => Str ;
|
||||
p : Number => Case => Str ;
|
||||
g : Gender
|
||||
} ;
|
||||
oper AdjPhrase = Adj ;
|
||||
oper VerbPhrase = {
|
||||
Converb : Str ;
|
||||
Imperative : Number => Str ;
|
||||
Indicative : Tense => Polarity => Gender => PersNum => Str ;
|
||||
Finite : Tense => PersNum => Str ;
|
||||
Remainder : Polarity => Gender => PersNum => Str ;
|
||||
Nonfinite : Str ;
|
||||
Participle : Tense => Str ;
|
||||
} ;
|
||||
oper Clause = {
|
||||
Converb : Str ;
|
||||
Indicative : Tense => Polarity => Str ;
|
||||
Interrogative : Tense => Polarity => Str ;
|
||||
Future : Polarity => Str ;
|
||||
FutureInterrogative : Polarity => Str ;
|
||||
Conditional : Polarity => Str ;
|
||||
ConditionalInterrogative : Polarity => Str ;
|
||||
Anterior : Tense => Polarity => Str ;
|
||||
AnteriorInterrogative : Tense => Polarity => Str ;
|
||||
Nonfinite : Str ;
|
||||
Participle : Tense => Str
|
||||
} ;
|
||||
@@ -172,6 +230,17 @@ oper
|
||||
}
|
||||
} ;
|
||||
|
||||
futureAux : PersNum => Str = table {
|
||||
PSg P1 => "skal" ; PSg P2 => "skalt" ; PSg P3 => "skal" ; PPl => "skulu"
|
||||
} ;
|
||||
conditionalAux : PersNum => Str = table {
|
||||
PSg _ => "skuldi" ; PPl => "skuldu"
|
||||
} ;
|
||||
perfectAux : Tense => PersNum => Str = table {
|
||||
Pres => table {PSg P1 => "havi" ; PSg P2 => "hevur" ; PSg P3 => "hevur" ; PPl => "hava"} ;
|
||||
Past => table {PSg _ => "hevði" ; PPl => "høvdu"}
|
||||
} ;
|
||||
|
||||
oper
|
||||
negStr : Polarity -> Str = \pol -> case pol of {
|
||||
Pos => [] ;
|
||||
@@ -189,13 +258,17 @@ oper
|
||||
mkCN : Str -> Gender -> CommonNoun =
|
||||
\str,g -> {
|
||||
s = \\_,_,_ => str ;
|
||||
p = \\_,_ => str ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
mkVP : Str -> VerbPhrase =
|
||||
\str -> {
|
||||
Converb = str ;
|
||||
Imperative = \\_ => str ;
|
||||
Indicative = \\_,pol,_,_ => str ++ negStr pol ;
|
||||
Finite = \\_,_ => str ;
|
||||
Remainder = \\pol,_,_ => negStr pol ;
|
||||
Nonfinite = str ;
|
||||
Participle = \\_ => str
|
||||
} ;
|
||||
|
||||
@@ -3,10 +3,32 @@ concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX)
|
||||
Indicative = \\t,pol =>
|
||||
let p = persNum np.n np.p
|
||||
in np.s ! Nom ++ vp.Indicative ! t ! pol ! np.g ! p;
|
||||
Interrogative = \\t,pol => let p = persNum np.n np.p in
|
||||
vp.Finite ! t ! p ++ np.s ! Nom ++ vp.Remainder ! pol ! np.g ! p ;
|
||||
Future = \\pol => let p = persNum np.n np.p in
|
||||
np.s ! Nom ++ futureAux ! p ++ negStr pol ++ vp.Nonfinite ;
|
||||
FutureInterrogative = \\pol => let p = persNum np.n np.p in
|
||||
futureAux ! p ++ np.s ! Nom ++ negStr pol ++ vp.Nonfinite ;
|
||||
Conditional = \\pol => let p = persNum np.n np.p in
|
||||
np.s ! Nom ++ conditionalAux ! p ++ negStr pol ++ vp.Nonfinite ;
|
||||
ConditionalInterrogative = \\pol => let p = persNum np.n np.p in
|
||||
conditionalAux ! p ++ np.s ! Nom ++ negStr pol ++ vp.Nonfinite ;
|
||||
Anterior = \\t,pol => let p = persNum np.n np.p in
|
||||
np.s ! Nom ++ perfectAux ! t ! p ++ negStr pol ++ vp.Converb ;
|
||||
AnteriorInterrogative = \\t,pol => let p = persNum np.n np.p in
|
||||
perfectAux ! t ! p ++ np.s ! Nom ++ negStr pol ++ vp.Converb ;
|
||||
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;
|
||||
Interrogative = \\t,pol => vp.Finite ! t ! PSg P3 ++ sc.s ++
|
||||
vp.Remainder ! pol ! Neuter ! PSg P3;
|
||||
Future = \\pol => sc.s ++ futureAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
FutureInterrogative = \\pol => futureAux ! PSg P3 ++ sc.s ++ negStr pol ++ vp.Nonfinite ;
|
||||
Conditional = \\pol => sc.s ++ conditionalAux ! PSg P3 ++ negStr pol ++ vp.Nonfinite ;
|
||||
ConditionalInterrogative = \\pol => conditionalAux ! PSg P3 ++ sc.s ++ negStr pol ++ vp.Nonfinite ;
|
||||
Anterior = \\t,pol => sc.s ++ perfectAux ! t ! PSg P3 ++ negStr pol ++ vp.Converb ;
|
||||
AnteriorInterrogative = \\t,pol => perfectAux ! t ! PSg P3 ++ sc.s ++ negStr pol ++ vp.Converb ;
|
||||
Nonfinite = sc.s ++ vp.Nonfinite;
|
||||
Participle = \\t => sc.s ++ vp.Participle ! t} ;
|
||||
SlashVP np vps = {
|
||||
@@ -29,7 +51,7 @@ concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX)
|
||||
c2 = sslash.c2
|
||||
} ;
|
||||
ImpVP vp = {
|
||||
s = \\pol,n => negStr pol ++ vp.Nonfinite
|
||||
s = \\pol,n => negStr pol ++ vp.Imperative ! n
|
||||
} ;
|
||||
AdvImp adv imp = {
|
||||
s = \\pol,n => adv.s ++ imp.s ! pol ! n
|
||||
@@ -43,7 +65,16 @@ concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX)
|
||||
P.Cond => Past
|
||||
} ;
|
||||
in {
|
||||
s = temp.s ++ pol.s ++ cl.Indicative ! tense ! pol.p
|
||||
s = temp.s ++ pol.s ++ case <temp.a,temp.t> of {
|
||||
<P.Simul,P.Pres> => cl.Indicative ! Pres ! pol.p ;
|
||||
<P.Simul,P.Past> => cl.Indicative ! Past ! pol.p ;
|
||||
<P.Simul,P.Fut> => cl.Future ! pol.p ;
|
||||
<P.Simul,P.Cond> => cl.Conditional ! pol.p ;
|
||||
<P.Anter,P.Pres> => cl.Anterior ! Pres ! pol.p ;
|
||||
<P.Anter,P.Past> => cl.Anterior ! Past ! pol.p ;
|
||||
<P.Anter,P.Fut> => cl.Future ! pol.p ;
|
||||
<P.Anter,P.Cond> => cl.Anterior ! Past ! pol.p
|
||||
}
|
||||
} ;
|
||||
UseQCl temp pol qcl =
|
||||
let
|
||||
@@ -54,7 +85,16 @@ concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX)
|
||||
P.Cond => Past
|
||||
} ;
|
||||
in {
|
||||
s = temp.s ++ pol.s ++ qcl.s ! tense ! pol.p
|
||||
s = temp.s ++ pol.s ++ case <temp.a,temp.t> of {
|
||||
<P.Simul,P.Pres> => qcl.s ! Pres ! pol.p ;
|
||||
<P.Simul,P.Past> => qcl.s ! Past ! pol.p ;
|
||||
<P.Simul,P.Fut> => qcl.future ! pol.p ;
|
||||
<P.Simul,P.Cond> => qcl.conditional ! pol.p ;
|
||||
<P.Anter,P.Pres> => qcl.anterior ! Pres ! pol.p ;
|
||||
<P.Anter,P.Past> => qcl.anterior ! Past ! pol.p ;
|
||||
<P.Anter,P.Fut> => qcl.future ! pol.p ;
|
||||
<P.Anter,P.Cond> => qcl.anterior ! Past ! pol.p
|
||||
}
|
||||
} ;
|
||||
UseRCl temp pol rcl =
|
||||
let
|
||||
|
||||
+48
-7
@@ -1,64 +1,99 @@
|
||||
concrete VerbFao of Verb = CatFao ** open Prelude,ResFao in {
|
||||
lin UseV v = {Converb = v.Converb ++ v.particle;
|
||||
Imperative = \\n => v.imperative ! n ++ v.particle;
|
||||
Indicative = \\t,pol,g,p => v.Indicative ! t ! p ++ v.particle ++
|
||||
negStr pol ;
|
||||
Finite = v.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ v.particle ;
|
||||
Nonfinite = v.Nonfinite ++ v.particle;
|
||||
Participle = \\t => v.Participle ! t ++ v.particle} ;
|
||||
lin ComplVV vv vp = {Converb = vv.Converb ++ vv.particle ++ vp.Nonfinite;
|
||||
Imperative = \\n => vv.imperative ! n ++ vv.particle ++ vp.Nonfinite;
|
||||
Indicative = \\t,pol,g,p =>
|
||||
vv.Indicative ! t ! p ++ vv.particle ++ negStr pol ++ vp.Nonfinite;
|
||||
Finite = vv.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ vv.particle ++ 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;
|
||||
Imperative = \\n => vs.imperative ! n ++ vs.particle ++ "at" ++ s.s;
|
||||
Indicative = \\t,pol,g,p =>
|
||||
vs.Indicative ! t ! p ++ vs.particle ++ negStr pol ++ "at" ++ s.s;
|
||||
Finite = vs.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ vs.particle ++ "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;
|
||||
Imperative = \\n => vq.imperative ! n ++ vq.particle ++ qs.s;
|
||||
Indicative = \\t,pol,g,p =>
|
||||
vq.Indicative ! t ! p ++ vq.particle ++ negStr pol ++ qs.s;
|
||||
Finite = vq.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ vq.particle ++ 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;
|
||||
lin ComplVA va ap = {Converb = va.Converb ++ va.particle ++ ap.s ! Strong ! Neuter ! Sg ! Nom;
|
||||
Imperative = \\n => va.imperative ! n ++ va.particle ++ ap.s ! Strong ! 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} ;
|
||||
va.Indicative ! t ! p ++ va.particle ++ negStr pol ++ ap.s ! Strong ! g ! persNumNumber p ! Nom;
|
||||
Finite = va.Indicative ;
|
||||
Remainder = \\pol,g,p => negStr pol ++ va.particle ++ ap.s ! Strong ! g ! persNumNumber p ! Nom;
|
||||
Nonfinite = va.Nonfinite ++ va.particle ++ ap.s ! Strong ! Neuter ! Sg ! Nom;
|
||||
Participle = \\t => va.Participle ! t ++ va.particle ++ ap.s ! Strong ! Neuter ! Sg ! Nom} ;
|
||||
lin AdvVP vp adv = {Converb = vp.Converb ++ adv.s;
|
||||
Imperative = \\n => vp.Imperative ! n ++ adv.s;
|
||||
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ adv.s;
|
||||
Finite = vp.Finite ;
|
||||
Remainder = \\pol,g,p => vp.Remainder ! 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;
|
||||
Imperative = \\n => vp.Imperative ! n ++ "," ++ adv.s;
|
||||
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ "," ++ adv.s;
|
||||
Finite = vp.Finite ;
|
||||
Remainder = \\pol,g,p => vp.Remainder ! 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;
|
||||
Imperative = \\n => adv.s ++ vp.Imperative ! n;
|
||||
Indicative = \\t,pol,g,p => adv.s ++ vp.Indicative ! t ! pol ! g ! p;
|
||||
Finite = vp.Finite ;
|
||||
Remainder = \\pol,g,p => negStr pol ++ adv.s ++ vp.Remainder ! Pos ! 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;
|
||||
Imperative = \\n => vps.imperative ! n ++ 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 ;
|
||||
Finite = vps.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ vps.particle ++
|
||||
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 ;
|
||||
Converb = "verið" ++ comp.s ! Masc ! Sg ;
|
||||
Imperative = \\n => case n of {Sg => "ver" ; Pl => "verið"} ++ comp.s ! Masc ! n ;
|
||||
Indicative = \\t,pol,g,p => copula ! t ! p ++
|
||||
negStr pol ++
|
||||
comp.s ! g ! persNumNumber p ;
|
||||
Finite = copula ;
|
||||
Remainder = \\pol,g,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 CompAP ap = {s = \\g,n => ap.s ! Strong ! 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ð" ;
|
||||
Imperative = table {Sg => "ver" ; Pl => "verið"} ;
|
||||
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ;
|
||||
Finite = copula ;
|
||||
Remainder = \\pol,_,_ => negStr pol ;
|
||||
Nonfinite = "vera" ;
|
||||
Participle = \\_ => "verið"
|
||||
} ;
|
||||
@@ -79,7 +114,7 @@ concrete VerbFao of Verb = CatFao ** open Prelude,ResFao in {
|
||||
} ;
|
||||
lin SlashV2A v ap = v ** {
|
||||
c2 = v.c2 ;
|
||||
sc = ap.s ! Neuter ! Sg ! Nom
|
||||
sc = ap.s ! Strong ! Neuter ! Sg ! Nom
|
||||
} ;
|
||||
lin SlashV2S v s = v ** {
|
||||
c2 = v.c2 ;
|
||||
@@ -107,14 +142,20 @@ concrete VerbFao of Verb = CatFao ** open Prelude,ResFao in {
|
||||
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 ;
|
||||
Imperative = \\n => vps.imperative ! n ++ 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 ;
|
||||
Finite = vps.Indicative ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ vps.particle ++ 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 ;
|
||||
Imperative = table {Sg => "ver" ++ v.Participle ! Past ; Pl => "verið" ++ v.Participle ! Past} ;
|
||||
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ v.Participle ! Past ;
|
||||
Finite = copula ;
|
||||
Remainder = \\pol,_,_ => negStr pol ++ v.Participle ! Past ;
|
||||
Nonfinite = "vera" ++ v.Participle ! Past ;
|
||||
Participle = \\_ => "verið" ++ v.Participle ! Past
|
||||
} ;
|
||||
|
||||
@@ -225,8 +225,8 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
|
||||
-- warmest
|
||||
OrdSuperl a = {
|
||||
s = \\c => case a.hasComp of {
|
||||
True => a.s ! ASuperl ;
|
||||
False => "l-iktar" ++ a.s ! APosit (GSg Masc) --- should agree
|
||||
True => a.s ! ACompar ;
|
||||
False => "iktar" ++ a.s ! APosit (GSg Masc) --- should agree
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user