| Crates.io | ebnsf |
| lib.rs | ebnsf |
| version | 0.1.2 |
| created_at | 2025-03-04 06:32:24.58916+00 |
| updated_at | 2025-03-06 02:12:17.087975+00 |
| description | A CLI to generate railroad (syntax) diagrams from EBNF specs |
| homepage | |
| repository | https://github.com/brokenbyte/ebnsf |
| max_upload_size | |
| id | 1576825 |
| size | 33,101 |
Extended Backus-Naur Syntax FDiagrams
Create railroad diagrams from EBNF
Usage: ebnsf [OPTIONS] <INPUT>
Arguments:
<INPUT> File to read EBNF spec from
Options:
-o, --output <OUTPUT> Where to save the rendered SVG
-h, --help Print help
Run ebnsf ./test/bnf.ebnf -o ./doc/bnf.svg to turn
<syntax> ::= <rule>+
<rule> ::= <opt_whitespace> "<" <rule_name> ">" <opt_whitespace> "::=" <opt_whitespace> <group> <line_end>
<opt_whitespace> ::= " "*
<expression> ::= <list> (<opt_whitespace> "|" <opt_whitespace> <expression>)?
<group> ::= "(" <expression> ")" | <expression>
<line_end> ::= <opt_whitespace> "\n"+
<list> ::= <term> | <term> <opt_whitespace> <list>
<term> ::= <literal> | "<" <rule_name> ">"
<literal> ::= '"' <text> '"'
<text> ::= <character>+
<character> ::= <letter> | <digit>
<letter> ::= "[A-Za-z]"
<digit> ::= "[0-9]"
<rule_name> ::= <letter> <rule_char>*
<rule_char> ::= <letter> | <digit> | "_"
into
?, +, and * now supportedgrammars/bnf.ebnf file based on from BNF specification in EBNF form from https://bnfplayground.pauliankline.com/ > Examples > BNFgrammars/semver.ebnf from https://semver.org/spec/v2.0.0.html#backusnaur-form-grammar-for-valid-semver-versionsAdditional reading on EBNF syntax: