cc
est composé de plusieurs phases :
cpp
est chargé de la gestion des
fichiers inclus et des macros. cpp
inclus
<< physiquement >> les fichiers #include
et remplace les
macros #define
par leur définition. Il passe à cc
le
source C ainsi produit..o
) à partir d'un fichier C. .o
et des
fichiers de bibliothèque (.a
).
PROGRAM | ::= | program ID ; IMPORT EXPORT BLOCK . | ||||
IMPORT | ::= | { import from ID_MODULE : ID { , ID } ; } | ||||
EXPORT | ::= | export : ID { , ID } ; | e |
ID
d'une déclaration import
sont des identificateurs de
procédures ou de variables définies dans un fichier module de nom
ID_MODULE
. Ces variables et procédures doivent avoir été
exportées par le module ID_MODULE
(cf. infra). Ces variables et
procédures sont alors visibles (au niveau zéro) dans le programme
principal : les variables peuvent être référencées en lecture
et/ou en écriture ; les procédures peuvent être appelées.ID
d'une liste export
sont des noms de procédures ou de
variables globales définies au niveau zéro du programme principal.
Ces procédures et ces variables pourront être accédées par des
modules externes.BLOCK
:
MODULE | ::= | module ID ; IMPORT EXPORT CONSTS VARS PROCS | ||||
IMPORT | ::= | { import from ID_MODULE : ID { , ID } ; } | ||||
EXPORT | ::= | export : ID { , ID } ; | e |
ID
d'une déclaration import
sont des identificateurs de
procédures ou de variables définies dans un autre fichier module
de nom ID_MODULE
ou dans le fichier programme principal de nom
ID_MODULE
. Ces variables et procédures doivent avoir été
déclarées dans une section export
.ID
d'une liste export
sont des noms de procédures ou de
variables globales définies au niveau zéro du module. Ces
procédures et ces variables pourront être accédées par des
modules externes qui les importeront explicitement.CAL
) et les références à ces
variables (LDA
). Ces instructions incomplètes seront
complétées par l'éditeur de liens. Pour ce faire, il est
nécessaire d'informer l'éditeur de liens des instructions
incomplètes et des noms des procédures/variables avec lesquelles
il est nécessaire de compléter ces instructions. Une partie d'un
fichier de code sera donc constituée d'une liste de triplet
INT
nécessaire
à la réservation de la mémoire pour toutes les variables
globales.INT
de réservation de la zone
mémoire globale.forward
de
Pascal.