added a rudimentary lexer