Lexer environment now stores source code

I think for this specific project it is better than storing a file
handle because most projects are small and contained in a singular
source file.