About
A Railroad is a diagram that permits to visualize a grammar. Same as Process - Flow Chart
Articles Related
Structure
A Railroad diagram is made of:
- a main diagram
- a set of syntax diagrams.
Each diagram has an entry point and an end point.
- Terminals are represented by round boxes
- Non-terminals are represented by square boxes.
It's describes possible paths going through other non-terminals and terminals. To belong to the language, an expression must describe a path starting form the main diagram.
Example
With RRDiagram and BNF syntax of H2 select SQL
<pre class="BNF">
'SELECT' [ 'TOP' term ] [ 'DISTINCT' | 'ALL' ] selectExpression {',' selectExpression} \
'FROM' tableExpression {',' tableExpression} [ 'WHERE' expression ] \
[ 'GROUP BY' expression {',' expression} ] [ 'HAVING' expression ] \
[ ( 'UNION' [ 'ALL' ] | 'MINUS' | 'EXCEPT' | 'INTERSECT' ) select ] [ 'ORDER BY' order {',' order} ] \
[ 'LIMIT' expression [ 'OFFSET' expression ] [ 'SAMPLE_SIZE' rowCountInt ] ] \
[ 'FOR UPDATE' ];
</pre>
Library
- RRDiagram
- Java: https://github.com/Chrriis/RRDiagram (Used by JOOQ)
- Rail Road Generator: Javascript + svg (not open source)
- Railroad-diagrams Javascript + svg
- Weltraumschaf/ebnf Php + Image, plugin dokuwiki