Backends:
o A pretty printer for a grammar
o Convert a full WSN grammar into a non-extended BNF form; feed this
back into the parser to check it.
o Check if a grammar is LL(N) (with N > 0), reporting constructs that
are not LL(1)
o For a grammar that is LL(N), try to reduce it to LL(n) (n < N)
o Generate language samples from a grammar. Feed these to a parser for
the language.
o Generate incorrect language samples from a grammar and feed these to a
parser for the language.