Mercurial > projects > dil
changeset 74:30b0fb85dda9
- Implemented parseCmpExpression().
- Added stub for parseShiftExpressiont().
author | aziz |
---|---|
date | Sun, 01 Jul 2007 19:01:00 +0000 |
parents | 11572f4a138c |
children | 3f976d9e0833 |
files | trunk/src/Expressions.d trunk/src/Parser.d |
diffstat | 2 files changed, 45 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Expressions.d Sun Jul 01 18:26:05 2007 +0000 +++ b/trunk/src/Expressions.d Sun Jul 01 19:01:00 2007 +0000 @@ -252,7 +252,8 @@ } -class IsExpression +class IsExpression : CmpExpression { - + this(Expression left, Expression right, TOK tok) + { super(left, right, tok); } }
--- a/trunk/src/Parser.d Sun Jul 01 18:26:05 2007 +0000 +++ b/trunk/src/Parser.d Sun Jul 01 19:01:00 2007 +0000 @@ -178,7 +178,48 @@ Expression parseCmpExpression() { - return new Expression; + TOK operator = lx.token.type; + + auto e = parseShiftExpression(); + + switch (operator) + { + case T.Equal, T.NotEqual: + nT(); + e = new EqualExpression(e, parseShiftExpression(), operator); + break; + case T.Not: + Token t; + lx.peek(t); + if (t.type != T.Is) + break; + nT(); + operator = T.NotIdentity; + goto LNotIdentity; + case T.Identity: + operator = T.Identity; + LNotIdentity: + nT(); + e = new IsExpression(e, parseShiftExpression(), operator); + break; + case T.LessEqual, T.Less, T.GreaterEqual, T.Greater, + T.Unordered, T.UorE, T.UorG, T.UorGorE, + T.UorL, T.UorLorE, T.LorEorG, T.LorG: + nT(); + e = new RelExpression(e, parseShiftExpression(), operator); + break; + case T.In: + nT(); + e = new InExpression(e, parseShiftExpression(), operator); + break; + default: + } + return e; + } + + Expression parseShiftExpression() + { + return new Expression(); } void error(MID id, ...)