an overloaded version of mkPN which takes advantage of the smart paradigms for nouns. also now we store only the singular forms for all PNs. added NounSlv.UsePN

This commit is contained in:
krasimir
2016-08-30 09:41:57 +00:00
parent 3591b71bab
commit f1aff40123
4 changed files with 24 additions and 17 deletions

View File

@@ -43,6 +43,6 @@ lincat
A = {s : AForm => Str};
N = {s : Case => Number => Str; g : AGender};
PN = {s : Case => Number => Str; g : AGender};
PN = {s : Case => Str; g : AGender};
}

View File

@@ -16,6 +16,7 @@ concrete NounSlv of Noun = CatSlv ** open ResSlv in {
}
} ;
UsePN pn = {s = pn.s; a = {g=agender2gender pn.g; n=Sg; p=P3}} ;
UsePron p = p ;
DetQuant quant num = {

View File

@@ -112,18 +112,24 @@ oper
g = g
};
mkPN : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> AGender -> PN =
\nomsg,nomdl,nompl,gensg,gendl,genpl,datsg,datdl,datpl,accsg,accdl,accpl,locsg,locdl,locpl,instrsg,instrdl,instrpl,g -> lin PN {
s = table {
Nom => table {Sg=>nomsg; Dl=>nomdl; Pl=>nompl};
Gen => table {Sg=>gensg; Dl=>gendl; Pl=>genpl};
Dat => table {Sg=>datsg; Dl=>datdl; Pl=>datpl};
Acc => table {Sg=>accsg; Dl=>accdl; Pl=>accpl};
Loc => table {Sg=>locsg; Dl=>nomdl; Pl=>locpl};
Instr => table {Sg=>instrsg; Dl=>instrdl; Pl=>instrpl}
};
g = g
mkPN = overload {
mkPN : N -> PN = \noun -> lin PN {
s = \\c => noun.s ! c ! Sg ;
g = noun.g
};
mkPN : (_,_,_,_,_,_ : Str) -> AGender -> PN =
\nom,gen,dat,acc,loc,instr,g -> lin PN {
s = table {
Nom => nom;
Gen => gen;
Dat => dat;
Acc => acc;
Loc => loc;
Instr => instr
};
g = g
};
} ;
mkV = overload {
mkV : (inf,stem : Str) -> V = regV ;

View File

@@ -2,7 +2,7 @@
import xml.sax
class InkscapeSvgHandler(xml.sax.ContentHandler):
class SloleksHandler(xml.sax.ContentHandler):
def __init__(self):
self.parents = []
self.lemma = None
@@ -91,15 +91,15 @@ class InkscapeSvgHandler(xml.sax.ContentHandler):
s = s + "mkPN "
if self.forms.has_key("Slmei"):
gender = "masculine"
tags = ["Slmei", "Slmer", "Slmed", "Slmetd", "Slmem", "Slmeo", "Slmdi", "Slmdr", "Slmdd", "Slmdt", "Slmdm", "Slmdo", "Slmmi", "Slmmr", "Slmmd", "Slmmt", "Slmmm", "Slmmo"]
tags = ["Slmei", "Slmer", "Slmed", "Slmetd", "Slmem", "Slmeo"]
if self.forms.has_key("Slmetn"):
tags[3] = "Slmetn"
elif self.forms.has_key("Slzei"):
gender = "feminine"
tags = ["Slzei", "Slzer", "Slzed", "Slzet", "Slzem", "Slzeo", "Slzdi", "Slzdr", "Slzdd", "Slzdt", "Slzdm", "Slzdo", "Slzmi", "Slzmr", "Slzmd", "Slzmt", "Slzmm", "Slzmo"]
tags = ["Slzei", "Slzer", "Slzed", "Slzet", "Slzem", "Slzeo"]
else:
gender = "neuter"
tags = ["Slsei", "Slser", "Slsed", "Slset", "Slsem", "Slseo", "Slsdi", "Slsdr", "Slsdd", "Slsdt", "Slsdm", "Slsdo", "Slsmi", "Slsmr", "Slsmd", "Slsmt", "Slsmm", "Slsmo"]
tags = ["Slsei", "Slser", "Slsed", "Slset", "Slsem", "Slseo"]
for msd in tags:
if self.forms.has_key(msd):
s = s + "\"" + self.forms[msd][min(i,len(self.forms[msd])-1)] + "\" "
@@ -191,7 +191,7 @@ class InkscapeSvgHandler(xml.sax.ContentHandler):
self.cncf.write(s.encode("utf-8"))
parser = xml.sax.make_parser()
handler = InkscapeSvgHandler()
handler = SloleksHandler()
parser.setContentHandler(handler)
parser.parse(open("Sloleks_v1.2.xml","r"))
handler.close()