code: function Sym(name) {
    let symbol = {};
    symbol.__proto__ = Sym.prototype;
    symbol.name = name;
    return symbol;
  }
docs: Constructor for the Sym class, which simply represents a non-terminal symbol
  in a grammar. While parsing, Syms are compared by reference, not by name. So,
  the name argument is optional as it serves no purpose for parsing. For
  debugging and evaluation of a parse tree, however, the name could be quite
  useful
  
  @class Sym
  @constructor
  @memberof module:lib/rules
  @param {string=} name - Name to give to the newly created symbol. Names do not
  need to be unique among Syms in a grammar, as they are not used to compare
  equality