mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-27 01:53:17 -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:
1 parent
3591b71bab
commit
f1aff40123
4 files changed
+24
-17
No files matched your search
@@ -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