Mercurial > projects > dil
diff trunk/src/Parser.d @ 83:9e6d66f647c9
- Fix: IsExpression was created instead of IdentityExpression.
- Added code for parsing Slice- and IndexExpression.
author | aziz |
---|---|
date | Wed, 04 Jul 2007 23:00:01 +0000 |
parents | aa1ea2548dd9 |
children | ac8d961d10d1 |
line wrap: on
line diff
--- a/trunk/src/Parser.d Wed Jul 04 22:19:01 2007 +0000 +++ b/trunk/src/Parser.d Wed Jul 04 23:00:01 2007 +0000 @@ -200,7 +200,7 @@ operator = T.Identity; LNotIdentity: nT(); - e = new IsExpression(e, parseShiftExpression(), operator); + e = new IdentityExpression(e, parseShiftExpression(), operator); break; case T.LessEqual, T.Less, T.GreaterEqual, T.Greater, T.Unordered, T.UorE, T.UorG, T.UorGorE, @@ -301,6 +301,31 @@ break; case T.LBracket: // parse Slice- and IndexExpression + nT(); + if (lx.token.type == T.RBracket) + { + e = new SliceExpression(e, null, null); + nT(); + break; + } + Expression[] es = [parseAssignExpression()]; + if (lx.token.type == T.Slice) + { + nT(); + e = new SliceExpression(e, es[0], parseAssignExpression()); +// if (lx.token.type != T.RBracket) +// error() + nT(); + break; + } + else if (lx.token.type == T.Comma) + { + es ~= parseArgumentList(T.RBracket); + } + e = new IndexExpression(e, es); +// if (lx.token.type != T.RBracket) +// error(); + nT(); break; } } @@ -359,7 +384,13 @@ Expression parsePrimaryExpression() { - return null; + Expression e; + switch (lx.token.type) + { + case T.Identifier: + + } + return e; } Expression parseNewExpression(Expression e)