diff trunk/src/Expressions.d @ 71:b3777cca323c

- Added Identity and NotIdentity tokens. - Added constructor to Parser. Added error method and parseCondExpression(). - Added parseAssignExpression() method. - Moved arguments() function from error() method of Lexer to module Information. - Added members and constructor to BinaryExpression. - Added XYZAssignExpression classes. - Added calls to super() to classes that inherit from BinaryExpression.
author aziz
date Sun, 01 Jul 2007 16:16:05 +0000
parents 0d3ef6daec04
children f75e359f939f
line wrap: on
line diff
--- a/trunk/src/Expressions.d	Sun Jul 01 14:49:05 2007 +0000
+++ b/trunk/src/Expressions.d	Sun Jul 01 16:16:05 2007 +0000
@@ -3,6 +3,7 @@
   License: GPL2
 +/
 module Expressions;
+import Token;
 
 class Expression
 {
@@ -16,12 +17,14 @@
 
 class BinaryExpression : Expression
 {
-
-}
-
-class AssignExpression : Expression
-{
-
+  Expression left, right;
+  TOK tok;
+  this(Expression left, Expression right, TOK tok)
+  {
+    this.left = left;
+    this.right = right;
+    this.tok = tok;
+  }
 }
 
 class CondExpression : Expression
@@ -31,72 +34,146 @@
 
 class OrOrExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right)
+  { super(left, right, TOK.OrLogical); }
 }
 
 class AndAndExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right)
+  { super(left, right, TOK.AndLogical); }
 }
 
 class OrExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right)
+  { super(left, right, TOK.OrBinary); }
 }
 
 class XorExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right)
+  { super(left, right, TOK.Xor); }
 }
 
 class AndExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right)
+  { super(left, right, TOK.AndBinary); }
 }
 
 class CmpExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, tok); }
 }
 
-class EqualExpression : BinaryExpression
+class EqualExpression : CmpExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, TOK.Equal); }
 }
 
-class IdentExpression
+class IdentExpression : CmpExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, tok); }
 }
 
-class RelExpression : BinaryExpression
+class RelExpression : CmpExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, tok); }
 }
 
 class InExpression : BinaryExpression
 {
-
-}
-
-class ShiftExpression : BinaryExpression
-{
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, TOK.In); }
 }
 
 class AddExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, tok); }
 }
 
 class MulExpression : BinaryExpression
 {
-
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, tok); }
 }
 
 class CatExpression : BinaryExpression
 {
+  this(Expression left, Expression right, TOK tok)
+  { super(left, right, TOK.Catenate); }
+}
 
+class AssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.Assign); }
+}
+class LShiftAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.LShiftAssign); }
+}
+class RShiftAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.RShiftAssign); }
+}
+class URShiftAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.URShiftAssign); }
+}
+class OrAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.OrAssign); }
+}
+class AndAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.AndAssign); }
+}
+class PlusAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.PlusAssign); }
+}
+class MinusAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.MinusAssign); }
+}
+class DivAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.DivAssign); }
+}
+class MulAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.MulAssign); }
+}
+class ModAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.ModAssign); }
+}
+class XorAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.XorAssign); }
+}
+class CatAssignExpression : BinaryExpression
+{
+  this(Expression left, Expression right)
+  { super(left, right, TOK.CatAssign); }
 }
 
 class PostfixExpression : UnaryExpression