Mercurial > projects > dil
diff trunk/src/Parser.d @ 78:f043759fb59a
- Added code to parseUnaryExpression(); not fully implemented.
- Added class AddressExpression, PreIncrExpression, PreDecrExpression, DerefExpression, SignExpression, NotExpression and CompExpression.
author | aziz |
---|---|
date | Sun, 01 Jul 2007 21:35:01 +0000 |
parents | 7e21c4df1c02 |
children | df4e5c7ad58a |
line wrap: on
line diff
--- a/trunk/src/Parser.d Sun Jul 01 19:39:03 2007 +0000 +++ b/trunk/src/Parser.d Sun Jul 01 21:35:01 2007 +0000 @@ -270,7 +270,50 @@ Expression parseUnaryExpression() { - return new Expression; + Expression e; + switch (lx.token.type) + { + case T.AndBinary: + nT(); e = new AddressExpression(parseUnaryExpression()); + break; + case T.PlusPlus: + nT(); e = new PreIncrExpression(parseUnaryExpression()); + break; + case T.MinusMinus: + nT(); e = new PreDecrExpression(parseUnaryExpression()); + break; + case T.Mul: + nT(); e = new DerefExpression(parseUnaryExpression()); + break; + case T.Minus: + case T.Plus: + nT(); e = new SignExpression(parseUnaryExpression(), lx.token.type); + break; + case T.Not: + nT(); e = new NotExpression(parseUnaryExpression()); + break; + case T.Tilde: + nT(); e = new CompExpression(parseUnaryExpression()); + break; + case T.New: + // parseNewExpression(); + break; + case T.Delete: + // parseDeleteExpression(); + break; + case T.Cast: + // parseDeleteExpression(); + break; + case T.LParen: + // parse ( Type ) . Identifier + break; + } + return e; + } + + Expression parsePostExpression() + { + return null; } void error(MID id, ...)