% Reference: https://en.wikipedia.org/wiki/Help:IPA/Cantonese
% Jinchuan Tian (jinchuat@andrew.cmu.edu)

% We use double 'x' to indicate the transformed IPA part so that
% those IPAs will not be considered as Jyutping by mistake.

% definition
::init:: = f|h|j|g|k|gw|kw|l|m|n|ng|b|p|s|d|t|z|c|w
::tone:: = 1|2|3|4|5|6

% (1) whole and independent syllables
ng -> ŋ̍ / # _ #
m -> m̩ / # _ #

% (2) initial consonants, 19 items
f -> xfx / # _
h -> xhx / # _
j -> xjx / # _
gw -> xkʷx / # _
kw -> xkʷʰx / # _
g -> xkx / # _
k -> xkʰx / # _
l -> xlx / # _
m -> xmx / # _
n -> xnx / # _
ng -> xŋx / # _
b -> xpx / # _
p -> xpʰx / # _
s -> xsx / # _
d -> xtx / # _
t -> xtʰx / # _
z -> xtsx / # _
c -> xtsʰx / # _
w -> xwx / # _

% (3) finals, 51 items
oeng -> xœŋx / x _ (::tone::)
aang -> xaŋx / x _ (::tone::)
yut -> xyt̚x / x _ (::tone::)
yun -> xynx / x _ (::tone::)
ung -> xʊŋx / x _ (::tone::)
ong -> xɔŋx / x _ (::tone::)
oek -> xœk̚x / x _ (::tone::)
ing -> xɪŋx / x _ (::tone::)
eot -> xɵt̚x / x _ (::tone::)
eon -> xɵnx / x _ (::tone::)
eoi -> xɵɥx / x _ (::tone::)
eng -> xɛŋx / x _ (::tone::)
ang -> xɐŋx / x _ (::tone::)
aau -> xawx / x _ (::tone::)
aat -> xat̚x / x _ (::tone::)
aap -> xap̚x / x _ (::tone::)
aan -> xanx / x _ (::tone::)
aam -> xamx / x _ (::tone::)
aak -> xak̚x / x _ (::tone::)
aai -> xajx / x _ (::tone::)
yu -> xyx / x _ (::tone::)
ut -> xut̚x / x _ (::tone::)
un -> xunx / x _ (::tone::)
uk -> xʊk̚x / x _ (::tone::)
ui -> xujx / x _ (::tone::)
ou -> xɔwx / x _ (::tone::)
ot -> xɔt̚x / x _ (::tone::)
on -> xɔnx / x _ (::tone::)
ok -> xɔk̚x / x _ (::tone::)
oi -> xɔjx / x _ (::tone::)
oe -> xœx / x _ (::tone::)
iu -> xiwx / x _ (::tone::)
it -> xit̚x / x _ (::tone::)
ip -> xip̚x / x _ (::tone::)
in -> xinx / x _ (::tone::)
im -> ximx / x _ (::tone::)
ik -> xɪk̚x / x _ (::tone::)
ek -> xɛk̚x / x _ (::tone::)
ei -> xejx / x _ (::tone::)
au -> xɐwx / x _ (::tone::)
at -> xɐt̚x / x _ (::tone::)
ap -> xɐp̚x / x _ (::tone::)
an -> xɐnx / x _ (::tone::)
am -> xɐmx / x _ (::tone::)
ak -> xɐk̚x / x _ (::tone::)
ai -> xɐjx / x _ (::tone::)
aa -> xax / x _ (::tone::)
u -> xux / x _ (::tone::)
o -> xɔx / x _ (::tone::)
i -> xix / x _ (::tone::)
e -> xɛx / x _ (::tone::)

% (4) tones, 6 itmes
[1-6] -> 0 / _

% (5) remove all 'x'
x -> 0 / _