Quickstart

Installation

Install syntax-diagrams using Pip:

$ pip install syntax-diagrams

Describing diagrams

Describe a syntax diagram using constructors or YAML:

from syntax_diagrams import *

diagram = sequence(
    choice(
        terminal("lexer"),
        skip(),
        terminal("parser"),
    ),
    terminal("grammar"),
    non_terminal("identifier"),
    terminal(";"),
)
import yaml

from syntax_diagrams import *

diagram = yaml.safe_load("""
    - choice:
      - "lexer"
      -
      - "parser"
      default: 1
    - grammar
    - non_terminal: "identifier"
    - ";"
""")

Rendering diagrams

Render the diagram using render_svg or render_text:

svg = render_svg(diagram)

Customize rendering by providing SvgRenderSettings or TextRenderSettings:

svg = render_svg(
    diagram,
    max_width=500,
    settings=SvgRenderSettings(
        arrow_style=ArrowStyle.TRIANGLE,
        css_class="my-diagram",
    ),
)

Use online editor to play with diagram descriptions and settings.