1
0
forked from GitHub/gf-core

initial Slavic grammar, shared between Bulgarian and Russian

This commit is contained in:
krasimir
2008-11-26 21:21:23 +00:00
parent b6c9aedd87
commit c9c07f8e68
22 changed files with 342 additions and 207 deletions

View File

@@ -1,9 +1,7 @@
concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in { concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R = ParamX) in {
flags coding=cp1251 ;
flags optimize=all_subs ;
flags
coding=cp1251; optimize=all_subs;
lincat lincat
@@ -44,7 +42,7 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ; QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ;
IP = {s : Role => QForm => Str; gn : GenNum} ; IP = {s : Role => QForm => Str; gn : GenNum} ;
IComp = {s : QForm => Str} ; IComp = {s : QForm => Str} ;
IDet = {s : DGender => QForm => Str; n : Number ; nonEmpty : Bool} ; IDet = {s : Gender => Animacy => QForm => Str; n : Number ; nonEmpty : Bool} ;
IQuant = {s : GenNum => QForm => Str} ; IQuant = {s : GenNum => QForm => Str} ;
-- Relative -- Relative
@@ -73,10 +71,9 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
-- Noun -- Noun
CN = {s : NForm => Str; g : DGender} ;
NP = {s : Role => Str; a : Agr} ; NP = {s : Role => Str; a : Agr} ;
Pron = {s : Role => Str; gen : AForm => Str; a : Agr} ; Pron = {s : Role => Str; gen : AForm => Str; a : Agr} ;
Det = {s : Bool => DGender => Role => Str; n : Number; countable : Bool; spec : Species} ; Det = {s : Bool => Gender => Animacy => Role => Str; n : Number; countable : Bool; spec : Species} ;
Predet = {s : GenNum => Str} ; Predet = {s : GenNum => Str} ;
Ord = {s : AForm => Str} ; Ord = {s : AForm => Str} ;
Num = {s : DGenderSpecies => Str; n : Number; nonEmpty : Bool} ; Num = {s : DGenderSpecies => Str; n : Number; nonEmpty : Bool} ;
@@ -106,9 +103,6 @@ concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
A = {s : AForm => Str; adv : Str} ; A = {s : AForm => Str; adv : Str} ;
A2 = {s : AForm => Str; adv : Str; c2 : Str} ; A2 = {s : AForm => Str; adv : Str; c2 : Str} ;
N = {s : NForm => Str; g : DGender} ;
N2 = {s : NForm => Str; g : DGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; g : DGender} ** {c2,c3 : Preposition} ;
PN = {s : Str; g : Gender} ; PN = {s : Str; g : Gender} ;

View File

@@ -16,7 +16,7 @@ concrete ConjunctionBul of Conjunction =
ConjNP conj ss = { ConjNP conj ss = {
s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role; s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role;
a = {gn = conjGenNum (gennum DMasc conj.n) ss.a.gn; p = ss.a.p} a = {gn = conjGenNum (gennum Masc conj.n) ss.a.gn; p = ss.a.p}
} ; } ;
ConjAP conj ss = { ConjAP conj ss = {

View File

@@ -0,0 +1,15 @@
instance DiffBul of DiffSlavic = open CommonSlavic, Prelude in {
param
Case = Acc | Dat ;
Species = Indef | Def ;
NForm =
NF Number Species
| NFSgDefNom
| NFPlCount
| NFVocative
;
}

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../common:src/prelude --# -path=.:../abstract:../common:../slavic
concrete LangBul of Lang = concrete LangBul of Lang =
GrammarBul, GrammarBul,

View File

@@ -21,10 +21,10 @@ resource MorphoBul = ResBul ** open
oper oper
--2 Determiners --2 Determiners
mkDeterminerSg : Str -> Str -> Str -> {s : Bool => DGender => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako -> mkDeterminerSg : Str -> Str -> Str -> {s : Bool => Gender => Animacy => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako ->
{s = \\_,g,_ => table DGender [vseki;vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ; {s = \\_,g,_,_ => table Gender [vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ;
mkDeterminerPl : Str -> {s : Bool => DGender => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki -> mkDeterminerPl : Str -> {s : Bool => Gender => Animacy => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki ->
{s = \\_,_,_ => vsicki; sp = \\_,_ => vsicki; n = Pl; countable = False; spec = Indef} ; {s = \\_,_,_,_ => vsicki; sp = \\_,_ => vsicki; n = Pl; countable = False; spec = Indef} ;
mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species} = \tozi,tazi,towa,tezi -> mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species} = \tozi,tazi,towa,tezi ->
{ s = \\_ => table { { s = \\_ => table {
@@ -105,7 +105,7 @@ oper
--2 Nouns --2 Nouns
mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> { mkNoun : Str -> Str -> Str -> Str -> Gender -> Animacy -> N = \sg,pl,count,voc,g,anim -> {
s = table { s = table {
NF Sg Indef => sg ; NF Sg Indef => sg ;
NF Sg Def => case sg of { NF Sg Def => case sg of {
@@ -154,6 +154,7 @@ oper
NFVocative => voc NFVocative => voc
} ; } ;
g = g ; g = g ;
anim = anim ;
lock_N = <> lock_N = <>
} ; } ;

View File

@@ -142,7 +142,7 @@ oper
-- --
prepN2 : N -> Prep -> N2 ; prepN2 : N -> Prep -> N2 ;
prepN2 n p = {s = n.s; g = n.g; c2 = p; lock_N2 = <>} ; prepN2 n p = {s = n.s; g = n.g; anim=n.anim ; c2 = p; lock_N2 = <>} ;
dirN2 : N -> N2 ; dirN2 : N -> N2 ;
dirN2 n = prepN2 n noPrep ; dirN2 n = prepN2 n noPrep ;
@@ -152,7 +152,7 @@ oper
-- --
prepN3 : N -> Prep -> Prep -> N3 ; prepN3 : N -> Prep -> Prep -> N3 ;
prepN3 n p q = {s = n.s; g = n.g; c2 = p; c3 = q; lock_N3 = <>} ; prepN3 n p q = {s = n.s; g = n.g; anim=n.anim ; c2 = p; c3 = q; lock_N3 = <>} ;
dirN3 : N -> Prep -> N3 ; dirN3 : N -> Prep -> N3 ;
dirN3 n p = prepN3 n noPrep p ; dirN3 n p = prepN3 n noPrep p ;
@@ -160,6 +160,13 @@ oper
dirdirN3 : N -> N3 ; dirdirN3 : N -> N3 ;
dirdirN3 n = dirN3 n noPrep ; dirdirN3 n = dirN3 n noPrep ;
compoundN = overload {
compoundN : Str -> N -> N
= \s,n -> {s = \\nform => s ++ n.s ! nform ; g=n.g ; anim=n.anim ; lock_N = <>} ;
compoundN : N -> Str -> N
= \n,s -> {s = \\nform => s ++ n.s ! nform ; g=n.g ; anim=n.anim ; lock_N = <>} ;
} ;
--2 Prepositions --2 Prepositions
-- --

View File

@@ -22,7 +22,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} }
} }
} ; } ;
s = det.s ! True ! cn.g ! role ++ cn.s ! nf s = det.s ! True ! cn.g ! cn.anim ! role ++ cn.s ! nf
in case role of { in case role of {
RObj Dat => "íà" ++ s; RObj Dat => "íà" ++ s;
_ => s _ => s
@@ -31,12 +31,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ; } ;
DetNP det = DetNP det =
{ s = \\role => let s = det.s ! False ! DNeut ! role { s = \\role => let s = det.s ! False ! Neut ! Inanimate ! role
in case role of { in case role of {
RObj Dat => "íà" ++ s; RObj Dat => "íà" ++ s;
_ => s _ => s
} ; } ;
a = {gn = gennum DNeut det.n; p = P3} ; a = {gn = gennum Neut det.n; p = P3} ;
} ; } ;
UsePN pn = { s = table { UsePN pn = { s = table {
@@ -63,19 +63,19 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
} ; } ;
DetQuant quant num = { DetQuant quant num = {
s = \\sp,g,c => let sp' = case num.nonEmpty of { True => True ; s = \\sp,g,anim,c => let sp' = case num.nonEmpty of { True => True ;
False => sp } False => sp }
in quant.s ! sp' ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++ in quant.s ! sp' ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++
num.s ! dgenderSpecies g quant.spec c ; num.s ! dgenderSpecies g anim quant.spec c ;
n = num.n ; n = num.n ;
countable = num.nonEmpty ; countable = num.nonEmpty ;
spec = case num.nonEmpty of {True=>Indef; _=>quant.spec} spec = case num.nonEmpty of {True=>Indef; _=>quant.spec}
} ; } ;
DetQuantOrd = \quant, num, ord -> { DetQuantOrd = \quant, num, ord -> {
s = \\_,g,c => quant.s ! True ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++ s = \\_,g,anim,c => quant.s ! True ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++
num.s ! dgenderSpecies g quant.spec c ++ num.s ! dgenderSpecies g anim quant.spec c ++
ord.s ! aform (gennum g num.n) (case num.nonEmpty of {True=>Indef; _=>quant.spec}) c ; ord.s ! aform (gennum g num.n) (case num.nonEmpty of {True=>Indef; _=>quant.spec}) c ;
n = num.n ; n = num.n ;
countable = num.nonEmpty ; countable = num.nonEmpty ;
spec=Indef spec=Indef
@@ -144,11 +144,21 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
UseN noun = noun ; UseN noun = noun ;
UseN2 noun = noun ; UseN2 noun = noun ;
ComplN2 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; g=f.g} ; ComplN2 f x = {
ComplN3 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; c2 = f.c3; g=f.g} ; s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c ;
g=f.g ;
anim = f.anim
} ;
Use2N3 f = {s = f.s ; g=f.g ; c2 = f.c2} ; ComplN3 f x = {
Use3N3 f = {s = f.s ; g=f.g ; c2 = f.c3} ; s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c ;
c2 = f.c3 ;
g=f.g ;
anim = f.anim
} ;
Use2N3 f = {s = f.s ; g=f.g ; anim=f.anim ; c2 = f.c2} ;
Use3N3 f = {s = f.s ; g=f.g ; anim=f.anim ; c2 = f.c3} ;
AdjCN ap cn = { AdjCN ap cn = {
@@ -156,20 +166,27 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
True => (ap.s ! nform2aform nf cn.g) ++ (cn.s ! (indefNForm nf)) ; True => (ap.s ! nform2aform nf cn.g) ++ (cn.s ! (indefNForm nf)) ;
False => (cn.s ! nf) ++ (ap.s ! nform2aform (indefNForm nf) cn.g) False => (cn.s ! nf) ++ (ap.s ! nform2aform (indefNForm nf) cn.g)
} ; } ;
g = cn.g g = cn.g ;
anim = cn.anim
} ; } ;
RelCN cn rs = { RelCN cn rs = {
s = \\nf => cn.s ! nf ++ rs.s ! {gn=gennum cn.g (numNForm nf); p=P3} ; s = \\nf => cn.s ! nf ++ rs.s ! {gn=gennum cn.g (numNForm nf); p=P3} ;
g = cn.g g = cn.g ;
anim = cn.anim
} ; } ;
AdvCN cn ad = { AdvCN cn ad = {
s = \\nf => cn.s ! nf ++ ad.s ; s = \\nf => cn.s ! nf ++ ad.s ;
g = cn.g g = cn.g ;
anim = cn.anim
} ; } ;
SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=DNeut} ; SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=Neut; anim=Inanimate} ;
ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ; ApposCN cn np = {
s = \\nf => cn.s ! nf ++ np.s ! RSubj;
g=cn.g ;
anim = cn.anim
} ;
RelNP np rs = { RelNP np rs = {
s = \\r => np.s ! r ++ rs.s ! np.a ; s = \\r => np.s ! r ++ rs.s ! np.a ;

View File

@@ -13,7 +13,8 @@ oper
(v0+"îâĺ") (v0+"îâĺ")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN002 : Str -> N ; mkN002 : Str -> N ;
mkN002 base = let v0 = tk 2 base; mkN002 base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -21,7 +22,8 @@ oper
(v0+"ĺ"+v1+"îâĺ") (v0+"ĺ"+v1+"îâĺ")
(v0+"˙"+v1+"ŕ") (v0+"˙"+v1+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN002a : Str -> N ; mkN002a : Str -> N ;
mkN002a base = let v0 = tk 2 base; mkN002a base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -29,7 +31,8 @@ oper
(v0+"ĺ"+v1+"îâĺ") (v0+"ĺ"+v1+"îâĺ")
(v0+"˙"+v1+"ŕ") (v0+"˙"+v1+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN003 : Str -> N ; mkN003 : Str -> N ;
mkN003 base = let v0 = tk 3 base; mkN003 base = let v0 = tk 3 base;
v1 = last (base) v1 = last (base)
@@ -37,49 +40,56 @@ oper
(v0+"úđ"+v1+"îâĺ") (v0+"úđ"+v1+"îâĺ")
(v0+"úđ"+v1+"ŕ") (v0+"úđ"+v1+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN004 : Str -> N ; mkN004 : Str -> N ;
mkN004 base = let v0 = tk 4 base mkN004 base = let v0 = tk 4 base
in mkNoun (v0+"˙ňúđ") in mkNoun (v0+"˙ňúđ")
(v0+"ĺňđîâĺ") (v0+"ĺňđîâĺ")
(v0+"˙ňúđŕ") (v0+"˙ňúđŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN005 : Str -> N ; mkN005 : Str -> N ;
mkN005 base = let v0 = base mkN005 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"îâĺ") (v0+"îâĺ")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN006 : Str -> N ; mkN006 : Str -> N ;
mkN006 base = let v0 = base mkN006 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"îâĺ") (v0+"îâĺ")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN007 : Str -> N ; mkN007 : Str -> N ;
mkN007 base = let v0 = base mkN007 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN007b : Str -> N ; mkN007b : Str -> N ;
mkN007b base = let v0 = base mkN007b base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"ŕ") (v0+"ŕ")
(v0+"î") (v0+"î")
DMasc ; Masc
Inanimate ;
mkN007a : Str -> N ; mkN007a : Str -> N ;
mkN007a base = let v0 = base mkN007a base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"ŕ") (v0+"ŕ")
(v0+"ĺ") (v0+"ĺ")
DMascPersonal ; Masc
Animate ;
mkN008 : Str -> N ; mkN008 : Str -> N ;
mkN008 base = let v0 = tk 2 base; mkN008 base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -87,14 +97,16 @@ oper
(v0+v1+"č") (v0+v1+"č")
(v0+"ĺ"+v1+"ŕ") (v0+"ĺ"+v1+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN008a : Str -> N ; mkN008a : Str -> N ;
mkN008a base = let v0 = tk 2 base mkN008a base = let v0 = tk 2 base
in mkNoun (v0+"ĺö") in mkNoun (v0+"ĺö")
(v0+"öč") (v0+"öč")
(v0+"-") (v0+"-")
(v0+"ĺöî") (v0+"ĺöî")
DMasc ; Masc
Inanimate ;
mkN009 : Str -> N ; mkN009 : Str -> N ;
mkN009 base = let v0 = tk 2 base; mkN009 base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -102,84 +114,96 @@ oper
(v0+v1+"č") (v0+v1+"č")
(v0+"ú"+v1+"ŕ") (v0+"ú"+v1+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN009a : Str -> N ; mkN009a : Str -> N ;
mkN009a base = let v0 = tk 2 base mkN009a base = let v0 = tk 2 base
in mkNoun (v0+"úđ") in mkNoun (v0+"úđ")
(v0+"đîâĺ") (v0+"đîâĺ")
(v0+"úđŕ") (v0+"úđŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN010 : Str -> N ; mkN010 : Str -> N ;
mkN010 base = let v0 = tk 2 base mkN010 base = let v0 = tk 2 base
in mkNoun (v0+"úđ") in mkNoun (v0+"úđ")
(v0+"đč") (v0+"đč")
(v0+"đŕ") (v0+"đŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN011 : Str -> N ; mkN011 : Str -> N ;
mkN011 base = let v0 = tk 2 base mkN011 base = let v0 = tk 2 base
in mkNoun (v0+"úě") in mkNoun (v0+"úě")
(v0+"ěč") (v0+"ěč")
(v0+"úěŕ") (v0+"úěŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN012 : Str -> N ; mkN012 : Str -> N ;
mkN012 base = let v0 = tk 3 base mkN012 base = let v0 = tk 3 base
in mkNoun (v0+"đúę") in mkNoun (v0+"đúę")
(v0+"úđöč") (v0+"úđöč")
(v0+"-") (v0+"-")
(v0+"úđęî") (v0+"úđęî")
DMasc ; Masc
Inanimate ;
mkN013 : Str -> N ; mkN013 : Str -> N ;
mkN013 base = let v0 = tk 2 base mkN013 base = let v0 = tk 2 base
in mkNoun (v0+"ĺö") in mkNoun (v0+"ĺö")
(v0+"éöč") (v0+"éöč")
(v0+"-") (v0+"-")
(v0+"ĺöî") (v0+"ĺöî")
DMasc ; Masc
Inanimate ;
mkN014 : Str -> N ; mkN014 : Str -> N ;
mkN014 base = let v0 = tk 1 base mkN014 base = let v0 = tk 1 base
in mkNoun (v0+"ę") in mkNoun (v0+"ę")
(v0+"öč") (v0+"öč")
(v0+"ęŕ") (v0+"ęŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN014a : Str -> N ; mkN014a : Str -> N ;
mkN014a base = let v0 = tk 1 base mkN014a base = let v0 = tk 1 base
in mkNoun (v0+"ę") in mkNoun (v0+"ę")
(v0+"öč") (v0+"öč")
(v0+"ęŕ") (v0+"ęŕ")
(v0+"ęî") (v0+"ęî")
DMasc ; Masc
Inanimate ;
mkN015 : Str -> N ; mkN015 : Str -> N ;
mkN015 base = let v0 = tk 1 base mkN015 base = let v0 = tk 1 base
in mkNoun (v0+"ă") in mkNoun (v0+"ă")
(v0+"çč") (v0+"çč")
(v0+"ăŕ") (v0+"ăŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN016 : Str -> N ; mkN016 : Str -> N ;
mkN016 base = let v0 = tk 1 base mkN016 base = let v0 = tk 1 base
in mkNoun (v0+"ő") in mkNoun (v0+"ő")
(v0+"ńč") (v0+"ńč")
(v0+"őŕ") (v0+"őŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN017 : Str -> N ; mkN017 : Str -> N ;
mkN017 base = let v0 = tk 1 base mkN017 base = let v0 = tk 1 base
in mkNoun (v0+"ę") in mkNoun (v0+"ę")
(v0+"íč") (v0+"íč")
(v0+"ęŕ") (v0+"ęŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN018 : Str -> N ; mkN018 : Str -> N ;
mkN018 base = let v0 = tk 2 base mkN018 base = let v0 = tk 2 base
in mkNoun (v0+"čí") in mkNoun (v0+"čí")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
(v0+"číî") (v0+"číî")
DMasc ; Masc
Inanimate ;
mkN018a : Str -> N ; mkN018a : Str -> N ;
mkN018a base = let v0 = tk 2 base; mkN018a base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -187,21 +211,24 @@ oper
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN019 : Str -> N ; mkN019 : Str -> N ;
mkN019 base = let v0 = tk 2 base mkN019 base = let v0 = tk 2 base
in mkNoun (v0+"úę") in mkNoun (v0+"úę")
(v0+"öč") (v0+"öč")
(v0+"-") (v0+"-")
(v0+"ęî") (v0+"ęî")
DMasc ; Masc
Inanimate ;
mkN019a : Str -> N ; mkN019a : Str -> N ;
mkN019a base = let v0 = tk 2 base mkN019a base = let v0 = tk 2 base
in mkNoun (v0+"ĺę") in mkNoun (v0+"ĺę")
(v0+"éöč") (v0+"éöč")
(v0+"ĺęŕ") (v0+"ĺęŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN020 : Str -> N ; mkN020 : Str -> N ;
mkN020 base = let v0 = tk 3 base; mkN020 base = let v0 = tk 3 base;
v1 = last (tk 2 base) v1 = last (tk 2 base)
@@ -209,217 +236,248 @@ oper
(v0+"ú"+v1+"öč") (v0+"ú"+v1+"öč")
(v0+"-") (v0+"-")
(v0+v1+"ĺöî") (v0+v1+"ĺöî")
DMasc ; Masc
Inanimate ;
mkN021 : Str -> N ; mkN021 : Str -> N ;
mkN021 base = let v0 = tk 3 base mkN021 base = let v0 = tk 3 base
in mkNoun (v0+"÷čí") in mkNoun (v0+"÷čí")
(v0+"öč") (v0+"öč")
(v0+"-") (v0+"-")
(v0+"÷číî") (v0+"÷číî")
DMasc ; Masc
Inanimate ;
mkN022 : Str -> N ; mkN022 : Str -> N ;
mkN022 base = let v0 = base mkN022 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN023 : Str -> N ; mkN023 : Str -> N ;
mkN023 base = let v0 = tk 2 base mkN023 base = let v0 = tk 2 base
in mkNoun (v0+"čí") in mkNoun (v0+"čí")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
(v0+"číĺ") (v0+"číĺ")
DMasc ; Masc
Inanimate ;
mkN024a : Str -> N ; mkN024a : Str -> N ;
mkN024a base = let v0 = tk 1 base mkN024a base = let v0 = tk 1 base
in mkNoun (v0+"ç") in mkNoun (v0+"ç")
(v0+"çĺ") (v0+"çĺ")
(v0+"-") (v0+"-")
(v0+"ćĺ") (v0+"ćĺ")
DMasc ; Masc
Inanimate ;
mkN024 : Str -> N ; mkN024 : Str -> N ;
mkN024 base = let v0 = base mkN024 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ĺ") (v0+"ĺ")
(v0+"ĺ") (v0+"ĺ")
(v0+"î") (v0+"î")
DMascPersonal ; Masc
Animate ;
mkN025 : Str -> N ; mkN025 : Str -> N ;
mkN025 base = let v0 = base mkN025 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
(v0+"ĺ") (v0+"ĺ")
DMascPersonal ; Masc
Animate ;
mkN026 : Str -> N ; mkN026 : Str -> N ;
mkN026 base = let v0 = base mkN026 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"čëčůŕ") (v0+"čëčůŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN027 : Str -> N ; mkN027 : Str -> N ;
mkN027 base = let v0 = tk 2 base mkN027 base = let v0 = tk 2 base
in mkNoun (v0+"ĺö") in mkNoun (v0+"ĺö")
(v0+"îâöĺ") (v0+"îâöĺ")
(v0+"ĺöŕ") (v0+"ĺöŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN028 : Str -> N ; mkN028 : Str -> N ;
mkN028 base = let v0 = tk 1 base mkN028 base = let v0 = tk 1 base
in mkNoun (v0+"é") in mkNoun (v0+"é")
(v0+"ĺâĺ") (v0+"ĺâĺ")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN028a : Str -> N ; mkN028a : Str -> N ;
mkN028a base = let v0 = tk 1 base mkN028a base = let v0 = tk 1 base
in mkNoun (v0+"é") in mkNoun (v0+"é")
(v0+"éîâĺ") (v0+"éîâĺ")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN029 : Str -> N ; mkN029 : Str -> N ;
mkN029 base = let v0 = base mkN029 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"üîâĺ") (v0+"üîâĺ")
(v0+"-") (v0+"-")
(v0+"ęî") (v0+"ęî")
DMasc ; Masc
Inanimate ;
mkN030 : Str -> N ; mkN030 : Str -> N ;
mkN030 base = let v0 = tk 2 base mkN030 base = let v0 = tk 2 base
in mkNoun (v0+"úí") in mkNoun (v0+"úí")
(v0+"íüîâĺ") (v0+"íüîâĺ")
(v0+"úí˙") (v0+"úí˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN031 : Str -> N ; mkN031 : Str -> N ;
mkN031 base = let v0 = base mkN031 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN031a : Str -> N ; mkN031a : Str -> N ;
mkN031a base = let v0 = base mkN031a base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"˙") (v0+"˙")
(v0+"ţ") (v0+"ţ")
DMascPersonal ; Masc
Animate ;
mkN032 : Str -> N ; mkN032 : Str -> N ;
mkN032 base = let v0 = tk 1 base mkN032 base = let v0 = tk 1 base
in mkNoun (v0+"é") in mkNoun (v0+"é")
(v0+"č") (v0+"č")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN032a : Str -> N ; mkN032a : Str -> N ;
mkN032a base = let v0 = tk 1 base mkN032a base = let v0 = tk 1 base
in mkNoun (v0+"é") in mkNoun (v0+"é")
(v0+"č") (v0+"č")
(v0+"˙") (v0+"˙")
(v0+"ţ") (v0+"ţ")
DMascPersonal ; Masc
Animate ;
mkN033 : Str -> N ; mkN033 : Str -> N ;
mkN033 base = let v0 = tk 2 base mkN033 base = let v0 = tk 2 base
in mkNoun (v0+"ĺí") in mkNoun (v0+"ĺí")
(v0+"íč") (v0+"íč")
(v0+"ĺíŕ") (v0+"ĺíŕ")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN034 : Str -> N ; mkN034 : Str -> N ;
mkN034 base = let v0 = tk 2 base mkN034 base = let v0 = tk 2 base
in mkNoun (v0+"úň") in mkNoun (v0+"úň")
(v0+"ňč") (v0+"ňč")
(v0+"úň˙") (v0+"úň˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN035 : Str -> N ; mkN035 : Str -> N ;
mkN035 base = let v0 = base mkN035 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ĺ") (v0+"ĺ")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN035a : Str -> N ; mkN035a : Str -> N ;
mkN035a base = let v0 = base mkN035a base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ĺ") (v0+"ĺ")
(v0+"˙") (v0+"˙")
(v0+"ţ") (v0+"ţ")
DMascPersonal ; Masc
Animate ;
mkN036 : Str -> N ; mkN036 : Str -> N ;
mkN036 base = let v0 = tk 1 base mkN036 base = let v0 = tk 1 base
in mkNoun (v0+"é") in mkNoun (v0+"é")
(v0+"čůŕ") (v0+"čůŕ")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN037 : Str -> N ; mkN037 : Str -> N ;
mkN037 base = let v0 = base mkN037 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"čůŕ") (v0+"čůŕ")
(v0+"˙") (v0+"˙")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN038 : Str -> N ; mkN038 : Str -> N ;
mkN038 base = let v0 = tk 1 base mkN038 base = let v0 = tk 1 base
in mkNoun (v0+"ŕ") in mkNoun (v0+"ŕ")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
(v0+"ŕ") (v0+"ŕ")
DMascPersonal ; Masc
Animate ;
mkN039 : Str -> N ; mkN039 : Str -> N ;
mkN039 base = let v0 = tk 1 base mkN039 base = let v0 = tk 1 base
in mkNoun (v0+"˙") in mkNoun (v0+"˙")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN040 : Str -> N ; mkN040 : Str -> N ;
mkN040 base = let v0 = tk 1 base mkN040 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"îâöč") (v0+"îâöč")
(v0+"-") (v0+"-")
(v0+"î") (v0+"î")
DMasc ; Masc
Inanimate ;
mkN040a : Str -> N ; mkN040a : Str -> N ;
mkN040a base = let v0 = base mkN040a base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"-") (v0+"-")
(v0+"-") (v0+"-")
(v0+"-") (v0+"-")
DMasc ; Masc
Inanimate ;
mkN041 : Str -> N ; mkN041 : Str -> N ;
mkN041 base = let v0 = tk 1 base mkN041 base = let v0 = tk 1 base
in mkNoun (v0+"ŕ") in mkNoun (v0+"ŕ")
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN041a : Str -> N ; mkN041a : Str -> N ;
mkN041a base = let v0 = tk 1 base mkN041a base = let v0 = tk 1 base
in mkNoun (v0+"ŕ") in mkNoun (v0+"ŕ")
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"î") (v0+"î")
DFem ; Fem
Inanimate ;
mkN041b : Str -> N ; mkN041b : Str -> N ;
mkN041b base = let v0 = tk 1 base mkN041b base = let v0 = tk 1 base
in mkNoun (v0+"ŕ") in mkNoun (v0+"ŕ")
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"ĺ") (v0+"ĺ")
DFem ; Fem
Inanimate ;
mkN042 : Str -> N ; mkN042 : Str -> N ;
mkN042 base = let v0 = base mkN042 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0) (v0)
(v0) (v0)
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN043 : Str -> N ; mkN043 : Str -> N ;
mkN043 base = let v0 = tk 3 base; mkN043 base = let v0 = tk 3 base;
v1 = last (tk 1 base) v1 = last (tk 1 base)
@@ -427,7 +485,8 @@ oper
(v0+"ĺ"+v1+"č") (v0+"ĺ"+v1+"č")
(v0+"ĺ"+v1+"č") (v0+"ĺ"+v1+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN043a : Str -> N ; mkN043a : Str -> N ;
mkN043a base = let v0 = tk 4 base; mkN043a base = let v0 = tk 4 base;
v1 = last (tk 2 base) v1 = last (tk 2 base)
@@ -435,56 +494,64 @@ oper
(v0+"ĺ"+v1+"ęč") (v0+"ĺ"+v1+"ęč")
(v0+"ĺ"+v1+"ęč") (v0+"ĺ"+v1+"ęč")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN044 : Str -> N ; mkN044 : Str -> N ;
mkN044 base = let v0 = tk 1 base mkN044 base = let v0 = tk 1 base
in mkNoun (v0+"ŕ") in mkNoun (v0+"ŕ")
(v0+"ĺ") (v0+"ĺ")
(v0+"ĺ") (v0+"ĺ")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN045 : Str -> N ; mkN045 : Str -> N ;
mkN045 base = let v0 = tk 2 base mkN045 base = let v0 = tk 2 base
in mkNoun (v0+"ęŕ") in mkNoun (v0+"ęŕ")
(v0+"öĺ") (v0+"öĺ")
(v0+"öĺ") (v0+"öĺ")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN046 : Str -> N ; mkN046 : Str -> N ;
mkN046 base = let v0 = tk 2 base mkN046 base = let v0 = tk 2 base
in mkNoun (v0+"ăŕ") in mkNoun (v0+"ăŕ")
(v0+"çĺ") (v0+"çĺ")
(v0+"çĺ") (v0+"çĺ")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN047 : Str -> N ; mkN047 : Str -> N ;
mkN047 base = let v0 = tk 1 base mkN047 base = let v0 = tk 1 base
in mkNoun (v0+"˙") in mkNoun (v0+"˙")
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN048 : Str -> N ; mkN048 : Str -> N ;
mkN048 base = let v0 = tk 1 base mkN048 base = let v0 = tk 1 base
in mkNoun (v0+"˙") in mkNoun (v0+"˙")
(v0+"ĺ") (v0+"ĺ")
(v0+"ĺ") (v0+"ĺ")
(v0+"üî") (v0+"üî")
DFem ; Fem
Inanimate ;
mkN049 : Str -> N ; mkN049 : Str -> N ;
mkN049 base = let v0 = base mkN049 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN050 : Str -> N ; mkN050 : Str -> N ;
mkN050 base = let v0 = tk 2 base mkN050 base = let v0 = tk 2 base
in mkNoun (v0+"ĺí") in mkNoun (v0+"ĺí")
(v0+"íč") (v0+"íč")
(v0+"íč") (v0+"íč")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN051 : Str -> N ; mkN051 : Str -> N ;
mkN051 base = let v0 = tk 2 base; mkN051 base = let v0 = tk 2 base;
v1 = last (base) v1 = last (base)
@@ -492,21 +559,24 @@ oper
(v0+v1+"č") (v0+v1+"č")
(v0+v1+"č") (v0+v1+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN052 : Str -> N ; mkN052 : Str -> N ;
mkN052 base = let v0 = tk 5 base mkN052 base = let v0 = tk 5 base
in mkNoun (v0+"˙ëîńň") in mkNoun (v0+"˙ëîńň")
(v0+"˙ëîńňč") (v0+"˙ëîńňč")
(v0+"˙ëîńňč") (v0+"˙ëîńňč")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN052a : Str -> N ; mkN052a : Str -> N ;
mkN052a base = let v0 = tk 6 base mkN052a base = let v0 = tk 6 base
in mkNoun (v0+"˙đíîńň") in mkNoun (v0+"˙đíîńň")
(v0+"˙đíîńňč") (v0+"˙đíîńňč")
(v0+"˙đíîńňč") (v0+"˙đíîńňč")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN053 : Str -> N ; mkN053 : Str -> N ;
mkN053 base = let v0 = tk 3 base; mkN053 base = let v0 = tk 3 base;
v1 = last (base) v1 = last (base)
@@ -514,28 +584,32 @@ oper
(v0+"úđ"+v1+"č") (v0+"úđ"+v1+"č")
(v0+"úđ"+v1+"č") (v0+"úđ"+v1+"č")
(v0+"-") (v0+"-")
DFem ; Fem
Inanimate ;
mkN054 : Str -> N ; mkN054 : Str -> N ;
mkN054 base = let v0 = tk 1 base mkN054 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN055 : Str -> N ; mkN055 : Str -> N ;
mkN055 base = let v0 = tk 1 base mkN055 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN056 : Str -> N ; mkN056 : Str -> N ;
mkN056 base = let v0 = tk 1 base mkN056 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN057 : Str -> N ; mkN057 : Str -> N ;
mkN057 base = let v0 = tk 3 base; mkN057 base = let v0 = tk 3 base;
v1 = last (tk 1 base) v1 = last (tk 1 base)
@@ -543,140 +617,160 @@ oper
(v0+"ĺ"+v1+"ŕ") (v0+"ĺ"+v1+"ŕ")
(v0+"ĺ"+v1+"ŕ") (v0+"ĺ"+v1+"ŕ")
(v0+"˙"+v1+"î") (v0+"˙"+v1+"î")
DNeut ; Neut
Inanimate ;
mkN057a : Str -> N ; mkN057a : Str -> N ;
mkN057a base = let v0 = tk 4 base mkN057a base = let v0 = tk 4 base
in mkNoun (v0+"˙ńňî") in mkNoun (v0+"˙ńňî")
(v0+"ĺńňŕ") (v0+"ĺńňŕ")
(v0+"ĺńňŕ") (v0+"ĺńňŕ")
(v0+"˙ńňî") (v0+"˙ńňî")
DNeut ; Neut
Inanimate ;
mkN058 : Str -> N ; mkN058 : Str -> N ;
mkN058 base = let v0 = tk 3 base mkN058 base = let v0 = tk 3 base
in mkNoun (v0+"˙íî") in mkNoun (v0+"˙íî")
(v0+"ĺíŕ") (v0+"ĺíŕ")
(v0+"ĺíŕ") (v0+"ĺíŕ")
(v0+"˙íî") (v0+"˙íî")
DNeut ; Neut
Inanimate ;
mkN059 : Str -> N ; mkN059 : Str -> N ;
mkN059 base = let v0 = tk 1 base mkN059 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ĺíĺ") (v0+"ĺíĺ")
(v0+"ĺíĺ") (v0+"ĺíĺ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN060 : Str -> N ; mkN060 : Str -> N ;
mkN060 base = let v0 = tk 1 base mkN060 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ĺńŕ") (v0+"ĺńŕ")
(v0+"ĺńŕ") (v0+"ĺńŕ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN061 : Str -> N ; mkN061 : Str -> N ;
mkN061 base = let v0 = tk 1 base mkN061 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN062 : Str -> N ; mkN062 : Str -> N ;
mkN062 base = let v0 = tk 1 base mkN062 base = let v0 = tk 1 base
in mkNoun (v0+"î") in mkNoun (v0+"î")
(v0+"č") (v0+"č")
(v0+"č") (v0+"č")
(v0+"î") (v0+"î")
DNeut ; Neut
Inanimate ;
mkN063 : Str -> N ; mkN063 : Str -> N ;
mkN063 base = let v0 = tk 2 base mkN063 base = let v0 = tk 2 base
in mkNoun (v0+"ęî") in mkNoun (v0+"ęî")
(v0+"÷č") (v0+"÷č")
(v0+"÷č") (v0+"÷č")
(v0+"ęî") (v0+"ęî")
DNeut ; Neut
Inanimate ;
mkN064 : Str -> N ; mkN064 : Str -> N ;
mkN064 base = let v0 = tk 2 base mkN064 base = let v0 = tk 2 base
in mkNoun (v0+"őî") in mkNoun (v0+"őî")
(v0+"řč") (v0+"řč")
(v0+"řč") (v0+"řč")
(v0+"őî") (v0+"őî")
DNeut ; Neut
Inanimate ;
mkN065 : Str -> N ; mkN065 : Str -> N ;
mkN065 base = let v0 = base mkN065 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ňŕ") (v0+"ňŕ")
(v0+"ňŕ") (v0+"ňŕ")
(v0) (v0)
DNeut ; Neut
Inanimate ;
mkN066 : Str -> N ; mkN066 : Str -> N ;
mkN066 base = let v0 = tk 1 base mkN066 base = let v0 = tk 1 base
in mkNoun (v0+"ĺ") in mkNoun (v0+"ĺ")
(v0+"ŕ") (v0+"ŕ")
(v0+"ŕ") (v0+"ŕ")
(v0+"ĺ") (v0+"ĺ")
DNeut ; Neut
Inanimate ;
mkN067 : Str -> N ; mkN067 : Str -> N ;
mkN067 base = let v0 = tk 2 base mkN067 base = let v0 = tk 2 base
in mkNoun (v0+"ňĺ") in mkNoun (v0+"ňĺ")
(v0+"öŕ") (v0+"öŕ")
(v0+"öŕ") (v0+"öŕ")
(v0+"ňĺ") (v0+"ňĺ")
DNeut ; Neut
Inanimate ;
mkN068 : Str -> N ; mkN068 : Str -> N ;
mkN068 base = let v0 = tk 1 base mkN068 base = let v0 = tk 1 base
in mkNoun (v0+"ĺ") in mkNoun (v0+"ĺ")
(v0+"˙") (v0+"˙")
(v0+"˙") (v0+"˙")
(v0+"ĺ") (v0+"ĺ")
DNeut ; Neut
Inanimate ;
mkN069 : Str -> N ; mkN069 : Str -> N ;
mkN069 base = let v0 = base mkN069 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"íŕ") (v0+"íŕ")
(v0+"íŕ") (v0+"íŕ")
(v0) (v0)
DNeut ; Neut
Inanimate ;
mkN070 : Str -> N ; mkN070 : Str -> N ;
mkN070 base = let v0 = base mkN070 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ńŕ") (v0+"ńŕ")
(v0+"ńŕ") (v0+"ńŕ")
(v0) (v0)
DNeut ; Neut
Inanimate ;
mkN071 : Str -> N ; mkN071 : Str -> N ;
mkN071 base = let v0 = tk 1 base mkN071 base = let v0 = tk 1 base
in mkNoun (v0+"ĺ") in mkNoun (v0+"ĺ")
(v0+"č˙") (v0+"č˙")
(v0+"č˙") (v0+"č˙")
(v0+"ĺ") (v0+"ĺ")
DNeut ; Neut
Inanimate ;
mkN072 : Str -> N ; mkN072 : Str -> N ;
mkN072 base = let v0 = tk 1 base mkN072 base = let v0 = tk 1 base
in mkNoun (v0+"ĺ") in mkNoun (v0+"ĺ")
(v0+"˙") (v0+"˙")
(v0+"˙") (v0+"˙")
(v0+"ĺ") (v0+"ĺ")
DNeut ; Neut
Inanimate ;
mkN073 : Str -> N ; mkN073 : Str -> N ;
mkN073 base = let v0 = base mkN073 base = let v0 = base
in mkNoun (v0) in mkNoun (v0)
(v0+"ňŕ") (v0+"ňŕ")
(v0+"ňŕ") (v0+"ňŕ")
(v0) (v0)
DNeut ; Neut
Inanimate ;
mkN074 : Str -> N ; mkN074 : Str -> N ;
mkN074 base = let v0 = tk 1 base mkN074 base = let v0 = tk 1 base
in mkNoun (v0+"-") in mkNoun (v0+"-")
(v0) (v0)
(v0) (v0)
(v0+"-") (v0+"-")
DNeut ; Neut
Inanimate ;
mkN075 : Str -> N ; mkN075 : Str -> N ;
mkN075 base = let v0 = tk 1 base mkN075 base = let v0 = tk 1 base
in mkNoun (v0+"-") in mkNoun (v0+"-")
(v0) (v0)
(v0) (v0)
(v0+"-") (v0+"-")
DNeut ; Neut
Inanimate ;
mkA076 : Str -> A ; mkA076 : Str -> A ;
mkA076 base = let v0 = base mkA076 base = let v0 = base
in mkAdjective (v0) in mkAdjective (v0)

View File

@@ -41,20 +41,20 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
IdetCN idet cn = { IdetCN idet cn = {
s = \\_,qform => let nf = case <idet.n, idet.nonEmpty> of { s = \\_,qform => let nf = case <idet.n, idet.nonEmpty> of {
<Pl,True> => NFPlCount ; <Pl,True> => NFPlCount ;
_ => NF idet.n Indef _ => NF idet.n Indef
} }
in idet.s ! cn.g ! qform ++ cn.s ! nf ; in idet.s ! cn.g ! cn.anim ! qform ++ cn.s ! nf ;
gn = gennum cn.g idet.n gn = gennum cn.g idet.n
} ; } ;
IdetIP idet = { IdetIP idet = {
s = \\_ => idet.s ! DNeut ; s = \\_ => idet.s ! Neut ! Inanimate ;
gn = gennum DNeut idet.n gn = gennum Neut idet.n
} ; } ;
IdetQuant iquant num = { IdetQuant iquant num = {
s = \\g,qform => iquant.s ! gennum g num.n ! qform ++ s = \\g,anim,qform => iquant.s ! gennum g num.n ! qform ++
num.s ! dgenderSpecies g Indef RSubj ; num.s ! dgenderSpecies g anim Indef RSubj ;
n = num.n ; n = num.n ;
nonEmpty = num.nonEmpty nonEmpty = num.nonEmpty
} ; } ;

View File

@@ -7,11 +7,11 @@
-- implement $Test$, it moreover contains regular lexical -- implement $Test$, it moreover contains regular lexical
-- patterns needed for $Lex$. -- patterns needed for $Lex$.
resource ResBul = ParamX ** open Prelude in { instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in {
flags coding=cp1251 ;
flags
coding=cp1251 ; optimize=all ;
flags optimize=all ;
-- Some parameters, such as $Number$, are inherited from $ParamX$. -- Some parameters, such as $Number$, are inherited from $ParamX$.
@@ -21,14 +21,6 @@ resource ResBul = ParamX ** open Prelude in {
param param
Role = RSubj | RObj Case | RVoc ; Role = RSubj | RObj Case | RVoc ;
Case = Acc | Dat;
NForm =
NF Number Species
| NFSgDefNom
| NFPlCount
| NFVocative
;
GenNum = GSg Gender | GPl ; GenNum = GSg Gender | GPl ;
@@ -37,11 +29,7 @@ resource ResBul = ParamX ** open Prelude in {
oper oper
Agr = {gn : GenNum ; p : Person} ; Agr = {gn : GenNum ; p : Person} ;
param param
Gender = Masc | Fem | Neut ;
Species = Indef | Def ;
-- The plural never makes a gender distinction. -- The plural never makes a gender distinction.
--2 For $Verb$ --2 For $Verb$
@@ -79,13 +67,6 @@ resource ResBul = ParamX ** open Prelude in {
; ;
--2 For $Numeral$ --2 For $Numeral$
DGender =
DMasc
| DMascPersonal
| DFem
| DNeut
;
DGenderSpecies = DGenderSpecies =
DMascIndef DMascIndef
@@ -120,14 +101,9 @@ resource ResBul = ParamX ** open Prelude in {
p = conjPerson a.p b.p p = conjPerson a.p b.p
} ; } ;
gennum : DGender -> Number -> GenNum = \g,n -> gennum : Gender -> Number -> GenNum = \g,n ->
case n of { case n of {
Sg => GSg (case g of { Sg => GSg g ;
DMasc => Masc ;
DMascPersonal => Masc ;
DFem => Fem ;
DNeut => Neut
}) ;
Pl => GPl Pl => GPl
} ; } ;
@@ -146,25 +122,30 @@ resource ResBul = ParamX ** open Prelude in {
GPl => APl spec GPl => APl spec
} ; } ;
dgenderSpecies : DGender -> Species -> Role -> DGenderSpecies = dgenderSpecies : Gender -> Animacy -> Species -> Role -> DGenderSpecies =
\g,spec,role -> case <g,spec> of { \g,anim,spec,role ->
<DMasc,Indef> => DMascIndef ; case <g,spec> of {
<DMasc,Def> => case role of { <Masc,Indef> => case anim of {
RSubj => DMascDefNom ; Inanimate => DMascIndef ;
_ => DMascDef Animate => DMascPersonalIndef
} ; } ;
<DMascPersonal,Indef> => DMascPersonalIndef ; <Masc,Def> => case anim of {
<DMascPersonal,Def> => case role of { Inanimate => case role of {
RSubj => DMascPersonalDefNom ; RSubj => DMascDefNom ;
_ => DMascPersonalDef _ => DMascDef
} ; } ;
<DFem ,Indef> => DFemIndef ; Animate => case role of {
<DFem ,Def> => DFemDef ; RSubj => DMascPersonalDefNom ;
<DNeut,Indef> => DNeutIndef ; _ => DMascPersonalDef
<DNeut,Def> => DNeutDef }
} ;
<Fem ,Indef> => DFemIndef ;
<Fem ,Def> => DFemDef ;
<Neut,Indef> => DNeutIndef ;
<Neut,Def> => DNeutDef
} ; } ;
nform2aform : NForm -> DGender -> AForm nform2aform : NForm -> Gender -> AForm
= \nf,g -> case nf of { = \nf,g -> case nf of {
NF n spec => aform (gennum g n) spec (RObj Acc) ; NF n spec => aform (gennum g n) spec (RObj Acc) ;
NFSgDefNom => aform (gennum g Sg) Def RSubj ; NFSgDefNom => aform (gennum g Sg) Def RSubj ;

View File

@@ -68,5 +68,5 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
AdvS a s = {s = a.s ++ "," ++ s.s} ; AdvS a s = {s = a.s ++ "," ++ s.s} ;
RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum DNeut Sg; p=P3}} ; RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum Neut Sg; p=P3}} ;
} }

View File

@@ -28,7 +28,7 @@ concrete StructuralBul of Structural = CatBul **
every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî"; every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî";
everything_NP = mkNP "âñè÷êî" (GSg Neut) P3 ; everything_NP = mkNP "âñè÷êî" (GSg Neut) P3 ;
everywhere_Adv = ss "íàâñÿêúäå" ; everywhere_Adv = ss "íàâñÿêúäå" ;
few_Det = {s = \\_,_,_ => "íÿêîëêî"; n = Pl; countable = True; spec = Indef} ; few_Det = {s = \\_,_,_,_ => "íÿêîëêî"; n = Pl; countable = True; spec = Indef} ;
--- first_Ord = ss "first" ; DEPRECATED --- first_Ord = ss "first" ; DEPRECATED
for_Prep = mkPrep "çà" Acc ; for_Prep = mkPrep "çà" Acc ;
from_Prep = mkPrep "îò" Acc ; from_Prep = mkPrep "îò" Acc ;
@@ -37,7 +37,7 @@ concrete StructuralBul of Structural = CatBul **
here7to_Adv = ss ["äî òóê"] ; here7to_Adv = ss ["äî òóê"] ;
here7from_Adv = ss ["îò òóê"] ; here7from_Adv = ss ["îò òóê"] ;
how_IAdv = mkIAdv "êàê" ; how_IAdv = mkIAdv "êàê" ;
how8many_IDet = {s = \\_ => table QForm ["êîëêî";"êîëêîòî"]; n = Pl; nonEmpty = False} ; how8many_IDet = {s = \\_,_ => table QForm ["êîëêî";"êîëêîòî"]; n = Pl; nonEmpty = False} ;
if_Subj = ss "àêî" ; if_Subj = ss "àêî" ;
in8front_Prep = mkPrep "ïðåä" Acc ; in8front_Prep = mkPrep "ïðåä" Acc ;
i_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) P1 ; i_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) P1 ;

View File

@@ -1,6 +1,6 @@
--# -path=.:../abstract:../common:../../prelude --# -path=.:../abstract:../common:../../prelude
concrete CatRus of Cat = CommonX ** open ResRus, Prelude in { concrete CatRus of Cat = CommonX ** CatSlavic with (ResSlavic = ResRus) ** open ResRus, Prelude, (R = ParamX) in {
flags optimize=all_subs ; coding=utf8 ; flags optimize=all_subs ; coding=utf8 ;
@@ -44,7 +44,6 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
-- Noun -- Noun
CN = {s : NForm => Str; g : Gender; anim : Animacy} ;
NP = { s : PronForm => Str ; n : Number ; p : Person ; NP = { s : PronForm => Str ; n : Number ; p : Person ;
g: PronGen ; anim : Animacy ; pron: Bool} ; g: PronGen ; anim : Animacy ; pron: Bool} ;
Pron = { s : PronForm => Str ; n : Number ; p : Person ; Pron = { s : PronForm => Str ; n : Number ; p : Person ;
@@ -89,9 +88,6 @@ concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
A2 = A ** Complement ; A2 = A ** Complement ;
-- Substantives moreover have an inherent gender. -- Substantives moreover have an inherent gender.
N = {s : NForm => Str; g : Gender; anim : Animacy} ;
N2 = {s : NForm => Str; g : Gender; anim : Animacy} ** Complement ;
N3 = {s : NForm => Str; g : Gender; anim : Animacy} ** Complement ** {s3 : Str; c2: Case} ;
PN = {s : Case => Str ; g : Gender ; anim : Animacy} ; PN = {s : Case => Str ; g : Gender ; anim : Animacy} ;

View File

@@ -0,0 +1,9 @@
instance DiffRus of DiffSlavic = open CommonSlavic, Prelude in {
param
PrepKind = PrepOther | PrepVNa;
Case = Nom | Gen | Dat | Acc | Inst | Prepos PrepKind ;
NForm = NF Number Case ;
}

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../common:prelude --# -path=.:../abstract:../common:../slavic:prelude
concrete LangRus of Lang = concrete LangRus of Lang =
GrammarRus, GrammarRus,

View File

@@ -166,8 +166,8 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
ComplN2 f x = { ComplN2 f x = {
s = \\nf => case x.pron of { s = \\nf => case x.pron of {
True => x.s ! (case nf of {NF n c => mkPronForm c No (Poss (gNum f.g n))}) ++ f.s ! nf ; True => x.s ! (case nf of {NF n c => mkPronForm c No (Poss (gNum f.g n))}) ++ f.s ! nf ;
False => f.s ! nf ++ f.s2 ++ False => f.s ! nf ++ f.c2.s ++
x.s ! (case nf of {NF n c => mkPronForm f.c Yes (Poss (gNum f.g n))}) x.s ! (case nf of {NF n c => mkPronForm f.c2.c Yes (Poss (gNum f.g n))})
}; };
g = f.g ; g = f.g ;
anim = f.anim anim = f.anim
@@ -177,11 +177,10 @@ concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
-- There application starts by filling the first place. -- There application starts by filling the first place.
ComplN3 f x = { ComplN3 f x = {
s = \\nf => f.s ! nf ++ f.s2 ++ x.s ! (PF f.c Yes NonPoss) ; s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! (PF f.c2.c Yes NonPoss) ;
g = f.g ; g = f.g ;
anim = f.anim ; anim = f.anim ;
s2 = f.s3 ; c2 = f.c3 ;
c = f.c2
} ; } ;

View File

@@ -352,11 +352,11 @@ foreign = Foreign; -- +++ MG_UR: added +++
mkN2 : N -> Prep -> N2 = mkFun; mkN2 : N -> Prep -> N2 = mkFun;
} ; } ;
mkFun : N -> Prep -> N2 = \f,p -> (UseN f) ** {s2 = p.s ; c = p.c}** {lock_N2 = <>} ; mkFun : N -> Prep -> N2 = \f,p -> UseN f ** {c2 = p ; lock_N2 = <>} ;
nullPrep : Prep = {s = []; c= Gen; lock_Prep=<>} ; nullPrep : Prep = {s = []; c= Gen; lock_Prep=<>} ;
mkN3 f p r = (UseN f) ** {s2 = p.s ; c=p.c; s3=r.s ; c2=r.c; lock_N3 = <>} ; mkN3 f p2 p3 = (UseN f) ** {c2 = p2; c3 = p3; lock_N3 = <>} ;
mkPN = \ivan, g, anim -> mkPN = \ivan, g, anim ->

View File

@@ -7,7 +7,7 @@
-- implement $Test$, it moreover contains regular lexical -- implement $Test$, it moreover contains regular lexical
-- patterns needed for $Lex$. -- patterns needed for $Lex$.
resource ResRus = ParamX ** open Prelude in { instance ResRus of ResSlavic = ParamX, DiffRus, CommonSlavic ** open Prelude in {
flags coding=utf8 ; optimize=all ; flags coding=utf8 ; optimize=all ;
@@ -18,10 +18,6 @@ flags coding=utf8 ; optimize=all ;
-- Some parameters, such as $Number$, are inherited from $ParamX$. -- Some parameters, such as $Number$, are inherited from $ParamX$.
param param
Gender = Masc | Fem | Neut ;
Case = Nom | Gen | Dat | Acc | Inst | Prepos PrepKind ;
PrepKind = PrepOther | PrepVNa;
Animacy = Animate | Inanimate ;
Voice = Act | Pass ; Voice = Act | Pass ;
Aspect = Imperfective | Perfective ; Aspect = Imperfective | Perfective ;
RusTense = Present | PastRus | Future ; RusTense = Present | PastRus | Future ;

View File

@@ -0,0 +1,9 @@
incomplete concrete CatSlavic of Cat = open Prelude, CommonSlavic, ResSlavic in {
lincat
CN = {s : NForm => Str; g : Gender; anim : Animacy} ;
N = {s : NForm => Str; g : Gender; anim : Animacy} ;
N2 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2,c3 : Preposition} ;
}

View File

@@ -0,0 +1,6 @@
resource CommonSlavic = ParamX ** open Prelude in {
param
Gender = Masc | Fem | Neut ;
Animacy = Animate | Inanimate ;
}

View File

@@ -0,0 +1,5 @@
interface DiffSlavic = open Prelude in {
param NForm ;
}

View File

@@ -0,0 +1,6 @@
interface ResSlavic = DiffSlavic ** open CommonSlavic, Prelude in {
oper
Preposition : Type = {s : Str; c : Case};
}