в вашем случае использование предложения hidden()
должно помочь
Timestamp hidden()
:
year=INT '-' month=INT '-' day=INT 'T' hour=INT ':' minute=INT (':' second=INT)?
;
но есть еще одна проблема:
'T' hour=INT
, который требует пробелов вокруг T
, в противном случае идентификатор будет проанализирован.
Вы можете преодолеть эту проблему, используя фрагменты
Timestamp
:
Date 'T' Time
;
fragment Date hidden():
year=INT '-' month=INT '-' day=INT
;
fragment Time hidden():
hour=INT ':' minute=INT (':' second=INT)?
;
но проблема все еще в том, что ему требуются пробелы
=> Я предлагаю ввести терминальное правило для всего этого (не уверен, что у вас есть конфликтующие)
Timestamp
:
ts=TS
;
terminal TS: INT'-'INT'-'INT'T'INT':'INT(':'INT)?;