mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-21 03:32:21 +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; }
|
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…
x
Reference in New Issue
Block a user