Mine
public text v1 · immutablecharsets {
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;
}