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();
     }