Ok, следующая грамматика разбирает что-либо в вашем примере:
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
Вы просто генерировать, что или это из какого-то другого источника. Просто любопытно. – BCS
Нет, я сгенерировал это. Я почти мечтаю в грамматике ;-). –
@ Gamecat - вам нужно хобби! : P – warren