• Home
  • Raw
  • Download

Lines Matching +full:rust +full:- +full:embedded

3 [![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
4 …https://gitter.im/Geal/nom?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=bad…
8 … rustc version](https://img.shields.io/badge/rustc-1.48.0+-lightgray.svg)](#rust-version-requireme…
10 nom is a parser combinators library written in Rust. Its goal is to provide tools
12 that end, it uses extensively Rust's *strong typing* and *memory safety* to produce
20 <!-- toc -->
22 - [Example](#example)
23 - [Documentation](#documentation)
24 - [Why use nom?](#why-use-nom)
25 - [Binary format parsers](#binary-format-parsers)
26 - [Text format parsers](#text-format-parsers)
27 - [Programming language parsers](#programming-language-parsers)
28 - [Streaming formats](#streaming-formats)
29 - [Parser combinators](#parser-combinators)
30 - [Technical features](#technical-features)
31 - [Rust version requirements](#rust-version-requirements-msrv)
32 - [Installation](#installation)
33 - [Related projects](#related-projects)
34 - [Parsers written with nom](#parsers-written-with-nom)
35 - [Contributors](#contributors)
37 <!-- tocstop -->
41 [Hexadecimal color](https://developer.mozilla.org/en-US/docs/Web/CSS/color) parser:
43 ```rust
59 fn from_hex(input: &str) -> Result<u8, std::num::ParseIntError> {
63 fn is_hex_digit(c: char) -> bool {
67 fn hex_primary(input: &str) -> IResult<&str, u8> {
74 fn hex_color(input: &str) -> IResult<&str, Color> {
95 - [Reference documentation](https://docs.rs/nom)
96 - [Various design documents and tutorials](https://github.com/Geal/nom/tree/main/doc)
97 - [List of combinators and their behaviour](https://github.com/Geal/nom/blob/main/doc/choosing_a_co…
99 …our parsers, please ping `geal` on IRC (libera, geeknode, oftc), go to `#nom-parsers` on Libera IR…
111 - [TLV](https://en.wikipedia.org/wiki/Type-length-value)
112 - Bit level parsing
113 - Hexadecimal viewer in the debugging macros for easy data analysis
114 - Streaming parsers for network formats and huge files
118 - [FLV parser](https://github.com/rust-av/flavors)
119 - [Matroska parser](https://github.com/rust-av/matroska)
120 - [tar parser](https://github.com/Keruspe/tar-parser.rs)
128 - Fast case insensitive comparison
129 - Recognizers for escaped strings
130 - Regular expressions can be embedded in nom parsers to represent complex character patterns succin…
131 - Special care has been given to managing non ASCII characters properly
135 - [HTTP proxy](https://github.com/sozu-proxy/sozu/tree/main/lib/src/protocol/http/parser)
136 - [TOML parser](https://github.com/joelself/tomllib)
152 - [PHP VM](https://github.com/tagua-vm/parser)
153 - eve language prototype
154 - [xshade shading language](https://github.com/xshade-lang/xshade/)
170 - [HTTP proxy](https://github.com/sozu-proxy/sozu/tree/main/lib/src/protocol/http/parser)
171 - [Using nom with generators](https://github.com/Geal/generator_nom)
187 - The parsers are small and easy to write
188 - The parsers components are easy to reuse (if they're general enough, please add them to nom!)
189 - The parsers components are easy to test separately (unit tests and property-based tests)
190 - The parser combination code looks close to the grammar you would have written
191 - You can build partial parsers, specific to the data you need at the moment, and ignore the rest
196 - [x] **byte-oriented**: The basic type is `&[u8]` and parsers will work as much as possible on byt…
197 - [x] **bit-oriented**: nom can address a byte slice as a bit stream
198 - [x] **string-oriented**: The same kind of combinators can apply on UTF-8 strings as well
199 - [x] **zero-copy**: If a parser returns a subset of its input data, it will return a slice of that…
200 - [x] **streaming**: nom can work on partial data and detect when it needs more data to produce a c…
201 - [x] **descriptive errors**: The parsers can aggregate a list of error codes with pointers to the …
202 - [x] **custom error types**: You can provide a specific type to improve errors returned by parsers
203 - [x] **safe parsing**: nom leverages Rust's safe memory handling and powerful types, and parsers a…
204 - [x] **speed**: Benchmarks have shown that nom parsers often outperform many parser combinators li…
208 ## Rust version requirements (MSRV)
210 …pports **Rustc version 1.48 or greater**. It is known to work properly on Rust 1.41.1 but there is…
233 default-features = false
239 - [Get line and column info in nom's input type](https://github.com/fflorent/nom_locate)
240 - [Using nom as lexer and parser](https://github.com/Rydgel/monkey-rust)
246 - Text file formats: [Ceph Crush](https://github.com/cholcombe973/crushtool),
248 [XFS Runtime Stats](https://github.com/ChrisMacNaughton/xfs-rs),
249 [CSV](https://github.com/GuillaumeGomez/csv-parser),
250 [FASTA](https://github.com/TianyiShi2001/nom-fasta),
254 [libconfig-like configuration file format](https://github.com/filipegoncalves/rust-config),
256 [PDB](https://github.com/TianyiShi2001/nom-pdb),
257 [proto files](https://github.com/tafia/protobuf-parser),
258 [Fountain screenplay markup](https://github.com/adamchalmers/fountain-rs),
259 …/github.com/chipsenkbeil/vimwiki-server/tree/master/vimwiki) & [vimwiki_macros](https://github.com…
260 - Programming languages:
261 [PHP](https://github.com/tagua-vm/parser),
264 [Lua](https://github.com/doomrobo/nom-lua53),
265 [Python](https://github.com/ProgVal/rust-python-parser),
266 [SQL](https://github.com/ms705/nom-sql),
267 [Elm](https://github.com/cout970/Elm-interpreter),
268 [SystemVerilog](https://github.com/dalance/sv-parser),
270 [CSML](https://github.com/CSML-by-Clevy/csml-interpreter),
271 [Wasm](https://github.com/Strytyp/wasm-nom),
274 - Interface definition formats: [Thrift](https://github.com/thehydroimpulse/thrust)
275 - Audio, video and image formats:
278 [midi](https://github.com/derekdreery/nom-midi-rs),
279 [SWF](https://github.com/open-flash/swf-parser),
280 [WAVE](http://github.com/noise-Labs/wave),
281 [Matroska (MKV)](https://github.com/rust-av/matroska)
282 - Document formats:
283 [TAR](https://github.com/Keruspe/tar-parser.rs),
284 [GZ](https://github.com/nharward/nom-gzip),
285 [GDSII](https://github.com/erihsu/gds2-io)
286 - Cryptographic formats:
287 [X.509](https://github.com/rusticata/x509-parser)
288 - Network protocol formats:
290 [D-Bus](https://github.com/toshokan/misato),
291 [DHCP](https://github.com/rusticata/dhcp-parser),
292 [HTTP](https://github.com/sozu-proxy/sozu/tree/main/lib/src/protocol/http),
294 [IMAP](https://github.com/djc/tokio-imap),
295 [IRC](https://github.com/Detegr/RBot-parser),
296 [Pcap-NG](https://github.com/richo/pcapng-rs),
297 [Pcap](https://github.com/ithinuel/pcap-rs),
298 [Pcap + PcapNG](https://github.com/rusticata/pcap-parser),
299 [IKEv2](https://github.com/rusticata/ipsec-parser),
300 [NTP](https://github.com/rusticata/ntp-parser),
301 [SNMP](https://github.com/rusticata/snmp-parser),
302 [Kerberos v5](https://github.com/rusticata/kerberos-parser),
303 [DER](https://github.com/rusticata/der-parser),
304 [TLS](https://github.com/rusticata/tls-parser),
305 [IPFIX / Netflow v10](https://github.com/dominotree/rs-ipfix),
306 [GTP](https://github.com/fuerstenau/gorrosion-gtp),
308 [Prometheus](https://github.com/timberio/vector/blob/master/lib/prometheus-parser/src/line.rs)
309 - Language specifications:
311 - Misc formats:
312 [Gameboy ROM](https://github.com/MarkMcCaskey/gameboy-rom-parser),
313 [ANT FIT](https://github.com/stadelmanma/fitparse-rs),
314 [Version Numbers](https://github.com/fosskers/rs-versions),
315 [Telcordia/Bellcore SR-4731 SOR OTDR files](https://github.com/JamesHarrison/otdrs),
317 [URI](https://github.com/Skasselbard/nom-uri),
319 [Wordle Result](https://github.com/Fyko/wordle-stats/tree/main/parser)
330 <img src="https://contributors-img.web.app/image?repo=geal/nom" />