// Spaces
String Spacing = '.'? Spaces+;
String Spaces = ' ' / '\n' / '\t' / '\r';

String PostCmavo = !BU CmavoSpacing;
String CmavoSpacing = '.'? Spaces+ / &CMAVO / '.'? Spaces* !(Consonant Consonant / Vowel / OtherLetter);

String PreCmavo = ();

String anyWords = "AnyWords" Spacing;
String anyWord = CMAVO / BRIVLA / CMENE;
String anything = "AnyThing" Spacing;

String CMAVO = (Consonant / '.') Vowel (['] Vowel / Vowel)* CmavoSpacing;

//               /
// [bcdfgjklmnprstvxz][aeiou][bcdfgjklmnprstvxz]y?[bcdfgjklmnprstvxz]['a-z]*[aeiou]/
//               /
// [bcdfgjklmnprstvxz][aeiou]'?[aeiou][bcdfgjklmnprstvxz]{2}['a-z]*[aeiou]/
//               /
// [aeiou]('?[aeiou]){,2}[bcdfgjklmnprstvxz]{2}['a-z]*[aeiou]/
//BRIVLA = "broda" / "brode" / "brodi" / "brodo" / "brodu"
//String BRIVLA = "broda" Spacing / "brode" Spacing / "brodi" Spacing / "brodo" Spacing / "brodu";

String Consonant = [bcdfgjklmnprstvxz];
String Vowel = [aeiou];
String OtherLetter = ['y];
String LojbanLetter = Consonant / Vowel / OtherLetter;
String CmeneLetter = LojbanLetter / ',' / '.' / [BCDFGJKLMNPRSTVXZ] / [AEIOU] / [hY];

String BRIVLA = Consonant Consonant LojbanLetter LojbanLetter TailVowel
/ Consonant Vowel Consonant 'y'? Consonant TailVowel
/ Consonant Vowel [']? Vowel Consonant Consonant TailVowel;

String TailVowel = Vowel Spacing / LojbanLetter TailVowel;

// CMENE = /\.?[,'a-pr-z]+[bcdfgjklmnprstvxz]/
//CMENE = "cmene" / ".alis" / "bab"
// String CMENE = "cmene" Spacing / ".alis" Spacing / "bab";

String CMENE = '.'? CmeneLetter TailConsonant;

String TailConsonant = Consonant '.'? Spacing / CmeneLetter TailConsonant;
