diff trunk/src/Parser.d @ 73:11572f4a138c

- Added methods for parsing OrOrExpressions, AndAndExpressions, OrExpressions, XorExpressions and AndExpressions. - Added stub for parsing CmpExpressions.
author aziz
date Sun, 01 Jul 2007 18:26:05 +0000
parents f75e359f939f
children 30b0fb85dda9
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sun Jul 01 17:21:02 2007 +0000
+++ b/trunk/src/Parser.d	Sun Jul 01 18:26:05 2007 +0000
@@ -104,7 +104,7 @@
   Expression parseCondExpression()
   {
     auto e = parseOrOrExpression();
-    if (lx.token.type == TOK.Question)
+    if (lx.token.type == T.Question)
     {
       nT();
       auto iftrue = parseExpression();
@@ -118,7 +118,67 @@
 
   Expression parseOrOrExpression()
   {
-    return new Expression();
+    alias parseAndAndExpression parseNext;
+    auto e = parseNext();
+    if (lx.token.type == T.OrLogical)
+    {
+      nT();
+      e = new OrOrExpression(e, parseNext());
+    }
+    return e;
+  }
+
+  Expression parseAndAndExpression()
+  {
+    alias parseOrExpression parseNext;
+    auto e = parseNext();
+    if (lx.token.type == T.AndLogical)
+    {
+      nT();
+      e = new AndAndExpression(e, parseNext());
+    }
+    return e;
+  }
+
+  Expression parseOrExpression()
+  {
+    alias parseXorExpression parseNext;
+    auto e = parseNext();
+    if (lx.token.type == T.OrBinary)
+    {
+      nT();
+      e = new OrExpression(e, parseNext());
+    }
+    return e;
+  }
+
+  Expression parseXorExpression()
+  {
+    alias parseAndExpression parseNext;
+    auto e = parseNext();
+    if (lx.token.type == T.Xor)
+    {
+      nT();
+      e = new XorExpression(e, parseNext());
+    }
+    return e;
+  }
+
+  Expression parseAndExpression()
+  {
+    alias parseCmpExpression parseNext;
+    auto e = parseNext();
+    if (lx.token.type == T.AndBinary)
+    {
+      nT();
+      e = new AndExpression(e, parseNext());
+    }
+    return e;
+  }
+
+  Expression parseCmpExpression()
+  {
+    return new Expression;
   }
 
   void error(MID id, ...)