Code for defining grammar values from a nice user-level syntax.

E.g.,

   val exprG_def = grammarLib.mk_grammar_def
       { tokmap = tm, start = "E", tokty = ``:token``,
         nt_tyname = "exprNT", gname = "exprG",
         mkntname = (fn s => "n" ^ s) }
       `E ::= E "*" F | F;
        F ::= F "+" T | T;
        T ::= <Number> | "(" E ")";`

where the tm value is a function mapping from strings (those that
appear between double quotes in the quotation) to terms of type token.

This function also defines the datatype for the non-terminals.