diff --git a/lib/src/slovenian/CatSlv.gf b/lib/src/slovenian/CatSlv.gf index 4bb2711e3..fa4179adf 100644 --- a/lib/src/slovenian/CatSlv.gf +++ b/lib/src/slovenian/CatSlv.gf @@ -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}; } diff --git a/lib/src/slovenian/NounSlv.gf b/lib/src/slovenian/NounSlv.gf index 09e46624f..2479bd8c3 100644 --- a/lib/src/slovenian/NounSlv.gf +++ b/lib/src/slovenian/NounSlv.gf @@ -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 = { diff --git a/lib/src/slovenian/ParadigmsSlv.gf b/lib/src/slovenian/ParadigmsSlv.gf index d64d5d2b0..87f9c1d60 100644 --- a/lib/src/slovenian/ParadigmsSlv.gf +++ b/lib/src/slovenian/ParadigmsSlv.gf @@ -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 ; diff --git a/lib/src/slovenian/convert.py b/lib/src/slovenian/convert.py index b48acd80b..c7bfe10cd 100644 --- a/lib/src/slovenian/convert.py +++ b/lib/src/slovenian/convert.py @@ -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()