Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/analyzer/lang/MpdlNormalizerLexEL.lex @ 9:1ec29fdd0db8
neue .lex Dateien f?r Normalisierung / externe Objekte update
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 22 Feb 2011 16:03:45 +0100 |
parents | |
children | 5df60f24e997 |
line wrap: on
line source
/* * Normalization rules for Greek text * [this is a JFlex specification] * * Wolfgang Schmidle * version 0.96 * 2011-02-21 * */ package de.mpg.mpiwg.berlin.mpdl.lt.analyzer.lang; %% %public %class MpdlNormalizerLexEL %type java.lang.String %unicode // Greek: el, grc %states DISP, DICT, SEARCH %{ private String original = ""; private String normalized = ""; private int problem = 0; private void add (String norm) { original += yytext(); normalized += norm; } %} END = \n wordend = [νρς]? {END} Latin = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] %% <DISP, DICT, SEARCH> { // replace tonos by oxia // (although this should really be corrected in the text rather than normalized) ά { add("ά"); } έ { add("έ"); } ή { add("ή"); } ί { add("ί"); } ό { add("ό"); } ύ { add("ύ"); } ώ { add("ώ"); } } <DICT, SEARCH> { ὰ / {wordend} { add("ά"); } ᾲ / {wordend} { add("ᾴ"); } ὲ / {wordend} { add("έ"); } ὴ / {wordend} { add("ή"); } ῂ / {wordend} { add("ῄ"); } ὶ / {wordend} { add("ί"); } ὸ / {wordend} { add("ό"); } ὺ / {wordend} { add("ύ"); } ὼ / {wordend} { add("ώ"); } ῲ / {wordend} { add("ῴ"); } // other candidates: Ὰ Ὲ Ὴ Ὶ Ὺ Ὸ Ὼ } <DISP, DICT, SEARCH> { @ { problem = 1; add(yytext()); } {Latin} { problem = 1; add(yytext()); } } // default . { add(yytext()); } <DISP, SEARCH> { {END} { switch (problem) { case 1: return original; default: return normalized; } } } <DICT> { {END} { switch (problem) { case 1: return ""; default: return normalized; } } } /* Annahmen: - die Routine wird wortweise aufgerufen, mit einem \n am Ende des Strings - Wörter mit Zeilenumbrüchen wurden bereits wieder zusammengesetzt TO DO: EL: tonos --> oxia wieder rausnehmen, weil es im Text geändert werden muss? EL: gibt es noch weitere Fälle, wo legitimerweise ein Gravis vorkommen kann? EL: kommen Großbuchstaben mit Gravis bei uns jemals vor, und sollen sie normalisiert werden? EL: neuer State BETACODE ? EL: nicht falsche Zeichen definieren, sondern erlaubte Zeichen */