/// <summary>
 /// Creates a parser for an identifier
 /// </summary>
 /// <returns>the parser</returns>
 public static IParser <char, string> Identifier()
 {
     // identifier:
     //   available-identifier
     //   @ identifier-or-keyword
     return(Expect.OneOf(
                AvailableIdentifier(),
                Expect.Concatenation(
                    Expect.Char('@'),
                    IdentifierOrKeyWord(),
                    (at, identifierOrKeyWord) => string.Concat(at, identifierOrKeyWord))
                ));
 }