So,

Code:
lexer == scanner == tokenizer
And... a...

A lexer is often organized as separate scanner and tokenizer functions
Scanner : Scan, its job to scan thing.
Tokenizer : Tokenize, its job to tokenize thing.

While a Tokenizer need a Scanner, without it, what thing to be tokenized?

Code:
Scanner
   |
Tokenizer
And a Tokenizer is always a Scanner?

So, it means a Tokenizer == Lexer and Scanner != Lexer, but it's part of Lexer?

I think scanner and tokenizer are part of lexer...