diff options
| author | krasimir <krasimir@chalmers.se> | 2009-01-08 08:28:43 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2009-01-08 08:28:43 +0000 |
| commit | c1d8e8af55ecad48ff5e5bc4adf1739bd9411dc6 (patch) | |
| tree | e5d018f2a5ddba2bee8964ea2d240ad8fc71d0ba /next-lib/src/bulgarian | |
| parent | f7dfc6f1d7298ca5fd5aa63dddcdcb196ead251f (diff) | |
revert all changes related to the common Slavic grammar
Diffstat (limited to 'next-lib/src/bulgarian')
| -rw-r--r-- | next-lib/src/bulgarian/AllBul.gf | 2 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/CatBul.gf | 12 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/ConjunctionBul.gf | 2 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/LangBul.gf | 2 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/MorphoBul.gf | 11 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/MorphoFunsBul.gf | 4 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/NounBul.gf | 55 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/ParadigmsBul.gf | 282 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/QuestionBul.gf | 10 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/ResBul.gf | 89 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/SentenceBul.gf | 2 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/StructuralBul.gf | 4 | ||||
| -rw-r--r-- | next-lib/src/bulgarian/SymbolBul.gf | 6 |
13 files changed, 207 insertions, 274 deletions
diff --git a/next-lib/src/bulgarian/AllBul.gf b/next-lib/src/bulgarian/AllBul.gf index 8efb34903..80ad02165 100644 --- a/next-lib/src/bulgarian/AllBul.gf +++ b/next-lib/src/bulgarian/AllBul.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:../slavic +--# -path=.:../abstract:../common:prelude concrete AllBul of AllBulAbs = LangBul, diff --git a/next-lib/src/bulgarian/CatBul.gf b/next-lib/src/bulgarian/CatBul.gf index 78989e9d3..1e679ed2a 100644 --- a/next-lib/src/bulgarian/CatBul.gf +++ b/next-lib/src/bulgarian/CatBul.gf @@ -1,4 +1,4 @@ -concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R = ParamX) in {
+concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
flags
coding=cp1251; optimize=all_subs;
@@ -42,7 +42,7 @@ concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ;
IP = {s : Role => QForm => Str; gn : GenNum} ;
IComp = {s : QForm => Str} ;
- IDet = {s : Gender => Animacy => QForm => Str; n : Number ; nonEmpty : Bool} ;
+ IDet = {s : DGender => QForm => Str; n : Number ; nonEmpty : Bool} ;
IQuant = {s : GenNum => QForm => Str} ;
-- Relative
@@ -71,9 +71,10 @@ concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R -- Noun
+ CN = {s : NForm => Str; g : DGender} ;
NP = {s : Role => Str; a : Agr} ;
Pron = {s : Role => Str; gen : AForm => Str; a : Agr} ;
- Det = {s : Bool => Gender => Animacy => Role => Str; n : Number; countable : Bool; spec : Species} ;
+ Det = {s : Bool => DGender => Role => Str; n : Number; countable : Bool; spec : Species} ;
Predet = {s : GenNum => Str} ;
Ord = {s : AForm => Str} ;
Num = {s : DGenderSpecies => Str; n : Number; nonEmpty : Bool} ;
@@ -89,6 +90,8 @@ concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R -- Structural
Conj = {s : Str; distr : Bool; conj : Bool; n : Number} ;
+ Subj = {s : Str} ;
+ Prep = {s : Str; c : Case} ;
-- Open lexical classes, e.g. Lexicon
@@ -101,6 +104,9 @@ concrete CatBul of Cat = CatSlavic with (ResSlavic = ResBul) ** open Prelude, (R A = {s : AForm => Str; adv : 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} ;
diff --git a/next-lib/src/bulgarian/ConjunctionBul.gf b/next-lib/src/bulgarian/ConjunctionBul.gf index 8a1523a02..23664cd1f 100644 --- a/next-lib/src/bulgarian/ConjunctionBul.gf +++ b/next-lib/src/bulgarian/ConjunctionBul.gf @@ -16,7 +16,7 @@ concrete ConjunctionBul of Conjunction = ConjNP conj ss = { s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role; - a = {gn = conjGenNum (gennum Masc conj.n) ss.a.gn; p = ss.a.p} + a = {gn = conjGenNum (gennum DMasc conj.n) ss.a.gn; p = ss.a.p} } ; ConjAP conj ss = { diff --git a/next-lib/src/bulgarian/LangBul.gf b/next-lib/src/bulgarian/LangBul.gf index f0a0bd4f0..d92b2533a 100644 --- a/next-lib/src/bulgarian/LangBul.gf +++ b/next-lib/src/bulgarian/LangBul.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:../slavic +--# -path=.:../abstract:../common:src/prelude concrete LangBul of Lang = GrammarBul, diff --git a/next-lib/src/bulgarian/MorphoBul.gf b/next-lib/src/bulgarian/MorphoBul.gf index d19e93f9d..6ba3c52ec 100644 --- a/next-lib/src/bulgarian/MorphoBul.gf +++ b/next-lib/src/bulgarian/MorphoBul.gf @@ -21,10 +21,10 @@ resource MorphoBul = ResBul ** open oper
--2 Determiners
- mkDeterminerSg : Str -> Str -> Str -> {s : Bool => Gender => Animacy => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako ->
- {s = \\_,g,_,_ => table Gender [vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ;
- 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} ;
+ mkDeterminerSg : Str -> Str -> Str -> {s : Bool => DGender => 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} ;
+ mkDeterminerPl : Str -> {s : Bool => DGender => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki ->
+ {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 ->
{ s = \\_ => table {
@@ -105,7 +105,7 @@ oper --2 Nouns
- mkNoun : Str -> Str -> Str -> Str -> Gender -> Animacy -> N = \sg,pl,count,voc,g,anim -> {
+ mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> {
s = table {
NF Sg Indef => sg ;
NF Sg Def => case sg of {
@@ -158,7 +158,6 @@ oper NFVocative => voc
} ;
g = g ;
- anim = anim ;
lock_N = <>
} ;
diff --git a/next-lib/src/bulgarian/MorphoFunsBul.gf b/next-lib/src/bulgarian/MorphoFunsBul.gf index 04962bdac..a553e932a 100644 --- a/next-lib/src/bulgarian/MorphoFunsBul.gf +++ b/next-lib/src/bulgarian/MorphoFunsBul.gf @@ -142,7 +142,7 @@ oper --
prepN2 : N -> Prep -> N2 ;
- prepN2 n p = {s = n.s; g = n.g; anim=n.anim ; c2 = p; lock_N2 = <>} ;
+ prepN2 n p = {s = n.s; g = n.g; c2 = p; lock_N2 = <>} ;
dirN2 : N -> N2 ;
dirN2 n = prepN2 n noPrep ;
@@ -152,7 +152,7 @@ oper --
prepN3 : N -> Prep -> Prep -> N3 ;
- prepN3 n p q = {s = n.s; g = n.g; anim=n.anim ; c2 = p; c3 = q; lock_N3 = <>} ;
+ prepN3 n p q = {s = n.s; g = n.g; c2 = p; c3 = q; lock_N3 = <>} ;
dirN3 : N -> Prep -> N3 ;
dirN3 n p = prepN3 n noPrep p ;
diff --git a/next-lib/src/bulgarian/NounBul.gf b/next-lib/src/bulgarian/NounBul.gf index 89aa34e69..e9206e443 100644 --- a/next-lib/src/bulgarian/NounBul.gf +++ b/next-lib/src/bulgarian/NounBul.gf @@ -22,7 +22,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { }
}
} ;
- s = det.s ! True ! cn.g ! cn.anim ! role ++ cn.s ! nf
+ s = det.s ! True ! cn.g ! role ++ cn.s ! nf
in case role of {
RObj Dat => "на" ++ s;
_ => s
@@ -31,12 +31,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ;
DetNP det =
- { s = \\role => let s = det.s ! False ! Neut ! Inanimate ! role
+ { s = \\role => let s = det.s ! False ! DNeut ! role
in case role of {
RObj Dat => "на" ++ s;
_ => s
} ;
- a = {gn = gennum Neut det.n; p = P3} ;
+ a = {gn = gennum DNeut det.n; p = P3} ;
} ;
UsePN pn = { s = table {
@@ -63,19 +63,19 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ;
DetQuant quant num = {
- s = \\sp,g,anim,c => let sp' = case num.nonEmpty of { True => True ;
- False => sp }
- in quant.s ! sp' ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++
- num.s ! dgenderSpecies g anim quant.spec c ;
+ s = \\sp,g,c => let sp' = case num.nonEmpty of { True => True ;
+ False => sp }
+ in quant.s ! sp' ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++
+ num.s ! dgenderSpecies g quant.spec c ;
n = num.n ;
countable = num.nonEmpty ;
spec = case num.nonEmpty of {True=>Indef; _=>quant.spec}
} ;
DetQuantOrd = \quant, num, ord -> {
- s = \\_,g,anim,c => quant.s ! True ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) 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 ;
+ s = \\_,g,c => quant.s ! True ! aform (gennum g num.n) (case c of {RVoc=>Indef; _=>Def}) c ++
+ num.s ! dgenderSpecies g quant.spec c ++
+ ord.s ! aform (gennum g num.n) (case num.nonEmpty of {True=>Indef; _=>quant.spec}) c ;
n = num.n ;
countable = num.nonEmpty ;
spec=Indef
@@ -144,21 +144,11 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { UseN 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 ;
- anim = f.anim
- } ;
-
- ComplN3 f x = {
- s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c ;
- c2 = f.c3 ;
- g=f.g ;
- anim = f.anim
- } ;
+ ComplN2 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; g=f.g} ;
+ ComplN3 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; c2 = f.c3; g=f.g} ;
- 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} ;
+ Use2N3 f = {s = f.s ; g=f.g ; c2 = f.c2} ;
+ Use3N3 f = {s = f.s ; g=f.g ; c2 = f.c3} ;
AdjCN ap cn = {
@@ -166,27 +156,20 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { True => (ap.s ! nform2aform nf cn.g) ++ (cn.s ! (indefNForm nf)) ;
False => (cn.s ! nf) ++ (ap.s ! nform2aform (indefNForm nf) cn.g)
} ;
- g = cn.g ;
- anim = cn.anim
+ g = cn.g
} ;
RelCN cn rs = {
s = \\nf => cn.s ! nf ++ rs.s ! {gn=gennum cn.g (numNForm nf); p=P3} ;
- g = cn.g ;
- anim = cn.anim
+ g = cn.g
} ;
AdvCN cn ad = {
s = \\nf => cn.s ! nf ++ ad.s ;
- g = cn.g ;
- anim = cn.anim
+ g = cn.g
} ;
- SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=Neut; anim=Inanimate} ;
+ SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=DNeut} ;
- ApposCN cn np = {
- s = \\nf => cn.s ! nf ++ np.s ! RSubj;
- g=cn.g ;
- anim = cn.anim
- } ;
+ ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ;
RelNP np rs = {
s = \\r => np.s ! r ++ rs.s ! np.a ;
diff --git a/next-lib/src/bulgarian/ParadigmsBul.gf b/next-lib/src/bulgarian/ParadigmsBul.gf index d7b777ce6..d633d3a1f 100644 --- a/next-lib/src/bulgarian/ParadigmsBul.gf +++ b/next-lib/src/bulgarian/ParadigmsBul.gf @@ -13,8 +13,7 @@ oper (v0+"ове")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN002 : Str -> N ;
mkN002 base = let v0 = tk 2 base;
v1 = last (base)
@@ -22,8 +21,7 @@ oper (v0+"е"+v1+"ове")
(v0+"я"+v1+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN002a : Str -> N ;
mkN002a base = let v0 = tk 2 base;
v1 = last (base)
@@ -31,8 +29,7 @@ oper (v0+"е"+v1+"ове")
(v0+"я"+v1+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN003 : Str -> N ;
mkN003 base = let v0 = tk 3 base;
v1 = last (base)
@@ -40,56 +37,49 @@ oper (v0+"ър"+v1+"ове")
(v0+"ър"+v1+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN004 : Str -> N ;
mkN004 base = let v0 = tk 4 base
in mkNoun (v0+"ятър")
(v0+"етрове")
(v0+"ятъра")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN005 : Str -> N ;
mkN005 base = let v0 = base
in mkNoun (v0)
(v0+"ове")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN006 : Str -> N ;
mkN006 base = let v0 = base
in mkNoun (v0)
(v0+"ове")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN007 : Str -> N ;
mkN007 base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN007b : Str -> N ;
mkN007b base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"а")
(v0+"о")
- Masc
- Inanimate ;
+ DMasc ;
mkN007a : Str -> N ;
mkN007a base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"а")
(v0+"е")
- Masc
- Animate ;
+ DMascPersonal ;
mkN008 : Str -> N ;
mkN008 base = let v0 = tk 2 base;
v1 = last (base)
@@ -97,16 +87,14 @@ oper (v0+v1+"и")
(v0+"е"+v1+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN008a : Str -> N ;
mkN008a base = let v0 = tk 2 base
in mkNoun (v0+"ец")
(v0+"ци")
(v0+"-")
(v0+"ецо")
- Masc
- Inanimate ;
+ DMasc ;
mkN009 : Str -> N ;
mkN009 base = let v0 = tk 2 base;
v1 = last (base)
@@ -114,96 +102,84 @@ oper (v0+v1+"и")
(v0+"ъ"+v1+"а")
(v0+v1+"е")
- Masc
- Inanimate ;
+ DMasc ;
mkN009a : Str -> N ;
mkN009a base = let v0 = tk 2 base
in mkNoun (v0+"ър")
(v0+"рове")
(v0+"ъра")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN010 : Str -> N ;
mkN010 base = let v0 = tk 2 base
in mkNoun (v0+"ър")
(v0+"ри")
(v0+"ра")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN011 : Str -> N ;
mkN011 base = let v0 = tk 2 base
in mkNoun (v0+"ъм")
(v0+"ми")
(v0+"ъма")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN012 : Str -> N ;
mkN012 base = let v0 = tk 3 base
in mkNoun (v0+"рък")
(v0+"ърци")
(v0+"-")
(v0+"ърко")
- Masc
- Inanimate ;
+ DMasc ;
mkN013 : Str -> N ;
mkN013 base = let v0 = tk 2 base
in mkNoun (v0+"ец")
(v0+"йци")
(v0+"-")
(v0+"ецо")
- Masc
- Inanimate ;
+ DMasc ;
mkN014 : Str -> N ;
mkN014 base = let v0 = tk 1 base
in mkNoun (v0+"к")
(v0+"ци")
(v0+"ка")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN014a : Str -> N ;
mkN014a base = let v0 = tk 1 base
in mkNoun (v0+"к")
(v0+"ци")
(v0+"ка")
(v0+"ко")
- Masc
- Inanimate ;
+ DMasc ;
mkN015 : Str -> N ;
mkN015 base = let v0 = tk 1 base
in mkNoun (v0+"г")
(v0+"зи")
(v0+"га")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN016 : Str -> N ;
mkN016 base = let v0 = tk 1 base
in mkNoun (v0+"х")
(v0+"си")
(v0+"ха")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN017 : Str -> N ;
mkN017 base = let v0 = tk 1 base
in mkNoun (v0+"к")
(v0+"ни")
(v0+"ка")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN018 : Str -> N ;
mkN018 base = let v0 = tk 2 base
in mkNoun (v0+"ин")
(v0+"и")
(v0+"-")
(v0+"ино")
- Masc
- Inanimate ;
+ DMasc ;
mkN018a : Str -> N ;
mkN018a base = let v0 = tk 2 base;
v1 = last (base)
@@ -211,24 +187,21 @@ oper (v0+"и")
(v0+"-")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN019 : Str -> N ;
mkN019 base = let v0 = tk 2 base
in mkNoun (v0+"ък")
(v0+"ци")
(v0+"-")
(v0+"ко")
- Masc
- Inanimate ;
+ DMasc ;
mkN019a : Str -> N ;
mkN019a base = let v0 = tk 2 base
in mkNoun (v0+"ек")
(v0+"йци")
(v0+"ека")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN020 : Str -> N ;
mkN020 base = let v0 = tk 3 base;
v1 = last (tk 2 base)
@@ -236,248 +209,217 @@ oper (v0+"ъ"+v1+"ци")
(v0+"-")
(v0+v1+"ецо")
- Masc
- Inanimate ;
+ DMasc ;
mkN021 : Str -> N ;
mkN021 base = let v0 = tk 3 base
in mkNoun (v0+"чин")
(v0+"ци")
(v0+"-")
(v0+"чино")
- Masc
- Inanimate ;
+ DMasc ;
mkN022 : Str -> N ;
mkN022 base = let v0 = base
in mkNoun (v0)
(v0+"а")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN023 : Str -> N ;
mkN023 base = let v0 = tk 2 base
in mkNoun (v0+"ин")
(v0+"а")
(v0+"-")
(v0+"ине")
- Masc
- Inanimate ;
+ DMasc ;
mkN024a : Str -> N ;
mkN024a base = let v0 = tk 1 base
in mkNoun (v0+"з")
(v0+"зе")
(v0+"-")
(v0+"же")
- Masc
- Inanimate ;
+ DMasc ;
mkN024 : Str -> N ;
mkN024 base = let v0 = base
in mkNoun (v0)
(v0+"е")
(v0+"е")
(v0+"о")
- Masc
- Animate ;
+ DMascPersonal ;
mkN025 : Str -> N ;
mkN025 base = let v0 = base
in mkNoun (v0)
(v0+"я")
(v0+"-")
(v0+"е")
- Masc
- Animate ;
+ DMascPersonal ;
mkN026 : Str -> N ;
mkN026 base = let v0 = base
in mkNoun (v0)
(v0+"илища")
(v0+"а")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN027 : Str -> N ;
mkN027 base = let v0 = tk 2 base
in mkNoun (v0+"ец")
(v0+"овце")
(v0+"еца")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN028 : Str -> N ;
mkN028 base = let v0 = tk 1 base
in mkNoun (v0+"й")
(v0+"еве")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN028a : Str -> N ;
mkN028a base = let v0 = tk 1 base
in mkNoun (v0+"й")
(v0+"йове")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN029 : Str -> N ;
mkN029 base = let v0 = base
in mkNoun (v0)
(v0+"ьове")
(v0+"-")
(v0+"ко")
- Masc
- Inanimate ;
+ DMasc ;
mkN030 : Str -> N ;
mkN030 base = let v0 = tk 2 base
in mkNoun (v0+"ън")
(v0+"ньове")
(v0+"ъня")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN031 : Str -> N ;
mkN031 base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN031a : Str -> N ;
mkN031a base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"я")
(v0+"ю")
- Masc
- Animate ;
+ DMascPersonal ;
mkN032 : Str -> N ;
mkN032 base = let v0 = tk 1 base
in mkNoun (v0+"й")
(v0+"и")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN032a : Str -> N ;
mkN032a base = let v0 = tk 1 base
in mkNoun (v0+"й")
(v0+"и")
(v0+"я")
(v0+"ю")
- Masc
- Animate ;
+ DMascPersonal ;
mkN033 : Str -> N ;
mkN033 base = let v0 = tk 2 base
in mkNoun (v0+"ен")
(v0+"ни")
(v0+"ена")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN034 : Str -> N ;
mkN034 base = let v0 = tk 2 base
in mkNoun (v0+"ът")
(v0+"ти")
(v0+"ътя")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN035 : Str -> N ;
mkN035 base = let v0 = base
in mkNoun (v0)
(v0+"е")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN035a : Str -> N ;
mkN035a base = let v0 = base
in mkNoun (v0)
(v0+"е")
(v0+"я")
(v0+"ю")
- Masc
- Animate ;
+ DMascPersonal ;
mkN036 : Str -> N ;
mkN036 base = let v0 = tk 1 base
in mkNoun (v0+"й")
(v0+"ища")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN037 : Str -> N ;
mkN037 base = let v0 = base
in mkNoun (v0)
(v0+"ища")
(v0+"я")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN038 : Str -> N ;
mkN038 base = let v0 = tk 1 base
in mkNoun (v0+"а")
(v0+"и")
(v0+"-")
(v0+"а")
- Masc
- Animate ;
+ DMascPersonal ;
mkN039 : Str -> N ;
mkN039 base = let v0 = tk 1 base
in mkNoun (v0+"я")
(v0+"и")
(v0+"-")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN040 : Str -> N ;
mkN040 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"овци")
(v0+"-")
(v0+"о")
- Masc
- Inanimate ;
+ DMasc ;
mkN040a : Str -> N ;
mkN040a base = let v0 = base
in mkNoun (v0)
(v0+"-")
(v0+"-")
(v0+"-")
- Masc
- Inanimate ;
+ DMasc ;
mkN041 : Str -> N ;
mkN041 base = let v0 = tk 1 base
in mkNoun (v0+"а")
(v0+"и")
(v0+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN041a : Str -> N ;
mkN041a base = let v0 = tk 1 base
in mkNoun (v0+"а")
(v0+"и")
(v0+"и")
(v0+"о")
- Fem
- Inanimate ;
+ DFem ;
mkN041b : Str -> N ;
mkN041b base = let v0 = tk 1 base
in mkNoun (v0+"а")
(v0+"и")
(v0+"и")
(v0+"е")
- Fem
- Inanimate ;
+ DFem ;
mkN042 : Str -> N ;
mkN042 base = let v0 = base
in mkNoun (v0)
(v0)
(v0)
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN043 : Str -> N ;
mkN043 base = let v0 = tk 3 base;
v1 = last (tk 1 base)
@@ -485,8 +427,7 @@ oper (v0+"е"+v1+"и")
(v0+"е"+v1+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN043a : Str -> N ;
mkN043a base = let v0 = tk 4 base;
v1 = last (tk 2 base)
@@ -494,64 +435,56 @@ oper (v0+"е"+v1+"ки")
(v0+"е"+v1+"ки")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN044 : Str -> N ;
mkN044 base = let v0 = tk 1 base
in mkNoun (v0+"а")
(v0+"е")
(v0+"е")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN045 : Str -> N ;
mkN045 base = let v0 = tk 2 base
in mkNoun (v0+"ка")
(v0+"це")
(v0+"це")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN046 : Str -> N ;
mkN046 base = let v0 = tk 2 base
in mkNoun (v0+"га")
(v0+"зе")
(v0+"зе")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN047 : Str -> N ;
mkN047 base = let v0 = tk 1 base
in mkNoun (v0+"я")
(v0+"и")
(v0+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN048 : Str -> N ;
mkN048 base = let v0 = tk 1 base
in mkNoun (v0+"я")
(v0+"е")
(v0+"е")
(v0+"ьо")
- Fem
- Inanimate ;
+ DFem ;
mkN049 : Str -> N ;
mkN049 base = let v0 = base
in mkNoun (v0)
(v0+"и")
(v0+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN050 : Str -> N ;
mkN050 base = let v0 = tk 2 base
in mkNoun (v0+"ен")
(v0+"ни")
(v0+"ни")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN051 : Str -> N ;
mkN051 base = let v0 = tk 2 base;
v1 = last (base)
@@ -559,24 +492,21 @@ oper (v0+v1+"и")
(v0+v1+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN052 : Str -> N ;
mkN052 base = let v0 = tk 5 base
in mkNoun (v0+"ялост")
(v0+"ялости")
(v0+"ялости")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN052a : Str -> N ;
mkN052a base = let v0 = tk 6 base
in mkNoun (v0+"ярност")
(v0+"ярности")
(v0+"ярности")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN053 : Str -> N ;
mkN053 base = let v0 = tk 3 base;
v1 = last (base)
@@ -584,32 +514,28 @@ oper (v0+"ър"+v1+"и")
(v0+"ър"+v1+"и")
(v0+"-")
- Fem
- Inanimate ;
+ DFem ;
mkN054 : Str -> N ;
mkN054 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"а")
(v0+"а")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN055 : Str -> N ;
mkN055 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"а")
(v0+"а")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN056 : Str -> N ;
mkN056 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"а")
(v0+"а")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN057 : Str -> N ;
mkN057 base = let v0 = tk 3 base;
v1 = last (tk 1 base)
@@ -617,160 +543,140 @@ oper (v0+"е"+v1+"а")
(v0+"е"+v1+"а")
(v0+"я"+v1+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN057a : Str -> N ;
mkN057a base = let v0 = tk 4 base
in mkNoun (v0+"ясто")
(v0+"еста")
(v0+"еста")
(v0+"ясто")
- Neut
- Inanimate ;
+ DNeut ;
mkN058 : Str -> N ;
mkN058 base = let v0 = tk 3 base
in mkNoun (v0+"яно")
(v0+"ена")
(v0+"ена")
(v0+"яно")
- Neut
- Inanimate ;
+ DNeut ;
mkN059 : Str -> N ;
mkN059 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"ене")
(v0+"ене")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN060 : Str -> N ;
mkN060 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"еса")
(v0+"еса")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN061 : Str -> N ;
mkN061 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"а")
(v0+"а")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN062 : Str -> N ;
mkN062 base = let v0 = tk 1 base
in mkNoun (v0+"о")
(v0+"и")
(v0+"и")
(v0+"о")
- Neut
- Inanimate ;
+ DNeut ;
mkN063 : Str -> N ;
mkN063 base = let v0 = tk 2 base
in mkNoun (v0+"ко")
(v0+"чи")
(v0+"чи")
(v0+"ко")
- Neut
- Inanimate ;
+ DNeut ;
mkN064 : Str -> N ;
mkN064 base = let v0 = tk 2 base
in mkNoun (v0+"хо")
(v0+"ши")
(v0+"ши")
(v0+"хо")
- Neut
- Inanimate ;
+ DNeut ;
mkN065 : Str -> N ;
mkN065 base = let v0 = base
in mkNoun (v0)
(v0+"та")
(v0+"та")
(v0)
- Neut
- Inanimate ;
+ DNeut ;
mkN066 : Str -> N ;
mkN066 base = let v0 = tk 1 base
in mkNoun (v0+"е")
(v0+"а")
(v0+"а")
(v0+"е")
- Neut
- Inanimate ;
+ DNeut ;
mkN067 : Str -> N ;
mkN067 base = let v0 = tk 2 base
in mkNoun (v0+"те")
(v0+"ца")
(v0+"ца")
(v0+"те")
- Neut
- Inanimate ;
+ DNeut ;
mkN068 : Str -> N ;
mkN068 base = let v0 = tk 1 base
in mkNoun (v0+"е")
(v0+"я")
(v0+"я")
(v0+"е")
- Neut
- Inanimate ;
+ DNeut ;
mkN069 : Str -> N ;
mkN069 base = let v0 = base
in mkNoun (v0)
(v0+"на")
(v0+"на")
(v0)
- Neut
- Inanimate ;
+ DNeut ;
mkN070 : Str -> N ;
mkN070 base = let v0 = base
in mkNoun (v0)
(v0+"са")
(v0+"са")
(v0)
- Neut
- Inanimate ;
+ DNeut ;
mkN071 : Str -> N ;
mkN071 base = let v0 = tk 1 base
in mkNoun (v0+"е")
(v0+"ия")
(v0+"ия")
(v0+"е")
- Neut
- Inanimate ;
+ DNeut ;
mkN072 : Str -> N ;
mkN072 base = let v0 = tk 1 base
in mkNoun (v0+"е")
(v0+"я")
(v0+"я")
(v0+"е")
- Neut
- Inanimate ;
+ DNeut ;
mkN073 : Str -> N ;
mkN073 base = let v0 = base
in mkNoun (v0)
(v0+"та")
(v0+"та")
(v0)
- Neut
- Inanimate ;
+ DNeut ;
mkN074 : Str -> N ;
mkN074 base = let v0 = tk 1 base
in mkNoun (v0+"-")
(v0)
(v0)
(v0+"-")
- Neut
- Inanimate ;
+ DNeut ;
mkN075 : Str -> N ;
mkN075 base = let v0 = tk 1 base
in mkNoun (v0+"-")
(v0)
(v0)
(v0+"-")
- Neut
- Inanimate ;
+ DNeut ;
mkA076 : Str -> A ;
mkA076 base = let v0 = base
in mkAdjective (v0)
diff --git a/next-lib/src/bulgarian/QuestionBul.gf b/next-lib/src/bulgarian/QuestionBul.gf index 33781a46b..36f78a1eb 100644 --- a/next-lib/src/bulgarian/QuestionBul.gf +++ b/next-lib/src/bulgarian/QuestionBul.gf @@ -43,18 +43,18 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in { <Pl,True> => NFPlCount ; _ => NF idet.n Indef } - in idet.s ! cn.g ! cn.anim ! qform ++ cn.s ! nf ; + in idet.s ! cn.g ! qform ++ cn.s ! nf ; gn = gennum cn.g idet.n } ; IdetIP idet = { - s = \\_ => idet.s ! Neut ! Inanimate ; - gn = gennum Neut idet.n + s = \\_ => idet.s ! DNeut ; + gn = gennum DNeut idet.n } ; IdetQuant iquant num = { - s = \\g,anim,qform => iquant.s ! gennum g num.n ! qform ++ - num.s ! dgenderSpecies g anim Indef RSubj ; + s = \\g,qform => iquant.s ! gennum g num.n ! qform ++ + num.s ! dgenderSpecies g Indef RSubj ; n = num.n ; nonEmpty = num.nonEmpty } ; diff --git a/next-lib/src/bulgarian/ResBul.gf b/next-lib/src/bulgarian/ResBul.gf index bb92432e8..09072eda0 100644 --- a/next-lib/src/bulgarian/ResBul.gf +++ b/next-lib/src/bulgarian/ResBul.gf @@ -7,7 +7,7 @@ -- implement $Test$, it moreover contains regular lexical -- patterns needed for $Lex$. -instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in { +resource ResBul = ParamX ** open Prelude in { flags coding=cp1251 ; optimize=all ; @@ -21,8 +21,27 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in param Role = RSubj | RObj Case | RVoc ; + Case = Acc | Dat; - param + NForm = + NF Number Species + | NFSgDefNom + | NFPlCount + | NFVocative + ; + + GenNum = GSg Gender | GPl ; + +-- Agreement of $NP$ is a record. We'll add $Gender$ later. + + oper + Agr = {gn : GenNum ; p : Person} ; + + param + Gender = Masc | Fem | Neut ; + + Species = Indef | Def ; + -- The plural never makes a gender distinction. --2 For $Verb$ @@ -60,6 +79,13 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in ; --2 For $Numeral$ + + DGender = + DMasc + | DMascPersonal + | DFem + | DNeut + ; DGenderSpecies = DMascIndef @@ -80,6 +106,9 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in --2 Transformations between parameter types oper + agrP3 : GenNum -> Agr = \gn -> + {gn = gn; p = P3} ; + conjGenNum : GenNum -> GenNum -> GenNum = \a,b -> case <a,b> of { <GSg _,GSg g> => GSg g ; @@ -91,6 +120,23 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in p = conjPerson a.p b.p } ; + gennum : DGender -> Number -> GenNum = \g,n -> + case n of { + Sg => GSg (case g of { + DMasc => Masc ; + DMascPersonal => Masc ; + DFem => Fem ; + DNeut => Neut + }) ; + Pl => GPl + } ; + + numGenNum : GenNum -> Number = \gn -> + case gn of { + GSg _ => Sg ; + GPl => Pl + } ; + aform : GenNum -> Species -> Role -> AForm = \gn,spec,role -> case gn of { GSg g => case <g,spec,role> of { @@ -100,30 +146,25 @@ instance ResBul of ResSlavic = ParamX, DiffBul, CommonSlavic ** open Prelude in GPl => APl spec } ; - dgenderSpecies : Gender -> Animacy -> Species -> Role -> DGenderSpecies = - \g,anim,spec,role -> - case <g,spec> of { - <Masc,Indef> => case anim of { - Inanimate => DMascIndef ; - Animate => DMascPersonalIndef - } ; - <Masc,Def> => case anim of { - Inanimate => case role of { - RSubj => DMascDefNom ; - _ => DMascDef - } ; - Animate => case role of { - RSubj => DMascPersonalDefNom ; - _ => DMascPersonalDef - } - } ; - <Fem ,Indef> => DFemIndef ; - <Fem ,Def> => DFemDef ; - <Neut,Indef> => DNeutIndef ; - <Neut,Def> => DNeutDef + dgenderSpecies : DGender -> Species -> Role -> DGenderSpecies = + \g,spec,role -> case <g,spec> of { + <DMasc,Indef> => DMascIndef ; + <DMasc,Def> => case role of { + RSubj => DMascDefNom ; + _ => DMascDef + } ; + <DMascPersonal,Indef> => DMascPersonalIndef ; + <DMascPersonal,Def> => case role of { + RSubj => DMascPersonalDefNom ; + _ => DMascPersonalDef + } ; + <DFem ,Indef> => DFemIndef ; + <DFem ,Def> => DFemDef ; + <DNeut,Indef> => DNeutIndef ; + <DNeut,Def> => DNeutDef } ; - nform2aform : NForm -> Gender -> AForm + nform2aform : NForm -> DGender -> AForm = \nf,g -> case nf of { NF n spec => aform (gennum g n) spec (RObj Acc) ; NFSgDefNom => aform (gennum g Sg) Def RSubj ; diff --git a/next-lib/src/bulgarian/SentenceBul.gf b/next-lib/src/bulgarian/SentenceBul.gf index 7c4ae219f..9966b538d 100644 --- a/next-lib/src/bulgarian/SentenceBul.gf +++ b/next-lib/src/bulgarian/SentenceBul.gf @@ -68,5 +68,5 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in { AdvS a s = {s = a.s ++ "," ++ s.s} ; - RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum Neut Sg; p=P3}} ; + RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum DNeut Sg; p=P3}} ; } diff --git a/next-lib/src/bulgarian/StructuralBul.gf b/next-lib/src/bulgarian/StructuralBul.gf index b01b4e6f4..4ff725d26 100644 --- a/next-lib/src/bulgarian/StructuralBul.gf +++ b/next-lib/src/bulgarian/StructuralBul.gf @@ -28,7 +28,7 @@ concrete StructuralBul of Structural = CatBul ** every_Det = mkDeterminerSg "всеки" "всяка" "всяко"; everything_NP = mkNP "всичко" (GSg Neut) P3 ; 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 for_Prep = mkPrep "за" Acc ; from_Prep = mkPrep "от" Acc ; @@ -37,7 +37,7 @@ concrete StructuralBul of Structural = CatBul ** here7to_Adv = ss ["до тук"] ; here7from_Adv = ss ["от тук"] ; how_IAdv = mkIAdv "как" ; - how8many_IDet = {s = \\_,_ => table QForm ["колко";"колкото"]; n = Pl; nonEmpty = False} ; + how8many_IDet = {s = \\_ => table QForm ["колко";"колкото"]; n = Pl; nonEmpty = False} ; if_Subj = ss "ако" ; in8front_Prep = mkPrep "пред" Acc ; i_Pron = mkPron "аз" "мен" "ми" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Masc) P1 ; diff --git a/next-lib/src/bulgarian/SymbolBul.gf b/next-lib/src/bulgarian/SymbolBul.gf index 609badfba..814cbbf71 100644 --- a/next-lib/src/bulgarian/SymbolBul.gf +++ b/next-lib/src/bulgarian/SymbolBul.gf @@ -1,4 +1,4 @@ ---# -path=.:../abstract:../common:../slavic +--# -path=.:abstract:common concrete SymbolBul of Symbol = CatBul ** open Prelude, ResBul in { @@ -15,9 +15,7 @@ lin a = agrP3 (gennum cn.g Sg) } ; CNSymbNP det cn xs = { - s = \\c => - det.s ! False ! cn.g ! Inanimate ! RSubj ++ ---- AR 2/12: Inanimate - cn.s ! NF det.n Indef ++ xs.s ; + s = \\c => det.s ! False ! cn.g ! RSubj ++ cn.s ! NF det.n Indef ++ xs.s ; a = agrP3 (gennum cn.g det.n) } ; CNNumNP cn i = { |
