Blame vvfst/generate_taivutuskaavat.py

Packit 1f3717
# -*- coding: utf-8 -*-
Packit 1f3717
Packit 1f3717
# Copyright 2012 Harri Pitkänen (hatapitk@iki.fi)
Packit 1f3717
# Program to generate lexicon files for Suomi-malaga Voikko edition
Packit 1f3717
Packit 1f3717
# This program is free software; you can redistribute it and/or modify
Packit 1f3717
# it under the terms of the GNU General Public License as published by
Packit 1f3717
# the Free Software Foundation; either version 2 of the License, or
Packit 1f3717
# (at your option) any later version.
Packit 1f3717
#
Packit 1f3717
# This program is distributed in the hope that it will be useful,
Packit 1f3717
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 1f3717
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 1f3717
# GNU General Public License for more details.
Packit 1f3717
#
Packit 1f3717
# You should have received a copy of the GNU General Public License
Packit 1f3717
# along with this program; if not, write to the Free Software
Packit 1f3717
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit 1f3717
Packit 1f3717
import sys
Packit 1f3717
sys.path.append("common")
Packit 1f3717
import hfconv
Packit 1f3717
import generate_lex_common
Packit 1f3717
import voikkoutils
Packit 1f3717
import codecs
Packit 1f3717
from string import rfind
Packit 1f3717
Packit 1f3717
Packit 1f3717
def addDiacritics(line):
Packit 1f3717
	if u"[Nm]" in line or (u"[Sn][Ny]" in line and u"Omistusliite" in line):
Packit 1f3717
		middle = line.find(u":")
Packit 1f3717
		return u"@C.EI_YKS@" + line[0:middle+1] + u"@C.EI_YKS@" + line[middle+1:]
Packit 1f3717
	return line
Packit 1f3717
Packit 1f3717
def replacementsFront(line):
Packit 1f3717
	return addDiacritics(line.replace(u"", u"ä").replace(u"<O>", u"ö").replace(u"<U>", u"y"))
Packit 1f3717
Packit 1f3717
Packit 1f3717
def replacementsBack(line):
Packit 1f3717
	return addDiacritics(line.replace(u"", u"a").replace(u"<O>", u"o").replace(u"<U>", u"u"))
Packit 1f3717
Packit 1f3717
def filterLines(lines, lexiconPrefix):
Packit 1f3717
	for line in lines:
Packit 1f3717
		if line.startswith("?Laatusana"):
Packit 1f3717
			if lexiconPrefix in [u"Laatusana", u"NimiLaatusana"]:
Packit 1f3717
				yield line[10:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?NimiLaatusana"):
Packit 1f3717
			if lexiconPrefix == u"NimiLaatusana":
Packit 1f3717
				yield line[14:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?NimisanaOnly"):
Packit 1f3717
			if lexiconPrefix == u"Nimisana":
Packit 1f3717
				yield line[13:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Nimisana"):
Packit 1f3717
			if lexiconPrefix in [u"Nimisana", u"NimiLaatusana"]:
Packit 1f3717
				yield line[9:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?NotLaatusana"):
Packit 1f3717
			if lexiconPrefix not in [u"Laatusana", u"Asemosana"]:
Packit 1f3717
				yield line[13:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Paikannimi"):
Packit 1f3717
			if lexiconPrefix == u"Paikannimi":
Packit 1f3717
				yield line[11:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Sukunimi"):
Packit 1f3717
			if lexiconPrefix == u"Sukunimi":
Packit 1f3717
				yield line[9:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Etunimi"):
Packit 1f3717
			if lexiconPrefix == u"Etunimi":
Packit 1f3717
				yield line[8:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Nimi"):
Packit 1f3717
			if lexiconPrefix == u"Nimi":
Packit 1f3717
				yield line[5:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Erisnimi"):
Packit 1f3717
			if lexiconPrefix in [u"Sukunimi", u"Etunimi", u"Paikannimi", u"Nimi"]:
Packit 1f3717
				yield line[9:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Yleisnimi"):
Packit 1f3717
			if lexiconPrefix in [u"Nimisana", u"Laatusana", u"NimiLaatusana"]:
Packit 1f3717
				yield line[10:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?ErisYleisOnly"):
Packit 1f3717
			if lexiconPrefix in [u"Nimisana", u"Sukunimi", u"Etunimi", u"Paikannimi", u"Nimi"]:
Packit 1f3717
				yield line[14:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?Asemosana"):
Packit 1f3717
			if lexiconPrefix == u"Asemosana":
Packit 1f3717
				yield line[10:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		elif line.startswith("?NotAsemosana"):
Packit 1f3717
			if lexiconPrefix != u"Asemosana":
Packit 1f3717
				yield line[13:].replace(u"<WC>", lexiconPrefix)
Packit 1f3717
		else:
Packit 1f3717
			yield line.replace(u"<WC>", lexiconPrefix)
Packit 1f3717
Packit 1f3717
def appendLines(lexiconPrefix, lexiconName, lines, lexcFile):
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconPrefix + lexiconName + u"_a\n")
Packit 1f3717
	for line in filterLines(lines, lexiconPrefix):
Packit 1f3717
		lexcFile.write(replacementsBack(line) + u"\n")
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconPrefix + lexiconName + u"_ä\n")
Packit 1f3717
	for line in filterLines(lines, lexiconPrefix):
Packit 1f3717
		lexcFile.write(replacementsFront(line) + u"\n")
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconPrefix + lexiconName + u"_aä\n")
Packit 1f3717
	for line in filterLines(lines, lexiconPrefix):
Packit 1f3717
		lexcFile.write(replacementsBack(line) + u"\n")
Packit 1f3717
		if u"" in line:
Packit 1f3717
			lexcFile.write(replacementsFront(line) + u"\n")
Packit 1f3717
Packit 1f3717
def appendLexicon(lexiconName, lines, lexcFile):
Packit 1f3717
	if lexiconName.startswith(u"NOUN "):
Packit 1f3717
		realName = lexiconName[5:]
Packit 1f3717
		appendLines(u"Nimisana", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"Laatusana", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"Etunimi", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"Sukunimi", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"Paikannimi", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"Nimi", realName, lines, lexcFile)
Packit 1f3717
		appendLines(u"NimiLaatusana", realName, lines, lexcFile)
Packit 1f3717
		if realName in [u"Vieras", u"Vieras_s", u"Vieras_w", u"YhteisetMonikonPaikallissijat", \
Packit 1f3717
		                u"YhteisetYksikönPaikallissijat", u"LiOlN", u"YhteisetMonikonSijat2", \
Packit 1f3717
		                u"LiOlI", u"YksikönGenetiivinJatko", u"LiOlV", u"LiOlAA", u"MonikonGenetiiviEnJatko", \
Packit 1f3717
		                u"NormaaliYsJatko", u"Nainen", u"NainenYhteiset", u"NainenYsJatko", u"Autio", \
Packit 1f3717
		                u"NormaaliYsJatkoOl", u"Luku", u"Valo_w", u"Valo_s", u"Valo_sl", \
Packit 1f3717
		                u"Koira", u"Koira_w", u"Koira_s", u"MonikonGenetiiviInJatko", \
Packit 1f3717
		                u"Koira_w_monikko", u"Koira_w_yksikkö", u"Puu", u"Maa_l", u"Maa_s", \
Packit 1f3717
		                u"OlVLoppu", u"MonikonNominatiivinJatko", u"YksikönGenetiivinJatkoEiYs"]:
Packit 1f3717
			appendLines(u"LukusananJälkiliite", realName, lines, lexcFile)
Packit 1f3717
			appendLines(u"Asemosana", realName, lines, lexcFile)
Packit 1f3717
		if (OPTIONS["sukija"] or OPTIONS["vanhat"]) and realName in [u"YhteisetHTaivutusmuodot"]:
Packit 1f3717
			appendLines(u"LukusananJälkiliite", realName, lines, lexcFile)
Packit 1f3717
			appendLines(u"Asemosana", realName, lines, lexcFile)
Packit 1f3717
	else:
Packit 1f3717
		appendLines(u"", lexiconName, lines, lexcFile)
Packit 1f3717
Packit 1f3717
# Get command line options
Packit 1f3717
OPTIONS = generate_lex_common.get_options()
Packit 1f3717
Packit 1f3717
lexcFile = codecs.open(OPTIONS["destdir"] + u"/" + "taivutuskaavat.lexc", 'w', 'UTF-8')
Packit 1f3717
Packit 1f3717
infile = codecs.open(u"vvfst/taivutuskaavat.lexc.in", "r", "UTF-8")
Packit 1f3717
Packit 1f3717
lexicon = u""
Packit 1f3717
lexcLines = []
Packit 1f3717
linecount = 0
Packit 1f3717
while True:
Packit 1f3717
	line_orig = infile.readline()
Packit 1f3717
	linecount = linecount + 1
Packit 1f3717
	if line_orig == u'':
Packit 1f3717
		break
Packit 1f3717
	line = generate_lex_common.filterVfstInput(line_orig, OPTIONS)
Packit 1f3717
	if line is None:
Packit 1f3717
		continue
Packit 1f3717
	if line.startswith(u'LEXICON '):
Packit 1f3717
		if lexicon != u"":
Packit 1f3717
			appendLexicon(lexicon, lexcLines, lexcFile)
Packit 1f3717
		lexicon = line[8:]
Packit 1f3717
		lexcLines = []
Packit 1f3717
		continue
Packit 1f3717
	lexcLines.append(line)
Packit 1f3717
infile.close()
Packit 1f3717
	
Packit 1f3717
appendLexicon(lexicon, lexcLines, lexcFile)
Packit 1f3717
Packit 1f3717
# Generate lexicons for numerals
Packit 1f3717
Packit 1f3717
MULTI = {
Packit 1f3717
	u"SnNy": [u"kymmenen", u"sata", u"tuhat", u"miljoona", u"miljardi", u"biljoona", u"triljoona", u"kvadriljoona", u"kvintiljoona", u"sekstiljoona", u"septiljoona", u"sentiljoona"],
Packit 1f3717
	u"SgNy": [u"kymmenen", u"sadan", u"tuhannen", u"miljoonan", u"miljardin", u"biljoonan", u"triljoonan", u"kvadriljoonan", u"kvintiljoonan", u"sekstiljoonan", u"septiljoonan", u"sentiljoonan"],
Packit 1f3717
	u"SpNy": [u"kymmentä", u"sataa", u"tuhatta", u"miljoonaa", u"miljardia", u"biljoonaa", u"triljoonaa", u"kvadriljoonaa", u"kvintiljoonaa", u"sekstiljoonaa", u"septiljoonaa", u"sentiljoonaa"],
Packit 1f3717
	u"StrNy": [u"kymmeneksi", u"sadaksi", u"tuhanneksi", u"miljoonaksi", u"miljardiksi", u"biljoonaksi", u"triljoonaksi", u"kvadriljoonaksi", u"kvintiljoonaksi", u"sekstiljoonaksi", u"septiljoonaksi", u"sentiljoonaksi"],
Packit 1f3717
	u"SesNy": [u"kymmenenä", u"satana", u"tuhantena", u"miljoonana", u"miljardina", u"biljoonana", u"triljoonana", u"kvadriljoonana", u"kvintiljoonana", u"sekstiljoonana", u"septiljoonana", u"sentiljoonana"],
Packit 1f3717
	u"SineNy": [u"kymmenessä", u"sadassa", u"tuhannessa", u"miljoonassa", u"miljardissa", u"biljoonassa", u"triljoonassa", u"kvadriljoonassa", u"kvintiljoonassa", u"sekstiljoonassa", u"septiljoonassa", u"sentiljoonassa"],
Packit 1f3717
	u"SelaNy": [u"kymmenestä", u"sadasta", u"tuhannesta", u"miljoonasta", u"miljardista", u"biljoonasta", u"triljoonasta", u"kvadriljoonasta", u"kvintiljoonasta", u"sekstiljoonasta", u"septiljoonasta", u"sentiljoonasta"],
Packit 1f3717
	u"SillNy": [u"kymmeneen", u"sataan", u"tuhanteen", u"miljoonaan", u"miljardiin", u"biljoonaan", u"triljoonaan", u"kvadriljoonaan", u"kvintiljoonaan", u"sekstiljoonaan", u"septiljoonaan", u"sentiljoonaan"],
Packit 1f3717
	u"SadeNy": [u"kymmenellä", u"sadalla", u"tuhannella", u"miljoonalla", u"miljardilla", u"biljoonalla", u"triljoonalla", u"kvadriljoonalla", u"kvintiljoonalla", u"sekstiljoonalla", u"septiljoonalla", u"sentiljoonalla"],
Packit 1f3717
	u"SablNy": [u"kymmeneltä", u"sadalta", u"tuhannelta", u"miljoonalta", u"miljardilta", u"biljoonalta", u"triljoonalta", u"kvadriljoonalta", u"kvintiljoonalta", u"sekstiljoonalta", u"septiljoonalta", u"sentiljoonalta"],
Packit 1f3717
	u"SallNy": [u"kymmenelle", u"sadalle", u"tuhannelle", u"miljoonalle", u"miljardille", u"biljoonalle", u"triljoonalle", u"kvadriljoonalle", u"kvintiljoonalle", u"sekstiljoonalle", u"septiljoonalle", u"sentiljoonalle"],
Packit 1f3717
	u"SabNy": [u"kymmenettä", u"sadatta", u"tuhannetta", u"miljoonatta", u"miljarditta", u"biljoonatta", u"triljoonatta", u"kvadriljoonatta", u"kvintiljoonatta", u"sekstiljoonatta", u"septiljoonatta", u"sentiljoonatta"],
Packit 1f3717
	u"SgNm": [u"kymmenien", u"satojen", u"tuhansien", u"miljoonien", u"miljardien", u"biljoonien", u"triljoonien", u"kvadriljoonien", u"kvintiljoonien", u"sekstiljoonien", u"septiljoonien", u"sentiljoonien"],
Packit 1f3717
	u"SpNm": [u"kymmeniä", u"satoja", u"tuhansia", u"miljoonia", u"miljardeja", u"biljoonia", u"triljoonia", u"kvadriljoonia", u"kvintiljoonia", u"sekstiljoonia", u"septiljoonia", u"sentiljoonia"],
Packit 1f3717
	u"StrNm": [u"kymmeniksi", u"sadoiksi", u"tuhansiksi", u"miljooniksi", u"miljardeiksi", u"biljooniksi", u"triljooniksi", u"kvadriljooniksi", u"kvintiljooniksi", u"sekstiljooniksi", u"septiljooniksi", u"sentiljooniksi"],
Packit 1f3717
	u"SesNm": [u"kymmeninä", u"satoina", u"tuhansina", u"miljoonina", u"miljardeina", u"biljoonina", u"triljoonina", u"kvadriljoonina", u"kvintiljoonina", u"sekstiljoonina", u"septiljoonina", u"sentiljoonina"],
Packit 1f3717
	u"SineNm": [u"kymmenissä", u"sadoissa", u"tuhansissa", u"miljoonissa", u"miljardeissa", u"biljoonissa", u"triljoonissa", u"kvadriljoonissa", u"kvintiljoonissa", u"sekstiljoonissa", u"septiljoonissa", u"sentiljoonissa"],
Packit 1f3717
	u"SelaNm": [u"kymmenistä", u"sadoista", u"tuhansista", u"miljoonista", u"miljardeista", u"biljoonista", u"triljoonista", u"kvadriljoonista", u"kvintiljoonista", u"sekstiljoonista", u"septiljoonista", u"sentiljoonista"],
Packit 1f3717
	u"SillNm": [u"kymmeniin", u"satoihin", u"tuhansiin", u"miljooniin", u"miljardeihin", u"biljooniin", u"triljooniin", u"kvadriljooniin", u"kvintiljooniin", u"sekstiljooniin", u"septiljooniin", u"sentiljooniin"],
Packit 1f3717
	u"SadeNm": [u"kymmenillä", u"sadoilla", u"tuhansilla", u"miljoonilla", u"miljardeilla", u"biljoonilla", u"triljoonilla", u"kvadriljoonilla", u"kvintiljoonilla", u"sekstiljoonilla", u"septiljoonilla", u"sentiljoonilla"],
Packit 1f3717
	u"SablNm": [u"kymmeniltä", u"sadoilta", u"tuhansilta", u"miljoonilta", u"miljardeilta", u"biljoonilta", u"triljoonilta", u"kvadriljoonilta", u"kvintiljoonilta", u"sekstiljoonilta", u"septiljoonilta", u"sentiljoonilta"],
Packit 1f3717
	u"SallNm": [u"kymmenille", u"sadoille", u"tuhansille", u"miljoonille", u"miljardeille", u"biljoonille", u"triljoonille", u"kvadriljoonille", u"kvintiljoonille", u"sekstiljoonille", u"septiljoonille", u"sentiljoonille"],
Packit 1f3717
	u"SabNm": [u"kymmenittä", u"sadoitta", u"tuhansitta", u"miljoonitta", u"miljardeitta", u"biljoonitta", u"triljoonitta", u"kvadriljoonitta", u"kvintiljoonitta", u"sekstiljoonitta", u"septiljoonitta", u"sentiljoonitta"],
Packit 1f3717
	u"SinNm": [u"kymmenin", u"sadoin", u"tuhansin", u"miljoonin", u"miljardein", u"biljoonin", u"triljoonin", u"kvadriljoonin", u"kvintiljoonin", u"sekstiljoonin", u"septiljoonin", u"sentiljoonin"],
Packit 1f3717
	u"SkoNm": [u"kymmenine", u"satoine", u"tuhansine", u"miljoonine", u"miljardeine", u"biljoonine", u"triljoonine", u"kvadriljoonine", u"kvintiljoonine", u"sekstiljoonine", u"septiljoonine", u"sentiljoonine"],
Packit 1f3717
	u"SstiNy": [u"kymmenesti", u"sadasti", u"tuhannesti", u"miljoonasti", u"miljardisti", u"biljoonasti", u"triljoonasti", u"kvadriljoonasti", u"kvintiljoonasti", u"sekstiljoonasti", u"septiljoonasti", u"sentiljoonasti"]
Packit 1f3717
}
Packit 1f3717
Packit 1f3717
MULTI_VOWELS = [u"_ä", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a", u"_a"]
Packit 1f3717
Packit 1f3717
for sija in MULTI.keys():
Packit 1f3717
	if sija == u"SnNy":
Packit 1f3717
		continue
Packit 1f3717
	diacritic = u"@U.LS." + sija.upper() + u"@"
Packit 1f3717
	lexiconName = u"Lukusana" + sija + u"29"
Packit 1f3717
	tagName = u"[" + sija.replace(u"N", u"][N") + u"]"
Packit 1f3717
	
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconName + u"Kertoimet\n")
Packit 1f3717
	for i in range(len(MULTI_VOWELS)):
Packit 1f3717
		lexcFile.write(diacritic + u"[Xp]" + MULTI[u"SpNy"][i] + u"[X]" + tagName + MULTI[sija][i] + u":" + diacritic + MULTI[sija][i] + u"\t" + lexiconName + MULTI_VOWELS[i] + u"\t;\n")
Packit 1f3717
		if MULTI[sija][i].endswith(u"joonien"):
Packit 1f3717
			altSija = MULTI[sija][i].replace(u"joonien", u"joonain")
Packit 1f3717
			lexcFile.write(diacritic + tagName + altSija + u":" + diacritic + altSija + u"\t" + lexiconName + MULTI_VOWELS[i] + u"\t;\n")
Packit 1f3717
	
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconName + u"Alut\n")
Packit 1f3717
	for i in range(len(MULTI_VOWELS)):
Packit 1f3717
		lexcFile.write(diacritic + u"[Xp]" + MULTI[u"SnNy"][i] + u"[X]" + tagName + MULTI[sija][i] + u":" + diacritic + MULTI[sija][i] + u"\t" + lexiconName + MULTI_VOWELS[i] + u"\t;\n")
Packit 1f3717
		if MULTI[sija][i].endswith(u"joonien"):
Packit 1f3717
			altSija = MULTI[sija][i].replace(u"joonien", u"joonain")
Packit 1f3717
			lexcFile.write(diacritic + tagName + altSija + u":" + diacritic + altSija + u"\t" + lexiconName + MULTI_VOWELS[i] + u"\t;\n")
Packit 1f3717
	
Packit 1f3717
	numeralLines = []
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLukusanaLiitesana_\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLukusanaToista\t;")
Packit 1f3717
	if OPTIONS["sukija"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tSukijaLukusanaKolmattaYhdeksättä\t;")
Packit 1f3717
	if sija in [u"SelaNy", u"SelaNm"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tOlV_\t;")
Packit 1f3717
	appendLines(u"Lukusana", sija + u"29", numeralLines, lexcFile)
Packit 1f3717
Packit 1f3717
	numeralLines = []
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLiitesana_\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLukusanaToista\t;")
Packit 1f3717
	if OPTIONS["sukija"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tSukijaLukusanaKolmattaYhdeksättä\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLukusananJälkiliite\t;")
Packit 1f3717
	if sija == u"SelaNm":
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tOlV_\t;")
Packit 1f3717
	if sija == u"StrNm":
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tOlI_\t;")
Packit 1f3717
	appendLines(u"Lukusana", sija + u"1", numeralLines, lexcFile)
Packit 1f3717
Packit 1f3717
MULTI_ORDINAL_BASES = [u"kymmenes", u"sadas", u"tuhannes", u"miljoonas", u"miljardis"]
Packit 1f3717
Packit 1f3717
MULTI_ORDINALS = {
Packit 1f3717
	u"SgNy": [u"kymmenennen", u"sadannen", u"tuhannennen", u"miljoonannen", u"miljardinnen"],
Packit 1f3717
	u"SpNy": [u"kymmenettä", u"sadannetta", u"tuhannetta", u"miljoonannetta", u"miljardinnetta"],
Packit 1f3717
	u"StrNy": [u"kymmenenneksi", u"sadanneksi", u"tuhannenneksi", u"miljoonanneksi", u"miljardinneksi"],
Packit 1f3717
	u"SesNy": [u"kymmenentenä", u"sadantena", u"tuhannentena", u"miljoonantena", u"miljardintena"],
Packit 1f3717
	u"SineNy": [u"kymmenennessä", u"sadannessa", u"tuhannennessa", u"miljoonannessa", u"miljardinnessa"],
Packit 1f3717
	u"SelaNy": [u"kymmenennestä", u"sadannesta", u"tuhannennesta", u"miljoonannesta", u"miljardinnesta"],
Packit 1f3717
	u"SillNy": [u"kymmenenteen", u"sadanteen", u"tuhannenteen", u"miljoonanteen", u"miljardinteen"],
Packit 1f3717
	u"SadeNy": [u"kymmenennellä", u"sadannella", u"tuhannennella", u"miljoonannella", u"miljardinnella"],
Packit 1f3717
	u"SablNy": [u"kymmenenneltä", u"sadannelta", u"tuhannennelta", u"miljoonannelta", u"miljardinnelta"],
Packit 1f3717
	u"SallNy": [u"kymmenennelle", u"sadannelle", u"tuhannennelle", u"miljoonannelle", u"miljardinnelle"],
Packit 1f3717
	u"SabNy": [u"kymmenennettä", u"sadannetta", u"tuhannennetta", u"miljoonannetta", u"miljardinnetta"],
Packit 1f3717
	u"SgNm": [u"kymmenensien", u"sadansien", u"tuhannensien", u"miljoonansien", u"miljardinsien"],
Packit 1f3717
	u"SpNm": [u"kymmenensiä", u"sadansia", u"tuhannensia", u"miljoonansia", u"miljardinsia"],
Packit 1f3717
	u"StrNm": [u"kymmenensiksi", u"sadansiksi", u"tuhannensiksi", u"miljoonansiksi", u"miljardinsiksi"],
Packit 1f3717
	u"SesNm": [u"kymmenensinä", u"sadansina", u"tuhannensina", u"miljoonansina", u"miljardinsina"],
Packit 1f3717
	u"SineNm": [u"kymmenensissä", u"sadansissa", u"tuhannensissa", u"miljoonansissa", u"miljardinsissa"],
Packit 1f3717
	u"SelaNm": [u"kymmenensistä", u"sadansista", u"tuhannensista", u"miljoonansista", u"miljardinsista"],
Packit 1f3717
	u"SillNm": [u"kymmenensiin", u"sadansiin", u"tuhannensiin", u"miljoonansiin", u"miljardinsiin"],
Packit 1f3717
	u"SadeNm": [u"kymmenensillä", u"sadansilla", u"tuhannensilla", u"miljoonansilla", u"miljardinsilla"],
Packit 1f3717
	u"SablNm": [u"kymmenensiltä", u"sadansilta", u"tuhannensilta", u"miljoonansilta", u"miljardinsilta"],
Packit 1f3717
	u"SallNm": [u"kymmenensille", u"sadansille", u"tuhannensille", u"miljoonansille", u"miljardinsille"],
Packit 1f3717
	u"SabNm": [u"kymmenensittä", u"sadansitta", u"tuhannensitta", u"miljoonansitta", u"miljardinsitta"],
Packit 1f3717
	u"SinNm": [u"kymmenensin", u"sadansin", u"tuhannensin", u"miljoonansin", u"miljardinsin"],
Packit 1f3717
	u"SkoNm": [u"kymmenensine", u"sadansine", u"tuhannensine", u"miljoonansine", u"miljardinsine"]
Packit 1f3717
}
Packit 1f3717
Packit 1f3717
for sija in MULTI_ORDINALS.keys():
Packit 1f3717
	diacritic = u"@U.LS." + sija.upper() + u"@"
Packit 1f3717
	lexiconName = u"Järjestysluku" + sija + u"39"
Packit 1f3717
	tagName = u"[" + sija.replace(u"N", u"][N") + u"]"
Packit 1f3717
	
Packit 1f3717
	lexcFile.write(u"LEXICON " + lexiconName + u"Kertoimet\n")
Packit 1f3717
	lexcFile.write(u"[Bc]" + diacritic + u"[Xp]" + MULTI_ORDINAL_BASES[0] + u"[X]" + tagName + MULTI_ORDINALS[sija][0] + u":" + diacritic + MULTI_ORDINALS[sija][0] + u"\t" + lexiconName + u"_ä\t;\n")
Packit 1f3717
	lexcFile.write(u"[Bc]" + diacritic + u"[Xp]" + MULTI_ORDINAL_BASES[1] + u"[X]" + tagName + MULTI_ORDINALS[sija][1] + u":" + diacritic + MULTI_ORDINALS[sija][1] + u"\t" + lexiconName + u"_a\t;\n")
Packit 1f3717
	lexcFile.write(u"[Bc]" + diacritic + u"[Xp]" + MULTI_ORDINAL_BASES[2] + u"[X]" + tagName + MULTI_ORDINALS[sija][2] + u":" + diacritic + MULTI_ORDINALS[sija][2] + u"\t" + lexiconName + u"_a\t;\n")
Packit 1f3717
	lexcFile.write(u"[Bc]" + diacritic + u"[Xp]" + MULTI_ORDINAL_BASES[3] + u"[X]" + tagName + MULTI_ORDINALS[sija][3] + u":" + diacritic + MULTI_ORDINALS[sija][3] + u"\t" + lexiconName + u"_a\t;\n")
Packit 1f3717
	lexcFile.write(u"[Bc]" + diacritic + u"[Xp]" + MULTI_ORDINAL_BASES[4] + u"[X]" + tagName + MULTI_ORDINALS[sija][4] + u":" + diacritic + MULTI_ORDINALS[sija][4] + u"\t" + lexiconName + u"_a\t;\n")
Packit 1f3717
	
Packit 1f3717
	numeralLines = []
Packit 1f3717
	if sija in [u"SgNy", u"SgNm"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tJärjestyslukuLiitesanaJl_\t;")
Packit 1f3717
	else:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tJärjestyslukuLiitesana_\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tJärjestyslukuToista\t;")
Packit 1f3717
	if OPTIONS["sukija"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tSukijaJärjestyslukuKolmattaYhdeksättä\t;")
Packit 1f3717
	numeralLines.append(lexiconName + u"Kertoimet\t;")
Packit 1f3717
	appendLines(u"Järjestysluku", sija + u"39", numeralLines, lexcFile)
Packit 1f3717
	
Packit 1f3717
	numeralLines = []
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLiitesana_\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tJärjestyslukuToista\t;")
Packit 1f3717
	if OPTIONS["sukija"]:
Packit 1f3717
		numeralLines.append(diacritic + u":" + diacritic + u"\tSukijaJärjestyslukuKolmattaYhdeksättä\t;")
Packit 1f3717
	numeralLines.append(diacritic + u":" + diacritic + u"\tLukusananJälkiliiteJl\t;")
Packit 1f3717
	appendLines(u"Järjestysluku", sija + u"1", numeralLines, lexcFile)
Packit 1f3717
Packit 1f3717
Packit 1f3717
lexcFile.close()