This represents a lexer object.
A lexer takes a source file and lexes it into tokens.
Note that this struct should not be controlled manually,
Simple function that lexes a source file into a token stream.
Exposes the functionality of the