diff trunk/src/Parser.d @ 78:f043759fb59a

- Added code to parseUnaryExpression(); not fully implemented. - Added class AddressExpression, PreIncrExpression, PreDecrExpression, DerefExpression, SignExpression, NotExpression and CompExpression.
author aziz
date Sun, 01 Jul 2007 21:35:01 +0000
parents 7e21c4df1c02
children df4e5c7ad58a
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sun Jul 01 19:39:03 2007 +0000
+++ b/trunk/src/Parser.d	Sun Jul 01 21:35:01 2007 +0000
@@ -270,7 +270,50 @@
 
   Expression parseUnaryExpression()
   {
-    return new Expression;
+    Expression e;
+    switch (lx.token.type)
+    {
+    case T.AndBinary:
+      nT(); e = new AddressExpression(parseUnaryExpression());
+      break;
+    case T.PlusPlus:
+      nT(); e = new PreIncrExpression(parseUnaryExpression());
+      break;
+    case T.MinusMinus:
+      nT(); e = new PreDecrExpression(parseUnaryExpression());
+      break;
+    case T.Mul:
+      nT(); e = new DerefExpression(parseUnaryExpression());
+      break;
+    case T.Minus:
+    case T.Plus:
+      nT(); e = new SignExpression(parseUnaryExpression(), lx.token.type);
+      break;
+    case T.Not:
+      nT(); e = new NotExpression(parseUnaryExpression());
+      break;
+    case T.Tilde:
+      nT(); e = new CompExpression(parseUnaryExpression());
+      break;
+    case T.New:
+      // parseNewExpression();
+      break;
+    case T.Delete:
+      // parseDeleteExpression();
+      break;
+    case T.Cast:
+      // parseDeleteExpression();
+      break;
+    case T.LParen:
+      // parse ( Type ) . Identifier
+      break;
+    }
+    return e;
+  }
+
+  Expression parsePostExpression()
+  {
+    return null;
   }
 
   void error(MID id, ...)