changeset 79:df4e5c7ad58a

- Implemented most of parsePostExpression() and parsePreExpression(). - Added stub for parsePrimaryExpression(). - Added classes PostIncrExpression and PostDecrExpression.
author aziz
date Mon, 02 Jul 2007 23:37:02 +0000
parents f043759fb59a
children 143caff09cd9
files trunk/src/Expressions.d trunk/src/Parser.d
diffstat 2 files changed, 57 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Expressions.d	Sun Jul 01 21:35:01 2007 +0000
+++ b/trunk/src/Expressions.d	Mon Jul 02 23:37:02 2007 +0000
@@ -243,6 +243,18 @@
   { super(e); }
 }
 
+class PostIncrExpression : UnaryExpression
+{
+  this(Expression e)
+  { super(e); }
+}
+
+class PostDecrExpression : UnaryExpression
+{
+  this(Expression e)
+  { super(e); }
+}
+
 class DerefExpression : UnaryExpression
 {
   this(Expression e)
--- a/trunk/src/Parser.d	Sun Jul 01 21:35:01 2007 +0000
+++ b/trunk/src/Parser.d	Mon Jul 02 23:37:02 2007 +0000
@@ -270,6 +270,47 @@
 
   Expression parseUnaryExpression()
   {
+    return parsePostExpression();
+  }
+
+  Expression parsePostExpression()
+  {
+    auto e = parsePreExpression();
+    while (1)
+    {
+      switch (lx.token.type)
+      {
+      case T.Dot:
+        nT();
+        Token t;
+        peek(t);
+//         if (t.type == T.Identifier)
+//
+//         else if (t.type == T.New)
+//           e = parseNewExpression(e);
+        break;
+      case T.PlusPlus:
+        nT();
+        e = new PostIncrExpression(e);
+        break;
+      case T.MinusMinus:
+        nT();
+        e = new PostDecrExpression(e);
+        break;
+      case T.LParen:
+        nT();
+//         e = parseCallExpression(e);
+        break;
+      case T.LBracket:
+        // parse Slice- and IndexExpression
+        break;
+      }
+    }
+    return e;
+  }
+
+  Expression parsePreExpression()
+  {
     Expression e;
     switch (lx.token.type)
     {
@@ -307,11 +348,14 @@
     case T.LParen:
       // parse ( Type ) . Identifier
       break;
+    default:
+      e = parsePrimaryExpression();
+      break;
     }
     return e;
   }
 
-  Expression parsePostExpression()
+  Expression parsePrimaryExpression()
   {
     return null;
   }