Defines tools to handle macro definitions.
bool remove(const std::string &name)
Remove a macro in the scope, if it exists.
const Node * has(const std::string &name) const
Check if the current scope holds a value for a given symbol, and returns it as a pointer.
std::unordered_map< std::string, Node > m_macros
MacroScope(unsigned int depth)
Construct a new MacroScope object given a depth in the scope hierarchy.
void add(const std::string &name, const Node &node)
Add a new entry in the scope.
A node of an Abstract Syntax Tree for ArkScript.