blob: 7c66dc1a9561acebfc4a1c453a00fcd59f8756b0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// GENERIC
// 1. following are rules to accept the language
// 1.1 Special letter combinations
^o’ english true
^o' english true
^mc english true
^fitz english true
ceau french+romanian true
eau romanian true
eau$ french true // mp: I've added this
eaux$ french true // mp: I've added this
ault$ french true
oult$ french true
eux$ french true
eix$ french true
glou$ greeklatin true
uu dutch true
tx spanish true
witz german true
tz$ german+russian+english true
^tz russian+english true
poulos$ greeklatin true
pulos$ greeklatin true
iou greeklatin true
sj$ dutch true
^sj dutch true
güe spanish true
güi spanish true
ghe romanian+greeklatin true
ghi romanian+greeklatin true
escu$ romanian true
esco$ romanian true
vici$ romanian true
schi$ romanian true
ii$ russian true
iy$ russian true
yy$ russian true
yi$ russian true
^rz polish true
rz$ polish+german true
[bcdfgklmnpstwz]rz polish true
rz[bcdfghklmnpstw] polish true
cki$ polish true
ska$ polish true
cka$ polish true
ae german+russian+english true
oe german+french+russian+english+dutch true
th$ german+english true
^th german+english+greeklatin true
mann german true
cz polish true
cy polish+greeklatin true
niew polish true
etti$ italian true
eti$ italian true
ati$ italian true
ato$ italian true
[aoei]no$ italian true
[aoei]ni$ italian true
esi$ italian true
oli$ italian true
field$ english true
stein german true
heim$ german true
heimer$ german true
thal german true
zweig german true
[aeou]h german true
äh german true
öh german true
üh german true
[ln]h[ao]$ portuguese true
[ln]h[aou] portuguese+french+german+dutch+czech+spanish+turkish true
chsch german true
tsch german true
sch$ german+russian true
^sch german+russian true
ck$ german+english true
c$ polish+romanian+hungarian+czech+turkish true
sz polish+hungarian true
cs$ hungarian true
^cs hungarian true
dzs hungarian true
zs$ hungarian true
^zs hungarian true
^wl polish true
^wr polish+english+german+dutch true
gy$ hungarian true
gy[aeou] hungarian true
gy hungarian+russian+french+greeklatin true
guy french true
gu[ei] spanish+french+portuguese true
gu[ao] spanish+portuguese true
gi[aou] italian+greeklatin true
ly hungarian+russian+polish+greeklatin true
ny hungarian+russian+polish+spanish+greeklatin true
ty hungarian+russian+polish+greeklatin true
// 1.2 special characters
ć polish true
ç french+spanish+portuguese+turkish true
č czech true
ď czech true
ğ turkish true
ł polish true
ń polish true
ñ spanish true
ň czech true
ř czech true
ś polish true
ş romanian+turkish true
š czech true
ţ romanian true
ť czech true
ź polish true
ż polish true
ß german true
ä german true
á hungarian+spanish+portuguese+czech+greeklatin true
â romanian+french+portuguese true
ă romanian true
ą polish true
à portuguese true
ã portuguese true
ę polish true
é french+hungarian+czech+greeklatin true
è french+spanish+italian true
ê french true
ě czech true
ê french+portuguese true
í hungarian+spanish+portuguese+czech+greeklatin true
î romanian+french true
ı turkish true
ó polish+hungarian+spanish+italian+portuguese+czech+greeklatin true
ö german+hungarian+turkish true
ô french+portuguese true
õ portuguese+hungarian true
ò italian+spanish true
ű hungarian true
ú hungarian+spanish+portuguese+czech+greeklatin true
ü german+hungarian+spanish+portuguese+turkish true
ù french true
ů czech true
ý czech+greeklatin true
// Every Cyrillic word has at least one Cyrillic vowel (аёеоиуыэюя)
а cyrillic true
ё cyrillic true
о cyrillic true
е cyrillic true
и cyrillic true
у cyrillic true
ы cyrillic true
э cyrillic true
ю cyrillic true
я cyrillic true
// Every Greek word has at least one Greek vowel
α greek true
ε greek true
η greek true
ι greek true
ο greek true
υ greek true
ω greek true
// Arabic (only initial)
ا arabic true // alif (isol + init)
ب arabic true // ba'
ت arabic true // ta'
ث arabic true // tha'
ج arabic true // jim
ح arabic true // h.a'
خ' arabic true // kha'
د arabic true // dal (isol + init)
ذ arabic true // dhal (isol + init)
ر arabic true // ra' (isol + init)
ز arabic true // za' (isol + init)
س arabic true // sin
ش arabic true // shin
ص arabic true // s.ad
ض arabic true // d.ad
ط arabic true // t.a'
ظ arabic true // z.a'
ع arabic true // 'ayn
غ arabic true // ghayn
ف arabic true // fa'
ق arabic true // qaf
ك arabic true // kaf
ل arabic true // lam
م arabic true // mim
ن arabic true // nun
ه arabic true // ha'
و arabic true // waw (isol + init)
ي arabic true // ya'
آ arabic true // alif madda
إ arabic true // alif + diacritic
أ arabic true // alif + hamza
ؤ arabic true // waw + hamza
ئ arabic true // ya' + hamza
لا arabic true // ligature l+a
// Hebrew
א hebrew true
ב hebrew true
ג hebrew true
ד hebrew true
ה hebrew true
ו hebrew true
ז hebrew true
ח hebrew true
ט hebrew true
י hebrew true
כ hebrew true
ל hebrew true
מ hebrew true
נ hebrew true
ס hebrew true
ע hebrew true
פ hebrew true
צ hebrew true
ק hebrew true
ר hebrew true
ש hebrew true
ת hebrew true
// 2. following are rules to reject the language
// Every Latin character word has at least one Latin vowel
a cyrillic+hebrew+greek+arabic false
o cyrillic+hebrew+greek+arabic false
e cyrillic+hebrew+greek+arabic false
i cyrillic+hebrew+greek+arabic false
y cyrillic+hebrew+greek+arabic+romanian+dutch false
u cyrillic+hebrew+greek+arabic false
j italian false
j[^aoeiuy] french+spanish+portuguese+greeklatin false
g czech false
k romanian+spanish+portuguese+french+italian false
q hungarian+polish+russian+romanian+czech+dutch+turkish+greeklatin false
v polish false
w french+romanian+spanish+hungarian+russian+czech+turkish+greeklatin false
x czech+hungarian+dutch+turkish false // polish excluded from the list
dj spanish+turkish false
v[^aoeiu] german false // in german, "v" can be found before a vowel only
y[^aoeiu] german false // in german, "y" usually appears only in the last position; sometimes before a vowel
c[^aohk] german false
dzi german+english+french+turkish false
ou german false
a[eiou] turkish false // no diphthongs in Turkish
ö[eaiou] turkish false
ü[eaiou] turkish false
e[aiou] turkish false
i[aeou] turkish false
o[aieu] turkish false
u[aieo] turkish false
aj german+english+french+dutch false
ej german+english+french+dutch false
oj german+english+french+dutch false
uj german+english+french+dutch false
eu russian+polish false
ky polish false
kie french+spanish+greeklatin false
gie portuguese+romanian+spanish+greeklatin false
ch[aou] italian false
ch turkish false
son$ german false
sc[ei] french false
sch hungarian+polish+french+spanish false
^h russian false