mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2433 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
872265ee1b
commit
0e73ce6d94
@ -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…
Reference in New Issue
Block a user