### 16 unstable releases (3 breaking)

0.4.3 | Sep 2, 2024 |
---|---|

0.4.2 | Aug 30, 2024 |

0.3.0 | Aug 28, 2024 |

0.2.0 | Aug 14, 2024 |

0.1.2 | Jun 25, 2024 |

#**1** in #bnf

**210** downloads per month

Used in **2** crates
(via kbnf)

**MIT**license

115KB

2.5K
SLoC

# ebnf

This crate is forked from ebnf to support kbnf syntax. This is currently intended as an internal crate for crate

.`kbnf`

###
`lib.rs`

:

ebnf - A successor bnf parsing library of bnf parsing library, for parsing Extended Backus–Naur form context-free grammars

The code is available on GitHub

## Disclaimer:

There are various variants of EBNF, which uses somewhat different syntactic conventions. This library takes EBNF Evaluator's example code as standard, which has almost most syntactic conventions on Wikipedia's page.

## What does a valid EBNF grammar looks like?

The following example is taken from EBNF Evaluator:

`filter ``:``:``=` `(` first `'` `'` `)``?` `(` number `'``~` `'` `)``?` `(` number `'`-`'` number `)` `(` `'` `'` number `'`~`'` `)``?` `(` `'` hz`'` `)``?` `(` `'` b`'` `)``?` `(` `'` i`'` `)``?` `(` `'` a`'` `)``?``;`
first `:``:``=` `#``'``[`a`-`za`-`z`]``[`a`-`za`-`z0`-``9_``+``]``*``'``;`
number `:``:``=` digits `(` `(` `'`.`'` `|` `'`,`'` `)` digits`?` `)``?``;`
digits `:``:``=` `#``'``[``0``-``9``]``+``'``;`

## How to use this library?

`extern` `crate` kbnf_syntax`;`
`fn` `main``(``)`` ``{`
`let` source `=` `r``"`
filter ::= ( first ' ' )? ( number '~ ' )? ( number '-' number ) ( ' ' number '~' )? ( ' hz' )? ( ' b' )? ( ' i' )? ( ' a' )?;
first ::= #'[a-za-z][a-za-z0-9_+]*';
number ::= digits ( ( '.' | ',' ) digits? )?;
digits ::= #'[0-9]+';
`"``;`
`let` result `=` `kbnf_syntax``::`get_grammar`(`source`)``;`
`}`

#### Dependencies

~8MB

~140K SLoC