35 lines
630 B
C++
35 lines
630 B
C++
|
#ifndef fk_SYMTABLE_HPP
|
||
|
#define fk_SYMTABLE_HPP
|
||
|
|
||
|
#include "commons.hpp"
|
||
|
#include "SymEntry.hpp"
|
||
|
|
||
|
namespace fk
|
||
|
{
|
||
|
FK_ERROR(symbol_error);
|
||
|
|
||
|
class SymTable
|
||
|
{
|
||
|
public:
|
||
|
explicit SymTable();
|
||
|
virtual ~SymTable();
|
||
|
|
||
|
void declare_local(std::string const& name,
|
||
|
addr_t addr,
|
||
|
Loc const& loc);
|
||
|
|
||
|
void declare_global(std::string const& name,
|
||
|
addr_t addr,
|
||
|
Loc const& loc);
|
||
|
|
||
|
std::optional<SymEntry> find(std::string const& name);
|
||
|
|
||
|
std::string string() const;
|
||
|
|
||
|
private:
|
||
|
std::vector<SymEntry> m_entries;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#endif
|