Automatic layout of railroad diagrams
Abstract
Railroad diagrams (also called "syntax diagrams") are a common, intuitive visualization of grammars, but limited tooling and a lack of formal attention to their layout mostly confines them to hand-drawn documentation. We present the first formal treatment of railroad diagram layout along with a principled, practical implementation. We characterize the problem as compiling a *diagram language* (specifying conceptual components and how they connect and compose) to a *layout language* (specifying basic graphical shapes and their sizes and positions). We then implement a compiler that performs *line wrapping* to meet a target width, as well as vertical *alignment* and horizontal *justification* per user-specified policies. We frame line wrapping as an optimization problem, where we describe principled dimensions of optimality and implement corresponding heuristics. For front-end evaluation, we show that our diagram language is well-suited for common applications by describing how regular expressions and Backus-Naur form can be compiled to it. For back-end evaluation, we argue that our compiler is practical by comparing its output to diagrams laid out by hand and by other tools.
Keywords
Cite
@article{arxiv.2509.15834,
title = {Automatic layout of railroad diagrams},
author = {Shardul Chiplunkar and Clément Pit-Claudel},
journal= {arXiv preprint arXiv:2509.15834},
year = {2025}
}
Comments
24 pages (+2 appendix, +3 references); 22 figures (+4 appendix); 3 tables