Analysis updated 2026-07-30 · repo last pushed 2021-11-03
Build a parser for a custom binary file format like a video or image container.
Parse text-based data formats such as JSON, CSV, or configuration files.
Prototype a new programming language by writing a parser for its syntax.
Process streaming network data that arrives in chunks rather than all at once.
| veykril/nom | 00kaku/gallery-slider-block | 04amanrajj/netwatch | |
|---|---|---|---|
| Stars | — | — | 0 |
| Language | — | JavaScript | Rust |
| Last pushed | 2021-11-03 | 2021-05-19 | — |
| Maintenance | Dormant | Dormant | — |
| Setup difficulty | moderate | easy | moderate |
| Complexity | 3/5 | 2/5 | 3/5 |
| Audience | developer | general | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Requires familiarity with Rust and adding the nom crate as a dependency via Cargo.
nom is a Rust library that helps developers build parsers, code that reads structured data (like a file, a network message, or a line of text) and breaks it into meaningful pieces. Instead of hand-writing tedious and error-prone parsing logic, you assemble small, reusable functions that each handle one tiny task, and combine them to process complex formats. The approach is called "parser combinators." Rather than writing a grammar in a separate file and generating code from it, you write code that directly describes what you're looking for. You might say "take a #, then two hex digits, then two more, then two more", and that assembles into a parser for CSS color values. Because the building blocks are small and focused, they're easy to test and reuse across projects. The code ends up looking a lot like a description of the format itself. This library shines for binary formats (like video files or network packets), text formats (like JSON or CSV), and even programming language prototyping. Real projects using it include parsers for GIF, TLS, HTTP, Kerberos, SQL, Lua, and many others. It also handles streaming data, when data arrives in chunks rather than all at once, the parser can recognize that it needs more input rather than guessing and returning wrong results. Two things stand out. First, it's designed around Rust's safety guarantees, which means parsers built with it avoid common bugs like buffer overflows. Second, it's fast, benchmarks suggest it often outperforms comparable libraries and even some handwritten C parsers. It also supports zero-copy parsing, meaning it can reference parts of the input directly rather than copying data around. For anyone working in Rust who needs to read and understand a structured data format, this is a battle-tested starting point with a large ecosystem of existing parsers to learn from.
nom is a Rust library for building parsers by combining small, reusable functions. It helps you read and break apart structured data like text files, binary formats, or network messages.
Dormant — no commits in 2+ years (last push 2021-11-03).
You can use this library freely for any purpose, including commercial projects, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.