$wb=[^[:L:][:M:]];

$alpha = [abcdefghijklmnopqrstuvwxyz];
$cons = [bcdfghjklmnpqrstvwxyz];
$nonsyllabic = [ábcdfghjklmnópqrstúvwxyz#]

# broad future/conditional endings
$bfce = [á{adh}{aidh}{aidís}{aimid}{aimis}{ainn}{as}];
# slender future/conditional endings
$sfce = [{eá}{eadh}{idh}{idís}{imid}{imis}{inn}];
$l = [{ll}l];
$mn = [mn];
$fmp = [fmp];
$lnr = [lnr];
$lrst = [lrst];
$dnlst = [dnlst];
$dnst = [dnst];
$rdnlr = [{rd}{rn}{rl}{rr}];
$vowel = [aáeéiíoóuú];
# left context short broad vowel
$lcsbv = [{ea}{io}{iu}aou];
# left context short slender vowel
$lcssv = [{ai}{eai}{ei}e{iui}i{oi}{ui}];
# left context broad vowel
$lcbv = [{adh}{ae}{ao}aá{ea}{eá}{eo}{éa}{io}{iu}{iú}{ío}oó{uío}uú];
# right context broad vowel
$rcbv = [{aei}{ae}{ai}{aoi}{ao}{a}{ái}á{oi}o{ói}ó{ui}{uío}{uí}u{úi}ú];
# left context slender vowel
$lcsv = [{aei}{aidh}{ai}{aí}{aoi}{ái}{eai}{eái}{ei}{eoi}e{éi}é{iai}{iui}{iúi}ií{oi}{ói}{uai}{ui}{uí}{úi}];
# right context slender vowel
$rcsv = [{aei}{ea}{eái}{eá}{ei}{eoi}e{éa}{éi}é{iai}{ia}{io}{iui}{iu}{iúi}{iú}i{ío}í];
# left context long vowel
$lclv = [{aei}{ae}{aoi}{ao}{ái}{á}{eái}{eá}{eoi}{eó}{eo}{éi}é{iúi}{iú}{ío}í{ói}ó{uío}{uí}{úi}ú];
# left context slender long vowel
$lcslv = [{aei}{aidh}{aoi}{ái}{eái}{eoi}{éi}é{iúi}í{ói}{uai}{uí}{úi}];

ádh → AA _;
ái → AA _;
á → AA _;

abh → ABH _;
adh } $wb → ADH _;
adh → AI _;
agh → AI _;
aei → EE _;
ae → EE _;
aíodh } $wb → ÍODH;
aío → AÍO _;
aí → II _;
aidh } $wb → IDH;
aidh → AI _;
aigh } $wb → IGH;
aigh → AI _;
aithe } $wb → ITHE;
$wb $cons* $vowel* abh { ai } $cons+ → '';
$wb $cons* $vowel* adh { ai } $cons+ → '';
$wb $cons* $vowel* agh { ai } $cons+ → '';
$wb $cons* $vowel* amh { ai } $cons+ → '';
$wb $cons* obh { ai } $cons+ → '';
$wb $cons* $vowel* ódh { ai } $cons+ → '';
$wb $cons* odh { ai } $cons+ → '';
$wb $cons* $vowel* ogh { ai } $cons+ → '';
$wb $cons* $vowel* omh { ai } $cons+ → '';
$wb $cons* $vowel* umh { ai } $cons+ → '';

$wb $cons* { ai } $rdnlr → AA _;
$wb $cons* { ai → A _;

$vowel+ $cons+ { ai → @@;
ai → A;
amh { $wb → AMH;
amh → AU _;
aoi → AO;
ao → AO;

$wb $cons* $vowel* abh { a } $cons+ → '';
$wb $cons* $vowel* adh { a } $cons+ → '';
$wb $cons* $vowel* agh { a } $cons+ → '';
$wb $cons* $vowel* amh { a } $cons+ → '';
$wb $cons* obh { a } $cons+ → '';
$wb $cons* $vowel* ódh { a } $cons+ → '';
$wb $cons* odh { a } $cons+ → '';
$wb $cons* $vowel* ogh { a } $cons+ → '';
$wb $cons* $vowel* omh { a } $cons+ → '';
$wb $cons* $vowel* umh { a } $cons+ → '';

$wb $cons* { a } $rdnlr → AA _;
$wb $cons* { a → A _;

$vowel+ $cons+ { a → @ _;
a → A _;

éa → EE _;
éi → EE _;
é → EE _;

eái → AA _;
eá → AA _;
eabh → ABH _;
eadh } $wb → ADH;
eadh → AU _;
eagh → AI _;
eai → A _;
eamh } $wb → AMH;
$wb $cons* eamh → AU _;
$wb $cons* $vowel igh { ea } $cons+ → '';
abhainn	ABH NNJ
bualadh	B U@ LL ADH
sadhbh	S AI V
saghas	S AI S
gaeilge	G EE LJ GJ @@
saolaíodh	S AO LL ÍODH
gardaí	G AA R D II
dúnfaidh	D UU NN_D IDH
aidhm	AI MJ
cheadaigh	XJ A D IGH
aighneas	AI NJ @@ S
diúltaithe	DJ UU LL T ITHE
seabhaic	SJ ABH KJ
feadhain	FJ AU NJ
teaghais	TJ AI SJ
eamhain	AU NJ
lobhair	LL OBH RJ
leódhais	LJ OO SJ
bodhair	B ODH RJ
eoghain	OO NJ
broghais	B R OGH SJ
comhair	K OO RJ
ciumhais	KJ UU SJ
airde	AA RJ DJ @@
cait	K A TJ
sodair	S O D @@ RJ
ait	A TJ
déanamh	DJ EE NN AMH
amharc	AU R K
gaoil	G AO LJ
gaol	G AO L
seabhac	SJ ABH K
ceadharlach	KJ AU R LL @@ X
teaghasán	TJ AI S AA NN
lobhar	LL OBH R
leódhas	LL OO S
bodhar	B ODH R
eoghan	OO NN
bogha	B OGH
comhar	K OO R
dumhach	D UU X
ard	AA R D
cat	K A T
sodar	S O D @@ R
at	A T
éan	EE NN
éiníní	EE NJ II NJ II
é	EE