Select Git revision
CellType.hpp
SymbolTable.hpp 9.90 KiB
#ifndef SYMBOL_TABLE_HPP
#define SYMBOL_TABLE_HPP
#include <language/utils/ASTNodeDataType.hpp>
#include <language/utils/DataVariant.hpp>
#include <language/utils/EmbedderTable.hpp>
#include <language/utils/FunctionTable.hpp>
#include <utils/PugsMacros.hpp>
#include <pegtl/position.hpp>
#include <iostream>
class TypeDescriptor;
class IBuiltinFunctionEmbedder;
class SymbolTable
{
public:
class Attributes
{
private:
TAO_PEGTL_NAMESPACE::position m_position;
int32_t m_context_id;
bool m_is_initialized{false};
bool m_is_module_variable{false}; // variable that is created by a module (ex: cout,...)
ASTNodeDataType m_data_type;
DataVariant m_value;
public:
bool
hasLocalContext() const
{
return m_context_id != -1;
}
int32_t
contextId() const
{
return m_context_id;
}
auto&
value()
{
return m_value;
}
const auto&
value() const
{
return m_value;
}
bool
isInitialized() const
{
return m_is_initialized;
}
void
setIsInitialized()
{
m_is_initialized = true;
}
bool
isModuleVariable() const