Ok, la grammaire suivante parse quoi que ce soit dans votre exemple:
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
Il y a un léger problème dans la grammaire. Si un DayExp est lu, suivi d'un Time et d'un '-', vous pouvez vous attendre à un autre DayExp ou à un autre moment. Mais ceci est résolu par un lookahead, parce que si c'est un temps, un nombre est suivi d'un ':'.
de construire permet d'essayer un arbre d'analyse syntaxique: (lien)
Thursday 6 : 30 - 7 : 30 AM
| | | | | |
WeekDay Number : Number - Number : Number |
| -----|---- -----|-----------
| Time - Time
| ---------|---------
DayExp TimeRange
----------|-----------
Day
|
DTExp
Est-ce que vous créez juste que ou est-il d'une autre source. Juste curieux. – BCS
Non, j'ai généré cela. Je rêve presque en grammaire ;-). –
@Gamecat - vous avez besoin d'un passe-temps! : P – warren