Maybe you can also add an explanation on why you're using a lexer instead of just regexp.