ANTLR не поддерживает обратные ссылки. Единственный способ указать, что все цифры должны быть одинаковыми, это прописать все комбинации вручную:
ThreeDigitHex: '#000' | '#111' | ... | '#fff';
В дополнение к раздражению, это также означает, что что-то вроде #abc
даст вам кое-чтокак "Неожиданный '#', ожидаемый ThreeDigitHex, ColorName или SixDigitHex", что не особенно полезно.
Лучшей альтернативой может быть просто разрешить любые три цифры и затем добавить действие, которое проверяет, все ли цифры являютсято же самое и выдает значимую ошибку (например, «Все цифры в трехбуквенном шестнадцатеричном коде должны быть одинаковыми»), если они не совпадают.
Все это говорит, я не обязательно думаю, что этот конкретныйограничение имеет много смысла. Реальный CSS позволяет без проблем использовать #abc
в качестве ярлыка для #aabbcc
, поэтому неясно, почему вы приложили дополнительные усилия, чтобы сделать вашу версию CSS менее совместимой с реальным CSS.