Definition
A data structure used by compilers, linkers, and language tooling to map identifiers (names) to associated attributes such as declared type, lexical scope, storage location, linkage, and sometimes owner or visibility.

Principle

Principle
Centralize name bindings and their attributes so that name resolution, scope checking, type lookup, and address or offset assignment can be performed incrementally during parsing, semantic analysis, or linking.

Demonstration

Demonstration
During compilation, entering a new block pushes a scope frame; variable declarations insert entries mapping the identifier to a record with type information and stack offset; lookups consult the nearest enclosing scope frame to resolve references.

Misapplication

Misapplication
Using the symbol table as a runtime environment for value storage (mixing compile-time bindings with runtime mutable values) or relying on a single global table without scoping information leads to incorrect name resolution and scope errors.

Consequence

Consequence
Proper symbol table design ensures correct name resolution, supports separate compilation and linking, enables accurate type checking, and provides the information required for code generation (addresses, offsets, linkage annotations).

Reversal

Reversal
Consider a program represented solely by token streams or raw parse trees without binding information; inversion emphasizes syntactic shape over resolved identifiers and makes semantic checks impossible without a binding layer.

Boundary

Boundary
Pertains to compile-time/name-resolution and linking phases; it does not itself implement runtime memory layout, garbage collection, or dynamic symbol resolution mechanisms unless explicitly extended to do so.

Semantic Tension

Semantic Tension
Overlap exists between 'symbol table', 'environment', and 'symbol registry': symbol table is a compile/link-time binding structure, while an environment typically denotes a runtime mapping of names to values; conflating them blurs compile-time vs runtime distinctions.

Synthesis

Synthesis
A symbol table is the structured repository of identifier bindings and attributes maintained during compilation and linking; by organizing scopes and metadata it enables deterministic name resolution, semantic checks, and the production of code that refers to concrete storage or linkage information.