Mercurial > projects > dil
diff trunk/src/Parser.d @ 84:ac8d961d10d1
- Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
author | aziz |
---|---|
date | Thu, 05 Jul 2007 10:35:04 +0000 |
parents | 9e6d66f647c9 |
children | d8dc3171440d |
line wrap: on
line diff
--- a/trunk/src/Parser.d Wed Jul 04 23:00:01 2007 +0000 +++ b/trunk/src/Parser.d Thu Jul 05 10:35:04 2007 +0000 @@ -388,7 +388,74 @@ switch (lx.token.type) { case T.Identifier: - + break; + case T.Dot: + nT(); +// if (lx.token.type != T.Identifier) +// error(); + e = new GlobalIdExpression(lx.token.srcText); + break; + case T.This: + nT(); + e = new ThisExpression(); + break; + case T.Super: + nT(); + e = new SuperExpression(); + break; + case T.Null: + nT(); + e = new NullExpression(); + break; + case T.True, T.False: + nT(); + e = new BoolExpression(lx.token.type == T.True ? true : false); + break; + case T.Dollar: + nT(); + e = new DollarExpression(); + break; + case T.Int32/*, ...*/: // Number literals + break; + case T.CharLiteral, T.WCharLiteral, T.DCharLiteral: + nT(); + e = new CharLiteralExpression(lx.token.type); + break; + case T.String: + char[] buffer = lx.token.str; + nT(); + while (lx.token.type == T.String) + { + string tmp = lx.token.str; + if (tmp.length > 1) + { + buffer[$-1] = tmp[0]; // replace '\0' + buffer ~= tmp[1..$]; // append the rest + } + nT(); + } + e = new StringLiteralExpression(buffer); + break; + case T.LBracket: + break; + case T.LBrace: + break; + case T.Function, T.Delegate: + break; + case T.Assert: + break; + case T.Mixin: + break; + case T.Import: + break; + case T.Typeid: + break; + case T.Is: + break; + case T.LParen: + break; + default: + // BasicType . Identifier } return e; }