Buffer holds the memory on top of which a parse tree / syntax tree is constructed.
a Lexer reads tokens from a stream.
Define sets of token that are to be recognized as special keywords (as opposed to identifiers).
Return the origin of the given pointer (filename and line number)