33 releases (breaking)
✓ Uses Rust 2018 edition
|new 0.23.0||May 22, 2020|
|0.21.0||May 7, 2020|
|0.17.0||Mar 31, 2020|
|0.14.0||Dec 9, 2019|
|0.6.0||Nov 2, 2018|
#109 in Parser implementations
304 downloads per month
nomparsers for maximum flexibility
- high-performance, streaming, zero-copy parsing
- convenient abstractions: visitor pattern, input iterator
- complete CNF/FOF dialect support
- adherence to TPTP BNF: transform as you wish
- comprehensive test suite
$ cargo bench 100000 iterations, 2159 bytes of SYN000-1.p 1.03 seconds total (189.87 MB/s). 100000 iterations, 2702 bytes of SYN000+1.p 1.89 seconds total (123.13 MB/s). $
examples/validate currently checks 458MB of
CSR002+5.ax in under 4 seconds.
Since this is effectively recursive-descent parsing, extremely-deeply-nested structures will cause you to run out of stack: this has not been a problem in practice.
Parsers work only on byte slices: this is by design. If you want to read data from somewhere, either use
mmap(2) (useful for large files) or read data in chunks until you can parse an input. See
nom's streaming documentation.
- FOFX/TFF/THF support?