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 8d88c8b9f2
commit 7abf13c0f8
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()