basic lexer and highlighter