diff trunk/src/dil/Parser.d @ 494:9a7ca8c56e59

Refactored a few things in the Parser. Removed unnecessary 'bool hasBody' parameter from some declarations. Added shebang to list of tokens in Lexer unittest. Added some semantic methods.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Fri, 07 Dec 2007 18:22:35 +0100
parents d13502b6fa5f
children b60450804b6e
line wrap: on
line diff
--- a/trunk/src/dil/Parser.d	Thu Dec 06 22:59:38 2007 +0100
+++ b/trunk/src/dil/Parser.d	Fri Dec 07 18:22:35 2007 +0100
@@ -1007,15 +1007,12 @@
     TemplateParameters tparams;
     BaseClass[] bases;
     Declarations decls;
-    bool hasBody;
 
     nT(); // Skip class keyword.
     className = requireId();
 
     if (token.type == T.LParen)
-    {
       tparams = parseTemplateParameterList();
-    }
 
     if (token.type == T.Colon)
       bases = parseBaseClasses();
@@ -1027,14 +1024,11 @@
       nT();
     }
     else if (token.type == T.LBrace)
-    {
-      hasBody = true;
       decls = parseDeclarationDefinitionsBlock();
-    }
     else
       expected(T.LBrace); // TODO: better error msg
 
-    return new ClassDeclaration(className, tparams, bases, decls, hasBody);
+    return new ClassDeclaration(className, tparams, bases, decls);
   }
 
   BaseClass[] parseBaseClasses(bool colonLeadsOff = true)
@@ -1083,15 +1077,12 @@
     TemplateParameters tparams;
     BaseClass[] bases;
     Declarations decls;
-    bool hasBody;
 
     nT(); // Skip interface keyword.
     name = requireId();
 
     if (token.type == T.LParen)
-    {
       tparams = parseTemplateParameterList();
-    }
 
     if (token.type == T.Colon)
       bases = parseBaseClasses();
@@ -1103,14 +1094,11 @@
       nT();
     }
     else if (token.type == T.LBrace)
-    {
-      hasBody = true;
       decls = parseDeclarationDefinitionsBlock();
-    }
     else
       expected(T.LBrace); // TODO: better error msg
 
-    return new InterfaceDeclaration(name, tparams, bases, decls, hasBody);
+    return new InterfaceDeclaration(name, tparams, bases, decls);
   }
 
   Declaration parseAggregateDeclaration()
@@ -1122,7 +1110,6 @@
     Token* name;
     TemplateParameters tparams;
     Declarations decls;
-    bool hasBody;
 
     nT(); // Skip struct or union keyword.
     // name is optional.
@@ -1131,9 +1118,7 @@
       name = token;
       nT();
       if (token.type == T.LParen)
-      {
         tparams = parseTemplateParameterList();
-      }
     }
 
     if (token.type == T.Semicolon)
@@ -1143,17 +1128,14 @@
       nT();
     }
     else if (token.type == T.LBrace)
-    {
-      hasBody = true;
       decls = parseDeclarationDefinitionsBlock();
-    }
     else
       expected(T.LBrace); // TODO: better error msg
 
     if (tok == T.Struct)
-      return new StructDeclaration(name, tparams, decls, hasBody);
+      return new StructDeclaration(name, tparams, decls);
     else
-      return new UnionDeclaration(name, tparams, decls, hasBody);
+      return new UnionDeclaration(name, tparams, decls);
   }
 
   Declaration parseConstructorDeclaration()