Définition
Une structure de données utilisée par les compilateurs, éditeurs de liens et outils linguistiques pour associer des identifiants (noms) à des attributs associés tels que le type déclaré, la portée lexicale, l'emplacement de stockage, le linkage, et parfois le propriétaire ou la visibilité.
Principe
Principe
Centraliser les liaisons de noms et leurs attributs afin que la résolution de noms, la vérification des portées, la recherche de types et l'attribution d'adresses ou offsets puissent être effectuées de manière incrémentale lors de l'analyse syntaxique, l'analyse sémantique ou l'édition de liens.
Démonstration
Démonstration
Pendant la compilation, l'entrée dans un nouveau bloc pousse une trame de portée ; les déclarations de variable insèrent des entrées mappant l'identifiant à un enregistrement contenant des informations de type et l'offset sur la pile ; les recherches consultent la trame de portée englobante la plus proche pour résoudre les références.
Mauvaise application
Mauvaise application
Utiliser la table des symboles comme un environnement d'exécution pour stocker des valeurs (mélanger liaisons en compilation et valeurs mutables à l'exécution) ou s'appuyer sur une table globale unique sans information de portée conduit à des résolutions de noms incorrectes et des erreurs de portée.
Conséquence
Conséquence
Un bon design de la table des symboles garantit une résolution correcte des noms, prend en charge la compilation séparée et le linkage, permet une vérification précise des types et fournit les informations requises pour la génération de code (adresses, offsets, annotations de linkage).
Inversion
Inversion
Considérer un programme représenté uniquement par des flux de tokens ou des arbres de syntaxe bruts sans information de liaison ; l'inversion met l'accent sur la forme syntaxique plutôt que sur les identifiants résolus et rend impossibles les vérifications sémantiques sans une couche de liaison.
Limite
Limite
Concerne les phases de compilation/résolution de noms et de linkage ; elle n'implémente pas en soi la disposition mémoire à l'exécution, le ramassage de déchets ou les mécanismes dynamiques de résolution de symboles sauf extension explicite.
Tension sémantique
Tension sémantique
Il existe un chevauchement entre 'table des symboles', 'environnement' et 'registre de symboles' : la table des symboles est une structure de liaison au moment de la compilation/link, tandis qu'un environnement désigne typiquement un mappage runtime de noms vers valeurs ; les confondre brouille la distinction compilation/éxécution.
Synthèse
Synthèse
La table des symboles est le dépôt structuré des liaisons d'identifiants et de leurs attributs maintenu pendant la compilation et le linkage ; en organisant les portées et les métadonnées elle permet une résolution déterministe des noms, des vérifications sémantiques et la production de code référant des emplacements ou informations de linkage concrets.