TokenId

Generates the token type identifier for the given symbol.

There are two special cases:

  • If symbol is "", then the token identifier will be 0
  • If symbol is "\0", then the token identifier will be the maximum valid token type identifier

In all cases this template will alias itself to a constant of type IdType. This template will fail at compile time if symbol is not one of the staticTokens, dynamicTokens, or possibleDefaultTokens.

template TokenId (
IdType
alias staticTokens
alias dynamicTokens
alias possibleDefaultTokens
string symbol
) {
enum tokens;
enum id;
enum id;
enum i;
enum id;
}

Examples

template tok(string symbol)
{
    alias tok = TokenId!(IdType, staticTokens, dynamicTokens,
        possibleDefaultTokens, symbol);
}
// num and plus are of type ubyte.
IdType plus = tok!"+";
IdType num = tok!"numberLiteral";

Meta