changeset 77:7e21c4df1c02

- Implemented parseMulExpression(). - Added stub for parseUnaryExpression(). - Added classes DivExpression and ModExpression.
author aziz
date Sun, 01 Jul 2007 19:39:03 +0000
parents a85f9edf6ce7
children f043759fb59a
files trunk/src/Expressions.d trunk/src/Parser.d
diffstat 2 files changed, 31 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Expressions.d	Sun Jul 01 19:28:02 2007 +0000
+++ b/trunk/src/Expressions.d	Sun Jul 01 19:39:03 2007 +0000
@@ -135,8 +135,20 @@
 
 class MulExpression : BinaryExpression
 {
-  this(Expression left, Expression right, TOK tok)
-  { super(left, right, tok); }
+  this(Expression left, Expression right)
+  { super(left, right, TOK.Mul); }
+}
+
+class DivExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.Div); }
+}
+
+class ModExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.Mod); }
 }
 
 class CatExpression : BinaryExpression
--- a/trunk/src/Parser.d	Sun Jul 01 19:28:02 2007 +0000
+++ b/trunk/src/Parser.d	Sun Jul 01 19:39:03 2007 +0000
@@ -253,9 +253,26 @@
 
   Expression parseMulExpression()
   {
+    auto e = parseUnaryExpression();
+    while (1)
+    {
+      switch (lx.token.type)
+      {
+      case T.Mul: nT(); e = new MulExpression(e, parseUnaryExpression()); break;
+      case T.Div: nT(); e = new DivExpression(e, parseUnaryExpression()); break;
+      case T.Mod: nT(); e = new ModExpression(e, parseUnaryExpression()); break;
+      default: break;
+      }
+      break;
+    }
     return new Expression();
   }
 
+  Expression parseUnaryExpression()
+  {
+    return new Expression;
+  }
+
   void error(MID id, ...)
   {
     errors ~= new Information(Information.Type.Parser, id, lx.loc, arguments(_arguments, _argptr));