A parser is a type of function that parses a sequence of tokens. Tokens can be anything except null. A parser p is called repeatedly, like this: p t, one token at a time. The return value that indicates acceptance of the input token is a new parser, which replaces the old, and is ready to accept the next token; the original parser p should not change its internal state. The return value that indicates rejection of the input token is null. Rejection may be interpreted as a syntax error.
When the input stream is exhausted, we call p one more time like this: p null. The return value is null if the parser is not in a terminal state. Otherwise the return value is the parsed (and possibly evaluated) result.
The object Parser is a self initializing type, with ancestor classes FunctionClosure < Function < Thing.