Travaux dirigés de traduction : 9. Calculette avec table des symboles

Objectif

Le but de ce TD est de mettre en œuvre une table des symboles. On va faire une variante de la calculette du TD 8 pour autoriser que les noms des variables soient composés de plusieurs lettres. On traitera également les expressions booléennes.

Documentation sur Bison.

Ajout de variables (cliquer pour afficher/masquer)

Dans un premier temps, on ne manipulera que des variables entières ou booléennes. Les déclarations seront faites dans ce format :
booleen id1,id2;
entier id3,id4;

En partant éventuellement de la calculette du TD 8, ajouter à la grammaire attribuée la possibilité de faire ces déclarations, et écrire le code C permettant de manipuler une table de symboles.
Pour simplifier, cette table sera un tableau de taille fixe (une constante).
Chaque enregistrement de la table des symboles contiendra la chaîne qui représente le symbole, le type (une constante entière : 0 pour booléen, 1 pour entier), la taille (entier et booléen font une taille de 1).
Pour cette calculette, on ajoute également dans les enregistrements de la table des symboles un champ valeur qui représentera la valeur de la variable une fois qu'on l'aura calculée (alors que dans un compilateur C, la table des symboles n'existe qu'à la compilation et ne contient pas la valeur des variables).

Expressions arithmétiques (cliquer pour afficher/masquer)

Expressions booléennes (cliquer pour afficher/masquer)

Tableaux unidimensionnels (cliquer pour afficher/masquer)