Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/analyzer/lang/MpdlNormalizerLexDE.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 German 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 MpdlNormalizerLexDE %type java.lang.String %unicode // German: de, deu, ger %states DISP, DICT, SEARCH %state CELEX, GRIMM %{ private String original = ""; private String normalized = ""; private int problem = 0; private void add (String norm) { original += yytext(); normalized += norm; } %} END = \n Alphabet = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] %% ſ { add("s"); } // Fraktur <DISP, DICT, SEARCH, GRIMM> { uͦ {add("u"); } aͤ {add("ä"); } oͤ {add("ö"); } uͤ {add("ü"); } } <CELEX> { // normalize ä ö ü ß only for Celex! ä | Ä | aͤ { add("ae"); } ö | Ö | oͤ { add("oe"); } ü | Ü | uͤ { add("ue"); } uͦ {add("u"); } ß { add("ss"); } {Alphabet} { add(yytext()); } . { problem = 1; add(yytext()); } } <GRIMM> { ß { add("sz"); } } // default @ { problem = 1; add(yytext()); } . { add(yytext()); } <DISP, SEARCH> { {END} { switch (problem) { case 1: return original; default: return normalized; } } } <DICT, CELEX, GRIMM> { {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: DE: Trennung von Deutsch und Fraktur? DE: Celex: hyphens weg? */