Because the name of a symbol alone is generally insufficient to uniquely identify it, the symbols are also given ID numbers. See section Numbering Types and Symbols . When a symbol is entered in a symbol table, it automatically records a pointer to that parent table. Similarly, when the symbol is removed from the symbol table, its parent pointer is cleared. The parent method retrieves this parent pointer.
All symbols contain flags to specify various attributes.
Another flag is used to mark symbols that are only declarations of external symbols, rather than actual definitions. This flag is set automatically. Label symbols are never extern . This is really only useful for variable symbols, because procedures are always global and labels are never global. This is obviously irrelevant for label symbols.