Significantly reduce the tendrils of DeclSpecs/Declarator/Declaration code

The stuff in decl.h/decl.cpp is messy, largely due to its close mapping
to C-style variable declarations.  This checkin has updated code throughout
all of the declaration statement, variable, and function code that operates
on symbols and types directly.  Thus, Decl* related stuff is now localized
to decl.h/decl.cpp and the parser.

Issue #13.
This commit is contained in:
Matt Pharr
2011-10-18 15:33:18 -07:00
parent 9b8ea3d500
commit f45ab0744e
13 changed files with 562 additions and 498 deletions

12
stmt.h
View File

@@ -82,11 +82,19 @@ public:
};
struct VariableDeclaration {
VariableDeclaration(Symbol *s = NULL, Expr *i = NULL) {
sym = s; init = i;
}
Symbol *sym;
Expr *init;
};
/** @brief Statement representing a single declaration (which in turn may declare
a number of variables. */
class DeclStmt : public Stmt {
public:
DeclStmt(SourcePos pos, Declaration *declaration, SymbolTable *symbolTable);
DeclStmt(const std::vector<VariableDeclaration> &v, SourcePos pos);
void EmitCode(FunctionEmitContext *ctx) const;
void Print(int indent) const;
@@ -95,7 +103,7 @@ public:
Stmt *TypeCheck();
int EstimateCost() const;
Declaration *declaration;
std::vector<VariableDeclaration> vars;
};