a separate module from the parser,
        feeding the parser with a stream of input tokens only. Theoretically it is
        not necessary implement this separation as in the end there is only one set
        of syntactical rules defining the language, so in theory we could write the
        whole parser in one module. In fact, <span class="emphasis"><em>Spirit.Qi</em></span> allows
        you to write parsers without using a lexer, parsing the input character stream
        directly, and for the most par