changeset 75:3f976d9e0833

- Implemented parseShiftExpression(). - Added classes LShiftExpression, RShiftExpression and URShiftExpression.
author aziz
date Sun, 01 Jul 2007 19:17:03 +0000
parents 30b0fb85dda9
children a85f9edf6ce7
files trunk/src/Expressions.d trunk/src/Parser.d
diffstat 2 files changed, 36 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Expressions.d	Sun Jul 01 19:01:00 2007 +0000
+++ b/trunk/src/Expressions.d	Sun Jul 01 19:17:03 2007 +0000
@@ -103,6 +103,24 @@
   { super(left, right, TOK.In); }
 }
 
+class LShiftExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.LShiftAssign); }
+}
+
+class RShiftExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.RShiftAssign); }
+}
+
+class URShiftExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.URShiftAssign); }
+}
+
 class AddExpression : BinaryExpression
 {
   this(Expression left, Expression right, TOK tok)
--- a/trunk/src/Parser.d	Sun Jul 01 19:01:00 2007 +0000
+++ b/trunk/src/Parser.d	Sun Jul 01 19:17:03 2007 +0000
@@ -219,6 +219,24 @@
 
   Expression parseShiftExpression()
   {
+    auto e = parseAddExpression();
+    while (1)
+    {
+      switch (lx.token.type)
+      {
+      case T.LShift:  nT(); e = new LShiftExpression(e, parseAddExpression()); break;
+      case T.RShift:  nT(); e = new RShiftExpression(e, parseAddExpression()); break;
+      case T.URShift: nT(); e = new URShiftExpression(e, parseAddExpression()); break;
+      default: break;
+      }
+      break;
+    }
+    return e;
+  }
+
+  Expression parseAddExpression()
+  {
+//     auto e = parseMulExpression()
     return new Expression();
   }