sclass MMOPattern { srecord Or(L l) > MMOPattern {} srecord And(L l) > MMOPattern {} srecord Phrase(S phrase) > MMOPattern {} } // patterns = e.g. "Zitat, Anfrage, Preis, Kosten, Preise, Geld, wieviel, wie + viel" static MMOPattern mmo_parsePattern(S s) { s = trim(tok_deRoundBracket(trim(s))); LS tok = javaTokWithBrackets(s); LS l = tok_splitAtComma(s); if (l(l) > 1) ret new MMOPattern.Or(lambdaMap mmo_parsePattern(l)); l = tok_splitAtPlus(s); if (l(l) > 1) ret new MMOPattern.And(lambdaMap mmo_parsePattern(l)); ret new MMOPattern.Phrase(s); }