/// <summary>Enters a symbol into this scope.</summary>
/// <remarks>Enters a symbol into this scope.</remarks>
public virtual void PutSymbol(Symbol symbol)
{
if (symbol.GetName() == null)
{
throw new ArgumentException("null symbol name");
}
EnsureSymbolTable();
symbolTable.Put(symbol.GetName(), symbol);
symbol.SetContainingTable(this);
top.AddSymbol(symbol);
}