1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/* $Id$
*
* SymbolDeclaration: Base class for anything that declares a symbol.
*
* Copyright (C) 2007-2009 FAUmachine Team <info@faumachine.org>.
* This program is free software. You can redistribute it and/or modify it
* under the terms of the GNU General Public License, either version 2 of
* the License, or (at your option) any later version. See COPYING.
*/
#ifndef __SYMBOL_DECLARATION_HPP_INCLUDED
#define __SYMBOL_DECLARATION_HPP_INCLUDED
#include "frontend/ast/AstNode.hpp"
#include <string>
namespace ast {
/* forward declaration */
class DeclarativeRegion;
//! Generic declaration of a symbol.
/** This abstract class represents a generic declaration of a symbol,
* e.g. the declaration of a signal, variable, function or type.
*/
class SymbolDeclaration : public AstNode {
public:
/** c'tor
* @param declName name of the declared symbol.
* @param loc Location of the symbol declaration.
*/
SymbolDeclaration(
std::string *declName,
Location loc
) : AstNode(loc),
name(declName),
region(NULL) {}
//! return the intermediate code name of a symbol
/** @return name to be used in the intermediate code.
*/
virtual std::string getICName(void) const;
/** The name of the declared symbol */
std::string *name;
/** declarative region created by the symbol, if any */
DeclarativeRegion *region;
/** path name of the symbol */
std::string pathName;
protected:
/** Destructor */
virtual ~SymbolDeclaration() {
delete this->name;
}
};
}; /* namespace ast */
#endif /* __SYMBOL_DECLARATION_HPP_INCLUDED */
|