mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02: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; }
|
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 - Constants with optional names assigned to them.
|
||||||
ConstPool : ConstPool OptAssign CONST ConstVal {
|
ConstPool : ConstPool OptAssign CONST ConstVal {
|
||||||
if (setValueName($4, $2)) { assert(0 && "No redefinitions allowed!"); }
|
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
|
// Rules to match Function Headers
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
Loading…
Reference in New Issue
Block a user