A simple module to process 'literate' documents.
The module uses a lexer to split the document into code blocks,
delineated by user-defined markers, and code lines that are
indicated be a line marker. The lexer returns a document stripped
of non-code elements but preserving the original document's line
count. Column numbering of code lines are not preserved.
The underlying tokeniser is greedy.
Once it identifies a line marker it reads a prettifying space then
consumes until the end of line. Once identifies a starting code
block marker, the lexer will consume input until the next
identifiable end block is encountered. Any other content is
treated as part of the original document.
Thus, the input literate files *must* be well-formed w.r.t
to code line markers and code blocks.
A further restriction is that literate documents cannot contain
the markers within the document's main text: This will confuse the
lexer.