Mercurial > projects > dil
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(); }