changeset 228:a4c5ee9527b7

- 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.
author aziz
date Fri, 27 Jul 2007 10:01:02 +0000
parents cd0acc9dadc1
children a88967db063b
files trunk/src/Parser.d
diffstat 1 files changed, 17 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- 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.