updated lexer.h to be more semantic