This program is tentative and subject to change.
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 optimization, 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.
This program is tentative and subject to change.
Fri 3 JulDisplayed time zone: Brussels, Copenhagen, Madrid, Paris change
16:00 - 17:10 | |||
16:00 23mTalk | A Simple Recipe for Writing Decent Recursive Descent Parsers (Pearl) Technical Papers Luyu Cheng Hong Kong University of Science and Technology, Lionel Parreaux HKUST (The Hong Kong University of Science and Technology) | ||
16:23 23mTalk | Automatic layout of railroad diagrams Technical Papers Pre-print | ||
16:46 23mTalk | A Stable Lossless Syntax Tree for Real-time Collaborative Programming Technical Papers | ||