1 Commits
Author SHA1 Message Date
Inari Listenmaa ba879527ab (Som) Add full forms of the pronoun into the s field in UsePron…
…The clitic forms used in VPs and Cls are syncategorematic, so those constructions did not break.
2026-04-22 17:20:09 +02:00
229 changed files with 2867 additions and 148103 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ Bul,Bulgarian,bulgarian,,,y,,,,,y,n
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
Chi,Chinese (simplified),chinese,,,,,,,,y,y
Cze,Czech,czech,,,,,,y,,y,n
Cze,Czech,czech,,,,,,n,,y,n
Dan,Danish,danish,Scand,,y,,,,,y,n
Dut,Dutch,dutch,,,y,,,,,y,n
Eng,English,english,,,y,,,,y,y,y
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis MorphoDict
7 Cat Catalan catalan Romance y y y n
8 Cgg Rukiga rukiga y y n n y y n
9 Chi Chinese (simplified) chinese y y
10 Cze Czech czech y n y n
11 Dan Danish danish Scand y y n
12 Dut Dutch dutch y y n
13 Eng English english y y y y
-1
View File
@@ -35,7 +35,6 @@ fun
InflectionAdA : AdA -> Inflection ;
InflectionAdN : AdN -> Inflection ;
InflectionPrep : Prep -> Inflection ;
InflectionCl : Cl -> Inflection ;
fun
NoDefinition : String -> Definition ;
+2 -2
View File
@@ -15,7 +15,7 @@ concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
lincat Conj = {s : Str} ;
lincat DAP = {s : Str} ;
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
lincat Det = {s : Case => Gender => Str; sp : Species; n : Number} ;
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
lincat Digits = {s : Str; n : Number; tail : DTail} ;
lincat GN = {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 QCl = {s : Str} ;
lincat QS = {s : Str} ;
lincat Quant = {s : Case => Gender => Number => Str; sp : Species} ;
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
lincat RCl = {s : Str} ;
lincat RP = {s : Str} ;
lincat RS = {s : Str} ;
+4 -4
View File
@@ -4,7 +4,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
lin
DetCN det cn = {
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ;
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
a = agrgP3 cn.g det.n
} ;
@@ -13,7 +13,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
DetQuant quant num = {
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
n = num.n ;
sp = quant.sp
spec = quant.spec
} ;
NumSg = {s = []; n = Sg} ;
@@ -21,12 +21,12 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
DefArt = {
s = \\c,g,n => [] ;
sp = Def
spec = Def
} ;
IndefArt = {
s = \\c,g => table Number ["një"; []] ;
sp = Indef
spec = Indef
} ;
UseN n = n ;
+2 -2
View File
@@ -1327,7 +1327,7 @@ oper mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
}
}
} ;
sp = Indef
spec = Indef
} ;
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
@@ -1350,7 +1350,7 @@ oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
Fem => f8
}
} ;
sp = Indef ;
spec = Indef ;
n = n
} ;
+1 -1
View File
@@ -1,6 +1,6 @@
--# -path=.:../maltese:../common:../abstract:../prelude
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkCard,mkDet,mkIAdv,mkIDet,mkOrd,mkPConj,mkQuant,mkVoc] **
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkOrd,mkQuant] **
open (P = ParadigmsMlt) in {
}
+1 -3
View File
@@ -4,7 +4,7 @@ concrete ExtendAra of Extend =
CatAra ** ExtendFunctor - [
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
EmptyRelSlash, PredAPVP,
ComplDirectVS, ComplDirectVQ, UttAdV, -- because of Utt
ComplDirectVS, ComplDirectVQ, -- because of Utt
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
EmbedSSlash, AdjAsNP, GerundNP,
PassVPSlash, ---- bogus implementation, see below
@@ -31,8 +31,6 @@ lin
-- : NP -> NP -> NP
ApposNP np1 np2 = np2 ** {s = \\c => np1.s ! c ++ np2.s ! c} ;
UttAdV adv = {s = \\_ => adv.s} ;
-- : AP -> IComp ; -- "how old"
ICompAP ap = {s = \\gn => "كَمْ" ++ ap.s ! NoHum ! gn.g ! gn.n ! Indef ! Acc} ;
+1 -11
View File
@@ -1,14 +1,4 @@
concrete AdjectiveBel of Adjective = CatBel ** open ResBel in {
concrete AdjectiveBel of Adjective = CatBel ** {
lin
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} ;
}
-13
View File
@@ -1,13 +0,0 @@
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 -2
View File
@@ -1,5 +1,4 @@
concrete AllBel of AllBelAbs =
LangBel,
ExtendBel
LangBel
**
{} ;
+1 -2
View File
@@ -1,4 +1,3 @@
abstract AllBelAbs =
Lang,
Extend
Lang
** {}
+16 -63
View File
@@ -1,68 +1,21 @@
concrete CatBel of Cat = CommonX ** open ResBel, (R = ParamX) in {
concrete CatBel of Cat = CommonX ** open ResBel in {
lincat
S = {s : Str} ;
QS = {s : Str} ;
RS = {s : Str} ;
Cl = {s : R.Tense => R.Polarity => Str} ;
ClSlash = {s : R.Tense => R.Polarity => Str; c : Compl} ;
SSlash = {s : Str; c : Compl} ;
Imp = {s : R.Polarity => Number => Str} ;
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat V = V ;
lincat VV,VS,VQ,VA = V ;
lincat V2 = V ** {c2 : Compl} ;
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
lincat A = A ;
lincat A2 = A ** {c2 : Compl} ;
lincat Prep = Compl ;
lincat CN = CommonNoun ;
lincat AP = AdjPhrase ;
lincat S = {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} ;
lincat LN,SN,GN,PN = {s : Str} ;
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 ;
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
}
-60
View File
@@ -1,60 +0,0 @@
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} ;
}
-141
View File
@@ -1,141 +0,0 @@
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 = "урду"} ;
}
+6 -6
View File
@@ -29,12 +29,12 @@ lin
paragraph (x.infinitive) ++
heading1 "Present" ++
frameTable (
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 (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 (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 (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 (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 (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
heading1 "Imperative" ++
frameTable (
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
-244
View File
@@ -1,244 +0,0 @@
--# -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
} ;
}
+1 -11
View File
@@ -2,15 +2,5 @@ concrete GrammarBel of Grammar =
TenseX,
PhraseBel,
NounBel,
AdjectiveBel,
AdverbBel,
VerbBel,
SentenceBel,
QuestionBel,
RelativeBel,
ConjunctionBel,
NumeralBel,
NamesBel,
StructuralBel,
IdiomBel ** {
AdjectiveBel ** {
}
-22
View File
@@ -1,22 +0,0 @@
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 -3
View File
@@ -1,12 +1,10 @@
--# -path=.:../abstract
concrete LangBel of Lang =
GrammarBel,
LexiconBel,
ConstructionBel
LexiconBel
,DocumentationBel --# notpresent
** {
flags startcat = Phr ;
}
File diff suppressed because it is too large Load Diff
-19
View File
@@ -1,19 +0,0 @@
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
} ;
}
+1 -123
View File
@@ -1,126 +1,4 @@
concrete NounBel of Noun = CatBel ** open ResBel, Prelude in {
concrete NounBel of Noun = CatBel ** {
lin
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 ;
}
-65
View File
@@ -1,65 +0,0 @@
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} ;
}
+12 -71
View File
@@ -636,42 +636,6 @@ oper
_ => 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
= \form -> case form of {
_ + "агчы" => mkV021 form;
@@ -753,16 +717,6 @@ oper
_ => 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)
= \form -> case form of {
_ + "які" => mkA006 form;
@@ -865,37 +819,24 @@ oper
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
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}
} ;
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP (mkSimpleNP s Masc Sg P3) ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_,_,_ => s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_,_ => s; n=Sg} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_ => s} ;
adjQuant : A -> Quant = \a -> lin Quant {s=\\c,g,n => a.s ! c ! genNum g n} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=\\_,_,_ => s} ;
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg} ;
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} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkLN : Str -> LN = \s -> lin LN {s=caseTable s; g=Neuter; n=Sg} ;
mkGN : Str -> GN = \s -> lin GN {s=s; g=Masc} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkPN : Str -> PN = \s -> lin PN {s=caseTable s; g=Masc; n=Sg} ;
mkPN : Str -> PN = \s -> lin PN {s=s} ;
}
+1 -15
View File
@@ -1,25 +1,11 @@
concrete PhraseBel of Phrase = CatBel ** open ResBel in {
concrete PhraseBel of Phrase = CatBel ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.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 ;
NoPConj = {s = []} ;
PConjConj conj = {s = conj.s} ;
NoVoc = {s = []} ;
VocNP np = {s = np.s ! Nom} ;
}
-50
View File
@@ -1,50 +0,0 @@
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
} ;
}
-11
View File
@@ -1,11 +0,0 @@
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} ;
}
+10 -133
View File
@@ -1,4 +1,4 @@
resource ResBel = open (R = ParamX), Prelude in {
resource ResBel = {
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
param Number = Sg | Pl ;
@@ -40,12 +40,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
param Aspect = Imperf | Perf ;
param Person = P1 | P2 | P3 ;
param Tense = Pres | Past ;
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 mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
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 mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
\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 {
Imperf => { past = f1 ;
pres = table {
Imperf => { Past = f1 ;
Pres = table {
P1 => table {
Sg => f2 ;
Pl => f3
@@ -60,8 +60,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V
}
}
} ;
Perf => { past = f8 ;
pres = table {
Perf => { Past = f8 ;
Pres = table {
P1 => table {
Sg => f9 ;
Pl => f10
@@ -110,14 +110,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V
param GenNum = GSg Gender | GPl ;
oper genNum : Gender -> Number -> GenNum = \g,n ->
case n of {
Sg => GSg g ;
Pl => GPl
} ;
oper Adj = {s: Case => GenNum => Str} ; -- 704
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
oper A = {s: Case => GenNum => Str} ; -- 704
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
\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 {
Nom => table {
@@ -164,123 +158,6 @@ oper Compl = {s : Str; c : Case} ;
oper noPrep : Compl = {s=""; c=Acc} ;
oper CommonNoun = Noun ;
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
} ;
oper AdjPhrase = A ;
}
-45
View File
@@ -1,45 +0,0 @@
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} ;
}
-110
View File
@@ -1,110 +0,0 @@
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 = "беларуская"} ;
}
-138
View File
@@ -1,138 +0,0 @@
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 ++ "будзь"
} ;
}
-105
View File
@@ -182,111 +182,6 @@ lin
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 = {
t = "гл" ;
s1= heading1 ("Глагол") ++
+3 -4
View File
@@ -8,8 +8,6 @@ lin
AdAdV a adv = {s = a.s ++ adv.s; p = adv.p} ;
UttAdV adv = {s = adv.s} ;
EmptyRelSlash slash = {
s = \\t,a,p,agr => linPrep slash.c2 ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
} ;
@@ -152,7 +150,7 @@ lin
MkVPS t p vp = {
s = \\a =>
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
compl = vp.compl ! a
in t.s ++ p.s ++ verb ++ compl
} ;
@@ -318,6 +316,7 @@ lin UseComp_estar = UseComp ;
lin ProDrop pro = pro ;
lin TPastSimple = {s = []} ** {t = VPastSimple Indicative} ; --# notpresent
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
}
+1 -1
View File
@@ -67,7 +67,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
MkVPS t p vp = {
s = \\a =>
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
compl = vp.compl ! a
in t.s ++ p.s ++ verb ++ compl
} ;
+25 -4
View File
@@ -27,12 +27,33 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
agr=agrP3 (GSg Neut);
tenses = vpTenses (predV (singleV verb)) ! t ! a ! Pos ! agr
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}
= 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 {
Main => tenses ! Inv ! Perf ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ tenses ! Main ! Perf ++ adv.s ;
Quest => tenses ! Quest ! Perf ++ np.s ! RObj Acc ++ adv.s
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
}
} ;
-1
View File
@@ -121,7 +121,6 @@ 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}} ;
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} ;
+26 -102
View File
@@ -77,17 +77,12 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
VVType = VVInf Aspect | VVGerund ;
Mood =
Indicative
| Renarrative ;
Tense =
VPresent
| VPastSimple Mood --# notpresent
| VPastImperfect Mood --# notpresent
| VPastFut --# notpresent
| VFut Mood --# notpresent
| VCond Mood --# notpresent
| VPastSimple --# notpresent
| VPastImperfect --# notpresent
| VFut --# notpresent
| VCond --# notpresent
;
-- The order of sentence is needed already in $VP$.
@@ -408,19 +403,6 @@ 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} ;
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
@@ -537,17 +519,18 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
_ => Pos
} ;
agr = personAgr gn p1 ;
verb : Order => Str
= \\o => vpTenses vp ! t ! a ! p ! agr ! o ! Perf ;
verb : Bool => Str
= \\q => vpTenses vp ! t ! a ! p ! agr ! q ! Perf ;
compl = vp.compl ! agr
in case o of {
Inv => verb ! Inv ++ compl ++ subj ;
o => subj ++ verb ! o ++ compl
Main => subj ++ verb ! False ++ compl ;
Inv => verb ! False ++ compl ++ subj ;
Quest => subj ++ verb ! True ++ compl
}
} ;
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Order => Aspect => Str =
\verb -> \\t,a,p,agr,o,asp =>
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str =
\verb -> \\t,a,p,agr,q0,asp =>
let clitic = case verb.vtype of {
VNormal => {s=verb.clitics; agr=agr} ;
VMedial c => {s=verb.clitics++reflClitics ! c; agr=agr} ;
@@ -560,14 +543,11 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
aorist = verb.s ! asp ! (VAorist (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))) ;
pluperfect = verb.s ! asp ! (VPluPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (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 ;
auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
auxWillS = auxWill ! numGenNum clitic.agr.gn ! clitic.agr.p ;
apc : Str -> Str = \s ->
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
@@ -575,33 +555,22 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
_ => auxPres++s++clitic.s
} ;
li0 = case <verb.ad.isEmpty,o> of {
<False,Quest> => "ли" ;
_ => []
} ;
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ли"; _ => []} ;
li = case <verb.ad.isEmpty,o> of {
<True,Quest> => "ли";
_ => []
} ;
q = case verb.ad.isEmpty of {True => q0; False => False} ;
li = case q of {True => "ли"; _ => []} ;
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case <verb.ad.isEmpty,o> of {
<True,Quest> => {s1=[]; s2="ли"++apc []};
<True,Inv> => {s1=[]; s2=apc []};
_ => {s1=apc []; s2=[]}
} ;
Pos => case q of {True => {s1=[]; s2="ли"++apc []};
False => {s1=apc []; s2=[]}} ;
Neg => {s1="не"++apc li; s2=[]}
} ;
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case <verb.ad.isEmpty,o> of {
<True,Quest> => {s1=[]; s2="ли"++s};
<True,Inv> => {s1=[]; s2=s};
_ => {s1=s; s2=[]}
} ;
Pos => case q of {True => {s1=[]; s2="ли"++s};
False => {s1=s; s2=[]}} ;
Neg => case verb.vtype of
{VNormal => {s1="не"++s; s2=li} ;
_ => {s1="не"++s++li; s2=[]}}
@@ -619,63 +588,18 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
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} =
case <t,a> of {
<VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
; --# notpresent
; --# notpresent
<VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
<VPastSimple Indicative,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<VPastSimple Indicative,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<VPastSimple Renarrative,_> => {aux=vf7; main=pluperfect} ; --# notpresent
<VPastImperfect Indicative,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<VPastImperfect Indicative,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<VPastImperfect Renarrative,_> => {aux=vf7; 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
<VPastSimple,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<VPastSimple,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<VPastImperfect,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<VPastImperfect,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<VFut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<VFut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<VCond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
}
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
+3 -3
View File
@@ -3,8 +3,8 @@ concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TTAnt,TPr
lin
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
TPres = {s = []} ** {t = VPresent} ;
TPast = {s = []} ** {t = VPastImperfect Indicative} ; --# notpresent
TFut = {s = []} ** {t = VFut Indicative} ; --# notpresent
TCond = {s = []} ** {t = VCond Indicative} ; --# notpresent
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
TFut = {s = []} ** {t = VFut} ; --# notpresent
TCond = {s = []} ** {t = VCond} ; --# notpresent
}
+1 -1
View File
@@ -101,7 +101,7 @@ lin
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
ApposNP = variants {} ; -- NP -> NP -> NP ; -- Mr Macron, the president of France,
AdAdV = variants {} ; -- AdA -> AdV -> AdV ; -- almost always
UttAdV adv = {s = adv.s} ; -- AdV -> Utt ; -- always(!)
UttAdV = variants {} ; -- AdV -> Utt ; -- always(!)
PositAdVAdj = variants {} ; -- A -> AdV ; -- (that she) positively (sleeps)
CompS = variants {} ; -- S -> Comp ; -- (the fact is) that she sleeps
CompQS = variants {} ; -- QS -> Comp ; -- (the question is) who sleeps
-4
View File
@@ -6,8 +6,4 @@ lin
s = prep.s ++ np.prep ! prep.c
} ;
SubjS subj s = {
s = subj.s ++ s.s
} ;
}
+2 -3
View File
@@ -21,11 +21,10 @@ concrete CatCze of Cat =
RP = AdjForms ;
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase ; ind : Agr => Str} ; -- ind : incorporated indirect object, rendered after the object slot
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
V = ResCze.VerbForms ;
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
V3 = ResCze.VerbForms ** {c,c2 : ComplementCase} ; -- c : direct object, c2 : indirect object
VS,VQ,VV = ResCze.VerbForms ;
VS,VQ = ResCze.VerbForms ;
A = ResCze.AdjForms ;
AP = ResCze.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
+1
View File
@@ -12,6 +12,7 @@ concrete ExtendCze of Extend = CatCze **
,SlashBareV2S
,PredIAdvVP
,PredAPVP
,ExistsNP
,ExistS
,ExistPluralCN
,ExistNPQS
-27
View File
@@ -1,32 +1,5 @@
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
View File
@@ -5,7 +5,6 @@ concrete LangCze of Lang =
LexiconCze
-- ,ConstructionCze
-- ,DocumentationCze --# notpresent
,MarkupCze - [stringMark]
** {
}
-27
View File
@@ -1,27 +0,0 @@
--# -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} ;
}
+4
View File
@@ -9,10 +9,12 @@ oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
oper CompCN : CN -> Comp = notYet "CompCN" ;
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
@@ -61,6 +63,8 @@ oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
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 SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
-7
View File
@@ -99,12 +99,5 @@ lin
NumDecimal ds = ds ** {s = \\_,_ => ds.s} ;
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
} ;
}
-8
View File
@@ -122,14 +122,6 @@ oper
= \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, ...
-5
View File
@@ -6,11 +6,6 @@ lin
UttCN cn = {s = cn.s ! Sg ! Nom} ;
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! 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} ;
-2
View File
@@ -4,6 +4,4 @@ concrete QuestionCze of Question = CatCze **
lin
QuestCl cl = cl ; ----
QuestIAdv iadv cl = cl ** {clit = iadv.s ++ cl.clit} ;
}
+18 -121
View File
@@ -28,11 +28,6 @@ oper
softConsonant : pattern Str = #("ť"|"ď"|"j"|"ň"|"ř"|"š"|"c"|"č"|"ž") ;
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 =
#(
"d" | "t" | "g" | "h" | "k" | "n" | "r" |
@@ -144,33 +139,22 @@ oper
declensionNounForms : (nom,gen : Str) -> Gender -> NounForms
= \nom,gen,g ->
-- the oblique stem, for the paradigms that cannot derive it from the nominative
let stem : Str = Predef.tk 1 gen ;
decl : DeclensionType = case <g, nom, gen> of {
<Masc Anim, _ + "tel" , _ + "e"> => declMUZstem stem ;
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
<Masc Anim, _ + ("us"|"os") , _ + "a"> => declLATINUSA ;
let decl : DeclensionType = case <g, nom, gen> of {
<Masc Anim, _ + #hardConsonant, _ + "a"> => declPAN ;
<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 ;
<Masc Inanim, _ + #hardConsonant, _ + "u"> => declHRAD ;
<Fem, _ + "a" , _ + "y"> => declZENA ;
<Fem, _ + "á" , _ + "é"> => declADJF ;
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
<Fem, _ + (#softConsonant|#hardishConsonant), _ + "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 ;
<Masc Anim, _ + #softConsonant, _ + "e"> => declMUZ ;
<Masc Anim, _ + "tel" , _ + "e"> => declMUZ ;
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
<Masc Inanim, _ + #softConsonant, _ + "e"> => declSTROJ ;
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
<Fem, _ + #softConsonant, _ + "e"> => declPISEN ;
<Fem, _ + "ost" , _ + "i"> => declKOST ; --- also many other "st" 3.6.3
<Neutr, _ + "e" , _+"ete"> => declKURE ;
<Neutr, _ + "e" , _ + "e"> => declMORE ;
<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)
}
in decl nom ;
@@ -181,14 +165,12 @@ oper
= \s -> case s of {
_ + "ost" => declKOST s ;
_ + "tel" => declMUZ s ;
_ + "us" => declLATINUS s ;
_ + "um" => declLATINUM s ;
_ + #hardishConsonant => declHRAD s ;
_ + #hardConsonant => declHRAD s ;
_ + #softConsonant => declSTROJ s ;
_ + "a" => declZENA s ;
_ + "o" => declMESTO s ;
_ + "ce" => declSOUDCE s ;
_ + ("e"|"ě") => declMORE s ;
_ + "e" => declMORE s ;
_ + "í" => declSTAVENI s ;
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
} ;
@@ -234,9 +216,9 @@ oper
g = Masc Anim
} ;
-- the oblique stem is a separate argument, because it cannot always be
-- derived from the nominative: uzel-uzlu but člen-členu
declHRADstem : Str -> DeclensionType = \hrd,hrad ->
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
let hrd = dropFleetingE hrad
in
{
snom,sacc = hrad ;
sgen,sdat = hrd + "u" ; --- Berlín-a
@@ -251,9 +233,6 @@ oper
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
let zen = init zena
in
@@ -291,91 +270,9 @@ oper
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
declMUZstem (dropFleetingE muz_) muz_ ;
declMUZstem : Str -> DeclensionType = \muz,muz_ ->
let muz = dropFleetingE muz_
in
{
snom = muz_ ;
sgen,sacc = muz + "e" ; --- pacc
-19
View File
@@ -29,23 +29,4 @@ lin
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} ;
}
-31
View File
@@ -1,42 +1,11 @@
concrete StructuralCze of Structural = CatCze **
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
all_Predet = {s = "všechny"} ;
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
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
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
have_V2 = mkV2 haveVerbForms ;
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
+2 -41
View File
@@ -3,48 +3,9 @@
concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in {
lincat
Symb, [Symb] = SS ;
Symb = {s : Str} ;
lin
MkSymb s = s ;
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} ;
SymbPN s = lin PN {s = \\_ => s.s ; g = Neutr} ;
}
+3 -47
View File
@@ -8,35 +8,17 @@ lin
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
<True,False> => vps ** {
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c ;
compl = \\a => vps.compl ! a ++ vps.ind ! a
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c
} ;
_ => vps ** {
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c ++ vps.ind ! a
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c
}
} ;
SlashV2a v = {
verb = v ;
clit,compl = \\_ => [] ;
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
c = v.c
} ;
UseComp comp = {
@@ -55,12 +37,6 @@ lin
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 = {
s = \\a_ => adv.s
} ;
@@ -69,24 +45,4 @@ lin
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
} ;
}
-27
View File
@@ -111,21 +111,6 @@ lin
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 = {
t = "v" ;
s1= heading1 "Verb" ++
@@ -242,18 +227,6 @@ lin
} ;
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 ->
frameTable (
tr (th "infinitive" ++ td (verb.s ! VInf)) ++
-2
View File
@@ -500,6 +500,4 @@ lin CardCNCard card cn =
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
lin UttAdV adv = adv ;
}
+1 -1
View File
@@ -149,7 +149,7 @@ flags optimize=values ;
stick_V = irregV "stick" "stuck" "stuck" ;
sting_V = irregV "sting" "stung" "stung" ;
stink_V = irregV "stink" "stank" "stunk" ;
stride_V = irregV "stride" "strode" "stridden" ;
stride_V = irregV "stride" "strod" "stridden" ;
strike_V = irregV "strike" "struck" "struck" ;
string_V = irregV "string" "strung" "strung" ;
strive_V = irregV "strive" "strove" "striven" ;
+1 -29
View File
@@ -1,32 +1,4 @@
concrete AdjectiveFao of Adjective = CatFao ** open ResFao in {
concrete AdjectiveFao of Adjective = CatFao ** {
lin
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
} ;
}
-11
View File
@@ -1,11 +0,0 @@
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 -2
View File
@@ -1,5 +1,4 @@
concrete AllFao of AllFaoAbs =
LangFao,
ExtendFao
LangFao
**
{} ;
+1 -2
View File
@@ -1,4 +1,3 @@
abstract AllFaoAbs =
Lang,
Extend
Lang
** {}
+1 -34
View File
@@ -1,4 +1,4 @@
concrete CatFao of Cat = CommonX ** open ResFao, Prelude in {
concrete CatFao of Cat = CommonX ** open ResFao in {
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
@@ -9,43 +9,10 @@ lincat V = Verb ;
lincat VV,VS,VQ,VA = Verb ;
lincat V2 = Verb ** {c2 : 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 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 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 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} ;
-53
View File
@@ -1,53 +0,0 @@
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} ;
}
-173
View File
@@ -1,173 +0,0 @@
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 ;
}
+2 -2
View File
@@ -55,8 +55,8 @@ lin
paragraph x.Converb ++
heading2 "Imperative" ++
frameTable (
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
tr (th "Sg" ++ td (x.Imperative_Jussive ! Sg)) ++
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pl))) ++
heading2 "Indicative" ++
frameTable (
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
-34
View File
@@ -1,34 +0,0 @@
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} ;
}
+1 -11
View File
@@ -2,15 +2,5 @@ concrete GrammarFao of Grammar =
TenseX,
PhraseFao,
NounFao,
VerbFao,
AdjectiveFao,
AdverbFao,
NumeralFao,
SentenceFao,
QuestionFao,
RelativeFao,
ConjunctionFao,
StructuralFao,
IdiomFao,
NamesFao ** {
AdjectiveFao ** {
}
-62
View File
@@ -1,62 +0,0 @@
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"} ;
}
-1
View File
@@ -2,7 +2,6 @@
concrete LangFao of Lang =
GrammarFao,
LexiconFao
,ConstructionFao
,DocumentationFao --# notpresent
** {
+1 -8
View File
@@ -1,9 +1,2 @@
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" ;
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao in {
}
+128 -128
View File
@@ -600,18 +600,18 @@ mkN016 base =
Gen => base_1+"ar"
} ;
Pl => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
Nom => base_1+"urin" ;
Acc => base_1+"in" ;
Dat => base_1+"inum" ;
Gen => base_1+"arins"
}
} ;
Def => table {
Sg => table {
Nom => base_1+"urin" ;
Acc => base_1+"in" ;
Dat => base_1+"inum" ;
Gen => base_1+"arins"
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
} ;
Pl => table {
Nom => nonExist ;
@@ -5670,18 +5670,18 @@ mkN146 base =
Gen => base_1+"s"
} ;
Pl => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
Nom => base_1+"kurin" ;
Acc => base_1+"kin" ;
Dat => base_1+"kinum" ;
Gen => base_1+"sins"
}
} ;
Def => table {
Sg => table {
Nom => base_1+"kurin" ;
Acc => base_1+"kin" ;
Dat => base_1+"kinum" ;
Gen => base_1+"sins"
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
} ;
Pl => table {
Nom => nonExist ;
@@ -8769,7 +8769,7 @@ mkV001 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -8802,7 +8802,7 @@ mkV002 base =
case base of {
"ei"+base_1+"a" => lin V
{ Converb = "hi"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "ei"+base_1 ;
Pl => "ei"+base_1+"ið"
} ;
@@ -8835,7 +8835,7 @@ mkV003 base =
case base of {
"a"+base_1+"a" => lin V
{ Converb = "i"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "a"+base_1 ;
Pl => "a"+base_1+"ið"
} ;
@@ -8868,7 +8868,7 @@ mkV004 base =
case base of {
"a"+base_1+"a" => lin V
{ Converb = "a"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "a"+base_1 ;
Pl => "a"+base_1+"ið"
} ;
@@ -8901,7 +8901,7 @@ mkV005 base =
case base of {
base_1+"a"+base_2@(?+?) => lin V
{ Converb = base_1+"a"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -8934,7 +8934,7 @@ mkV006 base =
case base of {
base_1+"ða" => lin V
{ Converb = base_1+"tt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ð" ;
Pl => base_1+"ðið"
} ;
@@ -8967,7 +8967,7 @@ mkV007 base =
case base of {
"eiga" => lin V
{ Converb = "átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => "eig" ;
Pl => "eigið"
} ;
@@ -9000,7 +9000,7 @@ mkV008 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9033,7 +9033,7 @@ mkV009 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9066,7 +9066,7 @@ mkV010 base =
case base of {
base_1+"da" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"d" ;
Pl => base_1+"dið"
} ;
@@ -9099,7 +9099,7 @@ mkV011 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"j" ;
Pl => base_1+"e"+base_2+"jið"
} ;
@@ -9132,7 +9132,7 @@ mkV012 base =
case base of {
base_1+"i"+base_2@?+"ja" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"jið"
} ;
@@ -9165,7 +9165,7 @@ mkV013 base =
case base of {
base_1+"i"+base_2@?+"da" => lin V
{ Converb = base_1+"u"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2+"d" ;
Pl => base_1+"i"+base_2+"dið"
} ;
@@ -9198,7 +9198,7 @@ mkV014 base =
case base of {
base_1+"í"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"í"+base_2 ;
Pl => base_1+"í"+base_2+"ið"
} ;
@@ -9231,7 +9231,7 @@ mkV015 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -9264,7 +9264,7 @@ mkV016 base =
case base of {
base_1+"gja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"g" ;
Pl => base_1+"gið"
} ;
@@ -9297,7 +9297,7 @@ mkV017 base =
case base of {
base_1+"e"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"n" ;
Pl => base_1+"e"+base_2+"nið"
} ;
@@ -9330,7 +9330,7 @@ mkV018 base =
case base of {
base_1+"e"+base_2@("m"|(?+?))+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9363,7 +9363,7 @@ mkV019 base =
case base of {
base_1+"ó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ó"+base_2 ;
Pl => base_1+"ó"+base_2+"ið"
} ;
@@ -9396,7 +9396,7 @@ mkV020 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9429,7 +9429,7 @@ mkV021 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -9462,7 +9462,7 @@ mkV022 base =
case base of {
base_1+"úgva" => lin V
{ Converb = base_1+"úð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"úgv" ;
Pl => base_1+"úgvið"
} ;
@@ -9495,7 +9495,7 @@ mkV023 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9528,7 +9528,7 @@ mkV024 base =
case base of {
base_1+"e"+base_2@?+base_3@?+"a" => lin V
{ Converb = base_1+"o"+base_2+base_3+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+base_3 ;
Pl => base_1+"e"+base_2+base_3+"ið"
} ;
@@ -9561,7 +9561,7 @@ mkV025 base =
case base of {
base_1+"ggja" => lin V
{ Converb = base_1+"ð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ggj" ;
Pl => base_1+"ggið"
} ;
@@ -9594,7 +9594,7 @@ mkV026 base =
case base of {
base_1+"aga" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ag" ;
Pl => base_1+"agið"
} ;
@@ -9627,7 +9627,7 @@ mkV027 base =
case base of {
base_1+"e"+base_2@?+"ka" => lin V
{ Converb = base_1+"u"+base_2+"kið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"k" ;
Pl => base_1+"e"+base_2+"kið"
} ;
@@ -9660,7 +9660,7 @@ mkV028 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9693,7 +9693,7 @@ mkV029 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -9726,7 +9726,7 @@ mkV030 base =
case base of {
"ve"+base_1+"a" => lin V
{ Converb = "ve"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "ve"+base_1 ;
Pl => "ve"+base_1+"ið"
} ;
@@ -9759,7 +9759,7 @@ mkV031 base =
case base of {
base_1+"na" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"na" ;
Pl => base_1+"nið"
} ;
@@ -9792,7 +9792,7 @@ mkV032 base =
case base of {
base_1+"a"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -9825,7 +9825,7 @@ mkV033 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -9858,7 +9858,7 @@ mkV034 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -9891,7 +9891,7 @@ mkV035 base =
case base of {
base_1+"la" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"la" ;
Pl => base_1+"lið"
} ;
@@ -9924,7 +9924,7 @@ mkV036 base =
case base of {
base_1+"ða"+base_2@(?+?) => lin V
{ Converb = base_1+"da"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -9957,7 +9957,7 @@ mkV037 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1 ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9990,7 +9990,7 @@ mkV038 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -10023,7 +10023,7 @@ mkV039 base =
case base of {
base_1+"na" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"n" ;
Pl => base_1+"nið"
} ;
@@ -10056,7 +10056,7 @@ mkV040 base =
case base of {
base_1+"ú"+base_2@?+"va" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ú"+base_2 ;
Pl => base_1+"ú"+base_2+"ið"
} ;
@@ -10089,7 +10089,7 @@ mkV041 base =
case base of {
base_1+"y"+base_2@?+"a" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -10122,7 +10122,7 @@ mkV042 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"jið"
} ;
@@ -10155,7 +10155,7 @@ mkV043 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"tt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -10188,7 +10188,7 @@ mkV044 base =
case base of {
base_1+"ú"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ú"+base_2 ;
Pl => base_1+"ú"+base_2+"ið"
} ;
@@ -10221,7 +10221,7 @@ mkV045 base =
case base of {
base_1+"la" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"l" ;
Pl => base_1+"lið"
} ;
@@ -10254,7 +10254,7 @@ mkV046 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10287,7 +10287,7 @@ mkV047 base =
case base of {
base_1+"anga" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"akk" ;
Pl => base_1+"angið"
} ;
@@ -10320,7 +10320,7 @@ mkV048 base =
case base of {
base_1+"ja"+base_2@?+"da" => lin V
{ Converb = base_1+"o"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ja"+base_2+"d" ;
Pl => base_1+"ja"+base_2+"dið"
} ;
@@ -10353,7 +10353,7 @@ mkV049 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"jø"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -10386,7 +10386,7 @@ mkV050 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -10419,7 +10419,7 @@ mkV051 base =
case base of {
base_1+"e"+base_2@?+"pa" => lin V
{ Converb = base_1+"o"+base_2+"pið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"p" ;
Pl => base_1+"e"+base_2+"pið"
} ;
@@ -10452,7 +10452,7 @@ mkV052 base =
case base of {
base_1+"y"+base_2@?+"ja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -10485,7 +10485,7 @@ mkV053 base =
case base of {
base_1+"á"+base_2@?+"a" => lin V
{ Converb = base_1+"á"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á"+base_2 ;
Pl => base_1+"á"+base_2+"ið"
} ;
@@ -10518,7 +10518,7 @@ mkV054 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10551,7 +10551,7 @@ mkV055 base =
case base of {
base_1+"ógva" => lin V
{ Converb = base_1+"óð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ógv" ;
Pl => base_1+"ógvið"
} ;
@@ -10584,7 +10584,7 @@ mkV056 base =
case base of {
base_1+"a"+base_2@?+"da" => lin V
{ Converb = base_1+"i"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2+"d" ;
Pl => base_1+"a"+base_2+"dið"
} ;
@@ -10617,7 +10617,7 @@ mkV057 base =
case base of {
base_1+"anga" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ang" ;
Pl => base_1+"angið"
} ;
@@ -10650,7 +10650,7 @@ mkV058 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10683,7 +10683,7 @@ mkV059 base =
case base of {
base_1+"ei"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2+"j" ;
Pl => base_1+"ei"+base_2+"jið"
} ;
@@ -10716,7 +10716,7 @@ mkV060 base =
case base of {
base_1+"vø"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"vø"+base_2 ;
Pl => base_1+"vø"+base_2+"ið"
} ;
@@ -10749,7 +10749,7 @@ mkV061 base =
case base of {
base_1+"y"+base_2@?+"gja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2+"g" ;
Pl => base_1+"y"+base_2+"gið"
} ;
@@ -10782,7 +10782,7 @@ mkV062 base =
case base of {
base_1+"o"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"o"+base_2 ;
Pl => base_1+"o"+base_2+"ið"
} ;
@@ -10815,7 +10815,7 @@ mkV063 base =
case base of {
base_1+"pa" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"p" ;
Pl => base_1+"pið"
} ;
@@ -10848,7 +10848,7 @@ mkV064 base =
case base of {
base_1+"úgva" => lin V
{ Converb = base_1+"ovið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"úg" ;
Pl => base_1+"úgið"
} ;
@@ -10881,7 +10881,7 @@ mkV065 base =
case base of {
base_1+"u"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nað" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -10914,7 +10914,7 @@ mkV066 base =
case base of {
base_1+"ø"+base_2@?+"a" => lin V
{ Converb = base_1+"ø"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2 ;
Pl => base_1+"ø"+base_2+"ið"
} ;
@@ -10947,7 +10947,7 @@ mkV067 base =
case base of {
base_1+"sa" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"s" ;
Pl => base_1+"sið"
} ;
@@ -10980,7 +10980,7 @@ mkV068 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -11013,7 +11013,7 @@ mkV069 base =
case base of {
base_1+"e"+base_2@?+"gja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"gj" ;
Pl => base_1+"e"+base_2+"gjið"
} ;
@@ -11046,7 +11046,7 @@ mkV070 base =
case base of {
base_1+"iggja" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"igg" ;
Pl => base_1+"iggið"
} ;
@@ -11079,7 +11079,7 @@ mkV071 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -11112,7 +11112,7 @@ mkV072 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -11145,7 +11145,7 @@ mkV073 base =
case base of {
base_1+"á"+base_2@?+"a" => lin V
{ Converb = base_1+"á"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á"+base_2 ;
Pl => base_1+"á"+base_2+"ið"
} ;
@@ -11178,7 +11178,7 @@ mkV074 base =
case base of {
base_1+"ey"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ey"+base_2 ;
Pl => base_1+"ey"+base_2+"ið"
} ;
@@ -11211,7 +11211,7 @@ mkV075 base =
case base of {
base_1+"ega" => lin V
{ Converb = nonExist ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11244,7 +11244,7 @@ mkV076 base =
case base of {
base_1+"u"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nað" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11277,7 +11277,7 @@ mkV077 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -11310,7 +11310,7 @@ mkV078 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"jið"
} ;
@@ -11343,7 +11343,7 @@ mkV079 base =
case base of {
base_1+"ða" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ð" ;
Pl => base_1+"ðið"
} ;
@@ -11376,7 +11376,7 @@ mkV080 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -11409,7 +11409,7 @@ mkV081 base =
case base of {
base_1+"áða" => lin V
{ Converb = base_1+"átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"áð" ;
Pl => base_1+"áðið"
} ;
@@ -11442,7 +11442,7 @@ mkV082 base =
case base of {
base_1+"ða"+base_2@(?+?) => lin V
{ Converb = base_1+"ð"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11475,7 +11475,7 @@ mkV083 base =
case base of {
base_1+"ø"+base_2@?+"ka" => lin V
{ Converb = base_1+"o"+base_2+"kið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2+"k" ;
Pl => base_1+"ø"+base_2+"kið"
} ;
@@ -11508,7 +11508,7 @@ mkV084 base =
case base of {
base_1+"íggja" => lin V
{ Converb = base_1+"æð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"íggj" ;
Pl => base_1+"íggið"
} ;
@@ -11541,7 +11541,7 @@ mkV085 base =
case base of {
base_1+"kja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"k" ;
Pl => base_1+"kið"
} ;
@@ -11574,7 +11574,7 @@ mkV086 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -11607,7 +11607,7 @@ mkV087 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -11640,7 +11640,7 @@ mkV088 base =
case base of {
base_1+"u"+base_2@?+"a" => lin V
{ Converb = base_1+"u"+base_2+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11673,7 +11673,7 @@ mkV089 base =
case base of {
base_1+"ei"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2+"j" ;
Pl => base_1+"ei"+base_2+"jið"
} ;
@@ -11706,7 +11706,7 @@ mkV090 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"j" ;
Pl => base_1+"jið"
} ;
@@ -11739,7 +11739,7 @@ mkV091 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -11772,7 +11772,7 @@ mkV092 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -11805,7 +11805,7 @@ mkV093 base =
case base of {
base_1+"y"+base_2@?+"ja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -11838,7 +11838,7 @@ mkV094 base =
case base of {
base_1+"i"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2+"n" ;
Pl => base_1+"i"+base_2+"nið"
} ;
@@ -11871,7 +11871,7 @@ mkV095 base =
case base of {
base_1+"anda" => lin V
{ Converb = base_1+"aðið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"att" ;
Pl => base_1+"andið"
} ;
@@ -11904,7 +11904,7 @@ mkV096 base =
case base of {
base_1+"ei"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2 ;
Pl => base_1+"ei"+base_2+"ið"
} ;
@@ -11937,7 +11937,7 @@ mkV097 base =
case base of {
base_1+"inga" => lin V
{ Converb = base_1+"ungið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ikk" ;
Pl => base_1+"ingið"
} ;
@@ -11970,7 +11970,7 @@ mkV098 base =
case base of {
base_1+"ja"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ja"+base_2 ;
Pl => base_1+"ja"+base_2+"ið"
} ;
@@ -12003,7 +12003,7 @@ mkV099 base =
case base of {
base_1+"o"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"o"+base_2 ;
Pl => base_1+"o"+base_2+"ið"
} ;
@@ -12036,7 +12036,7 @@ mkV100 base =
case base of {
base_1+"í"+base_2@?+"ja" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"í"+base_2+"j" ;
Pl => base_1+"í"+base_2+"jið"
} ;
@@ -12069,7 +12069,7 @@ mkV101 base =
case base of {
base_1+"i"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"jið"
} ;
@@ -12102,7 +12102,7 @@ mkV102 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -12135,7 +12135,7 @@ mkV103 base =
case base of {
base_1+"ø"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2+"j" ;
Pl => base_1+"ø"+base_2+"jið"
} ;
@@ -12168,7 +12168,7 @@ mkV104 base =
case base of {
base_1+"y"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"u"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2+"j" ;
Pl => base_1+"y"+base_2+"jið"
} ;
@@ -12201,7 +12201,7 @@ mkV105 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -12234,7 +12234,7 @@ mkV106 base =
case base of {
base_1+"e"+base_2@?+"fa" => lin V
{ Converb = base_1+"o"+base_2+"fið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"f" ;
Pl => base_1+"e"+base_2+"fið"
} ;
@@ -12267,7 +12267,7 @@ mkV107 base =
case base of {
base_1+"a"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -12300,7 +12300,7 @@ mkV108 base =
case base of {
base_1+"e"+base_2@(?+?)+"a" => lin V
{ Converb = nonExist ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -12333,7 +12333,7 @@ mkV109 base =
case base of {
base_1+base_2@?+base_3@?+"a" => lin V
{ Converb = base_1+base_2+base_3+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -12366,7 +12366,7 @@ mkV110 base =
case base of {
"d"+base_1+"finite" => lin V
{ Converb = "v"+base_1+"rð" ;
imperative = table {
Imperative_Jussive = table {
Sg => "v"+base_1+"rðsins" ;
Pl => "v"+base_1+"rðanna"
} ;
@@ -12399,7 +12399,7 @@ mkV111 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -12432,7 +12432,7 @@ mkV112 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
-14
View File
@@ -1,14 +0,0 @@
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} ;
}
+1 -158
View File
@@ -1,161 +1,4 @@
concrete NounFao of Noun = CatFao ** open ResFao, Prelude in {
concrete NounFao of Noun = CatFao ** {
lin
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
} ;
}
-316
View File
@@ -1,316 +0,0 @@
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 ;
}
+6 -38
View File
@@ -319,19 +319,6 @@ oper
_ => 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
= \form -> case form of {
_ + "dur" => mkA001 form;
@@ -502,20 +489,11 @@ oper
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 : Str -> A = regA; -- s;Masc;Sg;Nom
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
} ;
invarA : Str -> A = \s -> lin A {
s = \\_,_,_ => s
} ;
mkA2 = overload {
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
@@ -524,19 +502,10 @@ oper
mkV = overload {
mkV : Str -> V = regV; -- Nonfinite
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}
} ;
invarV : Str -> V = \s -> lin V {
Converb = s ;
imperative = \\_ => s ;
Indicative = \\_,_ => s ;
Nonfinite = s ;
Participle = \\_ => s ;
particle = []
} ;
mkVV : V -> VV = \v -> lin VV v ;
mkVS : V -> VS = \v -> lin VS v ;
mkVQ : V -> VQ = \v -> lin VQ v ;
@@ -583,15 +552,14 @@ oper
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP {s=s; n=Sg} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s; n=Sg} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
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} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef} ;
mkCard : Str -> Card = \s -> lin Card {s=\\_,_ => s; n=Pl} ;
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
+1 -15
View File
@@ -1,25 +1,11 @@
concrete PhraseFao of Phrase = CatFao ** open ResFao in {
concrete PhraseFao of Phrase = CatFao ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.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 ;
NoPConj = {s = []} ;
PConjConj conj = conj ;
NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! Nom} ;
}
-50
View File
@@ -1,50 +0,0 @@
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
} ;
}
-16
View File
@@ -1,16 +0,0 @@
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
} ;
}
+9 -79
View File
@@ -1,9 +1,7 @@
resource ResFao = ParamX - [Tense,Pres,Past] ** {
param
CardOrd = NCard | NOrd Number ;
resource ResFao = {
param Species = Indef | Def ;
param Number = Sg | Pl ;
param Case = Nom | Acc | Dat | Gen ;
param Gender = Masc | Fem | Neuter ;
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
@@ -92,28 +90,17 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
}
} ;
param Tense = Pres | Past ;
param Tense = Past | Pres ;
param PersNum = PSg Person | PPl ;
oper persNum : Number -> Person -> PersNum =
\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
param Person = P1 | P3 | P2 ;
oper Verb = {Converb: Str; Imperative_Jussive: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
{ Converb = f1 ;
imperative = table {
Sg => f2 ;
Pl => f3
} ;
Imperative_Jussive = table {
Sg => f2 ;
Pl => f3
} ;
Indicative = table {
Pres => table {
PSg P1 => f4 ;
@@ -142,62 +129,5 @@ oper noPrep : Compl = {s=""; c=Acc} ;
oper CommonNoun = Noun ;
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
} ;
}
-90
View File
@@ -1,90 +0,0 @@
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} ;
}
-14
View File
@@ -1,14 +0,0 @@
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 ;
}
-138
View File
@@ -1,138 +0,0 @@
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 = []
} ;
}
-1
View File
@@ -66,7 +66,6 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
Predet = {s : Number => NPForm => Str} ;
Quant = {s1,sp : Number => Case => Str ; s2 : Harmony => Str ; isPoss : Bool ; isDef : Bool ; isNeg : Bool} ;
Card = {s : Number => Case => Str ; n : Number} ;
ACard = {s : Number => Case => Str ; n : Number} ;
Num = {s : Number => Case => Str ; isNum : Bool ; n : Number} ;
-- Numeral
-3
View File
@@ -29,9 +29,6 @@ lin
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_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);
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) ;
-37
View File
@@ -80,29 +80,6 @@ lin
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 = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
@@ -182,20 +159,6 @@ lin
oper
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
inflVerb : SVerb1 -> Str = \verb0 ->
+6 -189
View File
@@ -3,23 +3,15 @@
concrete ExtendFin of Extend =
CatFin ** ExtendFunctor - [
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
MkVPI,BaseVPI,ConsVPI,ConjVPI,ComplVPIVV,
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
,ListComp, BaseComp, ConsComp, ConjComp
,ListImp, BaseImp, ConsImp, ConjImp
,ExistCN, ExistMassCN, ICompAP, ByVP
,CompoundN, CompoundAP, GenNP, GenIP, GenRP, AdvIsNP, EmbedSSlash
,CompoundN, GenNP, GenIP, GenRP, AdvIsNP, EmbedSSlash
,PassVPSlash, PassAgentVPSlash
,CardCNCard
,UttAccNP
,AdjAsCN, AdjAsNP, GerundCN, GerundNP, GerundAdv
,AdjAsCN, AdjAsNP
,ApposNP
,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
,PresPartAP, PastPartAP
]
with
(Grammar = GrammarFin) **
@@ -105,24 +97,13 @@ oper
} ;
BaseVPI x y = {
s1 = x.s ;
s2 = y.s ;
sc = x.sc
} ;
BaseVPI = twoTable2 VVType Agr ;
ConsVPI = consrTable2 VVType Agr comma ;
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 ;
ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ;
ComplVPIVV vv vpi =
S.insertObj (\\_,_,a => vpi.s ! vv.vi ! a)
(S.predV (vv ** {sc = case vpi.sc of {
@@ -131,16 +112,6 @@ 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
lincat
@@ -192,13 +163,6 @@ lin
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
ICompAP ap = {
s = \\agr =>
@@ -298,145 +262,6 @@ lin PastPartAP vps = {
p = vps.c2.s.p1 ;
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
-- ruohoa syövä, Ranskassa valmistettu
@@ -446,12 +271,4 @@ oper
vp.s.s ! vform ++
vp.ext ;
rnp2np : Agr -> RNP -> NP ;
rnp2np agr rnp = {
s = rnp.s ! agr ;
a = agr ;
isPron = rnp.isPron ;
isNeg = rnp.isNeg
} ;
}
+2 -1
View File
@@ -148,7 +148,8 @@ lin
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
policeman_N = mkN "poliisi" ;
priest_N = mkN "pappi" ;
probable_AS = mkAS (compoundA "toden" (mkA "näköinen")) ;
probable_AS = mkAS --- for vowel harmony
(mkA (mkN "todennäköinen") "tonennäköisempi" "todennäköisin") ; ---- sta
queen_N = mkN "kuningatar" ;
radio_N = mk2N "radio" "radioita" ;
rain_V0 = mkV0 (mk2V "sataa" "satoi") ;
+1 -1
View File
@@ -1064,7 +1064,7 @@ oper
Transl => "niiksi" ;
Ess => "niinä" ;
Iness => "niissä" ;
Elat => "niistä" ;
Elat => "niitä" ;
Illat => "niihin" ;
Adess => "niillä" ;
Ablat => "niiltä" ;
-4
View File
@@ -36,8 +36,4 @@ lin InLN ln =
let c = case ln.extCase of {True => Adess ; False => Iness}
in {s = ln.s ! c} ;
lin AdjLN ap ln = ln ** {
s = \\c => ap.s ! True ! NCase ln.n c ++ ln.s ! c
} ;
}
-5
View File
@@ -294,11 +294,6 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
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 ;
QuantityNP n m = {
+2 -42
View File
@@ -75,24 +75,10 @@ lin
pot3as4 n = n ;
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 ;
pot4decimal d = {n = Pl ; s = \\c => d.s ! NCard (NCase Sg Nom) ++ "miljoonaa"} ; -- 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
pot51 = {n = Pl ; s = \\c => "miljardi"} ; -- KA: case inflection missing
oper
-- co : (c,o : {s : NForm => Str}) -> {s : CardOrd => Str} = \c,o -> {
@@ -142,7 +128,7 @@ oper
(ordN "a" "sadas") ;
tuhatN = co
(snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "tuhantena" "tuhanteen"
(snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "ruhantena" "tuhanteen"
"tuhansien" "tuhansia" "tuhansina" "tuhansissa" "tuhansiin"))
(ordN "a" "tuhannes") ;
@@ -171,32 +157,6 @@ 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
Dig = TDigit ;
+1 -9
View File
@@ -221,15 +221,7 @@ oper
= \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"
= \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
} ;
= \s,a -> lin A {s = \\d,c => s + a.s ! d ! c ; h = a.h ; p = s + a.p ; hasPrefix = a.hasPrefix} ;
prefixA : Str -> A -> A -- in modifying use, an uninflected glued prefix, e.g. "sähkö" for "sähköinen"
= \pr,a -> a ** {
-4
View File
@@ -18,10 +18,6 @@ concrete SentenceFin of Sentence = CatFin ** open Prelude, ResFin, StemFin in {
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$.
SlashVP np vp = {
+1 -1
View File
@@ -76,7 +76,7 @@ oper
let
tuoree = init (tuore.s ! NCase Sg Gen) ;
tuoreesti = tuoree + "sti" ;
tuoreemmin = init tuoree + "in" ;
tuoreemmin = init tuoree ;
in {s = table {
AN f => tuore.s ! f ;
AAdv => if_then_Str isPos tuoreesti tuoreemmin
+1 -1
View File
@@ -148,7 +148,7 @@ oper
let
tuoree = tuore.s ! 1 ;
tuoreesti = tuoree + "sti" ;
tuoreemmin = init tuoree + "in" ;
tuoreemmin = init tuoree ;
in {s = table {
SAN f => tuore.s ! f ;
SAAdv => if_then_Str isPos tuoreesti tuoreemmin
-38
View File
@@ -108,32 +108,6 @@ lin
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 = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
@@ -214,18 +188,6 @@ lin
MkTag i = ss i.t ;
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 ->
(S.mkUtt cl).s
++ ";" ++ (S.mkUtt (S.mkS S.anteriorAnt cl)).s --# notpresent
-1
View File
@@ -83,7 +83,6 @@ concrete CatGer of Cat =
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
ACard = {s : Str ; n : Number} ;
Ord = {s : AForm => Str} ;
-- Numeral
-4
View File
@@ -46,10 +46,6 @@ lin
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_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 ;
bottle_of_CN np = N.ApposCN (mkCN (P.mkN "Flasche")) np ;
-35
View File
@@ -134,29 +134,6 @@ lin
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 = {
t = "v" ;
s1 = heading1 (heading verb_Category) ++
@@ -237,18 +214,6 @@ lin
MkTag i = ss i.t ;
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 ->
(S.mkUtt cl).s
++ ";" ++ (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