1
我有一條規則來匹配年,月,日,小時,分鐘和秒指定的時間段。我想要允許這些的任何組合,只要至少有一個,並且它們按照該順序出現。ANTLR4規則爲一個或多個選項*的順序*
例如:
- 3年,5天
- 2個月,17秒
但不是:
- 1天,1個月
- 5分鐘,2小時
我現在的原則是:
period
: years=INTEGER YEARS (LIST_DELIM months=INTEGER MONTHS)? (LIST_DELIM days=INTEGER DAYS)? (LIST_DELIM hours=INTEGER HOURS)? (LIST_DELIM minutes=INTEGER MINUTES)? (LIST_DELIM seconds=INTEGER SECONDS)?
| months=INTEGER MONTHS (LIST_DELIM days=INTEGER DAYS)? (LIST_DELIM hours=INTEGER HOURS)? (LIST_DELIM minutes=INTEGER MINUTES)? (LIST_DELIM seconds=INTEGER SECONDS)?
| days=INTEGER DAYS (LIST_DELIM hours=INTEGER HOURS)? (LIST_DELIM minutes=INTEGER MINUTES)? (LIST_DELIM seconds=INTEGER SECONDS)?
| hours=INTEGER HOURS (LIST_DELIM minutes=INTEGER MINUTES)? (LIST_DELIM seconds=INTEGER SECONDS)?
| minutes=INTEGER MINUTES (LIST_DELIM seconds=INTEGER SECONDS)?
| seconds=INTEGER SECONDS
;
這感覺就像一個相當數量的冗餘。有什麼辦法可以簡化嗎?