The Rail package allows you to include syntax diagrams (also known as railroad diagrams) in a LaTeX document. Such a diagram looks like this:
The idea is that any sequence of terminals and nonterminals that can be produced by starting at the left and following the lines is a valid sentence of some language. As such, these diagrams are analogous to BNF with embedded regular expressions for each right-hand side. Actually, the input language looks like that, except that production rules need not be named and there is some extra annotation. This document describes version 1.0 #1 of the Rail package.