Skip to content

GuntherRademacher/rr

Repository files navigation

RR

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:

if_stmt

try_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 the ebnf-convert Grammar Converter (note: IPv6-only). This tool is also available on GitHub.

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://www.bottlecaps.de/rr/ui (note: IPv6-only, see Links below for alternatives).

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.ebnf

For listing the full set of available options, run

   java -jar rr.war

without further command line arguments.

Building RR

For building RR, JDK 11 (or higher) must be available. In the project folder, run this command to build the distribution .zip file:

gradlew

Thanks

This project makes use of

License

RR is released under the Apache 2 License.

Links

The official website for RR is https://www.bottlecaps.de/rr/ui (note: IPv6-only).

Thanks to Vinay Sajip, RR also runs on https://rr.red-dove.com/ui (IPv4 accessible).