Change Lexer API: Remove IDType parameter, it can be retrieved via the Token parameter. Re-arrange parameters so tokens are in order and can be used as a typetuple through multiple other templated functions.

This commit is contained in:
Andrej Mitrovic 2014-02-11 12:05:10 +01:00
parent a5d7bf0956
commit ab067e5732
2 changed files with 6 additions and 5 deletions

View File

@ -399,8 +399,8 @@ public struct DLexer
{
import core.vararg;
mixin Lexer!(IdType, Token, lexIdentifier, isSeparating, operators,
dynamicTokens, pseudoTokenHandlers, keywords);
mixin Lexer!(Token, lexIdentifier, isSeparating, pseudoTokenHandlers,
operators, dynamicTokens, keywords);
this(ubyte[] range, const LexerConfig config, StringCache* cache)
{

View File

@ -367,10 +367,11 @@ public:
* }
* ---
*/
mixin template Lexer(IDType, Token, alias defaultTokenFunction,
alias tokenSeparatingFunction, alias staticTokens, alias dynamicTokens,
alias tokenHandlers, alias possibleDefaultTokens)
mixin template Lexer(Token, alias defaultTokenFunction,
alias tokenSeparatingFunction, alias tokenHandlers,
alias staticTokens, alias dynamicTokens, alias possibleDefaultTokens)
{
alias IDType = typeof(Token.type);
static assert (tokenHandlers.length % 2 == 0, "Each pseudo-token must"
~ " have a corresponding handler function name.");