RR - Railroad Diagram Generator
RR is a generator of syntax diagrams, also known as railroad diagrams. It is a self-contained tool with both a browser-based GUI and a batch mode.
Besides generating diagrams from EBNF rules, RR also can perform some grammar transformation, e.g. factorization and elimination of direct recursion. To some extent this transforms BNF to EBNF, yielding more compact diagrams.
Examples
Here are two examples of generated diagrams (taken from the Python grammar):
if_stmt:
try_stmt:
Grammar syntax
RR accepts grammars in W3C-style EBNF. Some other representations, including some parser generator input notations, can be converted to W3C-style using Grammar Conversion.
Distribution
RR comes as a .zip, containing a .war file. The .war file can be deployed in servlet containers like Tomcat or Jetty for serving the GUI. This makes up the webapp that is running on the original website, https://bottlecaps.de/rr/ui.
The .war file is a Java "executable war", i.e. it can also be started standalone from command line. Two different tasks can be performed in standalone mode:
- serving the GUI, e.g.
java -jar rr.war -gui- batch diagram generation, e.g.
java -jar rr.war grammar.ebnfFor listing the full set of available options, run
java -jar rr.warwithout further command line arguments.
Building RR
For building RR, JDK 8 (or higher) must be available. In the project folder, run this command to build the distribution .zip file:
gradlewThanks
This project makes use of
License
RR is released under the Apache 2 License.
Links
The official website for RR is https://bottlecaps.de/rr/ui.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
