charsets { lowerletter = 'a'..'z'; upperletter = 'A'..'Z'; } tokens { FirstUpper = upperletter (lowerletter)*; FirstLower = (lowerletter)+; Number = (digit)+ ['.' (digit)+]; Word = FirstUpper | FirstLower | Number; Colon = ':'; MidSentence = ',' | ';'; EndSentence = '.' | '!' | '?'. } productions { Text = (Sentence)+; Sentence = (FirstUpper (Word | MidSentence (Word)+)* Colon)* FirstUpper (Word | MidSentence (Word)+)* EndSentence; }