-*- mode: org -*-
* grammar

    drawing  → row*
    row      → repeat chunk+ ";"
    repeat   → INTEGER
    chunk    → INTEGER CHAR

* grammar, refactored

    drawing  → row drawing
             | ε
    row      → repeat chunks ";"
    chunks   → chunk chunks
             | ε
    repeat   → INTEGER
    chunk    → INTEGER CHAR

* first

    chunk    → INTEGER
    repeat   → INTEGER
    chunks   → INTEGER, ε
    row      → INTEGER
    drawing  → INTEGER, ε

* follow

    drawing  → $
    row      → INTEGER, $
    chunks   → ';'
    repeat   → INTEGER, ';'
    chunk    → INTEGER, ';'

* table
               INTEGER               STRING    ;     $
    drawing    → row drawing         ---       ---   → ε
    row        → repeat chunks ";"   ---       ---   ---
    chunks     → chunk chunks        ---       → ε   ---
    repeat     → INTEGER             ---       ---   ---
    chunk      → INTEGER CHAR        ---       ---   ---

* grammar, refactored

    drawing  → row drawing
             | MAKE-drawing
    row      → repeat chunks ";" MAKE-row
    chunks   → chunk chunks
             | ε
    repeat   → INTEGER MAKE-repeat
    chunk    → INTEGER CHAR MAKE-chunk

