Mercurial > projects > dil
changeset 91:ac8610aaf622
- Moved parseUnaryExpression() one place up in the method list.
author | aziz |
---|---|
date | Thu, 05 Jul 2007 21:23:00 +0000 |
parents | a02950cb7036 |
children | 6de2e6e7d872 |
files | trunk/src/Parser.d |
diffstat | 1 files changed, 50 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Parser.d Thu Jul 05 21:20:01 2007 +0000 +++ b/trunk/src/Parser.d Thu Jul 05 21:23:00 2007 +0000 @@ -272,6 +272,56 @@ return new Expression(); } + Expression parseUnaryExpression() + { + Expression e; + switch (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(), 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: + nT(); + e = new DeleteExpression(parseUnaryExpression()); + break; + case T.Cast: + nT(); + // Type type = parseType(); + e = new CastExpression(parseUnaryExpression() /*, type*/); + break; + case T.LParen: + // parse ( Type ) . Identifier + break; + default: + e = parsePostExpression(parsePrimaryExpression()); + break; + } + assert(e !is null); + return e; + } + Expression parsePostExpression(Expression e) { while (1) @@ -329,56 +379,6 @@ return e; } - Expression parseUnaryExpression() - { - Expression e; - switch (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(), 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: - nT(); - e = new DeleteExpression(parseUnaryExpression()); - break; - case T.Cast: - nT(); - // Type type = parseType(); - e = new CastExpression(parseUnaryExpression() /*, type*/); - break; - case T.LParen: - // parse ( Type ) . Identifier - break; - default: - e = parsePostExpression(parsePrimaryExpression()); - break; - } - assert(e !is null); - return e; - } - Expression parsePrimaryExpression() { Expression e;