The Rust parser.
The parser doesn't know about concrete representation of tokens and syntax
trees. Abstract `TokenSource` and `TreeSink` traits are used instead. As a
consequence, this crates does not contain a lexer.
The `Parser` struct from the `parser` module is a cursor into the sequence
of tokens. Parsing routines use `Parser` to inspect current state and
advance the parsing.
The actual parsing happens in the `grammar` module.
Tests for this crate live in `syntax` crate.