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