timeLexer

This function breaks the time string into lexical units (tokens), which can be parsed by the parser. Lexical units are demarcated by changes in the character set, so any continuous string of letters is considered one unit, any continuous string of numbers is considered one unit.

The main complication arises from the fact that dots ('.') can be used both as separators (e.g. "Sep.20.2009") or decimal points (e.g. "4:30:21.447"). As such, it is necessary to read the full context of any dot-separated strings before breaking it into tokens; as such, this function maintains a "token stack", for when the ambiguous context demands that multiple tokens be parsed at once.

package
timeLexer
(
Range
)
(
Range r
)
if (
isInputRange!Range &&
is(Unqual!(ElementType!Range) == char)
)

Parameters

r Range

the range to parse

Return Value

Type: auto

a input range of strings

Meta