in lexer.go, line 164 the simple lexer can get a token reformatted/etc by a special function.
The special function returns the actual token to be used.
At line 185, the buffer is advanced by the length of the returned token from the Special function.
It should be advanced by the length of the consumed input.
Maybe Special should return the length it consumed?