# HG changeset patch # User aziz # Date 1185530462 0 # Node ID a4c5ee9527b7192b3f6879dcf9d59175ec633681 # Parent cd0acc9dadc14bd09af8c1b5570d76db6dcc76e0 - Replaced assert(0); with break; in case T.Static. Renamed local t to next. - Fixed parseShiftExpression(), parseAddExpression() and parseMulExpression(). Return in default case otherwise continue loop. - Fixes to parsePrimaryExpression(): nT() should be called after allocating objects. diff -r cd0acc9dadc1 -r a4c5ee9527b7 trunk/src/Parser.d --- a/trunk/src/Parser.d Fri Jul 27 09:12:04 2007 +0000 +++ b/trunk/src/Parser.d Fri Jul 27 10:01:02 2007 +0000 @@ -166,10 +166,10 @@ decl = new TypedefDeclaration(parseDeclaration()); break; case T.Static: - Token t; - lx.peek(t); + Token next; + lx.peek(next); - switch (t.type) + switch (next.type) { case T.Import: goto case T.Import; @@ -188,7 +188,7 @@ default: goto case_AttributeSpecifier; } - assert(0); + break; case T.Import: decl = parseImportDeclaration(); break; @@ -2370,11 +2370,11 @@ case T.LShift: nT(); e = new LShiftExpression(e, parseAddExpression()); break; case T.RShift: nT(); e = new RShiftExpression(e, parseAddExpression()); break; case T.URShift: nT(); e = new URShiftExpression(e, parseAddExpression()); break; - default: break; + default: + return e; } - break; } - return e; + assert(0); } Expression parseAddExpression() @@ -2387,11 +2387,11 @@ case T.Plus: nT(); e = new PlusExpression(e, parseMulExpression()); break; case T.Minus: nT(); e = new MinusExpression(e, parseMulExpression()); break; case T.Tilde: nT(); e = new CatExpression(e, parseMulExpression()); break; - default: break; + default: + return e; } - break; } - return e; + assert(0); } Expression parseMulExpression() @@ -2404,11 +2404,11 @@ case T.Mul: nT(); e = new MulExpression(e, parseUnaryExpression()); break; case T.Div: nT(); e = new DivExpression(e, parseUnaryExpression()); break; case T.Mod: nT(); e = new ModExpression(e, parseUnaryExpression()); break; - default: break; + default: + return e; } - break; } - return e; + assert(0); } Expression parseUnaryExpression() @@ -2599,25 +2599,25 @@ e = new NullExpression(); break; case T.True, T.False: + e = new BoolExpression(token.type == T.True ? true : false); nT(); - e = new BoolExpression(token.type == T.True ? true : false); break; case T.Dollar: nT(); e = new DollarExpression(); break; case T.Int32, T.Int64, T.Uint32, T.Uint64: + e = new IntNumberExpression(token.type, token.ulong_); nT(); - e = new IntNumberExpression(token.type, token.ulong_); break; case T.Float32, T.Float64, T.Float80, T.Imaginary32, T.Imaginary64, T.Imaginary80: + e = new RealNumberExpression(token.type, token.real_); nT(); - e = new RealNumberExpression(token.type, token.real_); break; case T.CharLiteral, T.WCharLiteral, T.DCharLiteral: + e = new CharLiteralExpression(token.type); nT(); - e = new CharLiteralExpression(token.type); break; case T.String: // TODO: The Lexer doesn't allocate the tokens on the heap yet. So Token* will not work here.