You’re not matching the NL rule because your SENTENCE rule will consume \n and \r characters (and produce a longer token than the NL rule).
You could fix that part by having SENTENCE be “not period or \n or \r” followed by a period. But, then, of course, you’re going to include the \n, \r as part of the content of your sentence.
You could create a SENTENCE_PART token that was everything that’s not a period, newline or carriage return. And then set up a “sentence” parser rule like “sentence: SENTENCE_PART+ ‘.’;
All of that said, you seem to be headed down the road of natural language parsing, and I think you’ll find the consensus here to be that ANTLR is the wrong tool for that. And, that probably accounts for the silence in response to your questions.