diff trunk/src/Parser.d @ 305:df237b3b5f09

- Added class Declarations. - Changed many methods to return Declarations instead of Declaration[]. Changed members of classes accordingly.
author aziz
date Tue, 14 Aug 2007 12:18:01 +0000
parents fc7b9a3a99d4
children fa0b6f32c1ae
line wrap: on
line diff
--- a/trunk/src/Parser.d	Tue Aug 14 11:03:04 2007 +0000
+++ b/trunk/src/Parser.d	Tue Aug 14 12:18:01 2007 +0000
@@ -107,9 +107,9 @@
   + Declaration parsing methods +
   ++++++++++++++++++++++++++++++/
 
-  Declaration[] parseModule()
+  Declarations parseModule()
   {
-    Declaration[] decls;
+    auto decls = new Declarations;
 
     if (token.type == T.Module)
     {
@@ -127,9 +127,9 @@
     return decls;
   }
 
-  Declaration[] parseDeclarationDefinitions()
+  Declarations parseDeclarationDefinitions()
   {
-    Declaration[] decls;
+    auto decls = new Declarations;
     while (token.type != T.EOF)
       decls ~= parseDeclarationDefinition();
     return decls;
@@ -140,9 +140,9 @@
         { }
         { DeclDefs }
   */
-  Declaration[] parseDeclarationDefinitionsBlock()
+  Declarations parseDeclarationDefinitionsBlock()
   {
-    Declaration[] decls;
+    auto decls = new Declarations;
     require(T.LBrace);
     while (token.type != T.RBrace && token.type != T.EOF)
       decls ~= parseDeclarationDefinition();
@@ -307,23 +307,25 @@
         { DeclDefs }
         DeclDef
   */
-  Declaration[] parseDeclarationsBlock()
+  Declaration parseDeclarationsBlock()
   {
-    Declaration[] decls;
+    Declaration d;
     switch (token.type)
     {
     case T.LBrace:
-      decls = parseDeclarationDefinitionsBlock();
+      d = parseDeclarationDefinitionsBlock();
       break;
     case T.Colon:
       nT();
+      auto decls = new Declarations;
       while (token.type != T.RBrace && token.type != T.EOF)
         decls ~= parseDeclarationDefinition();
+      d = decls;
       break;
     default:
-      decls ~= parseDeclarationDefinition();
+      d = parseDeclarationDefinition();
     }
-    return decls;
+    return d;
   }
 
   Declaration parseDeclaration(StorageClass stc = StorageClass.None)
@@ -548,7 +550,7 @@
         stc |= tmp;
     }
 
-    Declaration[] parse()
+    Declaration parse()
     {
       Declaration decl;
       switch (token.type)
@@ -644,11 +646,11 @@
         decl = parseDeclaration(stc);
         break;
       default:
-        return parseDeclarationsBlock();
+        decl = parseDeclarationsBlock();
       }
-      return [decl];
+      return decl;
     }
-    return parse()[0];
+    return parse();
   }
 
   Token* parseAlignAttribute()
@@ -694,7 +696,7 @@
       nT();
       Token* ident;
       Expression[] args;
-      Declaration[] decls;
+      Declaration decls;
 
       require(T.LParen);
       ident = requireId();
@@ -894,7 +896,7 @@
     Token* className;
     TemplateParameters tparams;
     BaseClass[] bases;
-    Declaration[] decls;
+    Declarations decls;
     bool hasBody;
 
     nT(); // Skip class keyword.
@@ -969,7 +971,7 @@
     Token* name;
     TemplateParameters tparams;
     BaseClass[] bases;
-    Declaration[] decls;
+    Declarations decls;
     bool hasBody;
 
     nT(); // Skip interface keyword.
@@ -1008,7 +1010,7 @@
 
     Token* name;
     TemplateParameters tparams;
-    Declaration[] decls;
+    Declarations decls;
     bool hasBody;
 
     nT(); // Skip struct or union keyword.
@@ -1116,7 +1118,7 @@
                  // debug = Identifier ;
     Token* cond; // debug ( Integer )
                  // debug ( Identifier )
-    Declaration[] decls, elseDecls;
+    Declaration decls, elseDecls;
 
     void parseIdentOrInt(ref Token* tok)
     {
@@ -1175,7 +1177,7 @@
                  // version = Identifier ;
     Token* cond; // version ( Integer )
                  // version ( Identifier )
-    Declaration[] decls, elseDecls;
+    Declaration decls, elseDecls;
 
     void parseIdentOrInt(ref Token* tok)
     {
@@ -1230,7 +1232,7 @@
     nT(); // Skip if keyword.
 
     Expression condition;
-    Declaration[] ifDecls, elseDecls;
+    Declaration ifDecls, elseDecls;
 
     require(T.LParen);
     condition = parseAssignExpression();
@@ -1526,7 +1528,7 @@
         structDecl = parseAggregateDeclaration();
       else
         expected(T.Struct);
-      d = new AlignDeclaration(size, structDecl ? [structDecl] : null);
+      d = new AlignDeclaration(size, structDecl ? structDecl : new Declarations);
       goto case_DeclarationStatement;
 /+ Not applicable for statements.
 //          T.Private,