symboltable.cpp

来自「a basic interpreter free basic」· C++ 代码 · 共 58 行

CPP
58
字号
#include "StdAfx.h"
#include "SymbolTable.h"

CSymbolTable::CSymbolTable(void)
{
	this->m_SymbolTable = new symbollist_t();
}

CSymbolTable::~CSymbolTable(void)
{
	symbollist_t::iterator symIterator = this->m_SymbolTable->begin();
	while(symIterator != this->m_SymbolTable->end())
	{
		CSymbol *Symbol;
		Symbol = *symIterator;
		delete(*symIterator);
		symIterator++;
	}

	delete(this->m_SymbolTable);
}

// Add a symbol to the symbol table
void CSymbolTable::Add(CSymbol * Symbol)
{
	// First, make sure there are no existing symbols
	// with this name
	if(this->Find(Symbol->GetName()))
	{
		throw ILLEGAL_VARIABLE;
	}

	// If so, then push the symbol onto the list
	this->m_SymbolTable->push_back(Symbol);
}


// Find a symbol by name
CSymbol * CSymbolTable::Find(string Name)
{
	// Iterate over the symbol table, find the symbol that
	// matches and return
	symbollist_t::iterator sym = this->m_SymbolTable->begin();

	while(sym != this->m_SymbolTable->end())
	{
		CSymbol *thisSymbol = *sym;
		if(thisSymbol->GetName() == Name)
		{
			return thisSymbol;
		}

		sym++;
	}

	return NULL;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?