簡體   English   中英

時間/日期范圍語法

[英]Time/Date range grammars

我需要解析包含時間跨度的字符串,例如:

  • 星期四6:30-7:30 AM
  • 2009年12月30日-2010年1月1日
  • 2009年1月15日,下午7:30至8:30
  • 星期四,上午6:30至7:30
  • 和別的...

添加

  • 6:30至7:30

和日期/時間,例如Word的insert-> date可以生成的大多數情況

如果任何東西都能涵蓋我需要涵蓋的所有情況,我會感到非常驚訝,所以我正在尋找語法起點。

好的,下面的語法分析了示例中的所有內容:

DTExp        = Day, ['-', Day]
Day          = DayExp, [[','], ['from'], TimeRange]
DayExp       = WeekDay
             | [Weekday], Month, DayNumber, [[','], YearNumber]
             | [Weekday], MonthNumber, '/', DayNumber, ['/', YearNumber]
TimeRange    = Time, [['-'|'to'] Time]
Time         = HourNumber, ':', MinuteNumber, ['AM'|'PM']
WeekDay      = 'monday' | 'tuesday' | ...
Month        = MonthNumber | MonthName
MonthName    = 'january' | 'february' | ...
DayNumber    = Number
MonthNumber  = Number
YearNumber   = Number, ['AD'|'BC']
HourNumber   = Number
MinuteNumber = Number

語法上有一個小問題。 如果讀取了DayExp,后跟一個時間和一個“-”,那么您可能會期望另一個DayExp或另一個時間。 但這可以通過提前完成來解決,因為如果是時間,則數字后跟一個“:”。

讓我們嘗試構造一個解析樹:

Thursday  6    :  30     -   7    :   30    AM
    |     |        |         |         |     |
WeekDay Number : Number  - Number : Number   |
    |     -----|----         -----|----------- 
    |         Time       -       Time
    |           ---------|---------
 DayExp              TimeRange
    ----------|-----------
             Day
              |
            DTExp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM