Mercurial > projects > dil
changeset 252:788398655d24
- Changed some string types to Token*. Adapted parser accordingly.
author | aziz |
---|---|
date | Wed, 01 Aug 2007 17:07:02 +0000 |
parents | 67a798459532 |
children | 4279b638c63e |
files | trunk/src/Declarations.d trunk/src/Expressions.d trunk/src/Parser.d |
diffstat | 3 files changed, 26 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Declarations.d Wed Aug 01 16:08:02 2007 +0000 +++ b/trunk/src/Declarations.d Wed Aug 01 17:07:02 2007 +0000 @@ -399,9 +399,9 @@ class MixinDeclaration : Declaration { Expression[] templateIdent; - string mixinIdent; + Token* mixinIdent; Expression assignExpr; // mixin ( AssignExpression ) - this(Expression[] templateIdent, string mixinIdent) + this(Expression[] templateIdent, Token* mixinIdent) { super(false); this.templateIdent = templateIdent;
--- a/trunk/src/Expressions.d Wed Aug 01 16:08:02 2007 +0000 +++ b/trunk/src/Expressions.d Wed Aug 01 17:07:02 2007 +0000 @@ -292,7 +292,7 @@ this(Expression e) { super(e); } } - +/+ class DotIdExpression : UnaryExpression { string ident; @@ -302,7 +302,8 @@ this.ident = ident; } } - ++/ +/+ class DotTemplateInstanceExpression : UnaryExpression { string ident; @@ -314,7 +315,7 @@ this.targs = targs; } } - ++/ class PostDotListExpression : UnaryExpression { DotListExpression dotList; @@ -411,8 +412,8 @@ class IdentifierExpression : Expression { - string identifier; - this(string identifier) + Token* identifier; + this(Token* identifier) { this.identifier = identifier; } @@ -438,9 +439,9 @@ class TemplateInstanceExpression : Expression { - string ident; + Token* ident; TemplateArguments targs; - this(string ident, TemplateArguments targs) + this(Token* ident, TemplateArguments targs) { this.ident = ident; this.targs = targs;
--- a/trunk/src/Parser.d Wed Aug 01 16:08:02 2007 +0000 +++ b/trunk/src/Parser.d Wed Aug 01 17:07:02 2007 +0000 @@ -1290,8 +1290,8 @@ Expression[] identList; if (token.type == T.Dot) { + identList ~= new IdentifierExpression(token); nT(); - identList ~= new IdentifierExpression("."); } else if (token.type == T.Typeof) { @@ -1306,14 +1306,17 @@ while (1) { - string ident = requireIdentifier(); + auto ident = requireId(); + Expression e; if (token.type == T.Not && peekNext() == T.LParen) // Identifier !( TemplateArguments ) { nT(); // Skip !. - identList ~= new TemplateInstanceExpression(ident, parseTemplateArguments()); + e = new TemplateInstanceExpression(ident, parseTemplateArguments()); } else // Identifier - identList ~= new IdentifierExpression(ident); + e = new IdentifierExpression(ident); + + identList ~= e; LnewExpressionLoop: if (token.type != T.Dot) @@ -1408,26 +1411,29 @@ } Expression[] templateIdent; - string mixinIdent; + Token* mixinIdent; // This code is similar to parseDotListType(). if (token.type == T.Dot) { + templateIdent ~= new IdentifierExpression(token); nT(); - templateIdent ~= new IdentifierExpression("."); } while (1) { - string ident = requireIdentifier(); + auto ident = requireId(); + Expression e; if (token.type == T.Not) // Identifier !( TemplateArguments ) { // No need to peek for T.LParen. This must be a template instance. nT(); - templateIdent ~= new TemplateInstanceExpression(ident, parseTemplateArguments()); + e = new TemplateInstanceExpression(ident, parseTemplateArguments()); } else // Identifier - templateIdent ~= new IdentifierExpression(ident); + e = new IdentifierExpression(ident); + + templateIdent ~= e; if (token.type != T.Dot) break; @@ -1436,7 +1442,7 @@ if (token.type == T.Identifier) { - mixinIdent = token.identifier; + mixinIdent = token; nT(); }