GrammKit is a tool for generating syntax diagrams (also known as railroad diagrams) for parser grammars. Check out the online version.
Currently two grammar formats are supported:
- PEG.js - it is parsed into internal AST of PEG.js which is then translated using peg-rd.js.
- EBNF defined in W3C standards - it parsed into AST using parse-ebnf.pegjs
Is uses the railroad-diagrams library to generate SVG images.
npm install grammkit
var grammkit = require('grammkit');
var parse = require('pegjs/lib/parser').parse;
var grammar = parse('start = left ("+" / "-") right');
grammkit.diagram(grammar.rules[0]);
// => '<svg>...</svg>'
The SVG renders as: