The "implementation" is now allowed but not required by the parser. All type
authorChris Lattner <sabre@nondot.org>
Thu, 2 May 2002 19:11:13 +0000 (19:11 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 2 May 2002 19:11:13 +0000 (19:11 +0000)
definitions must still occur before function bodies, but the wierd keyword is
no longer neccesary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2433 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/llvmAsmParser.y

index 1dcc25cf5ebc82067c6da01f343d0df5bb462a0e..020a83df49d10fb21b1796081016deaacbd5de17 100644 (file)
@@ -998,6 +998,38 @@ ConstVector : ConstVector ',' ConstVal {
 GlobalType : GLOBAL { $$ = false; } | CONSTANT { $$ = true; }
 
 
+//===----------------------------------------------------------------------===//
+//                             Rules to match Modules
+//===----------------------------------------------------------------------===//
+
+// Module rule: Capture the result of parsing the whole file into a result
+// variable...
+//
+Module : FunctionList {
+  $$ = ParserResult = $1;
+  CurModule.ModuleDone();
+}
+
+// FunctionList - A list of methods, preceeded by a constant pool.
+//
+FunctionList : FunctionList Function {
+    $$ = $1;
+    assert($2->getParent() == 0 && "Function already in module!");
+    $1->getFunctionList().push_back($2);
+    CurMeth.FunctionDone();
+  } 
+  | FunctionList FunctionProto {
+    $$ = $1;
+  }
+  | FunctionList IMPLEMENTATION {
+    $$ = $1;
+  }
+  | ConstPool {
+    $$ = CurModule.CurrentModule;
+    // Resolve circular types before we parse the body of the module
+    ResolveTypes(CurModule.LateResolveTypes);
+  }
+
 // ConstPool - Constants with optional names assigned to them.
 ConstPool : ConstPool OptAssign CONST ConstVal { 
     if (setValueName($4, $2)) { assert(0 && "No redefinitions allowed!"); }
@@ -1070,36 +1102,6 @@ ConstPool : ConstPool OptAssign CONST ConstVal {
   }
 
 
-//===----------------------------------------------------------------------===//
-//                             Rules to match Modules
-//===----------------------------------------------------------------------===//
-
-// Module rule: Capture the result of parsing the whole file into a result
-// variable...
-//
-Module : FunctionList {
-  $$ = ParserResult = $1;
-  CurModule.ModuleDone();
-}
-
-// FunctionList - A list of methods, preceeded by a constant pool.
-//
-FunctionList : FunctionList Function {
-    $$ = $1;
-    assert($2->getParent() == 0 && "Function already in module!");
-    $1->getFunctionList().push_back($2);
-    CurMeth.FunctionDone();
-  } 
-  | FunctionList FunctionProto {
-    $$ = $1;
-  }
-  | ConstPool IMPLEMENTATION {
-    $$ = CurModule.CurrentModule;
-    // Resolve circular types before we parse the body of the module
-    ResolveTypes(CurModule.LateResolveTypes);
-  }
-
-
 //===----------------------------------------------------------------------===//
 //                       Rules to match Function Headers
 //===----------------------------------------------------------------------===//