word := begin rep.<1..4, syll> end;
syll := cons vowel;
end := cons vowel final | cons "é" final | cons "a" final | "r" | "n";

begin := vowel | initcons vowel;

cons ::= b c d d ch d f g g gn h j l l l lh m m m n n n nh
         p qu r s s s ss ss ss sc sc t t t tg tj tz tz tr rt v z;
initcons ::= b c d ch d f g gn h j l m n p qu r s sc t v;
vowel := 4: commonvowel | uncommonvowel;
commonvowel ::= a i u e é o;
uncommonvowel ::= à è ó ò í ú;
final := "s" | 6: "";

puts word;