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);
}