mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-22 11:19:32 -06:00
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:
@@ -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};
|
||||
|
||||
}
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user