-*- mode: org -*-
* grammar

    program ::= range assignments
      range ::= number ELLIPSIS number
assignments ::= assignment assignments
              | epsilon
 assignment ::= word EQUALS number
       word ::= WORD
     number ::= NUMBER

* grammar, refactored

  no need!

* first

    number      = { NUMBER }
    word        = { WORD }
    assignment  = { WORD }
    assignments = { WORD, epsilon }
    range       = { NUMBER }
    program     = { NUMBER }

* follow

    program     = { $ }
    range       = { WORD, $ }
    assignments = { $ }
    assignment  = { WORD, $ }
    word        = { EQUALS }
    number      = { ELLIPSIS, WORD, $ }

* table

                | NUMBER                 | WORD                   | $
    =========== | =========================================================
    program     | range assignments      | ---                    | ---
    range       | number ELLIPSIS number | ---                    | ---
    assignments | ---                    | assignment assignments | epsilon
    assignment  | ---                    | word EQUALS number     | ---
    word        | ---                    | WORD                   | ---
    number      | NUMBER                 | ---                    | ---

  The columns for ELLPSIS and EQUALS are empty.

*
