Les tables de compilation
Pour chaque module compilé ( programme principal, Action composée ou Fonction) les tables suivantes sont générées :
Tabidf : Table des identificateurs. Elle contient tous les identificateurs du module.
Validf Table des indices dans Tabob des identificateurs . A chaque identificateur (figurant dans Tabidf) est associé un indice dans Tabob le décrivant.
Tabtyp Table des types : C'est une chaîne de caractères contenant tous les types.
Tabob Table des objets
Quadruples Table des quadruplés
Tabcomp Table complémentaire
Tabpro Table des procédures
Tabcons Tables des constantes
Tabconscar Tables des constantes chaine de caractères
Table des objets
Chaque élément est de la forme (Statut, Type, Nombre, Adresse) avec les significations suivantes:
Statut qui peut être :
'L' : Variables locales
'X' : Variable auxiliaire de valeur créée par le compilateur
'Y' : Variable auxiliaire d'adresse créée par le compilateur
'C' : Constante entière, logique et pointeur
'Z' : Constante chaîne de caractères
Type :
Indice vers la table des types.
Si le type est 'W' il s'agit de la constante NIL
Nombre :
Longueur du type (nombre de caractères formant le type)
Adresse :
Adresse relative de l'objet dans la zone de données si le statut est 'L', 'X' ou 'Y'
Rang dans la table des constantes Tabcons si le statut est 'C'
Rang dans la table des constantes Tabconscar si le statut est 'Z'.
Table des quadruplés
Chaque élément est de la forme (Cop, (Pt1, Bpt1), (Pt2, Bpt2), (Pt3, Bpt3) ) avec les significations suivantes:
Cop : Opération
Pt1, Pt2, Pt3 : Indices (en général) dans la table des objets
Bpt1, Bpt2, Bpt3 : Booléens désignant si les indices référencent la table des objets du module en cours de compilation ou du module principal.
Table complémentaire
Chaque élément est un pointeur vers une liste où un maillon contient :
Indice : Indice dans la table des objets
Local: si VRAI la table des objets référencée est celle du module en cours de compilation sinon la table des objets référencée est celle du module principal.
Suiv : Pointeur vers le maillon suivant de la liste.
Tables des constantes
Pour tous les modules compilés, on maintient deux tableaux globaux pour les constantes.
Tabcons : table des constantes. Contient toutes les constantes numériques, les valeurs logiques VRAI et FAUX et la constante pointeur NIL figurant dans tous les modules.
Tabconscar : table des chaînes. Contient toutes les constantes chaînes de caractères figurant dans tous les modules.
Table des procédures
On maintient aussi une table présente en permanence en mémoire centrale( Tabpro) décrivant tous les modules compilés.
Nom : Nom de la procédure
Défini : Booléen indiquant si la procédure a été définie ou pas.
Typ : Désigne le type de la fonction ( si le module compilé est une fonction )
Longzdd : Longueur de la zone de données
Quadruplet : Pointeur vers la table des quadruplés
Pteurquad : Indice du dernier élément dans la table des quadruples
Tabob : Pointeur vers la table des objets
Pteurtabob : Indice du dernier élément dans la table des objets
Tabcomp : Pointeur vers la table complémentaire
Tabtyp : Pointeur vers la table des types
Toptabidf : Dernier indice dans les tables ( TABIDF et VALIDF )
Tabidf : Pointeur vers la table des identificateurs
Validf : Pointeur vers la table des indices dans Tabob vers ces identificateurs.
Quelques informations utiles
C O N S T A N T E S
Limittabtyp = 255
Limittabob =150
Limittabidf =50
Limitquad=150
Limittabcomp = 50
T Y P E S
Entier : E
Chaine : S
Caractère : C
Booléen : B
Structure : (
Vecteur ou tableau : V, T
Liste : L
Fichier : F
Machine-caractères : MC
Machine-nombre : MN
Pour les en-têtes de fichier on utilise le signe *. Exemple : un fichier déclaré par FICHIER DE VECTEUR(5) DE CAR BUFFER V1, V2, ENTETE (CHAINE, ENTIER) aura comme attribut : FV5C*SE