mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-05 02:49:18 +00:00
The "implementation" is now allowed but not required by the parser. All type
definitions must still occur before function bodies, but the wierd keyword is no longer neccesary. llvm-svn: 2433
This commit is contained in:
parent
6212dd5c08
commit
7af6cac869
@ -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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
Loading…
x
Reference in New Issue
Block a user