1
0
forked from GitHub/gf-rgl

polish demo

This commit is contained in:
adam.slaski
2010-05-26 22:34:20 +00:00
parent bcdfc55ebb
commit 9fa92b7a2e
21 changed files with 773 additions and 694 deletions

View File

@@ -163,9 +163,9 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
pos = guess_model pos; pos = guess_model pos;
comp = model_comp comp; comp = model_comp comp;
super = model_comp ("naj" + comp); super = model_comp ("naj" + comp);
advpos = "["++pos ++ [": the adjective positive form does not exist]"]; advpos = "["++pos ++ [": the adverb positive form does not exist]"];
advcomp = "["++pos ++ [": the adjective comparative form does not exist]"]; advcomp = "["++pos ++ [": the adverb comparative form does not exist]"];
advsuper = "["++pos ++ [": the adjective superlative form does not exist]"] advsuper = "["++pos ++ [": the adverb superlative form does not exist]"]
}; };
}; };
@@ -184,9 +184,9 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
pos = guess_model pos; pos = guess_model pos;
comp = guess_model ("bardziej" ++ pos); comp = guess_model ("bardziej" ++ pos);
super = guess_model ("najbardziej" ++ pos); super = guess_model ("najbardziej" ++ pos);
advpos = "["++pos ++ [": the adjective positive form does not exist]"]; advpos = "["++pos ++ [": the adverb positive form does not exist]"];
advcomp = "["++pos ++ [": the adjective comparative form does not exist]"]; advcomp = "["++pos ++ [": the adverb comparative form does not exist]"];
advsuper = "["++pos ++ [": the adjective superlative form does not exist]"] advsuper = "["++pos ++ [": the adverb superlative form does not exist]"]
}; };
}; };

View File

@@ -52,7 +52,6 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX)
---- Noun ---- Noun
-- CommNoun : Type = { s : SubstForm => Str; g : Gender };
CN = { s : Number => Case => Str; g : Gender }; CN = { s : Number => Case => Str; g : Gender };
-- NounPhrase : Type = { s : PronForm => Str; n : Number; g: Gender; p : Person }; -- NounPhrase : Type = { s : PronForm => Str; n : Number; g: Gender; p : Person };
@@ -105,7 +104,7 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX)
VA = Verb ** { c:{ c:Case; s:Str; adv:Bool } }; VA = Verb ** { c:{ c:Case; s:Str; adv:Bool } };
V2A = Verb ** { c:{ c:Case; s:Str; adv:Bool }; c2:Complement }; V2A = Verb ** { c:{ c:Case; s:Str; adv:Bool }; c2:Complement };
VPSlash = VerbPhrase ** { c : Complement }; VPSlash = VerbPhraseSlash;
VP = VerbPhrase; VP = VerbPhrase;
Comp = { s: GenNum => Str }; Comp = { s: GenNum => Str };

View File

@@ -23,7 +23,8 @@ concrete ConjunctionPol of Conjunction =
voc = conj.s1 ++ list.np1.voc ++ conj.s2 ++ list.np2.voc; voc = conj.s1 ++ list.np1.voc ++ conj.s2 ++ list.np2.voc;
dep = \\c => conj.s1 ++ list.np1.dep !c ++ conj.s2 ++ list.np2.dep !c; dep = \\c => conj.s1 ++ list.np1.dep !c ++ conj.s2 ++ list.np2.dep !c;
gn = case <list.np1.gn,list.np2.gn> of { gn = case <list.np1.gn,list.np2.gn> of {
<(MascPersSg|MascPersPl), (MascPersSg|MascPersPl)> => MascPersPl; <(MascPersSg|MascPersPl), _> => MascPersPl;
<_, (MascPersSg|MascPersPl)> => MascPersPl;
<_,_> => OthersPl <_,_> => OthersPl
}; };
p = case <list.np1.p,list.np2.p> of { p = case <list.np1.p,list.np2.p> of {

View File

@@ -13,8 +13,8 @@ concrete GrammarPol of Grammar =
RelativePol, RelativePol,
ConjunctionPol, ConjunctionPol,
PhrasePol, PhrasePol,
TenseX - [CAdv],
TextX - [CAdv], TextX - [CAdv],
StructuralPol, StructuralPol,
IdiomPol, IdiomPol
TenseX - [CAdv]
** { flags startcat = Phr ; unlexer = text ; lexer = text ;} ; ** { flags startcat = Phr ; unlexer = text ; lexer = text ;} ;

View File

@@ -11,24 +11,24 @@ concrete IdiomPol of Idiom = CatPol ** open Prelude, ResPol, VerbMorphoPol in {
-- ImpersCl : VP -> Cl ; -- it is hot -- ImpersCl : VP -> Cl ; -- it is hot
ImpersCl vp = { ImpersCl vp = {
s = \\pol,anter,tense => s = \\pol,anter,tense =>
vp.prefix !pol !NeutSg ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, NeutSg, P3>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, NeutSg, P3>) ++
vp.sufix !pol !NeutSg ++ vp.postfix !pol !NeutSg; vp.sufix !pol !NeutSg
}; };
-- ImpPl1 : VP -> Utt ; -- let's go -- ImpPl1 : VP -> Utt ; -- let's go
ImpPl1 vp = { ImpPl1 vp = {
s = vp.prefix !Pos !MascPersPl ++ s = vp.prefix ++
(imperative_form vp.verb vp.imienne Pos MascPersPl P1) ++ (imperative_form vp.verb vp.imienne Pos MascPersPl P1) ++
vp.sufix !Pos !MascPersPl ++ vp.postfix !Pos !MascPersPl; vp.sufix !Pos !MascPersPl
}; };
-- GenericCl : VP -> Cl ; -- one sleeps -- GenericCl : VP -> Cl ; -- one sleeps
GenericCl vp = { GenericCl vp = {
s = \\pol,anter,tense => s = \\pol,anter,tense =>
"ktoś" ++ vp.prefix !pol !MascPersSg ++ "ktoś" ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, MascPersSg, P3>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, MascPersSg, P3>) ++
vp.sufix !pol !MascPersSg ++ vp.postfix !pol !MascPersSg; vp.sufix !pol !MascPersSg
}; };
-- CleftNP : NP -> RS -> Cl ; -- it is I who did it -- CleftNP : NP -> RS -> Cl ; -- it is I who did it
@@ -39,14 +39,22 @@ concrete IdiomPol of Idiom = CatPol ** open Prelude, ResPol, VerbMorphoPol in {
-- ExistNP : NP -> Cl ; -- there is a house -- ExistNP : NP -> Cl ; -- there is a house
ExistNP np = {s=\\pol,anter,tense => case pol of { ExistNP np = {s=\\pol,anter,tense => case pol of {
Pos=> case np.gn of {MascPersPl|OthersPl => "są" ; _=>"jest"} ++ np.nom; -- not in every case Pos=> jest_op ! <np.gn, np.p, tense, anter> ++ np.nom;
Neg=>["nie ma"] ++ np.dep!GenNoPrep } }; Neg=> niema_op!<tense,anter> ++ np.dep!GenNoPrep } };
-- ExistIP : IP -> QCl ; -- which houses are there -- ExistIP : IP -> QCl ; -- which houses are there
ExistIP ip = {s=\\pol,_,_ => case pol of { ExistIP ip = {s=\\pol,anter,tense => case pol of {
Pos=>ip.nom; -- not in every case Pos=>ip.nom ++ jest_op ! <ip.gn, ip.p, tense, anter>;
Neg=>ip.dep!GenNoPrep ++ ["nie ma"]} }; Neg=>ip.dep!GenNoPrep ++ niema_op!<tense,anter>} };
-- ProgrVP : VP -> VP ; -- be sleeping -- ProgrVP : VP -> VP ; -- be sleeping
ProgrVP vp = vp; ProgrVP vp = {
prefix=vp.prefix; sufix=vp.sufix;
imienne = vp.imienne; exp=vp.exp;
verb= { si,sp= vp.verb.si;
refl=vp.verb.refl;
asp=vp.verb.asp;
ppartp=vp.verb.pparti;
pparti=vp.verb.pparti}
};
} ; } ;

View File

@@ -324,7 +324,7 @@ lin
hear_V2 = dirV2 (mkV "słyszeć" conj94 "usłyszeć" conj94); hear_V2 = dirV2 (mkV "słyszeć" conj94 "usłyszeć" conj94);
suck_V2 = dirV2 (mkMonoVerb "ssać" conj65 Imperfective); suck_V2 = dirV2 (mkMonoVerb "ssać" conj65 Imperfective);
seek_V2 = dirV2 (mkMonoVerb "szukać" conj98 Imperfective); seek_V2 = dirV2 (mkMonoVerb "szukać" conj98 Imperfective);
wipe_V2 = dirV2 (mkV "wycierać" conj98 "trzeć" conj43); wipe_V2 = dirV2 (mkV "wycierać" conj98 "trzeć" conj43); -- strange?!?!
squeeze_V2 = dirV2 (mkV "ściskać" conj98 "ścisnąć" conj6); squeeze_V2 = dirV2 (mkV "ściskać" conj98 "ścisnąć" conj6);
rub_V2 = dirV2 (mkMonoVerb "trzeć" conj43 Imperfective); rub_V2 = dirV2 (mkMonoVerb "trzeć" conj43 Imperfective);
hold_V2 = dirV2 (mkMonoVerb "trzymać" conj98 Imperfective); hold_V2 = dirV2 (mkMonoVerb "trzymać" conj98 Imperfective);
@@ -378,9 +378,9 @@ lin
live_V = mkV1 "żyć" conj51 "pożyć" conj51; live_V = mkV1 "żyć" conj51 "pożyć" conj51;
john_PN = { nom = "Jan"; voc="Janie"; dep=table{GenPrep|GenNoPrep|AccPrep|AccNoPrep=>"Jana"; DatPrep|DatNoPrep=>"Janowi"; john_PN = { nom = "Jan"; voc="Janie"; dep=table{GenPrep|GenNoPrep|AccPrep|AccNoPrep=>"Jana"; DatPrep|DatNoPrep=>"Janowi";
InstrNoPrep|InstrPrep=>"Janem"; LocPrep=>"Janie"}; InstrC=>"Janem"; LocPrep=>"Janie"};
gn=MascPersSg; p=P3}; gn=MascPersSg; p=P3};
paris_PN = { nom = "Paryż"; voc="Paryżu"; dep=table{GenPrep|GenNoPrep=>"Paryża"; AccPrep|AccNoPrep=>"Paryż"; paris_PN = { nom = "Paryż"; voc="Paryżu"; dep=table{GenPrep|GenNoPrep=>"Paryża"; AccPrep|AccNoPrep=>"Paryż";
DatPrep|DatNoPrep=>"Paryżowi"; InstrNoPrep|InstrPrep=>"Paryżem"; LocPrep=>"Paryżu"}; DatPrep|DatNoPrep=>"Paryżowi"; InstrC=>"Paryżem"; LocPrep=>"Paryżu"};
gn=MascPersSg; p=P3}; gn=MascPersSg; p=P3};
} ; } ;

View File

@@ -32,7 +32,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "wszystkich"; (GenNoPrep|GenPrep) => "wszystkich";
(DatNoPrep|DatPrep) => "wszystkim"; (DatNoPrep|DatPrep) => "wszystkim";
(AccNoPrep|AccPrep) => "wszystkich"; (AccNoPrep|AccPrep) => "wszystkich";
(InstrNoPrep|InstrPrep) => "wszystkimi"; InstrC => "wszystkimi";
LocPrep => "wszystkich" LocPrep => "wszystkich"
}; };
p = P3 ; p = P3 ;
@@ -46,7 +46,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "wszystkiego"; (GenNoPrep|GenPrep) => "wszystkiego";
(DatNoPrep|DatPrep) => "wszystkiemu"; (DatNoPrep|DatPrep) => "wszystkiemu";
(AccNoPrep|AccPrep) => "wszystko"; (AccNoPrep|AccPrep) => "wszystko";
(InstrNoPrep|InstrPrep) => "wszystkim"; InstrC => "wszystkim";
LocPrep => "wszystkim" LocPrep => "wszystkim"
}; };
p = P3; p = P3;
@@ -60,7 +60,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "kogoś"; (GenNoPrep|GenPrep) => "kogoś";
(DatNoPrep|DatPrep) => "komuś"; (DatNoPrep|DatPrep) => "komuś";
(AccNoPrep|AccPrep) => "kogoś"; (AccNoPrep|AccPrep) => "kogoś";
(InstrNoPrep|InstrPrep) => "kimś"; InstrC => "kimś";
LocPrep => "kimś" LocPrep => "kimś"
}; };
p = P3 ; p = P3 ;
@@ -74,7 +74,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "czegoś"; (GenNoPrep|GenPrep) => "czegoś";
(DatNoPrep|DatPrep) => "czemuś"; (DatNoPrep|DatPrep) => "czemuś";
(AccNoPrep|AccPrep) => "coś"; (AccNoPrep|AccPrep) => "coś";
(InstrNoPrep|InstrPrep) => "czymś"; InstrC => "czymś";
LocPrep => "czymś" LocPrep => "czymś"
}; };
p = P3 ; p = P3 ;
@@ -89,7 +89,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "kogo"; (GenNoPrep|GenPrep) => "kogo";
(DatNoPrep|DatPrep) => "komu"; (DatNoPrep|DatPrep) => "komu";
(AccNoPrep|AccPrep) => "kogo"; (AccNoPrep|AccPrep) => "kogo";
(InstrNoPrep|InstrPrep) => "kim"; InstrC => "kim";
LocPrep => "kim" LocPrep => "kim"
}; };
p = P3 ; p = P3 ;
@@ -103,7 +103,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "czego"; (GenNoPrep|GenPrep) => "czego";
(DatNoPrep|DatPrep) => "czemu"; (DatNoPrep|DatPrep) => "czemu";
(AccNoPrep|AccPrep) => "co"; (AccNoPrep|AccPrep) => "co";
(InstrNoPrep|InstrPrep) => "czym"; InstrC => "czym";
LocPrep => "czym" LocPrep => "czym"
}; };
p = P3 ; p = P3 ;
@@ -112,13 +112,13 @@ resource MorphoPol =
kazdyDet : Determiner = { kazdyDet : Determiner = {
s,sp = table { s,sp = table {
Nom => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr) => "każde" }; Nom => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr|Plur) => "każde" };
Gen => table {Masc _ => "każdego"; Fem => "każdą"; (Neut|NeutGr) => "każdego" }; Gen => table {Masc _ => "każdego"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każdego" };
Dat => table {Masc _ => "każdemu"; Fem => "każdej"; (Neut|NeutGr) => "każdemu" }; Dat => table {Masc _ => "każdemu"; Fem => "każdej"; (Neut|NeutGr|Plur) => "każdemu" };
Acc => table {Masc (Personal|Animate) => "każdego"; Masc Inanimate => "każdy"; Fem => "każdą"; (Neut|NeutGr) => "każde" }; Acc => table {Masc (Personal|Animate) => "każdego"; Masc Inanimate => "każdy"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każde" };
Instr => table {Masc _ => "każdym"; Fem => "każdą"; (Neut|NeutGr) => "każdym" }; Instr => table {Masc _ => "każdym"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każdym" };
Loc => table {Masc _ => "każdym"; Fem => "każdej"; (Neut|NeutGr) => "każdym" }; Loc => table {Masc _ => "każdym"; Fem => "każdej"; (Neut|NeutGr|Plur) => "każdym" };
VocP => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr) => "każde" } VocP => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr|Plur) => "każde" }
}; };
n = Sg; n = Sg;
a = NoA; a = NoA;
@@ -177,7 +177,7 @@ resource MorphoPol =
Loc => table { _ => "ilu" }; Loc => table { _ => "ilu" };
VocP => table {Masc Personal => "ilu"; _ => "ile" } VocP => table {Masc Personal => "ilu"; _ => "ile" }
}; };
n = Pl; n = Sg;
a = StoA a = StoA
}; };
@@ -188,7 +188,7 @@ resource MorphoPol =
(GenNoPrep|GenPrep) => "nikogo"; (GenNoPrep|GenPrep) => "nikogo";
(DatNoPrep|DatPrep) => "nikomu"; (DatNoPrep|DatPrep) => "nikomu";
(AccNoPrep|AccPrep) => "nikogo"; (AccNoPrep|AccPrep) => "nikogo";
(InstrNoPrep|InstrPrep) => "nikim"; InstrC => "nikim";
LocPrep => "nikim" LocPrep => "nikim"
}; };
p=P3; p=P3;
@@ -201,8 +201,8 @@ resource MorphoPol =
dep = table { dep = table {
(GenNoPrep|GenPrep) => "niczego"; (GenNoPrep|GenPrep) => "niczego";
(DatNoPrep|DatPrep) => "niczemu"; (DatNoPrep|DatPrep) => "niczemu";
(AccNoPrep|AccPrep) => "niczego"; (AccNoPrep|AccPrep) => "nic";
(InstrNoPrep|InstrPrep) => "niczym"; InstrC => "niczym";
LocPrep => "niczym" LocPrep => "niczym"
}; };
p=P3; p=P3;

View File

@@ -257,14 +257,13 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
"y" => drzw + "ów"}; "y" => drzw + "ów"};
in in
{ s = table { { s = table {
SF Sg _ => "[" ++ drzwi ++ [": the singl form does not exist]"]; SF _ Gen => x;
SF Pl Gen => x; SF _ Dat => x + "om";
SF Pl Dat => x + "om"; SF _ Instr => x + "ami";
SF Pl Instr => x + "ami"; SF _ Loc => x + "ach";
SF Pl Loc => x + "ach"; SF _ _ => drzwi
SF Pl _ => drzwi
}; };
g = Neut g = Plur
}; };
@@ -1057,7 +1056,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
SF Pl Loc => z + "ach"; SF Pl Loc => z + "ach";
SF Pl _ => z + "a" SF Pl _ => z + "a"
}; };
g = Neut g = NeutGr
}; };
@@ -1086,7 +1085,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
SF Pl Loc => z + "ach"; SF Pl Loc => z + "ach";
SF Pl _ => z + "a" SF Pl _ => z + "a"
}; };
g = Neut g = NeutGr
}; };
@@ -1449,7 +1448,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
SF Pl Loc => w + "ach"; SF Pl Loc => w + "ach";
SF Pl _ => u + "i" SF Pl _ => u + "i"
}; };
g = Neut g = NeutGr --asl
}; };
@@ -1477,7 +1476,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
SF Pl Loc => y + "ach"; SF Pl Loc => y + "ach";
SF Pl _ => y + "y" SF Pl _ => y + "y"
}; };
g = Neut g = NeutGr
}; };
-- oper for neuter, subject ending in -k, -- oper for neuter, subject ending in -k,
@@ -1504,7 +1503,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
SF Pl Loc => y + "ach"; SF Pl Loc => y + "ach";
SF Pl _ => y + "y" SF Pl _ => y + "y"
}; };
g = Neut g = NeutGr
}; };
@@ -2141,6 +2140,7 @@ resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
{ s = table { { s = table {
SF Sg Nom => u; SF Sg Nom => u;
SF Sg Dat => u + "owi"; SF Sg Dat => u + "owi";
SF Sg Acc => u;
SF Sg Instr => u + "em"; SF Sg Instr => u + "em";
SF Sg Loc => x + "e"; SF Sg Loc => x + "e";
SF Sg VocP => x + "e"; SF Sg VocP => x + "e";

View File

@@ -90,17 +90,17 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol in {
NumPl = { s = \\_,_ => ""; a = NoA; n = Pl; hasCard = False }; NumPl = { s = \\_,_ => ""; a = NoA; n = Pl; hasCard = False };
DetQuant q num = { DetQuant q num = {
s = \\c,g => q.s ! AF (cast_gennum!<g,num.n>) c ++ num.s !c !g; s = \\c,g => q.s ! AF (cast_gennum!<g,num.n>) (accom_case!<num.a,c,g>) ++ num.s !c !g;
sp = \\c,g => case num.hasCard of { sp = \\c,g => case num.hasCard of {
True => q.s ! AF (cast_gennum!<g,num.n>) c ++ num.s !c !g; True => q.s ! AF (cast_gennum!<g,num.n>) (accom_case!<num.a,c,g>) ++ num.s !c !g;
False => q.sp ! AF (cast_gennum!<g,num.n>) c ++ num.s !c !g False => q.sp ! AF (cast_gennum!<g,num.n>) (accom_case!<num.a,c,g>) ++ num.s !c !g
}; };
n = num.n; n = num.n;
a = num.a a = num.a
}; };
DetQuantOrd q num ord = { DetQuantOrd q num ord = {
s,sp = \\c,g => q.s ! AF (cast_gennum!<g,num.n>) c s,sp = \\c,g => q.s ! AF (cast_gennum!<g,num.n>) (accom_case!<num.a,c,g>)
++ num.s !c !g ++ num.s !c !g
++ ord.s ! AF (cast_gennum!<g,num.n>) (accom_case! <num.a,c,g>); ++ ord.s ! AF (cast_gennum!<g,num.n>) (accom_case! <num.a,c,g>);
n = num.n; n = num.n;
@@ -156,9 +156,9 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol in {
-- PPartNP : NP -> V2 -> NP ; -- the man seen -- PPartNP : NP -> V2 -> NP ; -- the man seen
PPartNP np v2 = { PPartNP np v2 = {
nom = np.nom ++ v2.ppart ! AF np.gn Nom; nom = np.nom ++ (mkAtable (table2record v2.ppartp)) ! AF np.gn Nom;
voc = np.voc ++ v2.ppart ! AF np.gn VocP; voc = np.voc ++ (mkAtable (table2record v2.ppartp)) ! AF np.gn VocP;
dep = \\cc => np.dep !cc ++ v2.ppart ! AF np.gn (extract_case!cc) ; dep = \\cc => np.dep !cc ++ (mkAtable (table2record v2.ppartp)) ! AF np.gn (extract_case!cc) ;
gn = np.gn; gn = np.gn;
p = np.p p = np.p
}; };

View File

@@ -24,10 +24,10 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
-- n2, n3, n4, n5, n6, n7, n8, n9 : Digit ; -- n2, n3, n4, n5, n6, n7, n8, n9 : Digit ;
n2 = { unit = table { n2 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "dwoje"; <(Nom|VocP|Acc),NeutGr|Plur > => "dwoje";
<Gen,NeutGr > => "dwojga"; <Gen,NeutGr|Plur > => "dwojga";
<(Dat|Loc),NeutGr > => "dwojgu"; <(Dat|Loc),NeutGr|Plur > => "dwojgu";
<Instr,NeutGr > => "dwojgiem"; <Instr,NeutGr|Plur > => "dwojgiem";
<(Nom|VocP),Masc Personal > => "dwóch"; <(Nom|VocP),Masc Personal > => "dwóch";
<(Nom|VocP|Acc),Fem > => "dwie"; <(Nom|VocP|Acc),Fem > => "dwie";
(<Gen,_>|<Acc,Masc Personal>) => "dwóch"; (<Gen,_>|<Acc,Masc Personal>) => "dwóch";
@@ -38,19 +38,19 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
<Loc,_ > => "dwóch" <Loc,_ > => "dwóch"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "dwanaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dwanaścioro";
<Gen,NeutGr > => "dwanaściorga"; <Gen,NeutGr|Plur > => "dwanaściorga";
<(Dat|Loc),NeutGr > => "dwanaściorgu"; <(Dat|Loc),NeutGr|Plur > => "dwanaściorgu";
<Instr,NeutGr > => "dwanaściorgiem"; <Instr,NeutGr|Plur > => "dwanaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "dwunastu"; <Gen|Dat|Instr|Loc,_>) => "dwunastu";
<(Nom|VocP|Acc),_ > => "dwanaście" <(Nom|VocP|Acc),_ > => "dwanaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "dwadzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dwadzieścioro";
<Gen,NeutGr > => "dwadzieściorga"; <Gen,NeutGr|Plur > => "dwadzieściorga";
<(Dat|Loc),NeutGr > => "dwadzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "dwadzieściorgu";
<Instr,NeutGr > => "dwadzieściorgiem"; <Instr,NeutGr|Plur > => "dwadzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "dwudziestu"; <Gen|Dat|Instr|Loc,_>) => "dwudziestu";
<(Nom|VocP|Acc),_ > => "dwadzieścia" <(Nom|VocP|Acc),_ > => "dwadzieścia"
@@ -67,10 +67,10 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
a=DwaA a=DwaA
}; };
n3 = { unit = table { n3 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "troje"; <(Nom|VocP|Acc),NeutGr|Plur > => "troje";
<Gen,NeutGr > => "trojga"; <Gen,NeutGr|Plur > => "trojga";
<Dat,NeutGr > => "trojgu"; <Dat,NeutGr|Plur > => "trojgu";
<Instr,NeutGr > => "trojgiem"; <Instr,NeutGr|Plur > => "trojgiem";
<(Nom|VocP),Masc Personal > => "trzech"; <(Nom|VocP),Masc Personal > => "trzech";
<(Nom|VocP|Acc),Fem > => "trzy"; <(Nom|VocP|Acc),Fem > => "trzy";
(<Gen,_>|<Acc,Masc Personal>) => "trzech"; (<Gen,_>|<Acc,Masc Personal>) => "trzech";
@@ -81,19 +81,19 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
<Loc,_ > => "trzech" <Loc,_ > => "trzech"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "trzynaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "trzynaścioro";
<Gen,NeutGr > => "trzynaściorga"; <Gen,NeutGr|Plur > => "trzynaściorga";
<(Dat|Loc),NeutGr > => "trzynaściorgu"; <(Dat|Loc),NeutGr|Plur > => "trzynaściorgu";
<Instr,NeutGr > => "trzynaściorgiem"; <Instr,NeutGr|Plur > => "trzynaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "trzynastu"; <Gen|Dat|Instr|Loc,_>) => "trzynastu";
<(Nom|VocP|Acc),_ > => "trzynaście" <(Nom|VocP|Acc),_ > => "trzynaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "trzydzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "trzydzieścioro";
<Gen,NeutGr > => "trzydzieściorga"; <Gen,NeutGr|Plur > => "trzydzieściorga";
<(Dat|Loc),NeutGr > => "trzydzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "trzydzieściorgu";
<Instr,NeutGr > => "trzydzieściorgiem"; <Instr,NeutGr|Plur > => "trzydzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "trzydziestu"; <Gen|Dat|Instr|Loc,_>) => "trzydziestu";
<(Nom|VocP|Acc),_ > => "trzydzieści" <(Nom|VocP|Acc),_ > => "trzydzieści"
@@ -110,10 +110,10 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
a=DwaA a=DwaA
}; };
n4 = { unit = table { n4 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "czworo"; <(Nom|VocP|Acc),NeutGr|Plur > => "czworo";
<Gen,NeutGr > => "czworga"; <Gen,NeutGr|Plur > => "czworga";
<Dat,NeutGr > => "czworgu"; <Dat,NeutGr|Plur > => "czworgu";
<Instr,NeutGr > => "czworgiem"; <Instr,NeutGr|Plur > => "czworgiem";
<(Nom|VocP),Masc Personal > => "czterech"; <(Nom|VocP),Masc Personal > => "czterech";
<(Nom|VocP|Acc),Fem > => "cztery"; <(Nom|VocP|Acc),Fem > => "cztery";
(<Gen,_>|<Acc,Masc Personal>) => "czterch"; (<Gen,_>|<Acc,Masc Personal>) => "czterch";
@@ -124,19 +124,19 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
<Loc,_ > => "czterech" <Loc,_ > => "czterech"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "czternaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "czternaścioro";
<Gen,NeutGr > => "czternaściorga"; <Gen,NeutGr|Plur > => "czternaściorga";
<(Dat|Loc),NeutGr > => "czternaściorgu"; <(Dat|Loc),NeutGr|Plur > => "czternaściorgu";
<Instr,NeutGr > => "czternaściorgiem"; <Instr,NeutGr|Plur > => "czternaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "czternastu"; <Gen|Dat|Instr|Loc,_>) => "czternastu";
<(Nom|VocP|Acc),_ > => "czternaście" <(Nom|VocP|Acc),_ > => "czternaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "czterdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "czterdzieścioro";
<Gen,NeutGr > => "czterdzieściorga"; <Gen,NeutGr|Plur > => "czterdzieściorga";
<(Dat|Loc),NeutGr > => "czterdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "czterdzieściorgu";
<Instr,NeutGr > => "czterdzieściorgiem"; <Instr,NeutGr|Plur > => "czterdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "czterdziestu"; <Gen|Dat|Instr|Loc,_>) => "czterdziestu";
<(Nom|VocP|Acc),_ > => "czterdzieści" <(Nom|VocP|Acc),_ > => "czterdzieści"
@@ -153,10 +153,10 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
a=DwaA a=DwaA
}; };
n5 = { unit = table { n5 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "pięcioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "pięcioro";
<Gen,NeutGr > => "pięciorga"; <Gen,NeutGr|Plur > => "pięciorga";
<Dat,NeutGr > => "pięciorgu"; <Dat,NeutGr|Plur > => "pięciorgu";
<Instr,NeutGr > => "pięciorgiem"; <Instr,NeutGr|Plur > => "pięciorgiem";
<(Nom|VocP),Masc Personal > => "pięciu"; <(Nom|VocP),Masc Personal > => "pięciu";
(<Gen,_>|<Acc,Masc Personal>) => "pięciu"; (<Gen,_>|<Acc,Masc Personal>) => "pięciu";
<(Nom|VocP|Acc),_ > => "pięć"; <(Nom|VocP|Acc),_ > => "pięć";
@@ -165,19 +165,19 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
<Loc,_ > => "pięciu" <Loc,_ > => "pięciu"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "piętnaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "piętnaścioro";
<Gen,NeutGr > => "piętnaściorga"; <Gen,NeutGr|Plur > => "piętnaściorga";
<(Dat|Loc),NeutGr > => "piętnaściorgu"; <(Dat|Loc),NeutGr|Plur > => "piętnaściorgu";
<Instr,NeutGr > => "piętnaściorgiem"; <Instr,NeutGr|Plur > => "piętnaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "piętnastu"; <Gen|Dat|Instr|Loc,_>) => "piętnastu";
<(Nom|VocP|Acc),_ > => "piętnaście" <(Nom|VocP|Acc),_ > => "piętnaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "pięćdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "pięćdzieścioro";
<Gen,NeutGr > => "pięćdzieściorga"; <Gen,NeutGr|Plur > => "pięćdzieściorga";
<(Dat|Loc),NeutGr > => "pięćdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "pięćdzieściorgu";
<Instr,NeutGr > => "pięćdzieściorgiem"; <Instr,NeutGr|Plur > => "pięćdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "pięćdziesięciu"; <Gen|Dat|Instr|Loc,_>) => "pięćdziesięciu";
<(Nom|VocP|Acc),_ > => "pięćdziesiąt" <(Nom|VocP|Acc),_ > => "pięćdziesiąt"
@@ -195,10 +195,10 @@ concrete NumeralPol of Numeral = CatPol ** open ResPol,Prelude, AdjectiveMorphoP
a=PiecA a=PiecA
}; };
n6 = { unit = table { n6 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "sześcioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "sześcioro";
<Gen,NeutGr > => "sześciorga"; <Gen,NeutGr|Plur > => "sześciorga";
<Dat,NeutGr > => "sześciorgu"; <Dat,NeutGr|Plur > => "sześciorgu";
<Instr,NeutGr > => "sześciorgiem"; <Instr,NeutGr|Plur > => "sześciorgiem";
<(Nom|VocP),Masc Personal > => "sześciu"; <(Nom|VocP),Masc Personal > => "sześciu";
(<Gen,_>|<Acc,Masc Personal>) => "sześciu"; (<Gen,_>|<Acc,Masc Personal>) => "sześciu";
<(Nom|VocP|Acc),_ > => "sześć"; <(Nom|VocP|Acc),_ > => "sześć";
@@ -207,19 +207,19 @@ n6 = { unit = table {
<Loc,_ > => "sześciu" <Loc,_ > => "sześciu"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "szesnaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "szesnaścioro";
<Gen,NeutGr > => "szesnaściorga"; <Gen,NeutGr|Plur > => "szesnaściorga";
<(Dat|Loc),NeutGr > => "szesnaściorgu"; <(Dat|Loc),NeutGr|Plur > => "szesnaściorgu";
<Instr,NeutGr > => "szesnaściorgiem"; <Instr,NeutGr|Plur > => "szesnaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "szesnastu"; <Gen|Dat|Instr|Loc,_>) => "szesnastu";
<(Nom|VocP|Acc),_ > => "szesnaście" <(Nom|VocP|Acc),_ > => "szesnaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "sześćdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "sześćdzieścioro";
<Gen,NeutGr > => "sześćdzieściorga"; <Gen,NeutGr|Plur > => "sześćdzieściorga";
<(Dat|Loc),NeutGr > => "sześćdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "sześćdzieściorgu";
<Instr,NeutGr > => "sześćdzieściorgiem"; <Instr,NeutGr|Plur > => "sześćdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "sześćdziesięciu"; <Gen|Dat|Instr|Loc,_>) => "sześćdziesięciu";
<(Nom|VocP|Acc),_ > => "sześćdziesiąt" <(Nom|VocP|Acc),_ > => "sześćdziesiąt"
@@ -237,10 +237,10 @@ n6 = { unit = table {
a=PiecA a=PiecA
}; };
n7 = { unit = table { n7 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "siedmioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "siedmioro";
<Gen,NeutGr > => "siedmiorga"; <Gen,NeutGr|Plur > => "siedmiorga";
<Dat,NeutGr > => "siedmiorgu"; <Dat,NeutGr|Plur > => "siedmiorgu";
<Instr,NeutGr > => "siedmiorgiem"; <Instr,NeutGr|Plur > => "siedmiorgiem";
<(Nom|VocP),Masc Personal > => "siedmiu"; <(Nom|VocP),Masc Personal > => "siedmiu";
(<Gen,_>|<Acc,Masc Personal>) => "siedmiu"; (<Gen,_>|<Acc,Masc Personal>) => "siedmiu";
<(Nom|VocP|Acc),_ > => "siedem"; <(Nom|VocP|Acc),_ > => "siedem";
@@ -249,19 +249,19 @@ n7 = { unit = table {
<Loc,_ > => "siedmiu" <Loc,_ > => "siedmiu"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "siedemnaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "siedemnaścioro";
<Gen,NeutGr > => "siedemnaściorga"; <Gen,NeutGr|Plur > => "siedemnaściorga";
<(Dat|Loc),NeutGr > => "siedemnaściorgu"; <(Dat|Loc),NeutGr|Plur > => "siedemnaściorgu";
<Instr,NeutGr > => "siedemnaściorgiem"; <Instr,NeutGr|Plur > => "siedemnaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "siedemnastu"; <Gen|Dat|Instr|Loc,_>) => "siedemnastu";
<(Nom|VocP|Acc),_ > => "siedemnaście" <(Nom|VocP|Acc),_ > => "siedemnaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "siedemdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "siedemdzieścioro";
<Gen,NeutGr > => "siedemdzieściorga"; <Gen,NeutGr|Plur > => "siedemdzieściorga";
<(Dat|Loc),NeutGr > => "siedemdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "siedemdzieściorgu";
<Instr,NeutGr > => "siedemdzieściorgiem"; <Instr,NeutGr|Plur > => "siedemdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "siedemdziesięciu"; <Gen|Dat|Instr|Loc,_>) => "siedemdziesięciu";
<(Nom|VocP|Acc),_ > => "siedemdziesiąt" <(Nom|VocP|Acc),_ > => "siedemdziesiąt"
@@ -279,10 +279,10 @@ n7 = { unit = table {
a=PiecA a=PiecA
}; };
n8 = { unit = table { n8 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "ośmioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "ośmioro";
<Gen,NeutGr > => "ośmiorga"; <Gen,NeutGr|Plur > => "ośmiorga";
<Dat,NeutGr > => "ośmiorgu"; <Dat,NeutGr|Plur > => "ośmiorgu";
<Instr,NeutGr > => "ośmiorgiem"; <Instr,NeutGr|Plur > => "ośmiorgiem";
<(Nom|VocP),Masc Personal > => "ośmiu"; <(Nom|VocP),Masc Personal > => "ośmiu";
(<Gen,_>|<Acc,Masc Personal>) => "ośmiu"; (<Gen,_>|<Acc,Masc Personal>) => "ośmiu";
<(Nom|VocP|Acc),_ > => "osiemm"; <(Nom|VocP|Acc),_ > => "osiemm";
@@ -291,19 +291,19 @@ n8 = { unit = table {
<Loc,_ > => "ośmiu" <Loc,_ > => "ośmiu"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "osiemnaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "osiemnaścioro";
<Gen,NeutGr > => "osiemnaściorga"; <Gen,NeutGr|Plur > => "osiemnaściorga";
<(Dat|Loc),NeutGr > => "osiemnaściorgu"; <(Dat|Loc),NeutGr|Plur > => "osiemnaściorgu";
<Instr,NeutGr > => "osiemnaściorgiem"; <Instr,NeutGr|Plur > => "osiemnaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "osiemnastu"; <Gen|Dat|Instr|Loc,_>) => "osiemnastu";
<(Nom|VocP|Acc),_ > => "osiemnaście" <(Nom|VocP|Acc),_ > => "osiemnaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "osiemdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "osiemdzieścioro";
<Gen,NeutGr > => "osiemdzieściorga"; <Gen,NeutGr|Plur > => "osiemdzieściorga";
<(Dat|Loc),NeutGr > => "osiemdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "osiemdzieściorgu";
<Instr,NeutGr > => "osiemdzieściorgiem"; <Instr,NeutGr|Plur > => "osiemdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "osiemdziesięciu"; <Gen|Dat|Instr|Loc,_>) => "osiemdziesięciu";
<(Nom|VocP|Acc),_ > => "osiemdziesiąt" <(Nom|VocP|Acc),_ > => "osiemdziesiąt"
@@ -320,10 +320,10 @@ n8 = { unit = table {
a=PiecA a=PiecA
}; };
n9 = { unit = table { n9 = { unit = table {
<(Nom|VocP|Acc),NeutGr > => "dziewięcioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dziewięcioro";
<Gen,NeutGr > => "dziewięciorga"; <Gen,NeutGr|Plur > => "dziewięciorga";
<Dat,NeutGr > => "dziewięciorgu"; <Dat,NeutGr|Plur > => "dziewięciorgu";
<Instr,NeutGr > => "dziewięciorgiem"; <Instr,NeutGr|Plur > => "dziewięciorgiem";
<(Nom|VocP),Masc Personal > => "dziewięciu"; <(Nom|VocP),Masc Personal > => "dziewięciu";
(<Gen,_>|<Acc,Masc Personal>) => "dziewięciu"; (<Gen,_>|<Acc,Masc Personal>) => "dziewięciu";
<(Nom|VocP|Acc),_ > => "dziewięć"; <(Nom|VocP|Acc),_ > => "dziewięć";
@@ -332,19 +332,19 @@ n9 = { unit = table {
<Loc,_ > => "dziewięciu" <Loc,_ > => "dziewięciu"
}; };
teen = table { teen = table {
<(Nom|VocP|Acc),NeutGr > => "dziewiętnaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dziewiętnaścioro";
<Gen,NeutGr > => "dziewiętnaściorga"; <Gen,NeutGr|Plur > => "dziewiętnaściorga";
<(Dat|Loc),NeutGr > => "dziewiętnaściorgu"; <(Dat|Loc),NeutGr|Plur > => "dziewiętnaściorgu";
<Instr,NeutGr > => "dziewiętnaściorgiem"; <Instr,NeutGr|Plur > => "dziewiętnaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "dziewiętnastu"; <Gen|Dat|Instr|Loc,_>) => "dziewiętnastu";
<(Nom|VocP|Acc),_ > => "dziewiętnaście" <(Nom|VocP|Acc),_ > => "dziewiętnaście"
}; };
ten = table { ten = table {
<(Nom|VocP|Acc),NeutGr > => "dziewięćdzieścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dziewięćdzieścioro";
<Gen,NeutGr > => "dziewięćdzieściorga"; <Gen,NeutGr|Plur > => "dziewięćdzieściorga";
<(Dat|Loc),NeutGr > => "dziewięćdzieściorgu"; <(Dat|Loc),NeutGr|Plur > => "dziewięćdzieściorgu";
<Instr,NeutGr > => "dziewięćdzieściorgiem"; <Instr,NeutGr|Plur > => "dziewięćdzieściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "dziewięćdziesięciu"; <Gen|Dat|Instr|Loc,_>) => "dziewięćdziesięciu";
<(Nom|VocP|Acc),_ > => "dziewięćdziesiąt" <(Nom|VocP|Acc),_ > => "dziewięćdziesiąt"
@@ -364,7 +364,7 @@ n9 = { unit = table {
pot01 = { pot01 = {
unit = table { unit = table {
(<(Nom|VocP),Masc _>|<Acc,Masc Inanimate>) => "jeden"; (<(Nom|VocP),Masc _>|<Acc,Masc Inanimate>) => "jeden";
<(Nom|Acc|VocP),Neut|NeutGr> => "jedno"; <(Nom|Acc|VocP),Neut|NeutGr|Plur> => "jedno";
<(Nom|VocP),Fem> => "jedna"; <(Nom|VocP),Fem> => "jedna";
<(Gen|Dat|Loc),Fem> => "jednej"; <(Gen|Dat|Loc),Fem> => "jednej";
<(Acc|Instr),Fem> => "jedną"; <(Acc|Instr),Fem> => "jedną";
@@ -394,10 +394,10 @@ n9 = { unit = table {
-- pot110 : Sub100 ; -- 10 -- pot110 : Sub100 ; -- 10
pot110 = { pot110 = {
s =table { s =table {
<(Nom|VocP|Acc),NeutGr > => "dziesięcioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "dziesięcioro";
<Gen,NeutGr > => "dziesięciorga"; <Gen,NeutGr|Plur > => "dziesięciorga";
<(Dat|Loc),NeutGr > => "dziesięciorgu"; <(Dat|Loc),NeutGr|Plur > => "dziesięciorgu";
<Instr,NeutGr > => "dziesięciorgiem"; <Instr,NeutGr|Plur > => "dziesięciorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "dziesięciu"; <Gen|Dat|Instr|Loc,_>) => "dziesięciu";
<(Nom|VocP|Acc),_ > => "dziesięć" <(Nom|VocP|Acc),_ > => "dziesięć"
@@ -410,10 +410,10 @@ n9 = { unit = table {
-- pot111 : Sub100 ; -- 11 -- pot111 : Sub100 ; -- 11
pot111 = { pot111 = {
s = table { s = table {
<(Nom|VocP|Acc),NeutGr > => "jedenaścioro"; <(Nom|VocP|Acc),NeutGr|Plur > => "jedenaścioro";
<Gen,NeutGr > => "jedenaściorga"; <Gen,NeutGr|Plur > => "jedenaściorga";
<(Dat|Loc),NeutGr > => "jedenaściorgu"; <(Dat|Loc),NeutGr|Plur > => "jedenaściorgu";
<Instr,NeutGr > => "jedenaściorgiem"; <Instr,NeutGr|Plur > => "jedenaściorgiem";
(<(Nom|VocP|Acc),Masc Personal>| (<(Nom|VocP|Acc),Masc Personal>|
<Gen|Dat|Instr|Loc,_>) => "jedenastu"; <Gen|Dat|Instr|Loc,_>) => "jedenastu";
<(Nom|VocP|Acc),_ > => "jedenaście" <(Nom|VocP|Acc),_ > => "jedenaście"

View File

@@ -621,4 +621,4 @@
przeciw_Prep : Prep; -- against przeciw_Prep : Prep; -- against
przeciw_Prep = mkPrep "przeciw" dative; przeciw_Prep = mkPrep "przeciw" dative;
} };

View File

@@ -16,15 +16,15 @@ concrete PhrasePol of Phrase = CatPol ** open Prelude, ResPol, VerbMorphoPol in
UttIP ip = {s = ip.nom}; UttIP ip = {s = ip.nom};
UttIAdv iadv = iadv ; UttIAdv iadv = iadv ;
UttNP np = {s = np.nom}; UttNP np = {s = np.nom};
UttVP vp = { -- I assume positive polarization to avoid variants UttVP vp = { -- I assume the positive polarization to avoid variants
s = vp.prefix !Pos !MascAniSg ++ s = vp.prefix ++
(infinitive_form vp.verb vp.imienne Pos) ++ (infinitive_form vp.verb vp.imienne Pos) ++
vp.sufix !Pos !MascAniSg ++ vp.postfix !Pos !MascAniSg vp.sufix !Pos !MascAniSg
}; };
UttAdv adv = adv ; UttAdv adv = adv ;
UttCN n = {s = n.s ! Sg ! Nom}; UttCN n = {s = n.s ! Sg ! Nom};
UttCard n = {s = n.s ! Nom ! Neut} ; UttAP ap = {s = ap.s ! AF MascPersSg Nom} ;
UttAP ap = {s = ap.s ! AF NeutSg Nom} ; ---- gennum ? (AR) UttCard c = {s = c.s ! Nom ! Fem } ;
NoPConj = {s = []} ; NoPConj = {s = []} ;
PConjConj conj = {s = conj.s2} ; --- PConjConj conj = {s = conj.s2} ; ---

View File

@@ -19,7 +19,8 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
--4.2 Personal pronouns and their possessive forms --4.2 Personal pronouns and their possessive forms
-- for "I", "my", "mine" -- for "I", "my", "mine"
oper pronJa: Pron = oper pronJa: Pron = pronJaFoo PNoGen;
oper pronJaFoo: PronGen -> Pron = \gender ->
{ nom = "ja"; { nom = "ja";
voc = "ja"; voc = "ja";
dep = table { dep = table {
@@ -27,7 +28,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatNoPrep => "mi"; DatNoPrep => "mi";
DatPrep => "mnie"; DatPrep => "mnie";
(AccNoPrep|AccPrep) => "mnie"; (AccNoPrep|AccPrep) => "mnie";
(InstrNoPrep|InstrPrep) => "mną"; InstrC => "mną";
LocPrep => "mnie" LocPrep => "mnie"
}; };
sp = table { sp = table {
@@ -69,12 +70,13 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
}; };
n = Sg; n = Sg;
p = P1 ; p = P1 ;
g = PNoGen g = gender
}; };
-- for "you", "yours" -- for "you", "yours"
oper pronTy: Pron = oper pronTy: Pron = pronTyFoo PNoGen;
oper pronTyFoo: PronGen -> Pron = \gender ->
{ sp = table { { sp = table {
AF (MascPersSg|MascAniSg|MascInaniSg) Nom => "twój"; AF (MascPersSg|MascAniSg|MascInaniSg) Nom => "twój";
AF (MascPersSg|MascAniSg|MascInaniSg) Gen => "twojego"; AF (MascPersSg|MascAniSg|MascInaniSg) Gen => "twojego";
@@ -121,14 +123,53 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "ci"; DatPrep => "ci";
AccNoPrep => "cię"; AccNoPrep => "cię";
AccPrep => "ciebie"; AccPrep => "ciebie";
(InstrNoPrep|InstrPrep) => "tobą"; InstrC => "tobą";
LocPrep => "tobie" LocPrep => "tobie"
}; };
n = Sg; n = Sg;
p = P2 ; p = P2 ;
g = PNoGen g = gender
}; };
-- for "you polite" (very idiomatic: pron you = 'sir') male version
oper pronPan: Pron =
{ nom = "pan" ;
voc = "panie" ;
dep = table {
GenNoPrep => "pana"; --"go"};
GenPrep => "pana";
DatNoPrep => "panu"; --"mu"};
DatPrep => "panu";
AccNoPrep => "pana"; --"go" };
AccPrep => "pana";
InstrC => "panem";
LocPrep => "panu"
};
sp = \\_ => "pana";
n = Sg;
p = P3 ;
g = PGen (Masc Personal)
};
-- for "you polite" (very idiomatic: pron you = 'madam') female version
oper pronPani: Pron =
{ nom = "pani" ;
voc = "pani" ;
dep = table {
GenNoPrep => "pani"; --"go"};
GenPrep => "pani";
DatNoPrep => "pani"; --"mu"};
DatPrep => "pani";
AccNoPrep => "panią"; --"go" };
AccPrep => "panią";
InstrC => "panią";
LocPrep => "pani"
};
sp = \\_ => "pani";
n = Sg;
p = P3 ;
g = PGen (Fem)
};
-- for "he", "his" -- for "he", "his"
oper pronOn: Pron = oper pronOn: Pron =
@@ -141,8 +182,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "niemu"; DatPrep => "niemu";
AccNoPrep => "jego"; --"go" }; AccNoPrep => "jego"; --"go" };
AccPrep => "niego"; AccPrep => "niego";
InstrNoPrep => "nim"; InstrC => "nim";
InstrPrep => "nim";
LocPrep => "nim" LocPrep => "nim"
}; };
sp = \\_ => "jego"; sp = \\_ => "jego";
@@ -160,11 +200,10 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
GenNoPrep => "jej"; GenNoPrep => "jej";
GenPrep => "niej"; GenPrep => "niej";
DatNoPrep => "jej"; DatNoPrep => "jej";
DatPrep => "nią"; DatPrep => "niej";
AccNoPrep => "ją"; AccNoPrep => "ją";
AccPrep => "nią"; AccPrep => "nią";
InstrNoPrep => "nią"; InstrC => "nią";
InstrPrep => "nią";
LocPrep => "niej" LocPrep => "niej"
}; };
sp = \\_ => "jej"; sp = \\_ => "jej";
@@ -185,8 +224,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "niemu"; DatPrep => "niemu";
AccNoPrep => "je"; AccNoPrep => "je";
AccPrep => "nie"; AccPrep => "nie";
InstrNoPrep => "nim"; InstrC => "nim";
InstrPrep => "nim";
LocPrep => "nim" LocPrep => "nim"
}; };
sp = \\_ => "jej"; sp = \\_ => "jej";
@@ -204,7 +242,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
(GenNoPrep|GenPrep) => "nas"; (GenNoPrep|GenPrep) => "nas";
(DatNoPrep|DatPrep) => "nam"; (DatNoPrep|DatPrep) => "nam";
(AccNoPrep|AccPrep) => "nas"; (AccNoPrep|AccPrep) => "nas";
(InstrNoPrep|InstrPrep) => "nami"; InstrC => "nami";
LocPrep => "nas" LocPrep => "nas"
}; };
sp = table { sp = table {
@@ -258,7 +296,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
(GenNoPrep|GenPrep) => "was"; (GenNoPrep|GenPrep) => "was";
(DatNoPrep|DatPrep) => "wam"; (DatNoPrep|DatPrep) => "wam";
(AccNoPrep|AccPrep) => "was"; (AccNoPrep|AccPrep) => "was";
(InstrNoPrep|InstrPrep) => "wami"; InstrC => "wami";
LocPrep => "was" LocPrep => "was"
}; };
sp = table { sp = table {
@@ -315,7 +353,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "nim"; DatPrep => "nim";
AccNoPrep => "ich"; AccNoPrep => "ich";
AccPrep => "nich"; AccPrep => "nich";
(InstrNoPrep|InstrPrep) => "nimi"; InstrC => "nimi";
LocPrep => "nich" LocPrep => "nich"
}; };
sp = \\_ => "ich"; sp = \\_ => "ich";
@@ -336,7 +374,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "nim"; DatPrep => "nim";
AccNoPrep => "je"; AccNoPrep => "je";
AccPrep => "nie"; AccPrep => "nie";
(InstrNoPrep|InstrPrep) => "nimi"; InstrC => "nimi";
LocPrep => "nich" LocPrep => "nich"
}; };
sp = \\_ => "ich"; sp = \\_ => "ich";
@@ -355,7 +393,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
DatPrep => "nim"; DatPrep => "nim";
AccNoPrep => "je"; AccNoPrep => "je";
AccPrep => "nie"; AccPrep => "nie";
(InstrNoPrep|InstrPrep) => "nimi"; InstrC => "nimi";
LocPrep => "nich" LocPrep => "nich"
}; };
sp = \\_ => "ich"; sp = \\_ => "ich";
@@ -372,7 +410,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
(GenNoPrep|GenPrep) NonPoss => "kogo"; (GenNoPrep|GenPrep) NonPoss => "kogo";
(DatNoPrep|DatPrep) NonPoss => "komu"; (DatNoPrep|DatPrep) NonPoss => "komu";
(AccNoPrep|AccPrep) NonPoss => "kogo"; (AccNoPrep|AccPrep) NonPoss => "kogo";
(InstrNoPrep|InstrPrep) NonPoss => "kim"; InstrC NonPoss => "kim";
LocPrep NonPoss => "kim"; LocPrep NonPoss => "kim";
PF VocP _ NonPoss => nonExist; PF VocP _ NonPoss => nonExist;
PF _ _ (Poss _ _) => nonExist -- exists in my opinion [asl] : czyje PF _ _ (Poss _ _) => nonExist -- exists in my opinion [asl] : czyje
@@ -391,7 +429,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
(GenNoPrep|GenPrep) NonPoss => "czego"; (GenNoPrep|GenPrep) NonPoss => "czego";
(DatNoPrep|DatPrep) NonPoss => "czemu"; (DatNoPrep|DatPrep) NonPoss => "czemu";
(AccNoPrep|AccPrep) NonPoss => "co"; (AccNoPrep|AccPrep) NonPoss => "co";
(InstrNoPrep|InstrPrep) NonPoss => "czym"; InstrC NonPoss => "czym";
LocPrep NonPoss => "czym"; LocPrep NonPoss => "czym";
PF VocP _ NonPoss => nonExist; PF VocP _ NonPoss => nonExist;
PF _ _ (Poss _ _) => nonExist PF _ _ (Poss _ _) => nonExist
@@ -419,7 +457,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
(GenNoPrep|GenPrep) NonPoss => "kogokolwiek"; (GenNoPrep|GenPrep) NonPoss => "kogokolwiek";
(DatNoPrep|DatPrep) NonPoss => "komukolwiek"; (DatNoPrep|DatPrep) NonPoss => "komukolwiek";
(AccNoPrep|AccPrep) NonPoss => "kogokolwiek"; (AccNoPrep|AccPrep) NonPoss => "kogokolwiek";
(InstrNoPrep|InstrPrep) NonPoss => "kimkolwiek"; InstrC NonPoss => "kimkolwiek";
LocPrep NonPoss => "kimkolwiek"; LocPrep NonPoss => "kimkolwiek";
PF VocP _ NonPoss => nonExist; PF VocP _ NonPoss => nonExist;
PF _ _ (Poss _ _) => nonExist PF _ _ (Poss _ _) => nonExist
@@ -448,7 +486,7 @@ resource PronounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in {
-- (GenNoPrep|GenPrep) NonPoss => "czegokolwiek"; -- (GenNoPrep|GenPrep) NonPoss => "czegokolwiek";
-- (DatNoPrep|DatPrep) NonPoss => "czemukolwiek"; -- (DatNoPrep|DatPrep) NonPoss => "czemukolwiek";
-- (AccNoPrep|AccPrep) NonPoss => "cokolwiek"; -- (AccNoPrep|AccPrep) NonPoss => "cokolwiek";
-- (InstrNoPrep|InstrPrep) NonPoss => "czymkolwiek"; -- InstrC NonPoss => "czymkolwiek";
-- LocPrep NonPoss => "czymkolwiek"; -- LocPrep NonPoss => "czymkolwiek";
-- PF VocP _ NonPoss => nonExist; -- PF VocP _ NonPoss => nonExist;
-- PF _ _ (Poss _ _) => nonExist -- PF _ _ (Poss _ _) => nonExist

View File

@@ -10,11 +10,12 @@ lin
-- QuestCl : Cl -> QCl ; -- does John walk -- QuestCl : Cl -> QCl ; -- does John walk
QuestCl cl = { s = \\p,a,t=> "czy" ++ cl.s !p !a !t }; QuestCl cl = { s = \\p,a,t=> "czy" ++ cl.s !p !a !t };
-- QuestVP : IP -> VP -> QCl ; -- who walks -- QuestVP : IP -> VP -> QCl ; -- who walks
QuestVP ip vp = { QuestVP ip vp = {
s = \\pol,anter,tense => ip.nom ++ vp.prefix !pol !ip.gn ++ s = \\pol,anter,tense => ip.nom ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, ip.gn, ip.p>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, ip.gn, ip.p>) ++
vp.sufix !pol !ip.gn ++ vp.postfix !pol !ip.gn; vp.sufix !pol !ip.gn
}; };
-- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love -- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
@@ -27,8 +28,8 @@ lin
-- QuestIComp : IComp -> NP -> QCl ; -- where is John -- QuestIComp : IComp -> NP -> QCl ; -- where is John
QuestIComp ic np = { QuestIComp ic np = {
s = \\p,a,t => s = \\p,a,t => ic.s ++
(imienne_form {si = \\_=>[]; sp = \\_=>[]; asp = Dual; refl = ""; ppart=\\_=>""} p !<t,a,np.gn,np.p>) ++ np.nom (imienne_form {si = \\_=>[]; sp = \\_=>[]; asp = Dual; refl = ""; pparti,ppartp=\\_=>""} p !<t,a,np.gn,np.p>) ++ np.nom
}; };
-- IdetCN : IDet -> CN -> IP ; -- which five songs -- IdetCN : IDet -> CN -> IP ; -- which five songs
@@ -46,7 +47,7 @@ lin
voc = idet.s !VocP !(Masc Personal); voc = idet.s !VocP !(Masc Personal);
dep = \\cc => let c = extract_case! cc in dep = \\cc => let c = extract_case! cc in
idet.s !c !(Masc Personal); idet.s !c !(Masc Personal);
gn = cast_gennum! <Masc Personal, idet.n>; gn = (accom_gennum !<idet.a, Masc Personal, idet.n>);
p = P3 p = P3
}; };
@@ -61,20 +62,20 @@ lin
-- IdetQuant : IQuant -> Num -> IDet ; -- which (five) -- IdetQuant : IQuant -> Num -> IDet ; -- which (five)
IdetQuant iq n = { IdetQuant iq n = {
s = \\c,g => iq.s! AF (cast_gennum! <g,n.n>) c; s = \\c,g => iq.s! AF (cast_gennum!<g,n.n>) (accom_case!<n.a,c,g>) ++ n.s !c !g;
n = n.n; n = n.n;
a = NoA a = n.a
}; };
-- PrepIP : Prep -> IP -> IAdv ; -- with whom -- PrepIP : Prep -> IP -> IAdv ; -- with whom
PrepIP prep ip = { s = prep.s ++ ip.dep !prep.c}; PrepIP prep ip = { s = prep.s ++ ip.dep !prep.c};
AdvIAdv i a = {s = i.s ++ a.s} ;
-- CompIAdv : IAdv -> IComp ; -- where (is it) -- CompIAdv : IAdv -> IComp ; -- where (is it)
CompIAdv ia = ia; CompIAdv ia = ia;
-- CompIP : IP -> IComp ; -- who (is it) -- CompIP : IP -> IComp ; -- who (is it)
CompIP ip = { s = ip.dep ! InstrNoPrep }; CompIP ip = { s = ip.dep ! InstrC };
AdvIAdv i a = ss (i.s ++ a.s) ;
} }

View File

@@ -24,14 +24,14 @@ concrete RelativePol of Relative = CatPol ** open ResPol, VerbMorphoPol in {
s = \\gn => case rp.mgn of { s = \\gn => case rp.mgn of {
NoGenNum=> NoGenNum=>
\\pol, anter, tense => \\pol, anter, tense =>
"," ++ rp.s !AF gn Nom ++ vp.prefix !pol !gn ++ "," ++ rp.s !AF gn Nom ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, gn, P3>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, gn, P3>) ++
vp.sufix !pol !gn ++ vp.postfix !pol !gn; vp.sufix !pol !gn;
JustGenNum x => JustGenNum x =>
\\pol, anter, tense => \\pol, anter, tense =>
"," ++ rp.s !AF gn Nom ++ vp.prefix !pol !x ++ "," ++ rp.s !AF gn Nom ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, x, P3>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, x, P3>) ++
vp.sufix !pol !x ++ vp.postfix !pol !x vp.sufix !pol !x
} }
}; };
@@ -52,7 +52,7 @@ concrete RelativePol of Relative = CatPol ** open ResPol, VerbMorphoPol in {
AF gn Nom => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.nom; AF gn Nom => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.nom;
AF gn VocP => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.voc; AF gn VocP => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.voc;
AF gn c => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.dep! AF gn c => p.s ++ rp.s!AF gn (extract_case!p.c) ++ n.dep!
(case c of { Gen => GenNoPrep; Dat => DatNoPrep; Instr => InstrNoPrep; Acc => AccNoPrep; _=>LocPrep }) (case c of { Gen => GenNoPrep; Dat => DatNoPrep; Instr => InstrC; Acc => AccNoPrep; _=>LocPrep })
}; };
mgn = JustGenNum n.gn mgn = JustGenNum n.gn
}; };

View File

@@ -30,7 +30,7 @@
----------------------- Parameter for nouns ---------------------------------- ----------------------- Parameter for nouns ----------------------------------
param param
Gender = Masc Animacy | Fem | NeutGr | Neut ; Gender = Masc Animacy | Fem | NeutGr | Neut | Plur ;
Animacy = Animate | Inanimate | Personal ; Animacy = Animate | Inanimate | Personal ;
Case = Nom | Gen | Dat | Acc | Instr | Loc | VocP ; Case = Nom | Gen | Dat | Acc | Instr | Loc | VocP ;
@@ -41,6 +41,7 @@
param SubstForm = SF Number Case ; param SubstForm = SF Number Case ;
-- oper used in NounMorphoPol.gf
oper CommNoun = {s : SubstForm => Str; g : Gender}; oper CommNoun = {s : SubstForm => Str; g : Gender};
@@ -84,36 +85,20 @@
sp : VFormM => Str; sp : VFormM => Str;
refl : Str; refl : Str;
asp : Aspect; asp : Aspect;
ppart : AForm=>Str ppartp : adj11table; --AForm=>Str;
pparti : adj11table --AForm=>Str
}; };
-- and on syntax level:
{- param
TenseP = Present | PastP | Future ;
PolarityP = PosP | DirNeg | InDirNeg; -- for the indirect object of negation
param VForm =
VInf Gender Number --byc zjedzonym / zjedzoną (?)
|VInd Gender Number Person TenseP Anteriority
|VImp Gender Number Person; --niech zostane zjedzony / zjedzona-}
oper VerbPhrase : Type = { oper VerbPhrase : Type = {
prefix, sufix, postfix : Polarity => GenNum => Str; prefix : Str;
sufix : Polarity => GenNum => Str;
verb : Verb; verb : Verb;
imienne : Bool;-- formed with 'to be' (she was nice, he is a man, etc.) imienne : Bool;-- formed with 'to be' (she was nice, he is a man, etc.)
exp : Bool -- expanded exp : Bool -- expanded
}; };
{- oper AccToGen : Complement -> Case = \c -> oper VerbPhraseSlash : Type =
case c.s of { VerbPhrase ** { c : Complement; postfix : Polarity => GenNum => Str };
"" => case c.c of {Acc => Gen; _ => c.c };
_ => c.c
};-}
-- Anteriority is defined in ../common/ParamX.gf.
-- So it isn't needed to be defined here again.
-- Anteriority = Simul | Anter ; -- predefined
--3 Adjectives --3 Adjectives
@@ -123,6 +108,19 @@
oper adj11forms : Type = { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 : Str }; oper adj11forms : Type = { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 : Str };
oper empty11forms : adj11forms = { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "" };
-- this is because of the bug (undocumented feature) in GF. only two levels of nested records are possible, on the third level compiler throw a strange error about more than 6664 fields demanded. tables on second level are accepted, so adj11forms is translated into table and back.
param param11 = X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | X9 | X10 | X11 ;
oper adj11table : Type = param11 => Str;
oper table2record : adj11table -> adj11forms = \a -> { s1 = a!X1;s2 = a!X2;s3 = a!X3;s4 = a!X4;s5 = a!X5;s6 = a!X6;s7 = a!X7;s8 = a!X8;s9 = a!X9;s10 = a!X10;s11 = a!X11 };
oper record2table : adj11forms -> adj11table = \a -> table { X1 => a.s1;X2 => a.s2;X3 => a.s3;X4 => a.s4;X5 => a.s5;X6 => a.s6;X7 => a.s7;X8 => a.s8;X9 => a.s9;X10 => a.s10;X11 => a.s11 };
oper Adj : Type = { oper Adj : Type = {
pos : adj11forms; pos : adj11forms;
comp : adj11forms; comp : adj11forms;
@@ -201,7 +199,7 @@
--6 Complement definition --6 Complement definition
param ComplCase = GenPrep | GenNoPrep | DatPrep | DatNoPrep | param ComplCase = GenPrep | GenNoPrep | DatPrep | DatNoPrep |
AccPrep | AccNoPrep | InstrPrep | InstrNoPrep | LocPrep ; AccPrep | AccNoPrep | InstrC | LocPrep ;
oper oper
Complement : Type = {s : Str; c : ComplCase} ; Complement : Type = {s : Str; c : ComplCase} ;
@@ -210,14 +208,14 @@
mkCompl s c = { mkCompl s c = {
s=s; s=s;
c = case s of { c = case s of {
"" => case c of { Gen => GenNoPrep; Dat => DatNoPrep; Instr => InstrNoPrep; _ => AccNoPrep }; "" => case c of { Gen => GenNoPrep; Dat => DatNoPrep; Instr => InstrC; _ => AccNoPrep };
_ => case c of { Gen => GenPrep; Dat => DatPrep; Acc => AccPrep; Instr => InstrPrep; _ => LocPrep } _ => case c of { Gen => GenPrep; Dat => DatPrep; Acc => AccPrep; Instr => InstrC; _ => LocPrep }
} }
}; };
extract_case = table {GenPrep => Gen; GenNoPrep => Gen; DatPrep => Dat; extract_case = table {GenPrep => Gen; GenNoPrep => Gen; DatPrep => Dat;
DatNoPrep => Dat; AccPrep => Acc; AccNoPrep => Acc; InstrPrep => Instr; DatNoPrep => Dat; AccPrep => Acc; AccNoPrep => Acc; InstrC => Instr;
InstrNoPrep => Instr; LocPrep => Loc}; LocPrep => Loc};
--7 Various types --7 Various types
-- possible problem: dzieci ,ktorych piecioro bawilo sie... / okna, ktorych piec stalo opartych o sciane... -- possible problem: dzieci ,ktorych piecioro bawilo sie... / okna, ktorych piec stalo opartych o sciane...
@@ -237,6 +235,7 @@
<Fem, Sg> => FemSg; <Fem, Sg> => FemSg;
<Neut, Sg> => NeutSg; <Neut, Sg> => NeutSg;
<NeutGr, Sg> => NeutSg; <NeutGr, Sg> => NeutSg;
<Plur, Sg> => OthersPl; --plurale tantum
<Masc Personal, Pl> => MascPersPl; <Masc Personal, Pl> => MascPersPl;
_ => OthersPl _ => OthersPl
}; };
@@ -260,21 +259,23 @@
Determiner : Type = { s,sp: Case => Gender => Str; n: Number; a: Accom}; Determiner : Type = { s,sp: Case => Gender => Str; n: Number; a: Accom};
oper oper
accom_case = table { accom_case : Accom * Case * Gender => Case =
<DwaA, Nom, Masc Personal> => Gen; table {
<DwaA, _, NeutGr> => Gen; <DwaA, Nom|VocP, Masc Personal> => Gen;
<PiecA, Nom, Masc Personal> => Gen; <DwaA, _, NeutGr| Plur> => Gen;
<PiecA, _, NeutGr> => Gen; <PiecA, Nom|VocP, Masc Personal> => Gen;
<PiecA, Nom|Acc, Masc (Animate|Inanimate)|Neut|Fem> => Gen; <PiecA, _, NeutGr| Plur> => Gen;
<StoA, Nom, Masc Personal> => Gen; <PiecA, Nom|VocP|Acc, Masc (Animate|Inanimate)|Neut|Fem> => Gen;
<StoA, Nom|Acc, Masc (Animate|Inanimate)|Neut|Fem> => Gen; <StoA, Nom|VocP, Masc Personal> => Gen;
<StoA, Acc, Masc Personal> => Acc;
<StoA, Nom|VocP|Acc, _> => Gen;
<TysiacA, _, _> => Gen; <TysiacA, _, _> => Gen;
x => x.p2 x => x.p2
}; };
accom_gennum : Accom * Gender * Number => GenNum = accom_gennum : Accom * Gender * Number => GenNum =
table { table {
<DwaA, Masc Personal | NeutGr, _> => NeutSg; <DwaA, Masc Personal | NeutGr | Plur, _> => NeutSg;
<PiecA, _, _> => NeutSg; <PiecA, _, _> => NeutSg;
<StoA, _, _> => NeutSg; <StoA, _, _> => NeutSg;
<TysiacA, _, _> => NeutSg; <TysiacA, _, _> => NeutSg;

View File

@@ -10,9 +10,9 @@ lin
-- PredVP : NP -> VP -> Cl ; -- John walks -- PredVP : NP -> VP -> Cl ; -- John walks
PredVP np vp = { PredVP np vp = {
s = \\pol,anter,tense => s = \\pol,anter,tense =>
np.nom ++ vp.prefix !pol !np.gn ++ np.nom ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, np.gn, np.p>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, np.gn, np.p>) ++
vp.sufix !pol !np.gn ++ vp.postfix !pol !np.gn; vp.sufix !pol !np.gn ;
}; };
-- UseCl : Temp -> Pol -> Cl -> S ; -- UseCl : Temp -> Pol -> Cl -> S ;
@@ -40,11 +40,11 @@ lin
SlashVP np vps = { SlashVP np vps = {
s = \\pol,anter,tense => case vps.exp of { s = \\pol,anter,tense => case vps.exp of {
True => True =>
np.nom ++ vps.prefix !pol !np.gn ++ np.nom ++ vps.prefix ++
((indicative_form vps.verb vps.imienne pol) !<tense, anter, np.gn, np.p>) ++ ((indicative_form vps.verb vps.imienne pol) !<tense, anter, np.gn, np.p>) ++
vps.sufix !pol !np.gn ++ vps.postfix !pol !np.gn; vps.sufix !pol !np.gn ++ vps.postfix !pol !np.gn;
False => False =>
vps.prefix !pol !np.gn ++ vps.prefix ++
((indicative_form vps.verb vps.imienne pol) !<tense, anter, np.gn, np.p>) ++ ((indicative_form vps.verb vps.imienne pol) !<tense, anter, np.gn, np.p>) ++
vps.sufix !pol !np.gn ++ vps.postfix !pol !np.gn ++ np.nom vps.sufix !pol !np.gn ++ vps.postfix !pol !np.gn ++ np.nom
}; };
@@ -67,9 +67,9 @@ lin
-- ImpVP : VP -> Imp ; -- love yourselves -- ImpVP : VP -> Imp ; -- love yourselves
ImpVP vp = { ImpVP vp = {
s = \\pol,num => vp.prefix !pol !MascAniSg ++ s = \\pol,num => vp.prefix ++
(imperative_form vp.verb vp.imienne pol (cast_gennum!<Masc Personal, num>) P2) ++ (imperative_form vp.verb vp.imienne pol (cast_gennum!<Masc Personal, num>) P2) ++
vp.sufix !pol !MascAniSg ++ vp.postfix !pol !MascAniSg vp.sufix !pol !MascAniSg
}; };
-- AdvS : Adv -> S -> S ; -- today, I will go home -- AdvS : Adv -> S -> S ; -- today, I will go home
@@ -79,16 +79,16 @@ lin
SlashPrep c p = { s=c.s; c=p }; SlashPrep c p = { s=c.s; c=p };
-- EmbedS : S -> SC ; -- that she goes -- EmbedS : S -> SC ; -- that she goes
EmbedS s = s; EmbedS s = { s = [", że"] ++ s.s } ;
-- EmbedQS : QS -> SC ; -- who goes -- EmbedQS : QS -> SC ; -- who goes
EmbedQS s = s; EmbedQS s = { s = "," ++ s.s } ;
-- EmbedVP : VP -> SC ; -- to go -- EmbedVP : VP -> SC ; -- to go
EmbedVP vp = { EmbedVP vp = {
s = vp.prefix !Pos !MascPersSg ++ s = vp.prefix ++
(infinitive_form vp.verb vp.imienne Pos) ++ (infinitive_form vp.verb vp.imienne Pos) ++
vp.sufix !Pos !MascPersSg ++ vp.postfix !Pos !MascPersSg vp.sufix !Pos !MascPersSg
}; };
-- RelS : S -> RS -> S ; -- she sleeps, which is good -- RelS : S -> RS -> S ; -- she sleeps, which is good
@@ -97,8 +97,8 @@ lin
-- PredSCVP : SC -> VP -> Cl ; -- that she goes is good -- PredSCVP : SC -> VP -> Cl ; -- that she goes is good
PredSCVP sc vp = { PredSCVP sc vp = {
s = \\pol,anter,tense => s = \\pol,anter,tense =>
sc.s ++ vp.prefix !pol !NeutSg ++ sc.s ++ vp.prefix ++
((indicative_form vp.verb vp.imienne pol) !<tense, anter, NeutSg, P3>) ++ ((indicative_form vp.verb vp.imienne pol) !<tense, anter, NeutSg, P3>) ++
vp.sufix !pol !NeutSg ++ vp.postfix !pol !NeutSg; vp.sufix !pol !NeutSg
}; };
} }

View File

@@ -62,7 +62,7 @@ lin
many_Det = wieleDet; many_Det = wieleDet;
more_CAdv = {s = "bardziej" ; pn,p = "niż"; sn="więcej"} ; more_CAdv = {s = "bardziej" ; pn,p = "niż"; sn="więcej"} ;
most_Predet = { s=wszystek; np={nom="większość"; voc="większości"; most_Predet = { s=wszystek; np={nom="większość"; voc="większości";
dep=table{AccPrep|AccNoPrep=>"większość"; InstrPrep|InstrNoPrep=>"większością"; _=>"większości"}; dep=table{AccPrep|AccNoPrep=>"większość"; InstrC=>"większością"; _=>"większości"};
p=P3; gn=FemSg}; adj=False }; p=P3; gn=FemSg}; adj=False };
much_Det = duzoDet; much_Det = duzoDet;
must_VV = mkItVerb (mkMonoVerb "musieć" conj93 Imperfective); must_VV = mkItVerb (mkMonoVerb "musieć" conj93 Imperfective);

View File

@@ -34,7 +34,7 @@ lin
SymbS sy = sy ; SymbS sy = sy ;
SymbNum sy = { s = \\_,_=>sy.s; a=NoA; n=Pl }; SymbNum sy = { s = \\_,_=>sy.s; a=StoA; n=Pl };
SymbOrd sy = { s = \\af => sy.s ++ (mkAtable (guess_model "-ty"))!af} ; SymbOrd sy = { s = \\af => sy.s ++ (mkAtable (guess_model "-ty"))!af} ;
lincat lincat

View File

@@ -18,7 +18,7 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
-- opers for the building of the whole paradigm of a verb -- opers for the building of the whole paradigm of a verb
-- in all tenses -- in all tenses
oper ConjCl : Type = Str -> { s:VFormM => Str; p:AForm=>Str }; oper ConjCl : Type = Str -> { s:VFormM => Str; p:adj11table };
oper conj1 : ConjCl = oper conj1 : ConjCl =
\byc -> \byc ->
@@ -247,14 +247,14 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
Str -> Str -> ConjCl; Str -> Str -> ConjCl;
oper mkRegItConjCl pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly = { oper mkRegItConjCl pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly = {
s = mkVerbTable pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly; s = mkVerbTable pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly;
p = \\_=> "["++pytac ++ [": the participle form does not exist]"] p = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++pytac ++ [": the participle form does not exist]"] };
}; };
oper mkRegConjCl : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> oper mkRegConjCl : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str ->
Str -> Str -> Str -> Str -> ConjCl; Str -> Str -> Str -> Str -> ConjCl;
oper mkRegConjCl pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly n npl = { oper mkRegConjCl pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly n npl = {
s = mkVerbTable pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly; s = mkVerbTable pytac pyta j jmy jcie m sz sg3 my cie ja l la lo li ly;
p = mkAtable (Adj.model4 (pyta+n+"y") (pyta+npl+"i")) p = record2table (Adj.model4 (pyta+n+"y") (pyta+npl+"i"))
}; };
oper mkVerbTable : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> oper mkVerbTable : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str ->
@@ -320,7 +320,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
sp = v.sp; sp = v.sp;
refl = "się"; refl = "się";
asp = v.asp; asp = v.asp;
ppart = v.ppart ppartp = v.ppartp;
pparti = v.pparti
}; };
-- intransitive verbs -- intransitive verbs
@@ -331,7 +332,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
sp = v.sp; sp = v.sp;
refl = v.refl; refl = v.refl;
asp = v.asp; asp = v.asp;
ppart = \\_=> "["++v.si!VInfM ++ [": the participle form does not exist]"] ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++ [": the participle form does not exist]"]};
pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++ [": the participle form does not exist]"]}
}; };
-- monoaspective verbs -- monoaspective verbs
@@ -342,18 +344,20 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
sp = tmp.s; sp = tmp.s;
refl = ""; refl = "";
asp = a; asp = a;
ppart= tmp.p ppartp = tmp.p;
pparti = tmp.p
}; };
-- normal verbs -- normal verbs
oper mkVerb : Str -> ConjCl -> Str -> ConjCl -> Verb = oper mkVerb : Str -> ConjCl -> Str -> ConjCl -> Verb =
\s, c, s2, c2 -> let tmp = (c2 s2) in \s, c, s2, c2 -> let tmpp = (c2 s2); tmpi = (c s) in
{si = (c s).s; {si = tmpi.s;
sp = tmp.s; sp = tmpp.s;
refl = ""; refl = "";
asp = Dual; asp = Dual;
ppart = tmp.p ppartp = tmpp.p;
pparti = tmpi.p
}; };
-- Comlicated verbs -- Comlicated verbs
@@ -366,7 +370,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
{si = \\form => v.si !form ++ s; {si = \\form => v.si !form ++ s;
sp = \\form => v.sp !form ++ s; sp = \\form => v.sp !form ++ s;
refl = v.refl; asp = v.asp; refl = v.refl; asp = v.asp;
ppart = v.ppart ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++s++ [": the participle form does not exist]"]};
pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++s++ [": the participle form does not exist]"]}
}; };
@@ -386,18 +391,6 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
dirV3 : Verb -> V3; -- a typical case ie. "zabrać", "dać" dirV3 : Verb -> V3; -- a typical case ie. "zabrać", "dać"
dirV3 v = mkV3 v "" "" Acc Dat; dirV3 v = mkV3 v "" "" Acc Dat;
-- conditional endings - not present
{- oper condEnd : Number -> Person -> Str = \n,p ->
case <n,p> of {
<Sg, P1> => "bym";
<Sg, P2> => "byś";
<Sg, P3> => "by";
<Pl, P1> => "byśmy";
<Pl, P2> => "byście";
<Pl, P3> => "by"
};-}
indicative_form : Verb -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str; indicative_form : Verb -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str;
indicative_form verb imienne pol = indicative_form verb imienne pol =
case imienne of {True => imienne_form verb pol; False => case imienne of {True => imienne_form verb pol; False =>
@@ -406,14 +399,13 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
let perf = verb.sp; in let perf = verb.sp; in
let imperf = verb.si; in let imperf = verb.si; in
table { table {
<Pres, Simul, gn, p> => nie ++ imperf ! (VFinM (extract_num!gn) p) ++ sie <Pres, Simul, gn, p> => nie ++ imperf ! (VFinM (extract_num!gn) p) ++ sie ;
; --# notpresent <Pres, Anter, gn, p> => nie ++ perf ! (VPraetM gn p) ++ sie ;
<Pres, Anter, gn, p> => nie ++ perf ! (VPraetM gn p) ++ sie ; --# notpresent <Past, _, gn, p> => nie ++ perf ! (VPraetM gn p) ++ sie ;
<Past, _, gn, p> => nie ++ perf ! (VPraetM gn p) ++ sie ; --# notpresent <Fut, Simul, gn, p> => nie ++ bedzie ! <(extract_num!gn), p> ++ sie ++ imperf ! (VPraetM gn P3);
<Fut, Simul, gn, p> => nie ++ bedzie ! <(extract_num!gn), p> ++ sie ++ imperf ! (VPraetM gn P3); --# notpresent <Fut, Anter, gn, p> => nie ++ perf ! (VFinM (extract_num!gn) p) ++ sie;
<Fut, Anter, gn, p> => nie ++ perf ! (VFinM (extract_num!gn) p) ++ sie; --# notpresent <Cond, Simul, gn, p> => nie ++ imperf ! (VCondM gn p) ++ sie;
<Cond, Simul, gn, p> => nie ++ imperf ! (VCondM gn p) ++ sie; --# notpresent <Cond, Anter, gn, p> => nie ++ perf ! (VCondM gn p) ++ sie
<Cond, Anter, gn, p> => nie ++ perf ! (VCondM gn p) ++ sie --# notpresent
} }
}; };
@@ -423,18 +415,17 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
let zostac = (case verb.asp of { Imperfective => conj1 "być"; _ => conj3 "zostać" }).s; in let zostac = (case verb.asp of { Imperfective => conj1 "być"; _ => conj3 "zostać" }).s; in
let nie = case pol of { Pos => "" ; Neg => "nie" }; in let nie = case pol of { Pos => "" ; Neg => "nie" }; in
table { table {
<Pres, Simul, gn, p> => nie ++ byc ! (VFinM (extract_num!gn) p) ++ verb.ppart ! AF gn Nom <Pres, Simul, gn, p> => nie ++ byc ! (VFinM (extract_num!gn) p) ++ (mkAtable (table2record verb.pparti)) ! AF gn Nom;
; --# notpresent <Pres, Anter, gn, p> => nie ++ zostac ! (VPraetM gn p) ++ (mkAtable (table2record verb.ppartp)) ! AF gn Nom;
<Pres, Anter, gn, p> => nie ++ zostac ! (VPraetM gn p) ++ verb.ppart ! AF gn Nom; --# notpresent <Past, Simul, gn, p> => nie ++ byc ! (VPraetM gn p) ++ (mkAtable (table2record verb.pparti)) ! AF gn Nom;
<Past, Simul, gn, p> => nie ++ byc ! (VPraetM gn p) ++ verb.ppart ! AF gn Nom; --# notpresent <Past, Anter, gn, p> => nie ++ zostac ! (VPraetM gn p) ++ (mkAtable (table2record verb.ppartp)) ! AF gn Nom;
<Past, Anter, gn, p> => nie ++ zostac ! (VPraetM gn p) ++ verb.ppart ! AF gn Nom; --# notpresent <Fut, Simul, gn, p> => nie ++ case verb.asp of {
<Fut, Simul, gn, p> => nie ++ case verb.asp of { --# notpresent Perfective => zostac ! (VFinM (extract_num!gn) p) ++ (mkAtable (table2record verb.ppartp)) ! AF gn Nom;
Perfective => zostac ! (VFinM (extract_num!gn) p); --# notpresent _ => bedzie ! <extract_num!gn, p> ++ (mkAtable (table2record verb.pparti)) ! AF gn Nom
_ => bedzie ! <extract_num!gn, p> --# notpresent };
} ++ verb.ppart ! AF gn Nom; --# notpresent <Fut, Anter, gn, p> => nie ++ zostac ! (VFinM (extract_num!gn) p) ++ (mkAtable (table2record verb.ppartp)) ! AF gn Nom;
<Fut, Anter, gn, p> => nie ++ zostac ! (VFinM (extract_num!gn) p) ++ verb.ppart ! AF gn Nom; --# notpresent <Cond, Simul, gn, p> => nie ++ byc ! (VCondM gn p) ++ (mkAtable (table2record verb.pparti)) ! AF gn Nom;
<Cond, Simul, gn, p> => nie ++ byc ! (VCondM gn p) ++ verb.ppart ! AF gn Nom; --# notpresent <Cond, Anter, gn, p> => nie ++ zostac ! (VCondM gn p) ++ (mkAtable (table2record verb.ppartp)) ! AF gn Nom
<Cond, Anter, gn, p> => nie ++ zostac ! (VCondM gn p) ++ verb.ppart ! AF gn Nom --# notpresent
}; };
bedzie : Number * Person => Str = table { bedzie : Number * Person => Str = table {
@@ -453,8 +444,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
let badz = (case verb.asp of { Perfective => zostan_op; _ => badz_op })!<(extract_num!gn), p> in let badz = (case verb.asp of { Perfective => zostan_op; _ => badz_op })!<(extract_num!gn), p> in
let zostan = (case verb.asp of { Imperfective => badz_op; _ => zostan_op })!<(extract_num!gn), p> in let zostan = (case verb.asp of { Imperfective => badz_op; _ => zostan_op })!<(extract_num!gn), p> in
case pol of { case pol of {
Pos => badz ++ verb.ppart! AF gn Nom; Pos => badz ++ (mkAtable (table2record verb.pparti))! AF gn Nom;
Neg => "nie" ++ zostan ++ verb.ppart! AF gn Nom Neg => "nie" ++ zostan ++ (mkAtable (table2record verb.ppartp))! AF gn Nom
}; };
False => False =>
let sie = verb.refl; in let sie = verb.refl; in
@@ -484,8 +475,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
True => True =>
let byc = case verb.asp of { Perfective => "zostać"; _ => "być" }; in let byc = case verb.asp of { Perfective => "zostać"; _ => "być" }; in
case pol of { case pol of {
Pos => byc ++ verb.ppart! AF MascPersSg Nom; Pos => byc ++ (mkAtable (table2record verb.pparti))! AF MascPersSg Nom;
Neg => "nie" ++ byc ++ verb.ppart! AF MascPersSg Nom Neg => "nie" ++ byc ++ (mkAtable (table2record verb.pparti))! AF MascPersSg Nom
}; };
False => False =>
let sie = verb.refl; in let sie = verb.refl; in
@@ -514,4 +505,22 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A
<Pl, P3> => ["niech zostaną"] <Pl, P3> => ["niech zostaną"]
}; };
jest_op : GenNum * Person * Tense * Anteriority => Str =
let byc = (conj1 "być").s in table {
<gn, p, Pres, Simul> => byc ! (VFinM (extract_num!gn) p);
<gn, p, Pres, Anter> => byc ! (VPraetM gn p);
<gn, p, Past, _ > => byc ! (VPraetM gn p);
<gn, p, Fut , _ > => bedzie ! <(extract_num!gn), p>;
<gn, p, Cond, _ > => byc ! (VCondM gn p)
};
niema_op : Tense * Anteriority => Str =
let byc = conj1 "być" in table {
<Pres, Simul> => ["nie ma"];
<Pres, Anter> => ["nie było"];
<Past, _ > => ["nie było"];
<Fut , _ > => ["nie będzie"];
<Cond, _ > => ["nie byłoby"]
};
} }

View File

@@ -11,48 +11,51 @@ lin
PassV2 v = setImienne (defVP (castv2 v)) True; PassV2 v = setImienne (defVP (castv2 v)) True;
SlashV2a v = (defVP (castv2 v)) ** {c=v.c}; SlashV2a v = (defVP (castv2 v)) ** {c=v.c; postfix=\\_,_=>""};
Slash2V3 v3 np = (setSufix (defVP (castv3 v3)) Slash2V3 v3 np = setSlash (defVP (castv3 v3))
(\\p,gn => (\\p,gn =>
v3.c.s ++ np.dep ! (npcase !<p,v3.c.c>) )) v3.c.s ++ np.dep ! (npcase !<p,v3.c.c>) )
** {c=v3.c2}; v3.c2;
Slash3V3 v3 np = (setSufix (defVP (castv3 v3)) Slash3V3 v3 np = (setSlash (defVP (castv3 v3))
(\\p,gn => (\\p,gn =>
v3.c2.s ++ np.dep ! (npcase !<p,v3.c2.c>) )) v3.c2.s ++ np.dep ! (npcase !<p,v3.c2.c>) ))
** {c=v3.c}; v3.c;
-- ComplSlash : VPSlash -> NP -> VP ; -- love it -- ComplSlash : VPSlash -> NP -> VP ; -- love it
ComplSlash vps np = setSufix vps (\\p,gn => ComplSlash vps np = setSufix2 vps (\\p,gn =>
vps.sufix!p!gn ++ vps.c.s ++ np.dep !(npcase !<p,vps.c.c>)); vps.sufix!p!gn ++ vps.c.s ++ np.dep !(npcase !<p,vps.c.c>) ++ vps.postfix!p!gn);
-- AdvVP : VP -> Adv -> VP ; -- sleep here -- AdvVP : VP -> Adv -> VP ; -- sleep here
AdvVP vp adv = setPrefix vp (\\p,gn => vp.prefix!p!gn ++ adv.s); AdvVP vp adv = setPrefix vp (vp.prefix ++ adv.s);
-- AdVVP : AdV -> VP -> VP ; -- always sleep -- AdVVP : AdV -> VP -> VP ; -- always sleep
AdVVP adV vp = setPrefix vp (\\p,gn => vp.prefix!p!gn ++ adV.s); AdVVP adV vp = setPrefix vp (vp.prefix ++ adV.s);
-- ReflVP : VPSlash -> VP ; -- love himself -- ReflVP : VPSlash -> VP ; -- love himself
ReflVP vps = setSufix vps (\\p,gn => vps.sufix!p!gn ++ vps.c.s ++ siebie ! (extract_case! vps.c.c)); ReflVP vps = setSufix vps
(\\p,gn => vps.sufix!p!gn ++ vps.c.s ++ siebie ! (extract_case! vps.c.c) ++ vps.postfix!p!gn);
-- CompAP : AP -> Comp ; -- (be) small -- CompAP : AP -> Comp ; -- (be) small
CompAP ap = { s = \\gn => ap.s ! AF gn Nom }; CompAP ap = { s = \\gn => ap.s ! AF gn Nom };
-- CompNP : NP -> Comp ; -- (be) a man -- CompNP : NP -> Comp ; -- (be) a man
CompNP np = { s = \\gn => np.dep !InstrNoPrep }; CompNP np = { s = \\gn => np.dep !InstrC };
-- CompAdv : Adv -> Comp ; -- (be) here -- CompAdv : Adv -> Comp ; -- (be) here
CompAdv adv = { s = \\_ => adv.s }; CompAdv adv = { s = \\_ => adv.s };
-- UseComp : Comp -> VP ; -- be warm -- UseComp : Comp -> VP ; -- be warm
UseComp c = setImienne (setSufix (defVP {si = \\_=>[]; sp = \\_=>[]; asp = Imperfective; refl = ""; ppart=\\_=>""}) UseComp c = setImienne (setSufix (defVP {si = \\_=>[]; sp = \\_=>[];
asp = Imperfective; refl = ""; ppartp,pparti= record2table empty11forms
})
(\\_,gn => c.s!gn)) (\\_,gn => c.s!gn))
True; True;
-- ComplVV : VV -> VP -> VP ; -- want to run -- ComplVV : VV -> VP -> VP ; -- want to run
ComplVV vv vp = setSufix (defVP vv) ComplVV vv vp = setSufix (defVP vv)
(\\p,gn => vp.prefix !p!gn ++ vp.verb.si !VInfM ++ vp.sufix !p!gn); (\\p,gn => vp.prefix ++ vp.verb.si !VInfM ++ vp.sufix !p!gn);
-- ComplVQ : VQ -> QS -> VP ; -- wonder who runs -- ComplVQ : VQ -> QS -> VP ; -- wonder who runs
ComplVQ vq qs = setSufix (defVP vq) (\\p,gn => "," ++ qs.s); ComplVQ vq qs = setSufix (defVP vq) (\\p,gn => "," ++ qs.s);
@@ -65,85 +68,104 @@ lin
case va.c.adv of { False => a.s!(AF gn va.c.c); True => a.adv } ); case va.c.adv of { False => a.s!(AF gn va.c.c); True => a.adv } );
-- SlashV2V : V2V -> VP -> VPSlash ; -- beg (her) to go -- SlashV2V : V2V -> VP -> VPSlash ; -- beg (her) to go
SlashV2V v vp = (setPostfix (defVP (castv2 v)) SlashV2V v vp = setPostfix (defVP (castv2 v))
(\\p,gn => vp.prefix !p!gn ++ vp.verb.si !VInfM ++ vp.sufix !p!gn)) (\\p,gn => vp.prefix ++ vp.verb.si !VInfM ++ vp.sufix !p!gn)
** {c = v.c}; v.c;
-- SlashV2S : V2S -> S -> VPSlash ; -- answer (to him) that it is good -- SlashV2S : V2S -> S -> VPSlash ; -- answer (to him) that it is good
SlashV2S v s = (setPostfix (defVP (castv2 v)) SlashV2S v s = setPostfix (defVP (castv2 v))
(\\_,_ => [", że"] ++ s.s)) (\\_,_ => [", że"] ++ s.s)
** {c = v.c}; v.c;
-- SlashV2Q : V2Q -> QS -> VPSlash ; -- ask (him) who came -- SlashV2Q : V2Q -> QS -> VPSlash ; -- ask (him) who came
SlashV2Q v qs = (setPostfix (defVP (castv2 v)) SlashV2Q v qs = setPostfix (defVP (castv2 v))
(\\_,_ => "," ++ qs.s)) (\\_,_ => "," ++ qs.s)
** {c = v.c}; v.c;
-- SlashVV : VV -> VPSlash -> VPSlash ; -- want to buy -- SlashVV : VV -> VPSlash -> VPSlash ; -- want to buy
SlashVV v vps = (setPostfix (setSufix (defVP v) SlashVV v vps = setPostfix (setSufix (defVP v)
(\\p,gn => vps.prefix !p!gn ++ vps.verb.si !VInfM ++ vps.sufix !p!gn)) --???? why !pg (\\p,gn => vps.prefix ++ vps.verb.si !VInfM ++ vps.sufix !p!gn)) --???? why !pg
vps.postfix) vps.postfix
** {c = vps.c}; vps.c;
-- SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy -- SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
SlashV2VNP v np vps = (setPostfix (setSufix (defVP (castv2 v)) SlashV2VNP v np vps = setPostfix (setSufix (defVP (castv2 v))
(\\p,gn => (\\p,gn =>
np.dep !(npcase !<p,v.c.c>) ++ vps.prefix !p!gn ++ np.dep !(npcase !<p,v.c.c>) ++ vps.prefix ++
vps.verb.si !VInfM ++ vps.sufix !p!gn)) vps.verb.si !VInfM ++ vps.sufix !p!gn))
vps.postfix) vps.postfix
** {c = vps.c}; vps.c;
-- SlashV2A : V2A -> AP -> VPSlash ; -- paint (it) red -- SlashV2A : V2A -> AP -> VPSlash ; -- paint (it) red
SlashV2A va a = (setPostfix (defVP (castv2a va)) SlashV2A va a = setPostfix (defVP (castv2a va))
(\\_,gn => va.c.s ++ case va.c.adv of { False => a.s!(AF gn va.c.c); True => a.adv })) (\\_,gn => va.c.s ++ case va.c.adv of { False => a.s!(AF gn va.c.c); True => a.adv })
** {c = va.c2}; va.c2;
oper oper
castv2 : (Verb ** { c:Complement }) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppart=v2.ppart}; castv2 : (Verb ** { c:Complement }) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppartp=v2.ppartp; pparti=v2.pparti};
castv3 : (Verb ** { c,c2:Complement }) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppart=v2.ppart}; castv3 : (Verb ** { c,c2:Complement }) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppartp=v2.ppartp; pparti=v2.pparti};
castva : (Verb ** { c:{c:Case; s:Str}}) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppart=v2.ppart}; castva : (Verb ** { c:{c:Case; s:Str}}) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppartp=v2.ppartp; pparti=v2.pparti};
castv2a : (Verb ** { c:{c:Case; s:Str}; c2:Complement}) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppart=v2.ppart}; castv2a : (Verb ** { c:{c:Case; s:Str}; c2:Complement}) -> Verb = \v2 -> {si=v2.si;sp=v2.sp;asp=v2.asp;refl=v2.refl; ppartp=v2.ppartp; pparti=v2.pparti};
defVP : Verb -> VerbPhrase = \v -> { defVP : Verb -> VerbPhrase = \v -> {
prefix = \\p,gn => ""; prefix = "";
sufix = \\p,gn => ""; sufix = \\p,gn => "";
postfix = \\p,gn => "";
verb = v; verb = v;
imienne = False; imienne = False;
exp = False exp = False
}; };
setPrefix : VerbPhrase -> (Polarity => GenNum => Str) -> VerbPhrase setPrefix : VerbPhrase -> Str -> VerbPhrase
= \vp,s -> { = \vp,s -> {
prefix = s; prefix = s;
sufix = vp.sufix; sufix = vp.sufix;
postfix = vp.postfix; postfix = vp.postfix;
verb = vp.verb; verb = vp.verb;
imienne = vp.imienne; imienne = vp.imienne;
exp = True exp = vp.exp -- adding adverb is not an expansion
}; };
setSufix : VerbPhrase -> (Polarity => GenNum => Str) -> VerbPhrase setSufix : VerbPhrase -> (Polarity => GenNum => Str) -> VerbPhrase
= \vp,s -> { = \vp,s -> {
prefix = vp.prefix; prefix = vp.prefix;
sufix = s; sufix = s;
postfix = vp.postfix;
verb = vp.verb; verb = vp.verb;
imienne = vp.imienne; imienne = vp.imienne;
exp = True exp = True
}; };
setPostfix : VerbPhrase -> (Polarity => GenNum => Str) -> VerbPhrase setSufix2 : VerbPhraseSlash -> (Polarity => GenNum => Str) -> VerbPhrase
= \vp,s -> { = \vp,s -> {
prefix = vp.prefix;
sufix = s;
verb = vp.verb;
imienne = vp.imienne;
exp = True
};
setSlash : VerbPhrase -> (Polarity => GenNum => Str) -> Complement -> VerbPhraseSlash
= \vp,s,c -> {
prefix = vp.prefix;
sufix = s;
postfix = \\_,_=>"";
verb = vp.verb;
imienne = vp.imienne;
exp = True;
c = c
};
setPostfix : VerbPhrase -> (Polarity => GenNum => Str) -> Complement -> VerbPhraseSlash
= \vp,s,c -> {
prefix = vp.prefix; prefix = vp.prefix;
sufix = vp.sufix; sufix = vp.sufix;
postfix = s; postfix = s;
verb = vp.verb; verb = vp.verb;
imienne = vp.imienne; imienne = vp.imienne;
exp = True exp = True;
c=c
}; };
setImienne : VerbPhrase -> Bool -> VerbPhrase setImienne : VerbPhrase -> Bool -> VerbPhrase