Mercurial > projects > dil
changeset 101:6f3c5473c5e5
- Implemented parsing TypeofExpression.
author | aziz |
---|---|
date | Sat, 07 Jul 2007 16:13:02 +0000 |
parents | 538e8b546669 |
children | 6e8b67ae15b7 |
files | trunk/src/Expressions.d trunk/src/Parser.d |
diffstat | 2 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Expressions.d Sat Jul 07 13:55:01 2007 +0000 +++ b/trunk/src/Expressions.d Sat Jul 07 16:13:02 2007 +0000 @@ -492,6 +492,15 @@ } } +class TypeofExpression : Expression +{ + Type type; + this(Type type) + { + this.type = type; + } +} + class TypeDotIdExpression : Expression { Type type;
--- a/trunk/src/Parser.d Sat Jul 07 13:55:01 2007 +0000 +++ b/trunk/src/Parser.d Sat Jul 07 16:13:02 2007 +0000 @@ -558,6 +558,25 @@ require(T.RParen); e = new TypeidExpression(type); break; + case T.Typeof: + requireNext(T.LParen); + auto type = new TypeofType(parseExpression()); + require(T.RParen); + if (token.type == T.Dot) + { + nT(); + string ident; + if (token.type == T.Identifier) + { + ident = token.srcText; + } + else + errorIfNot(T.Identifier); + e = new TypeDotIdExpression(type, ident); + } + else + e = new TypeofExpression(type); + break; case T.Is: requireNext(T.LParen); @@ -789,8 +808,7 @@ else if (!identOptional) errorIfNot(T.Identifier); - t = parseDeclaratorSuffix(t); - return t; + return parseDeclaratorSuffix(t); } Argument[] parseParameters()