CVersionInfo$Dr. Detlef Meyer-EltzP Parsergenerator und -interpreter 0.27.1.36$ Tetra.exe&Copyright 2005 Dr. Detlef Meyer-Eltz Tetra.exeTextTransformer0.9.8.7$TRENNERCTokendC`TRENNER[ \t]+UMBRUCHCTokenD`UMBRUCH\r\neine_CProduction_LINK`eine_eine million -> un million{=str sSeparator;=} ( "eine" trenner[sSeparator] {= xs = "un" + sSeparator; =} ( "million" trenner[sSeparator] {= xs += "million" + sSeparator; =} )? ) str& xs eins_bis_99CProduction_LINKP eins_bis_99{= int iZehner, iEiner; =} ( "eins" {=xs = "un"; =} |ein_einer[xs, iEiner] ( und[iEiner, xs] )? |zehn_bis_19[xs] |zehner[xs, iZehner] ) str& xs ein_bis_999CProduction_LINK$d ein_bis_999*{= int iZehner, iEiner; =} ( "ein" {= xs = "un"; iEiner = 1; =} ( und[iEiner, xs] | {= xs += " "; =} hundert[xs, false] )? |zwei_bis_neun[xs, iEiner] ( und[iEiner, xs] | {= xs += " "; =} hundert[xs, true] )? |zehn_bis_19[xs] |zehner[xs, iZehner] |hundert[xs, false] ) str& xsein_bis_999000CProduction_LINKHein_bis_999000e{=str sRef;=} ( ein_bis_999[xs] ( tausend[sRef] {= xs += " " + sRef; =} )? |tausend[xs] ) str& xs ein_einerCProduction_LINK8c  ein_einer:"ein" {= xs = "un"; xi = 1; =} |zwei_bis_neun[xs, xi] str& xs, int& xihundertCProduction_LINK8hThundert1-100"hundert" {= xs += "cent"; if(xbPlural) xs += "s"; str sTmp = xs; =} ( eins_bis_99[xs] {=xs = sTmp + " " + xs;=} )? str& xs, bool xbPlural hunderterCProduction_LINK hunderter1-999{= str s; int iEiner, iZehner; =} ( "eins" {= xs = "un";=} |ein_einer[s, iEiner] {=xs = s;=} ( und[iEiner, xs] | {= str sHundert; =} hundert[sHundert, iEiner != 1] {= xs += " " + sHundert; =} )? |zehn_bis_19[xs] |zehner[xs, iZehner] ) str& xslisteCProduction_LINK(mlisteA{= str s; =} ( zahl[s] {= out << s; s.clear(); =} )+ millionenCProduction_LINK4D millionen1{= int iEiner; str sSeparator; str sTausender; =} ( "millionen" {= xs += "millions";=} (trenner[sSeparator] {= xs += sSeparator;=} )? ( {= if(sSeparator.empty()) xs += " "; =} ein_bis_999000[sTausender] {= xs += sTausender; =} trenner[sSeparator] {= xs += sSeparator;=} )? ) str& xstausendCProduction_LINKtausendU"tausend" {= xs += "mille";=} ( {=str s;=} hunderter[s] {=xs += " " + s;=} )? str& xstrennerCProduction_LINK`trennerXTRENNER {= xs = " ";=} ( UMBRUCH {= xs += "\n";=} )? |UMBRUCH {= xs = "\n";=} str& xsundCProduction_LINK4und{= str sTmp = xs; int iZehner; =} "und" zehner[xs, iZehner] {= if(xiEiner == 1) { switch(iZehner) { case 7: xs = "soixante et onze"; break; case 8: xs = "quatre-vingt-un"; break; case 9: xs = "quatre-vingt-onze"; break; default: xs += " et un"; } } else if(iZehner == 7 || iZehner == 9) { if(iZehner == 7) xs = "soixante"; else xs = "quatre-vingt"; switch(xiEiner) { case 2: xs += "-douze"; break; case 3: xs += "-treize"; break; case 4: xs += "-quatorze"; break; case 5: xs += "-quinze"; break; case 6: xs += "-seize"; break; case 7: xs += "-dix-sept"; break; case 8: xs += "-dix-huit"; break; case 9: xs += "-dix-neuf"; break; } } else { xs += "-" + sTmp; } =} int xiEiner, str& xszahlCProduction_LINK(zahl1{= str sSeparator; str sRef; =} ( "null" trenner[sSeparator] {= xs = "zro" + sSeparator; =} |"eins" trenner[sSeparator] {= xs = "un" + sSeparator; =} |eine_[xs] | ein_bis_999000[xs] trenner[sSeparator] {= xs += sSeparator; =} ( millionen[sRef] {= xs += sRef; =} )? ) str& xszehnerCProduction_LINKxzehnern"zwanzig" {=xs = "vingt"; xi = 2; =} |"dreiig" {=xs = "trente"; xi = 3; =} |"vierzig" {=xs = "quarante"; xi = 4; =} |"fnfzig" {=xs = "cinquante"; xi = 5; =} |"sechzig" {=xs = "soixante"; xi = 6; =} |"siebzig" {=xs = "soixante-dix"; xi = 7; =} |"achtzig" {=xs = "quatre-vingts"; xi = 8; =} |"neunzig" {=xs = "quatre-vingt-dix"; xi = 9; =} str& xs, int& xi zehn_bis_19CProduction_LINK` zehn_bis_19_"zehn" {= xs = "dix";=} |"elf" {= xs = "onze"; =} |"zwlf" {= xs = "douze"; =} |"dreizehn" {= xs = "treize"; =} |"vierzehn" {= xs = "quatorze"; =} |"fnfzehn" {= xs = "quinze"; =} |"sechzehn" {= xs = "seize"; =} |"siebzehn" {= xs = "dix-sept"; =} |"achtzehn" {= xs = "dix-huit"; =} |"neunzehn" {= xs = "dix-neuf"; =} str& xs zwei_bis_neunCProduction_LINK( zwei_bis_neunE"zwei" {= xs = "deux"; xi = 2; =} |"drei" {= xs = "trois"; xi = 3; =} |"vier" {= xs = "quatre"; xi = 4;=} |"fnf" {= xs = "cinq"; xi = 5; =} |"sechs" {= xs = "six"; xi = 6; =} |"sieben" {= xs = "sept"; xi = 7; =} |"acht" {= xs = "huit"; xi = 8; =} |"neun" {= xs = "neuf"; xi = 9; =} str& xs, int& xi100 CTestScriptX100({=string s;=} zahl[s] {=cout << s;=} cent hundert zahl1000 CTestScript1000({=string s;=} zahl[s] {=cout << s;=} mille tausend zahl1000000 CTestScript1000000({=string s;=} zahl[s] {=cout << s;=} un millioneine million zahl1001 CTestScript1001({=string s;=} zahl[s] {=cout << s;=} mille un tausendeins zahl101 CTestScriptL101({=string s;=} zahl[s] {=cout << s;=} cent un hunderteins zahl150 CTestScript150({=string s;=} zahl[s] {=cout << s;=} cent cinquantehundertfnfzig zahl1600 CTestScript1600({=string s;=} zahl[s] {=cout << s;=} mille six centstausendsechshundert zahl1736 CTestScript1736Korrekter wre das Ergebnis: "mille sept cent trente-six"; seit 1976 ist aber auch:"mille sept cents trente-six" mit an "cent" angehngtem "s" erlaubt. ({=string s;=} zahl[s] {=cout << s;=} mille sept cents trente-six%tausendsiebenhundertsechsunddreiig zahl200 CTestScript200({=string s;=} zahl[s] {=cout << s;=} deux cents zweihundert zahl2000 CTestScript2000({=string s;=} zahl[s] {=cout << s;=} deux mille zweitausend zahl2030 CTestScript2030({=string s;=} zahl[s] {=cout << s;=} deux mille trentezweitausenddreiig zahl21 CTestScriptH21/{=string s;=} ein_bis_999[s] {=cout << s;=} vingt et un einundzwanzig ein_bis_9994703833 CTestScript 4703833({=string s;=} zahl[s] {=cout << s;=} >quatre millions sept cents trois mille huit cents trente-troisBvier Millionen siebenhundertdreitausendachthundertdreiunddreiig zahl48721 CTestScript48721Korrekter wre das Ergebnis: "mille sept cent trente-six"; seit 1976 ist aber auch:"mille sept cents trente-six" mit an "cent" ({=string s;=} zahl[s] {=cout << s;=} *quarante-huit mille sept cents vingt et un1achtundvierzigtausendsiebenhunderteinundzwanzig zahl71 CTestScript71/{=string s;=} ein_bis_999[s] {=cout << s;=} soixante et onze einundsiebzig ein_bis_99972 CTestScriptX72({=string s;=} zahl[s] {=cout << s;=} soixante-douzezweiundsiebzig zahl77 CTestScript77({=string s;=} zahl[s] {=cout << s;=} soixante-dix-septsiebenundsiebzig zahl99 CTestScript99({=string s;=} zahl[s] {=cout << s;=} quatre-vingt-dix-neufneunundneunzig zahlCOptionsProjectCompilerProjectOptionsCOptionSection#ProjectOptions CaseSensitiveCScriptL_ CaseSensitive0 CommentToCodeCScriptP CommentToCode0 ExportableCScript Exportable1GlobalLiteralScannerCScriptGlobalLiteralScanner1GlobalRegexScannerCScript|GlobalRegexScanner0 IgnoreCharsCScript IgnoreCharsIgnoreWhiteSpaceCScriptDIgnoreWhiteSpace0 InterpretableCScript Interpretable1IsNullableWarningCScript IsNullableWarning1 MaxStackSizeCScriptp MaxStackSize100NeatlessCScriptNeatless1 ProjectNameCScript8 ProjectName Zahl2Nombre ProjectPathCScript ProjectPath2C:\Programme\TextTransformer\Beispiele\Zahl2Nombre SeparatedCScript Separated0StartSuccNullableWarningCScriptdStartSuccNullableWarning1 StartruleCScript StartrulelisteTestAllLiteralsCScriptTestAllLiterals1UseIgnoreRegexCScript,UseIgnoreRegex0