Я думаю, что лексер помещает ваш первый период в токен FLOAT, а затем оставшиеся два периода не делают ваш токен AUTO. Вам понадобится предикат, чтобы определить, должна ли точка быть частью числа с плавающей запятой или автоматического токена.
Так почему же вы используете три периода вместо двух, языки должны использовать два периода для «диапазона», и язык должен определить, является ли период частью числа с плавающей запятой или диапазоном на основе следующего «символа». *
Возможно, вам нужно изучить Справочник ANTLR о том, как создать предикат для различных правил.
Надеюсь, это поможет вам найти правильный способ выполнить задачу.