What kind of grammar does libcypher-parser use?
libcypher-parser uses a Parsing Expression Grammar (PEG), which is also the same approach that Neo4j uses in its Cypher implementation (both were implemented by @cleishm).
PEG's are a relatively new approach to describing language grammars, that offer some advantages for parsing software programming languages, such as ease of description, easier error handling and performance.
libcypher-parser uses a PEG implementation called leg, which generates C code. You can see the entire grammar here: https://github.com/cleishm/libcypher-parser/blob/master/src/lib/parser.leg